From de949a2afca24813bf1807ec58c6751860b5e7f0 Mon Sep 17 00:00:00 2001 From: Bas Nieuwenhuizen Date: Mon, 24 Aug 2020 23:27:26 +0200 Subject: [PATCH 01/57] SPV: Add NonUniform decorations for stores. The direct pointer argument to stores has to use the NonUniform decoration but we were not using qualifiers at all to decorate the NonUniform pointer. (Test fixes by Greg Fischer ) --- SPIRV/GlslangToSpv.cpp | 11 +++++++---- SPIRV/SpvBuilder.cpp | 4 +++- SPIRV/SpvBuilder.h | 3 ++- Test/baseResults/spv.nonuniform.frag.out | 4 ++++ 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index c8554160..9bf950ca 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -2292,7 +2292,8 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI // The result of operation is always stored, but conditionally the // consumed result. The consumed result is always an r-value. - builder.accessChainStore(result); + builder.accessChainStore(result, + TranslateNonUniformDecoration(node->getOperand()->getType().getQualifier())); builder.clearAccessChain(); if (node->getOp() == glslang::EOpPreIncrement || node->getOp() == glslang::EOpPreDecrement) @@ -2368,6 +2369,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt spv::Id invertedType = spv::NoType; // to use to override the natural type of the node std::vector complexLvalues; // for holding swizzling l-values too complex for // SPIR-V, for an out parameter + std::vector complexLValueQualifiers; std::vector temporaryLvalues; // temporaries to pass, as proxies for complexLValues auto resultType = [&invertedType, &node, this](){ return invertedType != spv::NoType ? @@ -2985,6 +2987,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt // receive the result, and must later swizzle that into the original // l-value. complexLvalues.push_back(builder.getAccessChain()); + complexLValueQualifiers.push_back(glslangOperands[arg]->getAsTyped()->getType().getQualifier()); temporaryLvalues.push_back(builder.createVariable( spv::NoPrecision, spv::StorageClassFunction, builder.accessChainGetInferredType(), "swizzleTemp")); @@ -3089,7 +3092,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt for (unsigned int i = 0; i < temporaryLvalues.size(); ++i) { builder.setAccessChain(complexLvalues[i]); - builder.accessChainStore(builder.createLoad(temporaryLvalues[i], spv::NoPrecision)); + builder.accessChainStore(builder.createLoad(temporaryLvalues[i], spv::NoPrecision), TranslateNonUniformDecoration(complexLValueQualifiers[i])); } } @@ -4154,7 +4157,7 @@ void TGlslangToSpvTraverser::accessChainStore(const glslang::TType& type, spv::I unsigned int alignment = builder.getAccessChain().alignment; alignment |= type.getBufferReferenceAlignment(); - builder.accessChainStore(rvalue, + builder.accessChainStore(rvalue, TranslateNonUniformDecoration(type.getQualifier()), spv::MemoryAccessMask(TranslateMemoryAccess(coherentFlags) & ~spv::MemoryAccessMakePointerVisibleKHRMask), TranslateMemoryScope(coherentFlags), alignment); @@ -5239,7 +5242,7 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO builder.accessChainPush(builder.makeIntConstant(i), flags, 0); builder.accessChainStore(builder.createCompositeExtract(res, builder.getContainedTypeId(resType, i+1), - i+1)); + i+1), TranslateNonUniformDecoration(imageType.getQualifier())); } return builder.createCompositeExtract(res, resultType(), 0); } diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index 582b6cb7..4142cd95 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -2666,12 +2666,14 @@ void Builder::accessChainPushSwizzle(std::vector& swizzle, Id preSwizz } // Comments in header -void Builder::accessChainStore(Id rvalue, spv::MemoryAccessMask memoryAccess, spv::Scope scope, unsigned int alignment) +void Builder::accessChainStore(Id rvalue, Decoration nonUniform, spv::MemoryAccessMask memoryAccess, spv::Scope scope, unsigned int alignment) { assert(accessChain.isRValue == false); transferAccessChainSwizzle(true); Id base = collapseAccessChain(); + addDecoration(base, nonUniform); + Id source = rvalue; // dynamic component should be gone diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index 83a7116a..fee0565a 100644 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -714,7 +714,8 @@ public: } // use accessChain and swizzle to store value - void accessChainStore(Id rvalue, spv::MemoryAccessMask memoryAccess = spv::MemoryAccessMaskNone, + void accessChainStore(Id rvalue, Decoration nonUniform, + spv::MemoryAccessMask memoryAccess = spv::MemoryAccessMaskNone, spv::Scope scope = spv::ScopeMax, unsigned int alignment = 0); // use accessChain and swizzle to load an r-value diff --git a/Test/baseResults/spv.nonuniform.frag.out b/Test/baseResults/spv.nonuniform.frag.out index 8d61619c..b06a92d1 100644 --- a/Test/baseResults/spv.nonuniform.frag.out +++ b/Test/baseResults/spv.nonuniform.frag.out @@ -64,9 +64,12 @@ spv.nonuniform.frag Decorate 17(nu_li) DecorationNonUniformEXT Decorate 17(nu_li) DecorationNonUniformEXT Decorate 19 DecorationNonUniformEXT + Decorate 18(param) DecorationNonUniformEXT + Decorate 17(nu_li) DecorationNonUniformEXT Decorate 24 DecorationNonUniformEXT Decorate 28 DecorationNonUniformEXT Decorate 29 DecorationNonUniformEXT + Decorate 17(nu_li) DecorationNonUniformEXT Decorate 35(nu_inv4) Location 0 Decorate 35(nu_inv4) DecorationNonUniformEXT Decorate 39 DecorationNonUniformEXT @@ -126,6 +129,7 @@ spv.nonuniform.frag Decorate 150 DecorationNonUniformEXT Decorate 151 DecorationNonUniformEXT Decorate 152 DecorationNonUniformEXT + Decorate 153 DecorationNonUniformEXT Decorate 160(storageTexelBuffer) DescriptorSet 0 Decorate 160(storageTexelBuffer) Binding 9 Decorate 92(nu_ii) DecorationNonUniformEXT From 58064311be3428afd1eaac36842099c3a69bcfbf Mon Sep 17 00:00:00 2001 From: Bas Nieuwenhuizen Date: Thu, 3 Sep 2020 03:04:13 +0200 Subject: [PATCH 02/57] SPV: Add NonUniform decoration for OpImages created during lowering. By directly creating the OpImage instructions we were not propagating the appropriate decorations. Since this had a lot of cases I centralized the OpImage creation a bit too. --- SPIRV/GlslangToSpv.cpp | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 9bf950ca..dd19e77d 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -4753,12 +4753,15 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO const bool isUnsignedResult = node->getType().getBasicType() == glslang::EbtUint; + if (builder.isSampledImage(params.sampler) && + ((cracked.query && node->getOp() != glslang::EOpTextureQueryLod) || cracked.fragMask || cracked.fetch)) { + params.sampler = builder.createUnaryOp(spv::OpImage, builder.getImageType(params.sampler), params.sampler); + if (imageType.getQualifier().isNonUniform()) { + builder.addDecoration(params.sampler, spv::DecorationNonUniformEXT); + } + } // Check for queries if (cracked.query) { - // OpImageQueryLod works on a sampled image, for other queries the image has to be extracted first - if (node->getOp() != glslang::EOpTextureQueryLod && builder.isSampledImage(params.sampler)) - params.sampler = builder.createUnaryOp(spv::OpImage, builder.getImageType(params.sampler), params.sampler); - switch (node->getOp()) { case glslang::EOpImageQuerySize: case glslang::EOpTextureQuerySize: @@ -5012,10 +5015,6 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO auto opIt = arguments.begin(); std::vector operands; - // Extract the image if necessary - if (builder.isSampledImage(params.sampler)) - params.sampler = builder.createUnaryOp(spv::OpImage, builder.getImageType(params.sampler), params.sampler); - operands.push_back(params.sampler); ++opIt; @@ -5076,13 +5075,6 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO bias = true; } - // See if the sampler param should really be just the SPV image part - if (cracked.fetch) { - // a fetch needs to have the image extracted first - if (builder.isSampledImage(params.sampler)) - params.sampler = builder.createUnaryOp(spv::OpImage, builder.getImageType(params.sampler), params.sampler); - } - #ifndef GLSLANG_WEB if (cracked.gather) { const auto& sourceExtensions = glslangIntermediate->getRequestedExtensions(); From c9ffeec6e313dee62ad76ee1993d35a0f7625c1b Mon Sep 17 00:00:00 2001 From: Bas Nieuwenhuizen Date: Thu, 3 Sep 2020 03:09:39 +0200 Subject: [PATCH 03/57] SPV: Add NonUniform decoration for constructors. This is missing in particular for OpSampledImage, which can be a direct argument for texture operations. --- SPIRV/GlslangToSpv.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index dd19e77d..9670c72d 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -2613,6 +2613,10 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt else constructed = builder.createConstructor(precision, arguments, resultType()); + if (node->getType().getQualifier().isNonUniform()) { + builder.addDecoration(constructed, spv::DecorationNonUniformEXT); + } + builder.clearAccessChain(); builder.setAccessChainRValue(constructed); From 889ac20408cad9c384da1532f941fc93a82e7f5b Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Tue, 8 Sep 2020 20:01:55 -0600 Subject: [PATCH 04/57] Add buffer store to nonuniform tests --- Test/baseResults/spv.nonuniform.frag.out | 9 ++++++++- Test/spv.nonuniform.frag | 2 ++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Test/baseResults/spv.nonuniform.frag.out b/Test/baseResults/spv.nonuniform.frag.out index b06a92d1..9abcf357 100644 --- a/Test/baseResults/spv.nonuniform.frag.out +++ b/Test/baseResults/spv.nonuniform.frag.out @@ -1,7 +1,7 @@ spv.nonuniform.frag // Module Version 10000 // Generated by (magic number): 8000a -// Id's are bound by 212 +// Id's are bound by 215 Capability Shader Capability InputAttachment @@ -159,6 +159,9 @@ spv.nonuniform.frag Decorate 207 DecorationNonUniformEXT Decorate 208 DecorationNonUniformEXT Decorate 209 DecorationNonUniformEXT + Decorate 92(nu_ii) DecorationNonUniformEXT + Decorate 212 DecorationNonUniformEXT + Decorate 214 DecorationNonUniformEXT 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 @@ -382,6 +385,10 @@ spv.nonuniform.frag 210: 30(float) Load 32(b) 211: 30(float) FAdd 210 209 Store 32(b) 211 + 212: 6(int) Load 92(nu_ii) + 213: 30(float) Load 32(b) + 214: 94(ptr) AccessChain 102(storageBuffer) 212 53 + Store 214 213 Return FunctionEnd 11(foo(i1;i1;): 6(int) Function None 8 diff --git a/Test/spv.nonuniform.frag b/Test/spv.nonuniform.frag index d3b05a5a..29464036 100644 --- a/Test/spv.nonuniform.frag +++ b/Test/spv.nonuniform.frag @@ -52,4 +52,6 @@ void main() b += uniformBuffer[uv[nu_ii]].a; b += uniformBuffer[int(m[2].z)].a; b += uniformBuffer[s.a].a; + + storageBuffer[nu_ii].b = b; } From 8eb0bdce926708250d7bfd6e8da2b8ac51d724d2 Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Wed, 9 Sep 2020 15:44:52 -0600 Subject: [PATCH 05/57] Add texture sample to nonuniform test This verifies that the nonuniform decoration does NOT propagate to the OpSampledImage. --- Test/baseResults/spv.nonuniform.frag.out | 189 +++++++++++++---------- Test/spv.nonuniform.frag | 4 + 2 files changed, 115 insertions(+), 78 deletions(-) diff --git a/Test/baseResults/spv.nonuniform.frag.out b/Test/baseResults/spv.nonuniform.frag.out index 9abcf357..66f53d5f 100644 --- a/Test/baseResults/spv.nonuniform.frag.out +++ b/Test/baseResults/spv.nonuniform.frag.out @@ -1,7 +1,7 @@ spv.nonuniform.frag // Module Version 10000 // Generated by (magic number): 8000a -// Id's are bound by 215 +// Id's are bound by 235 Capability Shader Capability InputAttachment @@ -22,7 +22,7 @@ spv.nonuniform.frag Extension "SPV_EXT_descriptor_indexing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 35 92 + EntryPoint Fragment 4 "main" 35 92 182 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_nonuniform_qualifier" @@ -53,12 +53,15 @@ spv.nonuniform.frag Name 139 "inputAttachment" Name 149 "uniformTexelBuffer" Name 160 "storageTexelBuffer" - Name 170 "v" - Name 185 "uv" - Name 195 "m" - Name 203 "S" - MemberName 203(S) 0 "a" - Name 205 "s" + Name 171 "uniformTexArr" + Name 178 "uniformSampler" + Name 182 "inTexcoord" + Name 190 "v" + Name 205 "uv" + Name 215 "m" + Name 223 "S" + MemberName 223(S) 0 "a" + Name 225 "s" Decorate 9(nupi) DecorationNonUniformEXT Decorate 13 DecorationNonUniformEXT Decorate 17(nu_li) DecorationNonUniformEXT @@ -136,32 +139,41 @@ spv.nonuniform.frag Decorate 161 DecorationNonUniformEXT Decorate 162 DecorationNonUniformEXT Decorate 163 DecorationNonUniformEXT - Decorate 170(v) DecorationNonUniformEXT + Decorate 171(uniformTexArr) DescriptorSet 0 + Decorate 171(uniformTexArr) Binding 10 + Decorate 92(nu_ii) DecorationNonUniformEXT Decorate 172 DecorationNonUniformEXT - Decorate 173 DecorationNonUniformEXT Decorate 174 DecorationNonUniformEXT Decorate 175 DecorationNonUniformEXT - Decorate 179 DecorationNonUniformEXT - Decorate 180 DecorationNonUniformEXT - Decorate 181 DecorationNonUniformEXT - Decorate 182 DecorationNonUniformEXT + Decorate 178(uniformSampler) DescriptorSet 0 + Decorate 178(uniformSampler) Binding 11 + Decorate 182(inTexcoord) Location 2 + Decorate 190(v) DecorationNonUniformEXT + Decorate 192 DecorationNonUniformEXT + Decorate 193 DecorationNonUniformEXT + Decorate 194 DecorationNonUniformEXT + Decorate 195 DecorationNonUniformEXT + Decorate 199 DecorationNonUniformEXT + Decorate 200 DecorationNonUniformEXT + Decorate 201 DecorationNonUniformEXT + Decorate 202 DecorationNonUniformEXT Decorate 92(nu_ii) DecorationNonUniformEXT - Decorate 186 DecorationNonUniformEXT - Decorate 187 DecorationNonUniformEXT - Decorate 188 DecorationNonUniformEXT - Decorate 189 DecorationNonUniformEXT - Decorate 190 DecorationNonUniformEXT - Decorate 195(m) DecorationNonUniformEXT - Decorate 196 DecorationNonUniformEXT - Decorate 197 DecorationNonUniformEXT - Decorate 205(s) DecorationNonUniformEXT Decorate 206 DecorationNonUniformEXT Decorate 207 DecorationNonUniformEXT Decorate 208 DecorationNonUniformEXT Decorate 209 DecorationNonUniformEXT + Decorate 210 DecorationNonUniformEXT + Decorate 215(m) DecorationNonUniformEXT + Decorate 216 DecorationNonUniformEXT + Decorate 217 DecorationNonUniformEXT + Decorate 225(s) DecorationNonUniformEXT + Decorate 226 DecorationNonUniformEXT + Decorate 227 DecorationNonUniformEXT + Decorate 228 DecorationNonUniformEXT + Decorate 229 DecorationNonUniformEXT Decorate 92(nu_ii) DecorationNonUniformEXT - Decorate 212 DecorationNonUniformEXT - Decorate 214 DecorationNonUniformEXT + Decorate 232 DecorationNonUniformEXT + Decorate 234 DecorationNonUniformEXT 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 @@ -231,14 +243,24 @@ spv.nonuniform.frag 158: TypeRuntimeArray 75 159: TypePointer UniformConstant 158 160(storageTexelBuffer): 159(ptr) Variable UniformConstant - 168: TypeVector 6(int) 4 - 169: TypePointer Function 168(ivec4) - 171: 36(int) Constant 1 - 178: 36(int) Constant 2 - 193: TypeMatrix 33(fvec4) 4 - 194: TypePointer Function 193 - 203(S): TypeStruct 6(int) - 204: TypePointer Function 203(S) + 168: 36(int) Constant 8 + 169: TypeArray 108 168 + 170: TypePointer UniformConstant 169 +171(uniformTexArr): 170(ptr) Variable UniformConstant + 173: TypePointer UniformConstant 108 + 176: TypeSampler + 177: TypePointer UniformConstant 176 +178(uniformSampler): 177(ptr) Variable UniformConstant + 181: TypePointer Input 117(fvec2) + 182(inTexcoord): 181(ptr) Variable Input + 188: TypeVector 6(int) 4 + 189: TypePointer Function 188(ivec4) + 191: 36(int) Constant 1 + 198: 36(int) Constant 2 + 213: TypeMatrix 33(fvec4) 4 + 214: TypePointer Function 213 + 223(S): TypeStruct 6(int) + 224: TypePointer Function 223(S) 4(main): 2 Function None 3 5: Label 16(a): 7(ptr) Variable Function @@ -248,10 +270,10 @@ spv.nonuniform.frag 32(b): 31(ptr) Variable Function 41(nu_gf): 31(ptr) Variable Function 48(dyn_i): 7(ptr) Variable Function - 170(v): 169(ptr) Variable Function - 185(uv): 169(ptr) Variable Function - 195(m): 194(ptr) Variable Function - 205(s): 204(ptr) Variable Function + 190(v): 189(ptr) Variable Function + 205(uv): 189(ptr) Variable Function + 215(m): 214(ptr) Variable Function + 225(s): 224(ptr) Variable Function 19: 6(int) Load 17(nu_li) Store 18(param) 19 21: 6(int) FunctionCall 11(foo(i1;i1;) 18(param) 20(param) @@ -348,47 +370,58 @@ spv.nonuniform.frag 166: 30(float) Load 32(b) 167: 30(float) FAdd 166 165 Store 32(b) 167 - 172: 7(ptr) AccessChain 170(v) 171 - 173: 6(int) Load 172 - 174: 94(ptr) AccessChain 90(uniformBuffer) 173 53 - 175: 30(float) Load 174 - 176: 30(float) Load 32(b) - 177: 30(float) FAdd 176 175 - Store 32(b) 177 - 179: 7(ptr) AccessChain 170(v) 178 - 180: 6(int) Load 179 - 181: 94(ptr) AccessChain 90(uniformBuffer) 180 53 - 182: 30(float) Load 181 - 183: 30(float) Load 32(b) - 184: 30(float) FAdd 183 182 - Store 32(b) 184 - 186: 6(int) Load 92(nu_ii) - 187: 7(ptr) AccessChain 185(uv) 186 - 188: 6(int) Load 187 - 189: 94(ptr) AccessChain 90(uniformBuffer) 188 53 - 190: 30(float) Load 189 - 191: 30(float) Load 32(b) - 192: 30(float) FAdd 191 190 - Store 32(b) 192 - 196: 31(ptr) AccessChain 195(m) 26 178 - 197: 30(float) Load 196 - 198: 6(int) ConvertFToS 197 - 199: 94(ptr) AccessChain 90(uniformBuffer) 198 53 - 200: 30(float) Load 199 - 201: 30(float) Load 32(b) - 202: 30(float) FAdd 201 200 - Store 32(b) 202 - 206: 7(ptr) AccessChain 205(s) 53 - 207: 6(int) Load 206 - 208: 94(ptr) AccessChain 90(uniformBuffer) 207 53 - 209: 30(float) Load 208 - 210: 30(float) Load 32(b) - 211: 30(float) FAdd 210 209 - Store 32(b) 211 - 212: 6(int) Load 92(nu_ii) - 213: 30(float) Load 32(b) - 214: 94(ptr) AccessChain 102(storageBuffer) 212 53 - Store 214 213 + 172: 6(int) Load 92(nu_ii) + 174: 173(ptr) AccessChain 171(uniformTexArr) 172 + 175: 108 Load 174 + 179: 176 Load 178(uniformSampler) + 180: 109 SampledImage 175 179 + 183: 117(fvec2) Load 182(inTexcoord) + 184: 33(fvec4) ImageSampleImplicitLod 180 183 + 185: 30(float) CompositeExtract 184 0 + 186: 30(float) Load 32(b) + 187: 30(float) FAdd 186 185 + Store 32(b) 187 + 192: 7(ptr) AccessChain 190(v) 191 + 193: 6(int) Load 192 + 194: 94(ptr) AccessChain 90(uniformBuffer) 193 53 + 195: 30(float) Load 194 + 196: 30(float) Load 32(b) + 197: 30(float) FAdd 196 195 + Store 32(b) 197 + 199: 7(ptr) AccessChain 190(v) 198 + 200: 6(int) Load 199 + 201: 94(ptr) AccessChain 90(uniformBuffer) 200 53 + 202: 30(float) Load 201 + 203: 30(float) Load 32(b) + 204: 30(float) FAdd 203 202 + Store 32(b) 204 + 206: 6(int) Load 92(nu_ii) + 207: 7(ptr) AccessChain 205(uv) 206 + 208: 6(int) Load 207 + 209: 94(ptr) AccessChain 90(uniformBuffer) 208 53 + 210: 30(float) Load 209 + 211: 30(float) Load 32(b) + 212: 30(float) FAdd 211 210 + Store 32(b) 212 + 216: 31(ptr) AccessChain 215(m) 26 198 + 217: 30(float) Load 216 + 218: 6(int) ConvertFToS 217 + 219: 94(ptr) AccessChain 90(uniformBuffer) 218 53 + 220: 30(float) Load 219 + 221: 30(float) Load 32(b) + 222: 30(float) FAdd 221 220 + Store 32(b) 222 + 226: 7(ptr) AccessChain 225(s) 53 + 227: 6(int) Load 226 + 228: 94(ptr) AccessChain 90(uniformBuffer) 227 53 + 229: 30(float) Load 228 + 230: 30(float) Load 32(b) + 231: 30(float) FAdd 230 229 + Store 32(b) 231 + 232: 6(int) Load 92(nu_ii) + 233: 30(float) Load 32(b) + 234: 94(ptr) AccessChain 102(storageBuffer) 232 53 + Store 234 233 Return FunctionEnd 11(foo(i1;i1;): 6(int) Function None 8 diff --git a/Test/spv.nonuniform.frag b/Test/spv.nonuniform.frag index 29464036..c136d256 100644 --- a/Test/spv.nonuniform.frag +++ b/Test/spv.nonuniform.frag @@ -5,6 +5,7 @@ layout(location=0) nonuniformEXT in vec4 nu_inv4; nonuniformEXT float nu_gf; layout(location=1) in nonuniformEXT flat int nu_ii; +layout(location = 2) in vec2 inTexcoord; layout(binding=0, input_attachment_index = 0) uniform subpassInput inputAttachmentDyn[]; layout(binding=1) uniform samplerBuffer uniformTexelBufferDyn[]; @@ -16,6 +17,8 @@ layout(binding=6, r32f) uniform image2D storag layout(binding=7, input_attachment_index = 1) uniform subpassInput inputAttachment[]; layout(binding=8) uniform samplerBuffer uniformTexelBuffer[]; layout(binding=9, r32f) uniform imageBuffer storageTexelBuffer[]; +layout(binding = 10) uniform texture2D uniformTexArr[8]; +layout(binding = 11) uniform sampler uniformSampler; nonuniformEXT int foo(nonuniformEXT int nupi, nonuniformEXT out int f) { @@ -42,6 +45,7 @@ void main() b += subpassLoad(inputAttachment[nu_ii]).x; b += texelFetch(uniformTexelBuffer[nu_ii], 1).x; b += imageLoad(storageTexelBuffer[nu_ii], 1).x; + b += texture(sampler2D(uniformTexArr[nu_ii], uniformSampler), inTexcoord.xy).x; nonuniformEXT ivec4 v; nonuniformEXT mat4 m; From 91ac2245e992c2a370edec3d69b94020a6405ff9 Mon Sep 17 00:00:00 2001 From: Shahbaz Youssefi Date: Fri, 11 Sep 2020 22:30:49 -0400 Subject: [PATCH 06/57] Allow subpassLoad for ANGLE Signed-off-by: Shahbaz Youssefi --- glslang/MachineIndependent/Initialize.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index d773a0af..8d5d04fb 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -5746,8 +5746,7 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c for (int dim = Esd2D; dim <= EsdCube; ++dim) { // 2D, 3D, and Cube #else #if defined(GLSLANG_ANGLE) - // TODO: what is subpass? - for (int dim = Esd2D; dim < EsdSubpass; ++dim) { // 2D, ..., buffer + for (int dim = Esd2D; dim < EsdNumDims; ++dim) { // 2D, ..., buffer, subpass #else for (int dim = Esd1D; dim < EsdNumDims; ++dim) { // 1D, ..., buffer, subpass #endif From 967fa92d14acea305267574faf63ebe753de98c4 Mon Sep 17 00:00:00 2001 From: nihui Date: Sat, 12 Sep 2020 11:18:02 +0800 Subject: [PATCH 07/57] Try to find python interpreter from host first --- CMakeLists.txt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 18f11f78..ada2b8fb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -228,9 +228,15 @@ function(glslang_set_link_args TARGET) endif() endfunction(glslang_set_link_args) +if(NOT COMMAND find_host_package) + macro(find_host_package) + find_package(${ARGN}) + endmacro() +endif() + # CMake needs to find the right version of python, right from the beginning, # otherwise, it will find the wrong version and fail later -find_package(PythonInterp 3 REQUIRED) +find_host_package(PythonInterp 3 REQUIRED) # Root directory for build-time generated include files set(GLSLANG_GENERATED_INCLUDEDIR "${CMAKE_BINARY_DIR}/include") From f8a5602c55606f8e97f5576c85cbc2a58026a999 Mon Sep 17 00:00:00 2001 From: johnkslang Date: Mon, 14 Sep 2020 02:49:38 -0600 Subject: [PATCH 08/57] Fix #2385: guard against constant_id on non-const. --- glslang/HLSL/hlslParseHelper.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/glslang/HLSL/hlslParseHelper.cpp b/glslang/HLSL/hlslParseHelper.cpp index ca0d2071..3150eacf 100755 --- a/glslang/HLSL/hlslParseHelper.cpp +++ b/glslang/HLSL/hlslParseHelper.cpp @@ -1953,6 +1953,10 @@ void HlslParseContext::transferTypeAttributes(const TSourceLoc& loc, const TAttr break; case EatConstantId: // specialization constant + if (type.getQualifier().storage != EvqConst) { + error(loc, "needs a const type", "constant_id", ""); + break; + } if (it->getInt(value)) { TSourceLoc loc; loc.init(); From 3933d7d414516698a46ebdd9a0bcbd0e0a9a1cf0 Mon Sep 17 00:00:00 2001 From: Chow Date: Mon, 14 Sep 2020 22:00:48 +0800 Subject: [PATCH 09/57] Fix scope definition in ES 100. (#2379) * Remove image2DShadow and other 3 tokens. Refine codes. Remove image2DShadow and other 3 tokens. Refine codes. * 110scope.vert has redefinition part of what's removed from 100scope.vert --- Test/100scope.vert | 2 +- Test/baseResults/100scope.vert.out | 23 ++++++---- glslang/MachineIndependent/ParseHelper.h | 1 + glslang/MachineIndependent/glslang.m4 | 19 ++++++++ glslang/MachineIndependent/glslang.y | 19 ++++++++ glslang/MachineIndependent/glslang_tab.cpp | 53 +++++++++++++++------- 6 files changed, 91 insertions(+), 26 deletions(-) diff --git a/Test/100scope.vert b/Test/100scope.vert index b0a72d1f..6643730c 100644 --- a/Test/100scope.vert +++ b/Test/100scope.vert @@ -2,7 +2,7 @@ int f(int a, int b, int c) { - int a = b; // ERROR, redefinition + int a = b; { float a = float(a) + 1.0; diff --git a/Test/baseResults/100scope.vert.out b/Test/baseResults/100scope.vert.out index c59c8fd7..1696a2e1 100644 --- a/Test/baseResults/100scope.vert.out +++ b/Test/baseResults/100scope.vert.out @@ -1,5 +1,4 @@ 100scope.vert -ERROR: 0:5: 'a' : redefinition ERROR: 0:17: 'b' : function name is redeclaration of existing name ERROR: 0:20: 'c' : redefinition ERROR: 0:22: 'f' : redefinition @@ -13,7 +12,7 @@ ERROR: 0:57: 'z' : undeclared identifier ERROR: 0:57: 'z' : redefinition ERROR: 0:73: 'degrees' : can't use function syntax on variable ERROR: 0:76: 'vertex-shader struct output' : not supported for this version or the enabled extensions -ERROR: 14 compilation errors. No code generated. +ERROR: 13 compilation errors. No code generated. Shader version: 100 @@ -23,18 +22,22 @@ ERROR: node is still EOpNull! 0:3 'a' ( in highp int) 0:3 'b' ( in highp int) 0:3 'c' ( in highp int) -0:? Sequence +0:5 Sequence +0:5 Sequence +0:5 move second child to first child ( temp highp int) +0:5 'a' ( temp highp int) +0:5 'b' ( in highp int) 0:8 Sequence 0:8 Sequence 0:8 move second child to first child ( temp highp float) 0:8 'a' ( temp highp float) 0:8 add ( temp highp float) 0:8 Convert int to float ( temp highp float) -0:8 'a' ( in highp int) +0:8 'a' ( temp highp int) 0:8 Constant: 0:8 1.000000 0:11 Branch: Return with expression -0:11 'a' ( in highp int) +0:11 'a' ( temp highp int) 0:25 Function Definition: cos(f1; ( global highp float) 0:25 Function Parameters: 0:25 'x' ( in highp float) @@ -138,18 +141,22 @@ ERROR: node is still EOpNull! 0:3 'a' ( in highp int) 0:3 'b' ( in highp int) 0:3 'c' ( in highp int) -0:? Sequence +0:5 Sequence +0:5 Sequence +0:5 move second child to first child ( temp highp int) +0:5 'a' ( temp highp int) +0:5 'b' ( in highp int) 0:8 Sequence 0:8 Sequence 0:8 move second child to first child ( temp highp float) 0:8 'a' ( temp highp float) 0:8 add ( temp highp float) 0:8 Convert int to float ( temp highp float) -0:8 'a' ( in highp int) +0:8 'a' ( temp highp int) 0:8 Constant: 0:8 1.000000 0:11 Branch: Return with expression -0:11 'a' ( in highp int) +0:11 'a' ( temp highp int) 0:36 Function Definition: main( ( global void) 0:36 Function Parameters: 0:? Sequence diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h index 09f51c79..0f09adaf 100644 --- a/glslang/MachineIndependent/ParseHelper.h +++ b/glslang/MachineIndependent/ParseHelper.h @@ -84,6 +84,7 @@ public: scopeMangler("::"), symbolTable(symbolTable), statementNestingLevel(0), loopNestingLevel(0), structNestingLevel(0), controlFlowNestingLevel(0), + currentFunctionType(nullptr), postEntryPointReturn(false), contextPragma(true, false), beginInvocationInterlockCount(0), endInvocationInterlockCount(0), diff --git a/glslang/MachineIndependent/glslang.m4 b/glslang/MachineIndependent/glslang.m4 index d1701cf1..0b4b53fb 100644 --- a/glslang/MachineIndependent/glslang.m4 +++ b/glslang/MachineIndependent/glslang.m4 @@ -3842,6 +3842,14 @@ function_definition : function_prototype { $1.function = parseContext.handleFunctionDeclarator($1.loc, *$1.function, false /* not prototype */); $1.intermNode = parseContext.handleFunctionDefinition($1.loc, *$1.function); + + // For ES 100 only, according to ES shading language 100 spec: A function + // body has a scope nested inside the function's definition. + if (parseContext.profile == EEsProfile && parseContext.version == 100) + { + parseContext.symbolTable.push(); + ++parseContext.statementNestingLevel; + } } compound_statement_no_new_scope { // May be best done as post process phase on intermediate code @@ -3857,6 +3865,17 @@ function_definition $$->getAsAggregate()->setOptimize(parseContext.contextPragma.optimize); $$->getAsAggregate()->setDebug(parseContext.contextPragma.debug); $$->getAsAggregate()->setPragmaTable(parseContext.contextPragma.pragmaTable); + + // Set currentFunctionType to empty pointer when goes outside of the function + parseContext.currentFunctionType = nullptr; + + // For ES 100 only, according to ES shading language 100 spec: A function + // body has a scope nested inside the function's definition. + if (parseContext.profile == EEsProfile && parseContext.version == 100) + { + parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); + --parseContext.statementNestingLevel; + } } ; diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index fe021577..23adcb05 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -3842,6 +3842,14 @@ function_definition : function_prototype { $1.function = parseContext.handleFunctionDeclarator($1.loc, *$1.function, false /* not prototype */); $1.intermNode = parseContext.handleFunctionDefinition($1.loc, *$1.function); + + // For ES 100 only, according to ES shading language 100 spec: A function + // body has a scope nested inside the function's definition. + if (parseContext.profile == EEsProfile && parseContext.version == 100) + { + parseContext.symbolTable.push(); + ++parseContext.statementNestingLevel; + } } compound_statement_no_new_scope { // May be best done as post process phase on intermediate code @@ -3857,6 +3865,17 @@ function_definition $$->getAsAggregate()->setOptimize(parseContext.contextPragma.optimize); $$->getAsAggregate()->setDebug(parseContext.contextPragma.debug); $$->getAsAggregate()->setPragmaTable(parseContext.contextPragma.pragmaTable); + + // Set currentFunctionType to empty pointer when goes outside of the function + parseContext.currentFunctionType = nullptr; + + // For ES 100 only, according to ES shading language 100 spec: A function + // body has a scope nested inside the function's definition. + if (parseContext.profile == EEsProfile && parseContext.version == 100) + { + parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); + --parseContext.statementNestingLevel; + } } ; diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp index 16810e36..ac357977 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -1012,8 +1012,8 @@ static const yytype_uint16 yyrline[] = 3603, 3611, 3615, 3628, 3632, 3639, 3639, 3659, 3662, 3668, 3680, 3692, 3696, 3703, 3703, 3718, 3718, 3734, 3734, 3755, 3758, 3764, 3767, 3773, 3777, 3784, 3789, 3794, 3801, 3804, - 3813, 3817, 3826, 3829, 3833, 3842, 3842, 3865, 3871, 3874, - 3879, 3882 + 3813, 3817, 3826, 3829, 3833, 3842, 3842, 3884, 3890, 3893, + 3898, 3901 }; #endif @@ -10298,12 +10298,20 @@ yyreduce: { (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); + + // For ES 100 only, according to ES shading language 100 spec: A function + // body has a scope nested inside the function's definition. + if (parseContext.profile == EEsProfile && parseContext.version == 100) + { + parseContext.symbolTable.push(); + ++parseContext.statementNestingLevel; + } } -#line 10303 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10311 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 586: -#line 3846 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3854 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // May be best done as post process phase on intermediate code if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) @@ -10318,53 +10326,64 @@ yyreduce: (yyval.interm.intermNode)->getAsAggregate()->setOptimize(parseContext.contextPragma.optimize); (yyval.interm.intermNode)->getAsAggregate()->setDebug(parseContext.contextPragma.debug); (yyval.interm.intermNode)->getAsAggregate()->setPragmaTable(parseContext.contextPragma.pragmaTable); + + // Set currentFunctionType to empty pointer when goes outside of the function + parseContext.currentFunctionType = nullptr; + + // For ES 100 only, according to ES shading language 100 spec: A function + // body has a scope nested inside the function's definition. + if (parseContext.profile == EEsProfile && parseContext.version == 100) + { + parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); + --parseContext.statementNestingLevel; + } } -#line 10323 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10342 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 587: -#line 3865 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3884 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.attributes) = (yyvsp[-2].interm.attributes); parseContext.requireExtensions((yyvsp[-4].lex).loc, 1, &E_GL_EXT_control_flow_attributes, "attribute"); } -#line 10332 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10351 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 588: -#line 3871 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3890 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.attributes) = (yyvsp[0].interm.attributes); } -#line 10340 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10359 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 589: -#line 3874 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3893 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes)); } -#line 10348 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10367 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 590: -#line 3879 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3898 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string); } -#line 10356 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10375 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 591: -#line 3882 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3901 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode)); } -#line 10364 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10383 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; -#line 10368 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10387 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -10592,5 +10611,5 @@ yyreturn: #endif return yyresult; } -#line 3887 "MachineIndependent/glslang.y" /* yacc.c:1906 */ +#line 3906 "MachineIndependent/glslang.y" /* yacc.c:1906 */ From ac2f01f4bd89762c084003003a15c2be0939877d Mon Sep 17 00:00:00 2001 From: Rex Xu Date: Mon, 14 Sep 2020 11:57:09 -0400 Subject: [PATCH 10/57] SPIRV: Add disassembly support for multiple literal strings (#2397) According to the extension SPV_GOOGLE_decorate_string, OpDecorateString (or OpMemberDecorateString) ought to be capable of supporting multiple literal strings. Each literal strings are padded with null terminator to make word alignment. The layout is: Inst | Target | Decoration | Literal String, Literal String, ... --- SPIRV/SPVRemapper.cpp | 3 +++ SPIRV/disassemble.cpp | 4 ++++ SPIRV/doc.cpp | 4 ++-- SPIRV/doc.h | 1 + 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/SPIRV/SPVRemapper.cpp b/SPIRV/SPVRemapper.cpp index fd0bb895..1adc6a30 100644 --- a/SPIRV/SPVRemapper.cpp +++ b/SPIRV/SPVRemapper.cpp @@ -625,6 +625,9 @@ namespace spv { break; } + case spv::OperandVariableLiteralStrings: + return nextInst; + // Execution mode might have extra literal operands. Skip them. case spv::OperandExecutionMode: return nextInst; diff --git a/SPIRV/disassemble.cpp b/SPIRV/disassemble.cpp index 4faa89ea..a95ded49 100644 --- a/SPIRV/disassemble.cpp +++ b/SPIRV/disassemble.cpp @@ -519,6 +519,10 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode, case OperandLiteralString: numOperands -= disassembleString(); break; + case OperandVariableLiteralStrings: + while (numOperands > 0) + numOperands -= disassembleString(); + return; case OperandMemoryAccess: outputMask(OperandMemoryAccess, stream[word++]); --numOperands; diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index e2b17dbe..1d052f8c 100644 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -1727,7 +1727,7 @@ void Parameterize() InstructionDesc[OpDecorateStringGOOGLE].operands.push(OperandId, "'Target'"); InstructionDesc[OpDecorateStringGOOGLE].operands.push(OperandDecoration, ""); - InstructionDesc[OpDecorateStringGOOGLE].operands.push(OperandLiteralString, "'Literal String'"); + InstructionDesc[OpDecorateStringGOOGLE].operands.push(OperandVariableLiteralStrings, "'Literal Strings'"); InstructionDesc[OpMemberDecorate].operands.push(OperandId, "'Structure Type'"); InstructionDesc[OpMemberDecorate].operands.push(OperandLiteralNumber, "'Member'"); @@ -1737,7 +1737,7 @@ void Parameterize() InstructionDesc[OpMemberDecorateStringGOOGLE].operands.push(OperandId, "'Structure Type'"); InstructionDesc[OpMemberDecorateStringGOOGLE].operands.push(OperandLiteralNumber, "'Member'"); InstructionDesc[OpMemberDecorateStringGOOGLE].operands.push(OperandDecoration, ""); - InstructionDesc[OpMemberDecorateStringGOOGLE].operands.push(OperandLiteralString, "'Literal String'"); + InstructionDesc[OpMemberDecorateStringGOOGLE].operands.push(OperandVariableLiteralStrings, "'Literal Strings'"); InstructionDesc[OpGroupDecorate].operands.push(OperandId, "'Decoration Group'"); InstructionDesc[OpGroupDecorate].operands.push(OperandVariableIds, "'Targets'"); diff --git a/SPIRV/doc.h b/SPIRV/doc.h index 293256a2..2a0b28c6 100644 --- a/SPIRV/doc.h +++ b/SPIRV/doc.h @@ -125,6 +125,7 @@ enum OperandClass { OperandVariableLiteralId, OperandLiteralNumber, OperandLiteralString, + OperandVariableLiteralStrings, OperandSource, OperandExecutionModel, OperandAddressing, From 9eaa69c21c45c173b6ab9aacef271ab0e7c083bf Mon Sep 17 00:00:00 2001 From: Chow Date: Tue, 15 Sep 2020 11:46:24 +0800 Subject: [PATCH 11/57] Preprocessor related issue fix (#2378) * Preprocessor related fix 1). Accoding to ESSL spec : All macro names containing two consecutive underscores ( __ ) are reserved for future use as predefined macro names, so just report a warning instead of error when the shader defines the macro names begining with '__'; 2. According to spec: If an implementation does not recognize the tokens following #pragma, then it will ignore that pragma, so report a compile-time warning intead of error for the following statement: #pragma debug(1.23) 3. The 'defined' macro should be allowed to expand and '__LINE__' should be allowed to be replaced with its original line number (otherwise, other expanding macros may change this value). 4. Add a flag 'indentifierSeen' in PPContext to indicate whether the any non-preprocessor tokens is existed before the extension directives, because the built-in symbols and functions are parsed before paring the user shader, so add a 'shaderSource' flag to check this error only for the user shader source; 5. Add missing type int16 and uint16. * Add test results, remove restriction of #extension. 1. Remove extension restriction in first line , as this is contraversy now. 2. The following shader is compiled failed as glslang consider the keyword 'defined' can not be undefined(in the 9th line: "#define defined BBB") The shader is as following: According to ES3.0 spec: It is an error to undefine or to redefine a built-in (pre-defined) macro name. This rule is aimed to the __LINE__, __FILE__, __VERSION__ and GL_ES, the keyword "defined" should not be restricted by this rule, so change the compile error to warning and make the following shader compile successfully. * 1. Using relaxedError to control error/warning report level. 2. remove #extension restriction. 3. Fix version related issue. 1. Using relaxedError to control error/warning report level. 2. remove #extension restriction. 3. Fix version related issue. * Add test results * Turn conditional warnings about pragma to unconditional ones. --- glslang/MachineIndependent/ParseHelper.cpp | 15 +++++++++++---- glslang/MachineIndependent/gl_types.h | 8 ++++++++ glslang/MachineIndependent/preprocessor/Pp.cpp | 13 ++++++++++--- 3 files changed, 29 insertions(+), 7 deletions(-) diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 4d202260..86a5a378 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -246,7 +246,9 @@ void TParseContext::handlePragma(const TSourceLoc& loc, const TVector& else if (tokens[2].compare("off") == 0) contextPragma.optimize = false; else { - error(loc, "\"on\" or \"off\" expected after '(' for 'optimize' pragma", "#pragma", ""); + if(relaxedErrors()) + // If an implementation does not recognize the tokens following #pragma, then it will ignore that pragma. + warn(loc, "\"on\" or \"off\" expected after '(' for 'optimize' pragma", "#pragma", ""); return; } @@ -270,7 +272,9 @@ void TParseContext::handlePragma(const TSourceLoc& loc, const TVector& else if (tokens[2].compare("off") == 0) contextPragma.debug = false; else { - error(loc, "\"on\" or \"off\" expected after '(' for 'debug' pragma", "#pragma", ""); + if(relaxedErrors()) + // If an implementation does not recognize the tokens following #pragma, then it will ignore that pragma. + warn(loc, "\"on\" or \"off\" expected after '(' for 'debug' pragma", "#pragma", ""); return; } @@ -2798,7 +2802,10 @@ void TParseContext::reservedPpErrorCheck(const TSourceLoc& loc, const char* iden if (strncmp(identifier, "GL_", 3) == 0) ppError(loc, "names beginning with \"GL_\" can't be (un)defined:", op, identifier); else if (strncmp(identifier, "defined", 8) == 0) - ppError(loc, "\"defined\" can't be (un)defined:", op, identifier); + if (relaxedErrors()) + ppWarn(loc, "\"defined\" is (un)defined:", op, identifier); + else + ppError(loc, "\"defined\" can't be (un)defined:", op, identifier); else if (strstr(identifier, "__") != 0) { if (isEsProfile() && version >= 300 && (strcmp(identifier, "__LINE__") == 0 || @@ -2806,7 +2813,7 @@ void TParseContext::reservedPpErrorCheck(const TSourceLoc& loc, const char* iden strcmp(identifier, "__VERSION__") == 0)) ppError(loc, "predefined names can't be (un)defined:", op, identifier); else { - if (isEsProfile() && version < 300) + if (isEsProfile() && version < 300 && !relaxedErrors()) ppError(loc, "names containing consecutive underscores are reserved, and an error if version < 300:", op, identifier); else ppWarn(loc, "names containing consecutive underscores are reserved:", op, identifier); diff --git a/glslang/MachineIndependent/gl_types.h b/glslang/MachineIndependent/gl_types.h index b6f613bc..b9372d4b 100644 --- a/glslang/MachineIndependent/gl_types.h +++ b/glslang/MachineIndependent/gl_types.h @@ -52,6 +52,14 @@ #define GL_UNSIGNED_INT64_VEC2_ARB 0x8FE5 #define GL_UNSIGNED_INT64_VEC3_ARB 0x8FE6 #define GL_UNSIGNED_INT64_VEC4_ARB 0x8FE7 +#define GL_UNSIGNED_INT16_VEC2_NV 0x8FF1 +#define GL_UNSIGNED_INT16_VEC3_NV 0x8FF2 +#define GL_UNSIGNED_INT16_VEC4_NV 0x8FF3 + +#define GL_INT16_NV 0x8FE4 +#define GL_INT16_VEC2_NV 0x8FE5 +#define GL_INT16_VEC3_NV 0x8FE6 +#define GL_INT16_VEC4_NV 0x8FE7 #define GL_BOOL 0x8B56 #define GL_BOOL_VEC2 0x8B57 diff --git a/glslang/MachineIndependent/preprocessor/Pp.cpp b/glslang/MachineIndependent/preprocessor/Pp.cpp index ec393561..a0a626f9 100644 --- a/glslang/MachineIndependent/preprocessor/Pp.cpp +++ b/glslang/MachineIndependent/preprocessor/Pp.cpp @@ -422,10 +422,10 @@ int TPpContext::eval(int token, int precedence, bool shortCircuit, int& res, boo if (! parseContext.isReadingHLSL() && isMacroInput()) { if (parseContext.relaxedErrors()) parseContext.ppWarn(ppToken->loc, "nonportable when expanded from macros for preprocessor expression", - "defined", ""); + "defined", ""); else parseContext.ppError(ppToken->loc, "cannot use in preprocessor expression when expanded from macros", - "defined", ""); + "defined", ""); } bool needclose = 0; token = scanToken(ppToken); @@ -1184,7 +1184,9 @@ MacroExpandResult TPpContext::MacroExpand(TPpToken* ppToken, bool expandUndef, b int macroAtom = atomStrings.getAtom(ppToken->name); switch (macroAtom) { case PpAtomLineMacro: - ppToken->ival = parseContext.getCurrentLoc().line; + // Arguments which are macro have been replaced in the first stage. + if (ppToken->ival == 0) + ppToken->ival = parseContext.getCurrentLoc().line; snprintf(ppToken->name, sizeof(ppToken->name), "%d", ppToken->ival); UngetToken(PpAtomConstInt, ppToken); return MacroExpandStarted; @@ -1285,6 +1287,11 @@ MacroExpandResult TPpContext::MacroExpand(TPpToken* ppToken, bool expandUndef, b nestStack.push_back('}'); else if (nestStack.size() > 0 && token == nestStack.back()) nestStack.pop_back(); + + //Macro replacement list is expanded in the last stage. + if (atomStrings.getAtom(ppToken->name) == PpAtomLineMacro) + ppToken->ival = parseContext.getCurrentLoc().line; + in->args[arg]->putToken(token, ppToken); tokenRecorded = true; } From 4dcc12d1a441b29d5901bc708bb1343d29d6459f Mon Sep 17 00:00:00 2001 From: Rex Xu Date: Fri, 18 Sep 2020 21:18:35 +0800 Subject: [PATCH 12/57] SPIRV: Add more utility functions to build some opcodes (#2398) Add more builder functions to OpExecutionMode, OpExecutionModeId, OpDecorateString, OpMemberDecorateString. According to SPIR-V, OpExecutionMode and OpExecutionModeId could take variable extra operands. Current implementation doesn't support this and assumes at most 3 operands are extra operands. It is not true. Similarly, OpDecorateString and OpMemberDecorateString could support multiple strings either as literal strings or as string operands. Further, OpDecorate and OpDecorateId have the same problem, taking variable extra operands. --- SPIRV/SpvBuilder.cpp | 97 +++++++++++++++++++++++++++++++++++++++++++- SPIRV/SpvBuilder.h | 7 ++++ 2 files changed, 103 insertions(+), 1 deletion(-) diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index 582b6cb7..96803314 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -1183,6 +1183,28 @@ void Builder::addExecutionMode(Function* entryPoint, ExecutionMode mode, int val executionModes.push_back(std::unique_ptr(instr)); } +void Builder::addExecutionMode(Function* entryPoint, ExecutionMode mode, const std::vector& literals) +{ + Instruction* instr = new Instruction(OpExecutionMode); + instr->addIdOperand(entryPoint->getId()); + instr->addImmediateOperand(mode); + for (auto literal : literals) + instr->addImmediateOperand(literal); + + executionModes.push_back(std::unique_ptr(instr)); +} + +void Builder::addExecutionModeId(Function* entryPoint, ExecutionMode mode, const std::vector& operandIds) +{ + Instruction* instr = new Instruction(OpExecutionModeId); + instr->addIdOperand(entryPoint->getId()); + instr->addImmediateOperand(mode); + for (auto operandId : operandIds) + instr->addIdOperand(operandId); + + executionModes.push_back(std::unique_ptr(instr)); +} + void Builder::addName(Id id, const char* string) { Instruction* name = new Instruction(OpName); @@ -1221,7 +1243,7 @@ void Builder::addDecoration(Id id, Decoration decoration, const char* s) if (decoration == spv::DecorationMax) return; - Instruction* dec = new Instruction(OpDecorateStringGOOGLE); + Instruction* dec = new Instruction(OpDecorateString); dec->addIdOperand(id); dec->addImmediateOperand(decoration); dec->addStringOperand(s); @@ -1229,6 +1251,34 @@ void Builder::addDecoration(Id id, Decoration decoration, const char* s) decorations.push_back(std::unique_ptr(dec)); } +void Builder::addDecoration(Id id, Decoration decoration, const std::vector& literals) +{ + if (decoration == spv::DecorationMax) + return; + + Instruction* dec = new Instruction(OpDecorate); + dec->addIdOperand(id); + dec->addImmediateOperand(decoration); + for (auto literal : literals) + dec->addImmediateOperand(literal); + + decorations.push_back(std::unique_ptr(dec)); +} + +void Builder::addDecoration(Id id, Decoration decoration, const std::vector& strings) +{ + if (decoration == spv::DecorationMax) + return; + + Instruction* dec = new Instruction(OpDecorateString); + dec->addIdOperand(id); + dec->addImmediateOperand(decoration); + for (auto string : strings) + dec->addStringOperand(string); + + decorations.push_back(std::unique_ptr(dec)); +} + void Builder::addDecorationId(Id id, Decoration decoration, Id idDecoration) { if (decoration == spv::DecorationMax) @@ -1242,6 +1292,21 @@ void Builder::addDecorationId(Id id, Decoration decoration, Id idDecoration) decorations.push_back(std::unique_ptr(dec)); } +void Builder::addDecorationId(Id id, Decoration decoration, const std::vector& operandIds) +{ + if(decoration == spv::DecorationMax) + return; + + Instruction* dec = new Instruction(OpDecorateId); + dec->addIdOperand(id); + dec->addImmediateOperand(decoration); + + for (auto operandId : operandIds) + dec->addIdOperand(operandId); + + decorations.push_back(std::unique_ptr(dec)); +} + void Builder::addMemberDecoration(Id id, unsigned int member, Decoration decoration, int num) { if (decoration == spv::DecorationMax) @@ -1271,6 +1336,36 @@ void Builder::addMemberDecoration(Id id, unsigned int member, Decoration decorat decorations.push_back(std::unique_ptr(dec)); } +void Builder::addMemberDecoration(Id id, unsigned int member, Decoration decoration, const std::vector& literals) +{ + if (decoration == spv::DecorationMax) + return; + + Instruction* dec = new Instruction(OpMemberDecorate); + dec->addIdOperand(id); + dec->addImmediateOperand(member); + dec->addImmediateOperand(decoration); + for (auto literal : literals) + dec->addImmediateOperand(literal); + + decorations.push_back(std::unique_ptr(dec)); +} + +void Builder::addMemberDecoration(Id id, unsigned int member, Decoration decoration, const std::vector& strings) +{ + if (decoration == spv::DecorationMax) + return; + + Instruction* dec = new Instruction(OpMemberDecorateString); + dec->addIdOperand(id); + dec->addImmediateOperand(member); + dec->addImmediateOperand(decoration); + for (auto string : strings) + dec->addStringOperand(string); + + decorations.push_back(std::unique_ptr(dec)); +} + // Comments in header Function* Builder::makeEntryPoint(const char* entryPoint) { diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index 83a7116a..077945e7 100644 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -321,13 +321,20 @@ public: // Methods for adding information outside the CFG. Instruction* addEntryPoint(ExecutionModel, Function*, const char* name); void addExecutionMode(Function*, ExecutionMode mode, int value1 = -1, int value2 = -1, int value3 = -1); + void addExecutionMode(Function*, ExecutionMode mode, const std::vector& literals); + void addExecutionModeId(Function*, ExecutionMode mode, const std::vector& operandIds); void addName(Id, const char* name); void addMemberName(Id, int member, const char* name); void addDecoration(Id, Decoration, int num = -1); void addDecoration(Id, Decoration, const char*); + void addDecoration(Id, Decoration, const std::vector& literals); + void addDecoration(Id, Decoration, const std::vector& strings); void addDecorationId(Id id, Decoration, Id idDecoration); + void addDecorationId(Id id, Decoration, const std::vector& operandIds); void addMemberDecoration(Id, unsigned int member, Decoration, int num = -1); void addMemberDecoration(Id, unsigned int member, Decoration, const char*); + void addMemberDecoration(Id, unsigned int member, Decoration, const std::vector& literals); + void addMemberDecoration(Id, unsigned int member, Decoration, const std::vector& strings); // At the end of what block do the next create*() instructions go? void setBuildPoint(Block* bp) { buildPoint = bp; } From bacaef3237c515e40d1a24722be48c0a0b30f75f Mon Sep 17 00:00:00 2001 From: greg-lunarg Date: Thu, 24 Sep 2020 20:07:15 -0600 Subject: [PATCH 13/57] Update spirv-tools and spirv-headers known goods (#2401) --- known_good.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/known_good.json b/known_good.json index f945e0ac..289b384b 100644 --- a/known_good.json +++ b/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "13a65b1aee425a97b9ca73d81212d99fd2bf9227" + "commit" : "0a1fb588cd365f7737cb121fdd64553923e0cef6" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "3fdabd0da2932c276b25b9b4a988ba134eba1aa6" + "commit" : "060627f0b0d2fa8581b5acb939f46e3b9e500593" } ] } From 1815d86a224b75abc1dd084789c20f7da3c9fed0 Mon Sep 17 00:00:00 2001 From: craig stout Date: Sat, 26 Sep 2020 13:02:33 -0400 Subject: [PATCH 14/57] [Wconversion] Suppress glslang issue (#2404) The glslang public includes dir contains headers with implicit conversion issues. Add -Wno-conversion to glslang's public config. Bug: 60140 Bug: 58162 Change-Id: Iec27cb4242e9fdceddd6a3e02044a0bccfa0ce36 Reviewed-on: https://fuchsia-review.googlesource.com/c/third_party/glslang/+/429054 Reviewed-by: Petr Hosek Co-authored-by: Shai Barack --- BUILD.gn | 1 + 1 file changed, 1 insertion(+) diff --git a/BUILD.gn b/BUILD.gn index 9a6c1bc2..f877078b 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -76,6 +76,7 @@ if (!defined(glslang_angle)) { config("glslang_public") { include_dirs = [ "." ] + cflags = [ "-Wno-conversion" ] } config("glslang_hlsl") { From d0e7ed37fc4ee17948a8a6597ce95a4fdab2b769 Mon Sep 17 00:00:00 2001 From: craig stout Date: Sat, 26 Sep 2020 20:43:30 -0400 Subject: [PATCH 15/57] [spirv-remap] Fix undefined behavior in hashing (#2403) There's a statement that intends to generate a 32-bit hashcode, but due to integer promotion, the intermediate values can trigger signed integer overflow, which is undefined behavior. To avoid this, cast at least one operand to unsigned int before multiplying, which will cause the result to be promoted to unsigned int instead of signed int. With this patch, I'm able to build core for qemu-x64 with host_asan-ubsan. Fixed: 60128 Change-Id: Idd644e534116bf29dca8013936ac39901bbe68fc Reviewed-on: https://fuchsia-review.googlesource.com/c/third_party/glslang/+/428254 Reviewed-by: John Bauman Co-authored-by: Drew Fisher --- SPIRV/SPVRemapper.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/SPIRV/SPVRemapper.cpp b/SPIRV/SPVRemapper.cpp index 1adc6a30..56d7f431 100644 --- a/SPIRV/SPVRemapper.cpp +++ b/SPIRV/SPVRemapper.cpp @@ -830,7 +830,15 @@ namespace spv { [&](spv::Id& id) { if (thisOpCode != spv::OpNop) { ++idCounter; - const std::uint32_t hashval = opCounter[thisOpCode] * thisOpCode * 50047 + idCounter + fnId * 117; + const std::uint32_t hashval = + // Explicitly cast operands to unsigned int to avoid integer + // promotion to signed int followed by integer overflow, + // which would result in undefined behavior. + static_cast(opCounter[thisOpCode]) + * thisOpCode + * 50047 + + idCounter + + static_cast(fnId) * 117; if (isOldIdUnmapped(id)) localId(id, nextUnusedId(hashval % softTypeIdLimit + firstMappedID)); From 2eed8236d07d50f35c466d723651d86284c60161 Mon Sep 17 00:00:00 2001 From: pheonix Date: Sun, 27 Sep 2020 16:53:18 -0700 Subject: [PATCH 16/57] Add more flexible SpirvToolsDisassemble interface to allow specifying spv_target_env for disassembly output. (#2406) Improve documentation on existing SpirvToolsDisassemble interface. Fix cmake build scripts to account for `spirv-tools` external when -DENABLE_OPT=ON --- SPIRV/SpvTools.cpp | 12 +++++++++--- SPIRV/SpvTools.h | 7 ++++++- StandAlone/CMakeLists.txt | 6 ++++++ gtests/CMakeLists.txt | 6 ++++++ 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/SPIRV/SpvTools.cpp b/SPIRV/SpvTools.cpp index 112ac33c..fce1fb9b 100644 --- a/SPIRV/SpvTools.cpp +++ b/SPIRV/SpvTools.cpp @@ -44,7 +44,6 @@ #include "SpvTools.h" #include "spirv-tools/optimizer.hpp" -#include "spirv-tools/libspirv.h" namespace glslang { @@ -114,11 +113,18 @@ void OptimizerMesssageConsumer(spv_message_level_t level, const char *source, out << std::endl; } -// Use the SPIRV-Tools disassembler to print SPIR-V. +// Use the SPIRV-Tools disassembler to print SPIR-V using a SPV_ENV_UNIVERSAL_1_3 environment. void SpirvToolsDisassemble(std::ostream& out, const std::vector& spirv) +{ + SpirvToolsDisassemble(out, spirv, SPV_ENV_UNIVERSAL_1_3); +} + +// Use the SPIRV-Tools disassembler to print SPIR-V with a provided SPIR-V environment. +void SpirvToolsDisassemble(std::ostream& out, const std::vector& spirv, + spv_target_env requested_context) { // disassemble - spv_context context = spvContextCreate(SPV_ENV_UNIVERSAL_1_3); + spv_context context = spvContextCreate(requested_context); spv_text text; spv_diagnostic diagnostic = nullptr; spvBinaryToText(context, spirv.data(), spirv.size(), diff --git a/SPIRV/SpvTools.h b/SPIRV/SpvTools.h index 7779dfa7..691c9ef4 100644 --- a/SPIRV/SpvTools.h +++ b/SPIRV/SpvTools.h @@ -44,6 +44,7 @@ #ifdef ENABLE_OPT #include #include +#include "spirv-tools/libspirv.h" #endif #include "glslang/MachineIndependent/localintermediate.h" @@ -64,9 +65,13 @@ struct SpvOptions { #ifdef ENABLE_OPT -// Use the SPIRV-Tools disassembler to print SPIR-V. +// Use the SPIRV-Tools disassembler to print SPIR-V using a SPV_ENV_UNIVERSAL_1_3 environment. void SpirvToolsDisassemble(std::ostream& out, const std::vector& spirv); +// Use the SPIRV-Tools disassembler to print SPIR-V with a provided SPIR-V environment. +void SpirvToolsDisassemble(std::ostream& out, const std::vector& spirv, + spv_target_env requested_context); + // Apply the SPIRV-Tools validator to generated SPIR-V. void SpirvToolsValidate(const glslang::TIntermediate& intermediate, std::vector& spirv, spv::SpvBuildLogger*, bool prelegalization); diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt index 8038c043..decfac5b 100644 --- a/StandAlone/CMakeLists.txt +++ b/StandAlone/CMakeLists.txt @@ -70,6 +70,12 @@ target_include_directories(glslangValidator PUBLIC $ $) +if(ENABLE_OPT) +target_include_directories(glslangValidator PUBLIC + $ + $) +endif() + if(ENABLE_SPVREMAPPER) set(REMAPPER_SOURCES spirv-remap.cpp) add_executable(spirv-remap ${REMAPPER_SOURCES}) diff --git a/gtests/CMakeLists.txt b/gtests/CMakeLists.txt index 6c48d9c2..f489c9de 100644 --- a/gtests/CMakeLists.txt +++ b/gtests/CMakeLists.txt @@ -83,6 +83,12 @@ if(BUILD_TESTING) ${gmock_SOURCE_DIR}/include ${gtest_SOURCE_DIR}/include) + if(ENABLE_OPT) + target_include_directories(glslangtests PUBLIC + $ + $) + endif() + set(LIBRARIES glslang OSDependent OGLCompiler glslang SPIRV glslang-default-resource-limits) From f05c076e26b04cbcc9bf2df815bbdc9c620d89ad Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Sun, 27 Sep 2020 18:15:41 -0600 Subject: [PATCH 17/57] Revert "Add more flexible SpirvToolsDisassemble interface to allow specifying spv_target_env for disassembly output. (#2406)" This reverts commit 2eed8236d07d50f35c466d723651d86284c60161. --- SPIRV/SpvTools.cpp | 12 +++--------- SPIRV/SpvTools.h | 7 +------ StandAlone/CMakeLists.txt | 6 ------ gtests/CMakeLists.txt | 6 ------ 4 files changed, 4 insertions(+), 27 deletions(-) diff --git a/SPIRV/SpvTools.cpp b/SPIRV/SpvTools.cpp index fce1fb9b..112ac33c 100644 --- a/SPIRV/SpvTools.cpp +++ b/SPIRV/SpvTools.cpp @@ -44,6 +44,7 @@ #include "SpvTools.h" #include "spirv-tools/optimizer.hpp" +#include "spirv-tools/libspirv.h" namespace glslang { @@ -113,18 +114,11 @@ void OptimizerMesssageConsumer(spv_message_level_t level, const char *source, out << std::endl; } -// Use the SPIRV-Tools disassembler to print SPIR-V using a SPV_ENV_UNIVERSAL_1_3 environment. +// Use the SPIRV-Tools disassembler to print SPIR-V. void SpirvToolsDisassemble(std::ostream& out, const std::vector& spirv) -{ - SpirvToolsDisassemble(out, spirv, SPV_ENV_UNIVERSAL_1_3); -} - -// Use the SPIRV-Tools disassembler to print SPIR-V with a provided SPIR-V environment. -void SpirvToolsDisassemble(std::ostream& out, const std::vector& spirv, - spv_target_env requested_context) { // disassemble - spv_context context = spvContextCreate(requested_context); + spv_context context = spvContextCreate(SPV_ENV_UNIVERSAL_1_3); spv_text text; spv_diagnostic diagnostic = nullptr; spvBinaryToText(context, spirv.data(), spirv.size(), diff --git a/SPIRV/SpvTools.h b/SPIRV/SpvTools.h index 691c9ef4..7779dfa7 100644 --- a/SPIRV/SpvTools.h +++ b/SPIRV/SpvTools.h @@ -44,7 +44,6 @@ #ifdef ENABLE_OPT #include #include -#include "spirv-tools/libspirv.h" #endif #include "glslang/MachineIndependent/localintermediate.h" @@ -65,13 +64,9 @@ struct SpvOptions { #ifdef ENABLE_OPT -// Use the SPIRV-Tools disassembler to print SPIR-V using a SPV_ENV_UNIVERSAL_1_3 environment. +// Use the SPIRV-Tools disassembler to print SPIR-V. void SpirvToolsDisassemble(std::ostream& out, const std::vector& spirv); -// Use the SPIRV-Tools disassembler to print SPIR-V with a provided SPIR-V environment. -void SpirvToolsDisassemble(std::ostream& out, const std::vector& spirv, - spv_target_env requested_context); - // Apply the SPIRV-Tools validator to generated SPIR-V. void SpirvToolsValidate(const glslang::TIntermediate& intermediate, std::vector& spirv, spv::SpvBuildLogger*, bool prelegalization); diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt index decfac5b..8038c043 100644 --- a/StandAlone/CMakeLists.txt +++ b/StandAlone/CMakeLists.txt @@ -70,12 +70,6 @@ target_include_directories(glslangValidator PUBLIC $ $) -if(ENABLE_OPT) -target_include_directories(glslangValidator PUBLIC - $ - $) -endif() - if(ENABLE_SPVREMAPPER) set(REMAPPER_SOURCES spirv-remap.cpp) add_executable(spirv-remap ${REMAPPER_SOURCES}) diff --git a/gtests/CMakeLists.txt b/gtests/CMakeLists.txt index f489c9de..6c48d9c2 100644 --- a/gtests/CMakeLists.txt +++ b/gtests/CMakeLists.txt @@ -83,12 +83,6 @@ if(BUILD_TESTING) ${gmock_SOURCE_DIR}/include ${gtest_SOURCE_DIR}/include) - if(ENABLE_OPT) - target_include_directories(glslangtests PUBLIC - $ - $) - endif() - set(LIBRARIES glslang OSDependent OGLCompiler glslang SPIRV glslang-default-resource-limits) From d1929f359a1035cb169ec54630c24ae6ce0bcc21 Mon Sep 17 00:00:00 2001 From: pheonix Date: Mon, 5 Oct 2020 08:59:27 -0700 Subject: [PATCH 18/57] Add new SpirvToolsDisassemble API interface + Improve Doc on existing API interface (#2408) * Add more flexible SpirvToolsDisassemble interface to allow specifying spv_target_env for disassembly output. Improve documentation on existing SpirvToolsDisassemble interface. * Update pre-processor check - following existing ENABLE_OPT checks. * Fix not-found header paths for glslangValidator and glslangtests. --- SPIRV/SpvTools.cpp | 12 +++++++++--- SPIRV/SpvTools.h | 11 ++++++++--- StandAlone/CMakeLists.txt | 7 ++++++- gtests/CMakeLists.txt | 6 ++++++ 4 files changed, 29 insertions(+), 7 deletions(-) diff --git a/SPIRV/SpvTools.cpp b/SPIRV/SpvTools.cpp index 112ac33c..bcbaedde 100644 --- a/SPIRV/SpvTools.cpp +++ b/SPIRV/SpvTools.cpp @@ -44,7 +44,6 @@ #include "SpvTools.h" #include "spirv-tools/optimizer.hpp" -#include "spirv-tools/libspirv.h" namespace glslang { @@ -114,11 +113,18 @@ void OptimizerMesssageConsumer(spv_message_level_t level, const char *source, out << std::endl; } -// Use the SPIRV-Tools disassembler to print SPIR-V. +// Use the SPIRV-Tools disassembler to print SPIR-V using a SPV_ENV_UNIVERSAL_1_3 environment. void SpirvToolsDisassemble(std::ostream& out, const std::vector& spirv) +{ + SpirvToolsDisassemble(out, spirv, spv_target_env::SPV_ENV_UNIVERSAL_1_3); +} + +// Use the SPIRV-Tools disassembler to print SPIR-V with a provided SPIR-V environment. +void SpirvToolsDisassemble(std::ostream& out, const std::vector& spirv, + spv_target_env requested_context) { // disassemble - spv_context context = spvContextCreate(SPV_ENV_UNIVERSAL_1_3); + spv_context context = spvContextCreate(requested_context); spv_text text; spv_diagnostic diagnostic = nullptr; spvBinaryToText(context, spirv.data(), spirv.size(), diff --git a/SPIRV/SpvTools.h b/SPIRV/SpvTools.h index 7779dfa7..3fb3cbac 100644 --- a/SPIRV/SpvTools.h +++ b/SPIRV/SpvTools.h @@ -41,9 +41,10 @@ #ifndef GLSLANG_SPV_TOOLS_H #define GLSLANG_SPV_TOOLS_H -#ifdef ENABLE_OPT +#if ENABLE_OPT #include #include +#include "spirv-tools/libspirv.h" #endif #include "glslang/MachineIndependent/localintermediate.h" @@ -62,11 +63,15 @@ struct SpvOptions { bool validate; }; -#ifdef ENABLE_OPT +#if ENABLE_OPT -// Use the SPIRV-Tools disassembler to print SPIR-V. +// Use the SPIRV-Tools disassembler to print SPIR-V using a SPV_ENV_UNIVERSAL_1_3 environment. void SpirvToolsDisassemble(std::ostream& out, const std::vector& spirv); +// Use the SPIRV-Tools disassembler to print SPIR-V with a provided SPIR-V environment. +void SpirvToolsDisassemble(std::ostream& out, const std::vector& spirv, + spv_target_env requested_context); + // Apply the SPIRV-Tools validator to generated SPIR-V. void SpirvToolsValidate(const glslang::TIntermediate& intermediate, std::vector& spirv, spv::SpvBuildLogger*, bool prelegalization); diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt index 8038c043..bff9ab61 100644 --- a/StandAlone/CMakeLists.txt +++ b/StandAlone/CMakeLists.txt @@ -41,7 +41,6 @@ target_include_directories(glslang-default-resource-limits PUBLIC $ PUBLIC $) - set(SOURCES StandAlone.cpp DirStackFileIncluder.h) add_executable(glslangValidator ${SOURCES}) @@ -70,6 +69,12 @@ target_include_directories(glslangValidator PUBLIC $ $) +if(ENABLE_OPT) + target_include_directories(glslangValidator + PRIVATE ${spirv-tools_SOURCE_DIR}/include + ) +endif(ENABLE_OPT) + if(ENABLE_SPVREMAPPER) set(REMAPPER_SOURCES spirv-remap.cpp) add_executable(spirv-remap ${REMAPPER_SOURCES}) diff --git a/gtests/CMakeLists.txt b/gtests/CMakeLists.txt index 6c48d9c2..0617ff85 100644 --- a/gtests/CMakeLists.txt +++ b/gtests/CMakeLists.txt @@ -83,6 +83,12 @@ if(BUILD_TESTING) ${gmock_SOURCE_DIR}/include ${gtest_SOURCE_DIR}/include) + if(ENABLE_OPT) + target_include_directories(glslangtests + PRIVATE ${spirv-tools_SOURCE_DIR}/include + ) + endif(ENABLE_OPT) + set(LIBRARIES glslang OSDependent OGLCompiler glslang SPIRV glslang-default-resource-limits) From 2b77059502c925180c3c827eab73db6a5bc9aa8e Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Mon, 5 Oct 2020 16:58:31 -0600 Subject: [PATCH 19/57] Revert "Add new SpirvToolsDisassemble API interface + Improve Doc on existing API interface (#2408)" See issue #2413. This reverts commit d1929f359a1035cb169ec54630c24ae6ce0bcc21. --- SPIRV/SpvTools.cpp | 12 +++--------- SPIRV/SpvTools.h | 11 +++-------- StandAlone/CMakeLists.txt | 7 +------ gtests/CMakeLists.txt | 6 ------ 4 files changed, 7 insertions(+), 29 deletions(-) diff --git a/SPIRV/SpvTools.cpp b/SPIRV/SpvTools.cpp index bcbaedde..112ac33c 100644 --- a/SPIRV/SpvTools.cpp +++ b/SPIRV/SpvTools.cpp @@ -44,6 +44,7 @@ #include "SpvTools.h" #include "spirv-tools/optimizer.hpp" +#include "spirv-tools/libspirv.h" namespace glslang { @@ -113,18 +114,11 @@ void OptimizerMesssageConsumer(spv_message_level_t level, const char *source, out << std::endl; } -// Use the SPIRV-Tools disassembler to print SPIR-V using a SPV_ENV_UNIVERSAL_1_3 environment. +// Use the SPIRV-Tools disassembler to print SPIR-V. void SpirvToolsDisassemble(std::ostream& out, const std::vector& spirv) -{ - SpirvToolsDisassemble(out, spirv, spv_target_env::SPV_ENV_UNIVERSAL_1_3); -} - -// Use the SPIRV-Tools disassembler to print SPIR-V with a provided SPIR-V environment. -void SpirvToolsDisassemble(std::ostream& out, const std::vector& spirv, - spv_target_env requested_context) { // disassemble - spv_context context = spvContextCreate(requested_context); + spv_context context = spvContextCreate(SPV_ENV_UNIVERSAL_1_3); spv_text text; spv_diagnostic diagnostic = nullptr; spvBinaryToText(context, spirv.data(), spirv.size(), diff --git a/SPIRV/SpvTools.h b/SPIRV/SpvTools.h index 3fb3cbac..7779dfa7 100644 --- a/SPIRV/SpvTools.h +++ b/SPIRV/SpvTools.h @@ -41,10 +41,9 @@ #ifndef GLSLANG_SPV_TOOLS_H #define GLSLANG_SPV_TOOLS_H -#if ENABLE_OPT +#ifdef ENABLE_OPT #include #include -#include "spirv-tools/libspirv.h" #endif #include "glslang/MachineIndependent/localintermediate.h" @@ -63,15 +62,11 @@ struct SpvOptions { bool validate; }; -#if ENABLE_OPT +#ifdef ENABLE_OPT -// Use the SPIRV-Tools disassembler to print SPIR-V using a SPV_ENV_UNIVERSAL_1_3 environment. +// Use the SPIRV-Tools disassembler to print SPIR-V. void SpirvToolsDisassemble(std::ostream& out, const std::vector& spirv); -// Use the SPIRV-Tools disassembler to print SPIR-V with a provided SPIR-V environment. -void SpirvToolsDisassemble(std::ostream& out, const std::vector& spirv, - spv_target_env requested_context); - // Apply the SPIRV-Tools validator to generated SPIR-V. void SpirvToolsValidate(const glslang::TIntermediate& intermediate, std::vector& spirv, spv::SpvBuildLogger*, bool prelegalization); diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt index bff9ab61..8038c043 100644 --- a/StandAlone/CMakeLists.txt +++ b/StandAlone/CMakeLists.txt @@ -41,6 +41,7 @@ target_include_directories(glslang-default-resource-limits PUBLIC $ PUBLIC $) + set(SOURCES StandAlone.cpp DirStackFileIncluder.h) add_executable(glslangValidator ${SOURCES}) @@ -69,12 +70,6 @@ target_include_directories(glslangValidator PUBLIC $ $) -if(ENABLE_OPT) - target_include_directories(glslangValidator - PRIVATE ${spirv-tools_SOURCE_DIR}/include - ) -endif(ENABLE_OPT) - if(ENABLE_SPVREMAPPER) set(REMAPPER_SOURCES spirv-remap.cpp) add_executable(spirv-remap ${REMAPPER_SOURCES}) diff --git a/gtests/CMakeLists.txt b/gtests/CMakeLists.txt index 0617ff85..6c48d9c2 100644 --- a/gtests/CMakeLists.txt +++ b/gtests/CMakeLists.txt @@ -83,12 +83,6 @@ if(BUILD_TESTING) ${gmock_SOURCE_DIR}/include ${gtest_SOURCE_DIR}/include) - if(ENABLE_OPT) - target_include_directories(glslangtests - PRIVATE ${spirv-tools_SOURCE_DIR}/include - ) - endif(ENABLE_OPT) - set(LIBRARIES glslang OSDependent OGLCompiler glslang SPIRV glslang-default-resource-limits) From 3ce148638bdc3807316e358dee4a5c9583189ae7 Mon Sep 17 00:00:00 2001 From: jonahryandavis <8729214+jonahryandavis@users.noreply.github.com> Date: Wed, 7 Oct 2020 13:32:49 -0400 Subject: [PATCH 20/57] Disable -Wno-conversion on MSVC compiler (#2410) --- BUILD.gn | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/BUILD.gn b/BUILD.gn index f877078b..29256c43 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -76,7 +76,9 @@ if (!defined(glslang_angle)) { config("glslang_public") { include_dirs = [ "." ] - cflags = [ "-Wno-conversion" ] + if (!is_win || is_clang) { + cflags = [ "-Wno-conversion" ] + } } config("glslang_hlsl") { From 2067d1a93e6edc17f2a6b7e3e5138a9bbcd35ef9 Mon Sep 17 00:00:00 2001 From: David Neto Date: Wed, 7 Oct 2020 18:10:27 -0400 Subject: [PATCH 21/57] Add test case for read-only storage texture passed to helper function (#2414) This is based on spv.paramMemory.frag.out which exercises the writeonly storage image case. This appears to need desktop GLSL. The generated SPIR-V fails validation because the image_write function takes a parameter which is pointer to an OpTypeImage with Unknown format. But the parameters passed in are pointer to OpTypeImage with formats Rgba32f and Rgba16f. The validator rejects this, saying the parameter types must match. --- Test/baseResults/spv.paramMemory.420.frag.out | 139 ++++++++++++++++++ Test/spv.paramMemory.420.frag | 33 +++++ gtests/Spv.FromFile.cpp | 1 + 3 files changed, 173 insertions(+) create mode 100644 Test/baseResults/spv.paramMemory.420.frag.out create mode 100644 Test/spv.paramMemory.420.frag diff --git a/Test/baseResults/spv.paramMemory.420.frag.out b/Test/baseResults/spv.paramMemory.420.frag.out new file mode 100644 index 00000000..4cdc35f7 --- /dev/null +++ b/Test/baseResults/spv.paramMemory.420.frag.out @@ -0,0 +1,139 @@ +spv.paramMemory.420.frag +Validation failed +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 69 + + Capability Shader + Capability StorageImageReadWithoutFormat + Capability StorageImageWriteWithoutFormat + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 27 66 + ExecutionMode 4 OriginUpperLeft + Source GLSL 420 + SourceExtension "GL_EXT_shader_image_load_formatted" + Name 4 "main" + Name 16 "image_load(I21;vi2;" + Name 14 "image" + Name 15 "coords" + Name 23 "image_store(I21;vi2;vf4;" + Name 20 "image" + Name 21 "coords" + Name 22 "data" + Name 27 "in_coords" + Name 35 "read1" + Name 36 "image1" + Name 37 "param" + Name 40 "read2" + Name 41 "image2" + Name 42 "param" + Name 47 "image3" + Name 51 "param" + Name 53 "param" + Name 57 "image4" + Name 61 "param" + Name 63 "param" + Name 66 "out_color" + Decorate 14(image) Coherent + Decorate 14(image) NonWritable + Decorate 20(image) Coherent + Decorate 20(image) NonReadable + Decorate 27(in_coords) Flat + Decorate 27(in_coords) Location 0 + Decorate 36(image1) DescriptorSet 0 + Decorate 36(image1) Binding 0 + Decorate 36(image1) Coherent + Decorate 36(image1) NonWritable + Decorate 41(image2) DescriptorSet 0 + Decorate 41(image2) Binding 2 + Decorate 41(image2) NonWritable + Decorate 47(image3) DescriptorSet 0 + Decorate 47(image3) Binding 1 + Decorate 47(image3) Coherent + Decorate 47(image3) NonReadable + Decorate 57(image4) DescriptorSet 0 + Decorate 57(image4) Binding 3 + Decorate 57(image4) NonReadable + Decorate 66(out_color) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeImage 6(float) 2D nonsampled format:Unknown + 8: TypePointer UniformConstant 7 + 9: TypeInt 32 1 + 10: TypeVector 9(int) 2 + 11: TypePointer Function 10(ivec2) + 12: TypeVector 6(float) 4 + 13: TypeFunction 12(fvec4) 8(ptr) 11(ptr) + 18: TypePointer Function 12(fvec4) + 19: TypeFunction 2 8(ptr) 11(ptr) 18(ptr) + 26: TypePointer Input 10(ivec2) + 27(in_coords): 26(ptr) Variable Input + 36(image1): 8(ptr) Variable UniformConstant + 41(image2): 8(ptr) Variable UniformConstant + 45: TypeImage 6(float) 2D nonsampled format:Rgba32f + 46: TypePointer UniformConstant 45 + 47(image3): 46(ptr) Variable UniformConstant + 49: 6(float) Constant 1056964608 + 55: TypeImage 6(float) 2D nonsampled format:Rgba16f + 56: TypePointer UniformConstant 55 + 57(image4): 56(ptr) Variable UniformConstant + 59: 6(float) Constant 1073741824 + 65: TypePointer Output 12(fvec4) + 66(out_color): 65(ptr) Variable Output + 67: 6(float) Constant 0 + 68: 12(fvec4) ConstantComposite 67 67 67 67 + 4(main): 2 Function None 3 + 5: Label + 35(read1): 18(ptr) Variable Function + 37(param): 11(ptr) Variable Function + 40(read2): 18(ptr) Variable Function + 42(param): 11(ptr) Variable Function + 51(param): 11(ptr) Variable Function + 53(param): 18(ptr) Variable Function + 61(param): 11(ptr) Variable Function + 63(param): 18(ptr) Variable Function + 38: 10(ivec2) Load 27(in_coords) + Store 37(param) 38 + 39: 12(fvec4) FunctionCall 16(image_load(I21;vi2;) 36(image1) 37(param) + Store 35(read1) 39 + 43: 10(ivec2) Load 27(in_coords) + Store 42(param) 43 + 44: 12(fvec4) FunctionCall 16(image_load(I21;vi2;) 41(image2) 42(param) + Store 40(read2) 44 + 48: 12(fvec4) Load 35(read1) + 50: 12(fvec4) VectorTimesScalar 48 49 + 52: 10(ivec2) Load 27(in_coords) + Store 51(param) 52 + Store 53(param) 50 + 54: 2 FunctionCall 23(image_store(I21;vi2;vf4;) 47(image3) 51(param) 53(param) + 58: 12(fvec4) Load 40(read2) + 60: 12(fvec4) VectorTimesScalar 58 59 + 62: 10(ivec2) Load 27(in_coords) + Store 61(param) 62 + Store 63(param) 60 + 64: 2 FunctionCall 23(image_store(I21;vi2;vf4;) 57(image4) 61(param) 63(param) + Store 66(out_color) 68 + Return + FunctionEnd +16(image_load(I21;vi2;): 12(fvec4) Function None 13 + 14(image): 8(ptr) FunctionParameter + 15(coords): 11(ptr) FunctionParameter + 17: Label + 25: 7 Load 14(image) + 28: 10(ivec2) Load 27(in_coords) + 29: 12(fvec4) ImageRead 25 28 + ReturnValue 29 + FunctionEnd +23(image_store(I21;vi2;vf4;): 2 Function None 19 + 20(image): 8(ptr) FunctionParameter + 21(coords): 11(ptr) FunctionParameter + 22(data): 18(ptr) FunctionParameter + 24: Label + 32: 7 Load 20(image) + 33: 10(ivec2) Load 27(in_coords) + 34: 12(fvec4) Load 22(data) + ImageWrite 32 33 34 + Return + FunctionEnd diff --git a/Test/spv.paramMemory.420.frag b/Test/spv.paramMemory.420.frag new file mode 100644 index 00000000..15f175a2 --- /dev/null +++ b/Test/spv.paramMemory.420.frag @@ -0,0 +1,33 @@ +#version 420 + +// Need this extension to permit passing a formatless readonly image to a helper function. +#extension GL_EXT_shader_image_load_formatted : require + +readonly coherent uniform layout(set = 0, binding = 0) image2D image1; +readonly uniform layout(set = 0, binding = 2) image2D image2; +writeonly coherent uniform layout(set = 0, binding = 1, rgba32f) image2D image3; +writeonly uniform layout(set = 0, binding = 3, rgba16f) image2D image4; + +flat in layout(location = 0) ivec2 in_coords; +out layout(location = 0) vec4 out_color; + +vec4 image_load(readonly coherent image2D image, ivec2 coords) +{ + return imageLoad(image, in_coords); +} + +void image_store(writeonly coherent image2D image, ivec2 coords, vec4 data) +{ + imageStore(image, in_coords, data); +} + +void main() +{ + vec4 read1 = image_load(image1, in_coords); + vec4 read2 = image_load(image2, in_coords); + + image_store(image3, in_coords, read1*0.5); + image_store(image4, in_coords, read2*2.0); + + out_color = vec4(0.0); +} diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 309fe756..df68f521 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -376,6 +376,7 @@ INSTANTIATE_TEST_SUITE_P( "spv.offsets.frag", "spv.Operations.frag", "spv.paramMemory.frag", + "spv.paramMemory.420.frag", "spv.precision.frag", "spv.precisionArgs.frag", "spv.precisionNonESSamp.frag", From 69d0c1acc28a9e634ed45ff5fb66b8e6a3fbef81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Mon, 12 Oct 2020 18:08:47 +0200 Subject: [PATCH 22/57] Remove executable bits from code/data files (#2420) --- .gitattributes | 0 README.md | 0 SPIRV/GlslangToSpv.h | 0 SPIRV/spvIR.h | 0 Test/310.frag | 0 Test/baseResults/contradict_0.geom.out | 0 Test/baseResults/cppBad3.vert.out | 0 Test/baseResults/cppBad4.vert.out | 0 Test/baseResults/cppBad5.vert.out | 0 Test/baseResults/cppMerge.frag.out | 0 Test/baseResults/hlsl.earlydepthstencil.frag.out | 0 Test/baseResults/hlsl.singleArgIntPromo.vert.out | 0 Test/baseResults/hlsl.specConstant.frag.out | 0 Test/baseResults/link.multiAnonBlocksInvalid.0.0.vert.out | 0 Test/baseResults/link.multiAnonBlocksValid.0.0.vert.out | 0 Test/baseResults/link.multiBlocksInvalid.0.0.vert.out | 0 Test/baseResults/link.multiBlocksValid.1.0.vert.out | 0 Test/baseResults/link.vk.differentPC.0.0.frag.out | 0 Test/baseResults/link.vk.differentPC.1.0.frag.out | 0 Test/baseResults/link.vk.matchingPC.0.0.frag.out | 0 Test/baseResults/link.vk.multiBlocksValid.0.0.vert.out | 0 Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out | 0 Test/baseResults/link.vk.pcNamingInvalid.0.0.vert.out | 0 Test/baseResults/link.vk.pcNamingValid.0.0.vert.out | 0 Test/baseResults/spv.1.4.NonWritable.frag.out | 0 Test/baseResults/spv.1.4.OpEntryPoint.opaqueParams.vert.out | 0 Test/baseResults/spv.1.4.OpSelect.frag.out | 0 Test/baseResults/spv.1.4.image.frag.out | 0 Test/baseResults/spv.1.4.sparseTexture.frag.out | 0 Test/baseResults/spv.1.4.texture.frag.out | 0 Test/baseResults/spv.RayGenShader11.rgen.out | 0 Test/baseResults/spv.atomicFloat.comp.out | 0 Test/baseResults/spv.atomicFloat_Error.comp.out | 0 Test/baseResults/spv.bufferhandleUvec2.frag.out | 0 Test/baseResults/spv.ext.World3x4.rahit.out | 0 Test/baseResults/spv.precisionArgs.frag.out | 0 Test/baseResults/spv.precisionTexture.frag.out | 0 Test/baseResults/spv.specConstArrayCheck.vert.out | 0 Test/baseResults/spv.specTexture.frag.out | 0 Test/contradict_0.geom | 0 Test/contradict_1.geom | 0 Test/cppBad4.vert | 0 Test/cppBad5.vert | 0 Test/cppMerge.frag | 0 Test/hlsl.intrinsics.frag | 0 Test/hlsl.singleArgIntPromo.vert | 0 Test/hlsl.specConstant.frag | 0 Test/link.multiAnonBlocksInvalid.0.0.vert | 0 Test/link.multiAnonBlocksInvalid.0.1.vert | 0 Test/link.multiAnonBlocksValid.0.0.vert | 0 Test/link.multiAnonBlocksValid.0.1.vert | 0 Test/link.multiBlocksInvalid.0.0.vert | 0 Test/link.multiBlocksInvalid.0.1.vert | 0 Test/link.multiBlocksValid.1.0.vert | 0 Test/link.multiBlocksValid.1.1.vert | 0 Test/link.vk.differentPC.0.0.frag | 0 Test/link.vk.differentPC.0.1.frag | 0 Test/link.vk.differentPC.0.2.frag | 0 Test/link.vk.differentPC.1.0.frag | 0 Test/link.vk.differentPC.1.1.frag | 0 Test/link.vk.differentPC.1.2.frag | 0 Test/link.vk.matchingPC.0.0.frag | 0 Test/link.vk.matchingPC.0.1.frag | 0 Test/link.vk.matchingPC.0.2.frag | 0 Test/link.vk.multiBlocksValid.0.0.vert | 0 Test/link.vk.multiBlocksValid.0.1.vert | 0 Test/link.vk.multiBlocksValid.1.0.geom | 0 Test/link.vk.multiBlocksValid.1.1.geom | 0 Test/link.vk.pcNamingInvalid.0.0.vert | 0 Test/link.vk.pcNamingInvalid.0.1.vert | 0 Test/link.vk.pcNamingValid.0.0.vert | 0 Test/link.vk.pcNamingValid.0.1.vert | 0 Test/spv.1.4.NonWritable.frag | 0 Test/spv.1.4.OpSelect.frag | 0 Test/spv.atomicFloat.comp | 0 Test/spv.atomicFloat_Error.comp | 0 Test/spv.specConstArrayCheck.vert | 0 glslang/HLSL/hlslParseHelper.cpp | 0 glslang/MachineIndependent/Intermediate.cpp | 0 glslang/MachineIndependent/linkValidate.cpp | 0 glslang/MachineIndependent/preprocessor/PpTokens.cpp | 0 gtests/Hlsl.FromFile.cpp | 0 gtests/Link.FromFile.Vk.cpp | 0 gtests/Link.FromFile.cpp | 0 gtests/TestFixture.h | 0 85 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 .gitattributes mode change 100755 => 100644 README.md mode change 100755 => 100644 SPIRV/GlslangToSpv.h mode change 100755 => 100644 SPIRV/spvIR.h mode change 100755 => 100644 Test/310.frag mode change 100755 => 100644 Test/baseResults/contradict_0.geom.out mode change 100755 => 100644 Test/baseResults/cppBad3.vert.out mode change 100755 => 100644 Test/baseResults/cppBad4.vert.out mode change 100755 => 100644 Test/baseResults/cppBad5.vert.out mode change 100755 => 100644 Test/baseResults/cppMerge.frag.out mode change 100755 => 100644 Test/baseResults/hlsl.earlydepthstencil.frag.out mode change 100755 => 100644 Test/baseResults/hlsl.singleArgIntPromo.vert.out mode change 100755 => 100644 Test/baseResults/hlsl.specConstant.frag.out mode change 100755 => 100644 Test/baseResults/link.multiAnonBlocksInvalid.0.0.vert.out mode change 100755 => 100644 Test/baseResults/link.multiAnonBlocksValid.0.0.vert.out mode change 100755 => 100644 Test/baseResults/link.multiBlocksInvalid.0.0.vert.out mode change 100755 => 100644 Test/baseResults/link.multiBlocksValid.1.0.vert.out mode change 100755 => 100644 Test/baseResults/link.vk.differentPC.0.0.frag.out mode change 100755 => 100644 Test/baseResults/link.vk.differentPC.1.0.frag.out mode change 100755 => 100644 Test/baseResults/link.vk.matchingPC.0.0.frag.out mode change 100755 => 100644 Test/baseResults/link.vk.multiBlocksValid.0.0.vert.out mode change 100755 => 100644 Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out mode change 100755 => 100644 Test/baseResults/link.vk.pcNamingInvalid.0.0.vert.out mode change 100755 => 100644 Test/baseResults/link.vk.pcNamingValid.0.0.vert.out mode change 100755 => 100644 Test/baseResults/spv.1.4.NonWritable.frag.out mode change 100755 => 100644 Test/baseResults/spv.1.4.OpEntryPoint.opaqueParams.vert.out mode change 100755 => 100644 Test/baseResults/spv.1.4.OpSelect.frag.out mode change 100755 => 100644 Test/baseResults/spv.1.4.image.frag.out mode change 100755 => 100644 Test/baseResults/spv.1.4.sparseTexture.frag.out mode change 100755 => 100644 Test/baseResults/spv.1.4.texture.frag.out mode change 100755 => 100644 Test/baseResults/spv.RayGenShader11.rgen.out mode change 100755 => 100644 Test/baseResults/spv.atomicFloat.comp.out mode change 100755 => 100644 Test/baseResults/spv.atomicFloat_Error.comp.out mode change 100755 => 100644 Test/baseResults/spv.bufferhandleUvec2.frag.out mode change 100755 => 100644 Test/baseResults/spv.ext.World3x4.rahit.out mode change 100755 => 100644 Test/baseResults/spv.precisionArgs.frag.out mode change 100755 => 100644 Test/baseResults/spv.precisionTexture.frag.out mode change 100755 => 100644 Test/baseResults/spv.specConstArrayCheck.vert.out mode change 100755 => 100644 Test/baseResults/spv.specTexture.frag.out mode change 100755 => 100644 Test/contradict_0.geom mode change 100755 => 100644 Test/contradict_1.geom mode change 100755 => 100644 Test/cppBad4.vert mode change 100755 => 100644 Test/cppBad5.vert mode change 100755 => 100644 Test/cppMerge.frag mode change 100755 => 100644 Test/hlsl.intrinsics.frag mode change 100755 => 100644 Test/hlsl.singleArgIntPromo.vert mode change 100755 => 100644 Test/hlsl.specConstant.frag mode change 100755 => 100644 Test/link.multiAnonBlocksInvalid.0.0.vert mode change 100755 => 100644 Test/link.multiAnonBlocksInvalid.0.1.vert mode change 100755 => 100644 Test/link.multiAnonBlocksValid.0.0.vert mode change 100755 => 100644 Test/link.multiAnonBlocksValid.0.1.vert mode change 100755 => 100644 Test/link.multiBlocksInvalid.0.0.vert mode change 100755 => 100644 Test/link.multiBlocksInvalid.0.1.vert mode change 100755 => 100644 Test/link.multiBlocksValid.1.0.vert mode change 100755 => 100644 Test/link.multiBlocksValid.1.1.vert mode change 100755 => 100644 Test/link.vk.differentPC.0.0.frag mode change 100755 => 100644 Test/link.vk.differentPC.0.1.frag mode change 100755 => 100644 Test/link.vk.differentPC.0.2.frag mode change 100755 => 100644 Test/link.vk.differentPC.1.0.frag mode change 100755 => 100644 Test/link.vk.differentPC.1.1.frag mode change 100755 => 100644 Test/link.vk.differentPC.1.2.frag mode change 100755 => 100644 Test/link.vk.matchingPC.0.0.frag mode change 100755 => 100644 Test/link.vk.matchingPC.0.1.frag mode change 100755 => 100644 Test/link.vk.matchingPC.0.2.frag mode change 100755 => 100644 Test/link.vk.multiBlocksValid.0.0.vert mode change 100755 => 100644 Test/link.vk.multiBlocksValid.0.1.vert mode change 100755 => 100644 Test/link.vk.multiBlocksValid.1.0.geom mode change 100755 => 100644 Test/link.vk.multiBlocksValid.1.1.geom mode change 100755 => 100644 Test/link.vk.pcNamingInvalid.0.0.vert mode change 100755 => 100644 Test/link.vk.pcNamingInvalid.0.1.vert mode change 100755 => 100644 Test/link.vk.pcNamingValid.0.0.vert mode change 100755 => 100644 Test/link.vk.pcNamingValid.0.1.vert mode change 100755 => 100644 Test/spv.1.4.NonWritable.frag mode change 100755 => 100644 Test/spv.1.4.OpSelect.frag mode change 100755 => 100644 Test/spv.atomicFloat.comp mode change 100755 => 100644 Test/spv.atomicFloat_Error.comp mode change 100755 => 100644 Test/spv.specConstArrayCheck.vert mode change 100755 => 100644 glslang/HLSL/hlslParseHelper.cpp mode change 100755 => 100644 glslang/MachineIndependent/Intermediate.cpp mode change 100755 => 100644 glslang/MachineIndependent/linkValidate.cpp mode change 100755 => 100644 glslang/MachineIndependent/preprocessor/PpTokens.cpp mode change 100755 => 100644 gtests/Hlsl.FromFile.cpp mode change 100755 => 100644 gtests/Link.FromFile.Vk.cpp mode change 100755 => 100644 gtests/Link.FromFile.cpp mode change 100755 => 100644 gtests/TestFixture.h diff --git a/.gitattributes b/.gitattributes old mode 100755 new mode 100644 diff --git a/README.md b/README.md old mode 100755 new mode 100644 diff --git a/SPIRV/GlslangToSpv.h b/SPIRV/GlslangToSpv.h old mode 100755 new mode 100644 diff --git a/SPIRV/spvIR.h b/SPIRV/spvIR.h old mode 100755 new mode 100644 diff --git a/Test/310.frag b/Test/310.frag old mode 100755 new mode 100644 diff --git a/Test/baseResults/contradict_0.geom.out b/Test/baseResults/contradict_0.geom.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/cppBad3.vert.out b/Test/baseResults/cppBad3.vert.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/cppBad4.vert.out b/Test/baseResults/cppBad4.vert.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/cppBad5.vert.out b/Test/baseResults/cppBad5.vert.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/cppMerge.frag.out b/Test/baseResults/cppMerge.frag.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/hlsl.earlydepthstencil.frag.out b/Test/baseResults/hlsl.earlydepthstencil.frag.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/hlsl.singleArgIntPromo.vert.out b/Test/baseResults/hlsl.singleArgIntPromo.vert.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/hlsl.specConstant.frag.out b/Test/baseResults/hlsl.specConstant.frag.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/link.multiAnonBlocksInvalid.0.0.vert.out b/Test/baseResults/link.multiAnonBlocksInvalid.0.0.vert.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/link.multiAnonBlocksValid.0.0.vert.out b/Test/baseResults/link.multiAnonBlocksValid.0.0.vert.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/link.multiBlocksInvalid.0.0.vert.out b/Test/baseResults/link.multiBlocksInvalid.0.0.vert.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/link.multiBlocksValid.1.0.vert.out b/Test/baseResults/link.multiBlocksValid.1.0.vert.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/link.vk.differentPC.0.0.frag.out b/Test/baseResults/link.vk.differentPC.0.0.frag.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/link.vk.differentPC.1.0.frag.out b/Test/baseResults/link.vk.differentPC.1.0.frag.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/link.vk.matchingPC.0.0.frag.out b/Test/baseResults/link.vk.matchingPC.0.0.frag.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/link.vk.multiBlocksValid.0.0.vert.out b/Test/baseResults/link.vk.multiBlocksValid.0.0.vert.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out b/Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/link.vk.pcNamingInvalid.0.0.vert.out b/Test/baseResults/link.vk.pcNamingInvalid.0.0.vert.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/link.vk.pcNamingValid.0.0.vert.out b/Test/baseResults/link.vk.pcNamingValid.0.0.vert.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/spv.1.4.NonWritable.frag.out b/Test/baseResults/spv.1.4.NonWritable.frag.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/spv.1.4.OpEntryPoint.opaqueParams.vert.out b/Test/baseResults/spv.1.4.OpEntryPoint.opaqueParams.vert.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/spv.1.4.OpSelect.frag.out b/Test/baseResults/spv.1.4.OpSelect.frag.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/spv.1.4.image.frag.out b/Test/baseResults/spv.1.4.image.frag.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/spv.1.4.sparseTexture.frag.out b/Test/baseResults/spv.1.4.sparseTexture.frag.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/spv.1.4.texture.frag.out b/Test/baseResults/spv.1.4.texture.frag.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/spv.RayGenShader11.rgen.out b/Test/baseResults/spv.RayGenShader11.rgen.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/spv.atomicFloat.comp.out b/Test/baseResults/spv.atomicFloat.comp.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/spv.atomicFloat_Error.comp.out b/Test/baseResults/spv.atomicFloat_Error.comp.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/spv.bufferhandleUvec2.frag.out b/Test/baseResults/spv.bufferhandleUvec2.frag.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/spv.ext.World3x4.rahit.out b/Test/baseResults/spv.ext.World3x4.rahit.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/spv.precisionArgs.frag.out b/Test/baseResults/spv.precisionArgs.frag.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/spv.precisionTexture.frag.out b/Test/baseResults/spv.precisionTexture.frag.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/spv.specConstArrayCheck.vert.out b/Test/baseResults/spv.specConstArrayCheck.vert.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/spv.specTexture.frag.out b/Test/baseResults/spv.specTexture.frag.out old mode 100755 new mode 100644 diff --git a/Test/contradict_0.geom b/Test/contradict_0.geom old mode 100755 new mode 100644 diff --git a/Test/contradict_1.geom b/Test/contradict_1.geom old mode 100755 new mode 100644 diff --git a/Test/cppBad4.vert b/Test/cppBad4.vert old mode 100755 new mode 100644 diff --git a/Test/cppBad5.vert b/Test/cppBad5.vert old mode 100755 new mode 100644 diff --git a/Test/cppMerge.frag b/Test/cppMerge.frag old mode 100755 new mode 100644 diff --git a/Test/hlsl.intrinsics.frag b/Test/hlsl.intrinsics.frag old mode 100755 new mode 100644 diff --git a/Test/hlsl.singleArgIntPromo.vert b/Test/hlsl.singleArgIntPromo.vert old mode 100755 new mode 100644 diff --git a/Test/hlsl.specConstant.frag b/Test/hlsl.specConstant.frag old mode 100755 new mode 100644 diff --git a/Test/link.multiAnonBlocksInvalid.0.0.vert b/Test/link.multiAnonBlocksInvalid.0.0.vert old mode 100755 new mode 100644 diff --git a/Test/link.multiAnonBlocksInvalid.0.1.vert b/Test/link.multiAnonBlocksInvalid.0.1.vert old mode 100755 new mode 100644 diff --git a/Test/link.multiAnonBlocksValid.0.0.vert b/Test/link.multiAnonBlocksValid.0.0.vert old mode 100755 new mode 100644 diff --git a/Test/link.multiAnonBlocksValid.0.1.vert b/Test/link.multiAnonBlocksValid.0.1.vert old mode 100755 new mode 100644 diff --git a/Test/link.multiBlocksInvalid.0.0.vert b/Test/link.multiBlocksInvalid.0.0.vert old mode 100755 new mode 100644 diff --git a/Test/link.multiBlocksInvalid.0.1.vert b/Test/link.multiBlocksInvalid.0.1.vert old mode 100755 new mode 100644 diff --git a/Test/link.multiBlocksValid.1.0.vert b/Test/link.multiBlocksValid.1.0.vert old mode 100755 new mode 100644 diff --git a/Test/link.multiBlocksValid.1.1.vert b/Test/link.multiBlocksValid.1.1.vert old mode 100755 new mode 100644 diff --git a/Test/link.vk.differentPC.0.0.frag b/Test/link.vk.differentPC.0.0.frag old mode 100755 new mode 100644 diff --git a/Test/link.vk.differentPC.0.1.frag b/Test/link.vk.differentPC.0.1.frag old mode 100755 new mode 100644 diff --git a/Test/link.vk.differentPC.0.2.frag b/Test/link.vk.differentPC.0.2.frag old mode 100755 new mode 100644 diff --git a/Test/link.vk.differentPC.1.0.frag b/Test/link.vk.differentPC.1.0.frag old mode 100755 new mode 100644 diff --git a/Test/link.vk.differentPC.1.1.frag b/Test/link.vk.differentPC.1.1.frag old mode 100755 new mode 100644 diff --git a/Test/link.vk.differentPC.1.2.frag b/Test/link.vk.differentPC.1.2.frag old mode 100755 new mode 100644 diff --git a/Test/link.vk.matchingPC.0.0.frag b/Test/link.vk.matchingPC.0.0.frag old mode 100755 new mode 100644 diff --git a/Test/link.vk.matchingPC.0.1.frag b/Test/link.vk.matchingPC.0.1.frag old mode 100755 new mode 100644 diff --git a/Test/link.vk.matchingPC.0.2.frag b/Test/link.vk.matchingPC.0.2.frag old mode 100755 new mode 100644 diff --git a/Test/link.vk.multiBlocksValid.0.0.vert b/Test/link.vk.multiBlocksValid.0.0.vert old mode 100755 new mode 100644 diff --git a/Test/link.vk.multiBlocksValid.0.1.vert b/Test/link.vk.multiBlocksValid.0.1.vert old mode 100755 new mode 100644 diff --git a/Test/link.vk.multiBlocksValid.1.0.geom b/Test/link.vk.multiBlocksValid.1.0.geom old mode 100755 new mode 100644 diff --git a/Test/link.vk.multiBlocksValid.1.1.geom b/Test/link.vk.multiBlocksValid.1.1.geom old mode 100755 new mode 100644 diff --git a/Test/link.vk.pcNamingInvalid.0.0.vert b/Test/link.vk.pcNamingInvalid.0.0.vert old mode 100755 new mode 100644 diff --git a/Test/link.vk.pcNamingInvalid.0.1.vert b/Test/link.vk.pcNamingInvalid.0.1.vert old mode 100755 new mode 100644 diff --git a/Test/link.vk.pcNamingValid.0.0.vert b/Test/link.vk.pcNamingValid.0.0.vert old mode 100755 new mode 100644 diff --git a/Test/link.vk.pcNamingValid.0.1.vert b/Test/link.vk.pcNamingValid.0.1.vert old mode 100755 new mode 100644 diff --git a/Test/spv.1.4.NonWritable.frag b/Test/spv.1.4.NonWritable.frag old mode 100755 new mode 100644 diff --git a/Test/spv.1.4.OpSelect.frag b/Test/spv.1.4.OpSelect.frag old mode 100755 new mode 100644 diff --git a/Test/spv.atomicFloat.comp b/Test/spv.atomicFloat.comp old mode 100755 new mode 100644 diff --git a/Test/spv.atomicFloat_Error.comp b/Test/spv.atomicFloat_Error.comp old mode 100755 new mode 100644 diff --git a/Test/spv.specConstArrayCheck.vert b/Test/spv.specConstArrayCheck.vert old mode 100755 new mode 100644 diff --git a/glslang/HLSL/hlslParseHelper.cpp b/glslang/HLSL/hlslParseHelper.cpp old mode 100755 new mode 100644 diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp old mode 100755 new mode 100644 diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp old mode 100755 new mode 100644 diff --git a/glslang/MachineIndependent/preprocessor/PpTokens.cpp b/glslang/MachineIndependent/preprocessor/PpTokens.cpp old mode 100755 new mode 100644 diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp old mode 100755 new mode 100644 diff --git a/gtests/Link.FromFile.Vk.cpp b/gtests/Link.FromFile.Vk.cpp old mode 100755 new mode 100644 diff --git a/gtests/Link.FromFile.cpp b/gtests/Link.FromFile.cpp old mode 100755 new mode 100644 diff --git a/gtests/TestFixture.h b/gtests/TestFixture.h old mode 100755 new mode 100644 From f4f1d8a352ca1908943aea2ad8c54b39b4879080 Mon Sep 17 00:00:00 2001 From: Triang3l Date: Mon, 12 Oct 2020 19:33:01 +0300 Subject: [PATCH 23/57] SPIR-V: Remove SpvTools.h include from disassemble.cpp (#2417) disassemble.cpp appears not to be using anything from SpvTools.h, but the inclusion of it prevents standalone building of the SPIR-V portion (for instance, when needed purely for generation and disassembly) without SPIRV-Tools dependency. --- SPIRV/disassemble.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/SPIRV/disassemble.cpp b/SPIRV/disassemble.cpp index a95ded49..73c988c5 100644 --- a/SPIRV/disassemble.cpp +++ b/SPIRV/disassemble.cpp @@ -46,7 +46,6 @@ #include "disassemble.h" #include "doc.h" -#include "SpvTools.h" namespace spv { extern "C" { From dac38b8fceeee7baa25c3a7d863bfe6dfe46de59 Mon Sep 17 00:00:00 2001 From: Ben Clayton Date: Fri, 16 Oct 2020 12:47:38 +0100 Subject: [PATCH 24/57] Add basic GN configurations This allows glslang to be build standalone using the gn build system. To build with gn: ``` gclient sync --gclientfile=standalone.gclient gn gen out/default cd out/default ninja ``` --- .gitignore | 2 + .gn | 39 +++++++++++++++++ DEPS | 77 +++++++++++++++++++++++++++++++++ build_overrides/build.gni | 39 +++++++++++++++++ build_overrides/glslang.gni | 2 +- build_overrides/spirv_tools.gni | 38 ++++++++++++++++ standalone.gclient | 42 ++++++++++++++++++ 7 files changed, 238 insertions(+), 1 deletion(-) create mode 100644 .gn create mode 100644 DEPS create mode 100644 build_overrides/build.gni create mode 100644 build_overrides/spirv_tools.gni create mode 100644 standalone.gclient diff --git a/.gitignore b/.gitignore index 790b880b..d6e197df 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ *.a *.so *.exe +*.gclient_entries .vscode/ tags TAGS @@ -11,3 +12,4 @@ Test/localResults/ External/googletest External/spirv-tools out/ +third_party/llvm-build diff --git a/.gn b/.gn new file mode 100644 index 00000000..5befb801 --- /dev/null +++ b/.gn @@ -0,0 +1,39 @@ +# Copyright (C) 2020 The Khronos Group 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 The Khronos Group Inc. 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. + +buildconfig = "//build/config/BUILDCONFIG.gn" + +default_args = { + clang_use_chrome_plugins = false + use_custom_libcxx = false +} diff --git a/DEPS b/DEPS new file mode 100644 index 00000000..9c0e045a --- /dev/null +++ b/DEPS @@ -0,0 +1,77 @@ +# Copyright (C) 2020 The Khronos Group 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 The Khronos Group Inc. 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. + +use_relative_paths = True + +gclient_gn_args_file = 'build/config/gclient_args.gni' + +vars = { + 'chromium_git': 'https://chromium.googlesource.com', + 'build_with_chromium': False, +} + +deps = { + + './build': { + 'url': '{chromium_git}/chromium/src/build.git@85ee3b7692e5284f08bd3c9459fb5685eed7b838', + 'condition': 'not build_with_chromium', + }, + + './buildtools': { + 'url': '{chromium_git}/chromium/src/buildtools.git@4be464e050b3d05060471788f926b34c641db9fd', + 'condition': 'not build_with_chromium', + }, + + './tools/clang': { + 'url': '{chromium_git}/chromium/src/tools/clang.git@3a982adabb720aa8f3e3885d40bf3fe506990157', + 'condition': 'not build_with_chromium', + }, + +} + +hooks = [ + { + 'name': 'sysroot_x64', + 'pattern': '.', + 'condition': 'checkout_linux and (checkout_x64 and not build_with_chromium)', + 'action': ['python', './build/linux/sysroot_scripts/install-sysroot.py', + '--arch=x64'], + }, + { + # Note: On Win, this should run after win_toolchain, as it may use it. + 'name': 'clang', + 'pattern': '.', + 'action': ['python', './tools/clang/scripts/update.py'], + 'condition': 'not build_with_chromium', + }, +] diff --git a/build_overrides/build.gni b/build_overrides/build.gni new file mode 100644 index 00000000..3101a86c --- /dev/null +++ b/build_overrides/build.gni @@ -0,0 +1,39 @@ +# Copyright (C) 2020 The Khronos Group 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 The Khronos Group Inc. 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. + +declare_args() { + build_with_chromium = false + linux_use_bundled_binutils_override = true + ignore_elf32_limitations = true + use_system_xcode = true +} diff --git a/build_overrides/glslang.gni b/build_overrides/glslang.gni index 500578cc..003c78f0 100644 --- a/build_overrides/glslang.gni +++ b/build_overrides/glslang.gni @@ -34,4 +34,4 @@ # These are variables that are overridable by projects that include glslang. # The path to glslang dependencies. -glslang_spirv_tools_dir = "//Externals/spirv-tools" +glslang_spirv_tools_dir = "//External/spirv-tools" diff --git a/build_overrides/spirv_tools.gni b/build_overrides/spirv_tools.gni new file mode 100644 index 00000000..7cf7005d --- /dev/null +++ b/build_overrides/spirv_tools.gni @@ -0,0 +1,38 @@ +# Copyright (C) 2020 The Khronos Group 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 The Khronos Group Inc. 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. + +# We are building inside glslang +spirv_tools_standalone = false + +# Paths to SPIRV-Tools dependencies +spirv_tools_spirv_headers_dir = "//External/spirv-tools/external/spirv-headers" diff --git a/standalone.gclient b/standalone.gclient new file mode 100644 index 00000000..de067dbc --- /dev/null +++ b/standalone.gclient @@ -0,0 +1,42 @@ +# Copyright (C) 2020 The Khronos Group 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 The Khronos Group Inc. 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. + +solutions = [ + { "name" : ".", + "url" : "https://github.com/KhronosGroup/glslang", + "deps_file" : "DEPS", + "managed" : False, + "custom_deps" : { + }, + }, +] From f915cc2b2b4f8bbd9d039c66475c76f297043465 Mon Sep 17 00:00:00 2001 From: Ben Clayton Date: Fri, 16 Oct 2020 14:26:05 +0100 Subject: [PATCH 25/57] Add GN build instructions to README.md --- README.md | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 30e85f8b..fa1fe601 100644 --- a/README.md +++ b/README.md @@ -88,7 +88,7 @@ The applied stage-specific rules are based on the file extension: There is also a non-shader extension * `.conf` for a configuration file of limits, see usage statement for example -## Building +## Building (CMake) Instead of building manually, you can also download the binaries for your platform directly from the [master-tot release][master-tot-release] on GitHub. @@ -184,6 +184,35 @@ cmake --build . --config Release --target install If using MSVC, after running CMake to configure, use the Configuration Manager to check the `INSTALL` project. +### Building (GN) + +glslang can also be built with the [GN build system](https://gn.googlesource.com/gn/). + +#### 1) Install `depot_tools` + +Download [depot_tools.zip](https://storage.googleapis.com/chrome-infra/depot_tools.zip), +extract to a directory, and add this directory to your `PATH`. + +#### 2) Synchronize dependencies and generate build files + +This only needs to be done once after updating `glslang`. + +With the current directory set to your `glslang` checkout, type: + +```bash +gclient sync --gclientfile=standalone.gclient +gn gen out/Default +``` + +#### 3) Build + +With the current directory set to your `glslang` checkout, type: + +```bash +cd out/Default +ninja +``` + ### If you need to change the GLSL grammar The grammar in `glslang/MachineIndependent/glslang.y` has to be recompiled with From 5b99b448b3dbc77f60a482b36f4e8fa9d0ff4a52 Mon Sep 17 00:00:00 2001 From: Ben Clayton Date: Mon, 19 Oct 2020 22:21:12 +0100 Subject: [PATCH 26/57] Fix uninitialized use of TIntermediate::resource (#2424) TIntermediate was constructed without initializing any of the `resources` fields, and `TProgram::linkStage()` was not calling `TIntermediate::setLimits()` after constructing new `TIntermediate`s for non-first stages. Fields of `resources` were then read in `TIntermediate::finalCheck()` triggering undefined behavior. This CL makes three changes: (1) `TIntermediate::setLimits()` is now called for non-first stages by copying the `firstIntermediate`'s limits. This ensures that the `resources` fields is initialized, fixing the bug. (2) `TIntermediate::resources` is now wrapped in a `MustBeAssigned<>` helper struct, asserting in non-release builds that this field is always initialized before reading. (3) `TIntermediate::resources` is now zero-initialized, so that if the `TIntermediate::resources` field is not set in a release build (and so the `assert()` will be disabled) behavior is still deterministic. Fixes #2423 --- glslang/MachineIndependent/ShaderLang.cpp | 2 +- glslang/MachineIndependent/linkValidate.cpp | 4 ++-- .../MachineIndependent/localintermediate.h | 21 ++++++++++++++++++- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index 9d7f37b0..c6030bd7 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -2016,7 +2016,7 @@ bool TProgram::linkStage(EShLanguage stage, EShMessages messages) intermediate[stage] = new TIntermediate(stage, firstIntermediate->getVersion(), firstIntermediate->getProfile()); - + intermediate[stage]->setLimits(firstIntermediate->getLimits()); // The new TIntermediate must use the same origin as the original TIntermediates. // Otherwise linking will fail due to different coordinate systems. diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index a8e031bc..1796feda 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -736,10 +736,10 @@ void TIntermediate::finalCheck(TInfoSink& infoSink, bool keepUncalled) // "The resulting stride (implicit or explicit), when divided by 4, must be less than or equal to the // implementation-dependent constant gl_MaxTransformFeedbackInterleavedComponents." - if (xfbBuffers[b].stride > (unsigned int)(4 * resources.maxTransformFeedbackInterleavedComponents)) { + if (xfbBuffers[b].stride > (unsigned int)(4 * resources->maxTransformFeedbackInterleavedComponents)) { error(infoSink, "xfb_stride is too large:"); infoSink.info.prefix(EPrefixError); - infoSink.info << " xfb_buffer " << (unsigned int)b << ", components (1/4 stride) needed are " << xfbBuffers[b].stride/4 << ", gl_MaxTransformFeedbackInterleavedComponents is " << resources.maxTransformFeedbackInterleavedComponents << "\n"; + infoSink.info << " xfb_buffer " << (unsigned int)b << ", components (1/4 stride) needed are " << xfbBuffers[b].stride/4 << ", gl_MaxTransformFeedbackInterleavedComponents is " << resources->maxTransformFeedbackInterleavedComponents << "\n"; } } diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index 3cdc1f10..f8747015 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -259,6 +259,23 @@ private: unsigned int features; }; +// MustBeAssigned wraps a T, asserting that it has been assigned with +// operator =() before attempting to read with operator T() or operator ->(). +// Used to catch cases where fields are read before they have been assigned. +template +class MustBeAssigned +{ +public: + MustBeAssigned() = default; + MustBeAssigned(const T& v) : value(v) {} + operator const T&() const { assert(isSet); return value; } + const T* operator ->() const { assert(isSet); return &value; } + MustBeAssigned& operator = (const T& v) { value = v; isSet = true; return *this; } +private: + T value; + bool isSet = false; +}; + // // Set of helper functions to help parse and build the tree. // @@ -270,6 +287,7 @@ public: profile(p), version(v), #endif treeRoot(0), + resources(TBuiltInResource{}), numEntryPoints(0), numErrors(0), numPushConstants(0), recursive(false), invertY(false), useStorageBuffer(false), @@ -406,6 +424,7 @@ public: int getNumErrors() const { return numErrors; } void addPushConstantCount() { ++numPushConstants; } void setLimits(const TBuiltInResource& r) { resources = r; } + const TBuiltInResource& getLimits() const { return resources; } bool postProcess(TIntermNode*, EShLanguage); void removeTree(); @@ -955,7 +974,7 @@ protected: SpvVersion spvVersion; TIntermNode* treeRoot; std::set requestedExtensions; // cumulation of all enabled or required extensions; not connected to what subset of the shader used them - TBuiltInResource resources; + MustBeAssigned resources; int numEntryPoints; int numErrors; int numPushConstants; From b2b1e2da46b6193726e9a23e70fd0e1777e53f1f Mon Sep 17 00:00:00 2001 From: Ben Clayton Date: Tue, 20 Oct 2020 11:12:26 +0100 Subject: [PATCH 27/57] Kokoro: Add configurations for GN presubmit Issue: #2421 --- kokoro/linux-clang-gn/build-docker.sh | 52 +++++++++++++++++++++++++++ kokoro/linux-clang-gn/build.sh | 48 +++++++++++++++++++++++++ 2 files changed, 100 insertions(+) create mode 100755 kokoro/linux-clang-gn/build-docker.sh create mode 100755 kokoro/linux-clang-gn/build.sh diff --git a/kokoro/linux-clang-gn/build-docker.sh b/kokoro/linux-clang-gn/build-docker.sh new file mode 100755 index 00000000..d2ee0e9e --- /dev/null +++ b/kokoro/linux-clang-gn/build-docker.sh @@ -0,0 +1,52 @@ +#!/bin/bash + +# Copyright (C) 2020 Google, 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 Google Inc. 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. + +set -e # Fail on any error. +set -x # Display commands being run. + +echo "Fetching depot_tools..." +mkdir -p /tmp/depot_tools +curl https://storage.googleapis.com/chrome-infra/depot_tools.zip -o /tmp/depot_tools.zip +unzip /tmp/depot_tools.zip -d /tmp/depot_tools +rm /tmp/depot_tools.zip +export PATH="/tmp/depot_tools:$PATH" + +echo "Syncing client..." +gclient sync --gclientfile=standalone.gclient +gn gen out/Default + +echo "Building..." +cd out/Default +ninja diff --git a/kokoro/linux-clang-gn/build.sh b/kokoro/linux-clang-gn/build.sh new file mode 100755 index 00000000..2f459d2d --- /dev/null +++ b/kokoro/linux-clang-gn/build.sh @@ -0,0 +1,48 @@ +#!/bin/bash + +# Copyright (C) 2020 Google, 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 Google Inc. 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. + +set -e # Fail on any error. + +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd )" +ROOT_DIR="$( cd "${SCRIPT_DIR}/../.." >/dev/null 2>&1 && pwd )" + +docker run --rm -i \ + --volume "${ROOT_DIR}:${ROOT_DIR}" \ + --workdir "${ROOT_DIR}" \ + --env ROOT_DIR="${ROOT_DIR}" \ + --env SCRIPT_DIR="${SCRIPT_DIR}" \ + --env BUILD_SHARED_LIBS="${BUILD_SHARED_LIBS:-0}" \ + --entrypoint "${SCRIPT_DIR}/build-docker.sh" \ + "gcr.io/shaderc-build/radial-build:latest" From a315b5633bb59a7105d98bbebd6dad4ec75a5ab4 Mon Sep 17 00:00:00 2001 From: Chow Date: Thu, 2 Jul 2020 15:50:36 +0800 Subject: [PATCH 28/57] Add GL_EXT_fragment_shading_rate --- SPIRV/GLSL.ext.KHR.h | 1 + SPIRV/GlslangToSpv.cpp | 10 +++ SPIRV/doc.cpp | 4 + SPIRV/spirv.hpp | 22 +++++ ...v.builtin.PrimitiveShadingRateEXT.vert.out | 53 +++++++++++ .../spv.builtin.ShadingRateEXT.frag.out | 36 ++++++++ Test/spv.builtin.PrimitiveShadingRateEXT.vert | 28 ++++++ Test/spv.builtin.ShadingRateEXT.frag | 8 ++ glslang/Include/BaseTypes.h | 6 ++ glslang/MachineIndependent/Initialize.cpp | 87 +++++++++++++++++++ glslang/MachineIndependent/ParseHelper.cpp | 2 + glslang/MachineIndependent/Versions.cpp | 3 + glslang/MachineIndependent/Versions.h | 1 + gtests/Spv.FromFile.cpp | 2 + known_good.json | 4 +- 15 files changed, 265 insertions(+), 2 deletions(-) create mode 100644 Test/baseResults/spv.builtin.PrimitiveShadingRateEXT.vert.out create mode 100644 Test/baseResults/spv.builtin.ShadingRateEXT.frag.out create mode 100644 Test/spv.builtin.PrimitiveShadingRateEXT.vert create mode 100644 Test/spv.builtin.ShadingRateEXT.frag diff --git a/SPIRV/GLSL.ext.KHR.h b/SPIRV/GLSL.ext.KHR.h index d783a8f2..2be968e1 100644 --- a/SPIRV/GLSL.ext.KHR.h +++ b/SPIRV/GLSL.ext.KHR.h @@ -48,4 +48,5 @@ static const char* const E_SPV_KHR_shader_clock = "SPV_KHR_shade static const char* const E_SPV_KHR_non_semantic_info = "SPV_KHR_non_semantic_info"; static const char* const E_SPV_KHR_ray_tracing = "SPV_KHR_ray_tracing"; static const char* const E_SPV_KHR_ray_query = "SPV_KHR_ray_query"; +static const char* const E_SPV_KHR_fragment_shading_rate = "SPV_KHR_fragment_shading_rate"; #endif // #ifndef GLSLextKHR_H diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index c8554160..d32c6464 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -769,6 +769,16 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI builder.addCapability(spv::CapabilityStencilExportEXT); return spv::BuiltInFragStencilRefEXT; + case glslang::EbvShadingRateKHR: + builder.addExtension(spv::E_SPV_KHR_fragment_shading_rate); + builder.addCapability(spv::CapabilityFragmentShadingRateKHR); + return spv::BuiltInShadingRateKHR; + + case glslang::EbvPrimitiveShadingRateKHR: + builder.addExtension(spv::E_SPV_KHR_fragment_shading_rate); + builder.addCapability(spv::CapabilityFragmentShadingRateKHR); + return spv::BuiltInPrimitiveShadingRateKHR; + case glslang::EbvInvocationId: return spv::BuiltInInvocationId; case glslang::EbvTessLevelInner: return spv::BuiltInTessLevelInner; case glslang::EbvTessLevelOuter: return spv::BuiltInTessLevelOuter; diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index 1d052f8c..b1d7eb70 100644 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -372,6 +372,8 @@ const char* BuiltInString(int builtIn) case 4424: return "BaseVertex"; case 4425: return "BaseInstance"; case 4426: return "DrawIndex"; + case 4432: return "PrimitiveShadingRateKHR"; + case 4444: return "ShadingRateKHR"; case 5014: return "FragStencilRefEXT"; case 4992: return "BaryCoordNoPerspAMD"; @@ -952,6 +954,8 @@ const char* CapabilityString(int info) case CapabilityFragmentShaderPixelInterlockEXT: return "CapabilityFragmentShaderPixelInterlockEXT"; case CapabilityFragmentShaderShadingRateInterlockEXT: return "CapabilityFragmentShaderShadingRateInterlockEXT"; + case CapabilityFragmentShadingRateKHR: return "FragmentShadingRateKHR"; + case CapabilityDemoteToHelperInvocationEXT: return "DemoteToHelperInvocationEXT"; case CapabilityShaderClockKHR: return "ShaderClockKHR"; diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp index 35482ea5..0cccd21c 100644 --- a/SPIRV/spirv.hpp +++ b/SPIRV/spirv.hpp @@ -558,8 +558,10 @@ enum BuiltIn { BuiltInBaseVertex = 4424, BuiltInBaseInstance = 4425, BuiltInDrawIndex = 4426, + BuiltInPrimitiveShadingRateKHR = 4432, BuiltInDeviceIndex = 4438, BuiltInViewIndex = 4440, + BuiltInShadingRateKHR = 4444, BuiltInBaryCoordNoPerspAMD = 4992, BuiltInBaryCoordNoPerspCentroidAMD = 4993, BuiltInBaryCoordNoPerspSampleAMD = 4994, @@ -870,6 +872,7 @@ enum Capability { CapabilityGroupNonUniformQuad = 68, CapabilityShaderLayer = 69, CapabilityShaderViewportIndex = 70, + CapabilityFragmentShadingRateKHR = 4422, CapabilitySubgroupBallotKHR = 4423, CapabilityDrawParameters = 4427, CapabilitySubgroupVoteKHR = 4431, @@ -1024,6 +1027,22 @@ enum RayQueryCandidateIntersectionType { RayQueryCandidateIntersectionTypeMax = 0x7fffffff, }; +enum FragmentShadingRateShift { + FragmentShadingRateVertical2PixelsShift = 0, + FragmentShadingRateVertical4PixelsShift = 1, + FragmentShadingRateHorizontal2PixelsShift = 2, + FragmentShadingRateHorizontal4PixelsShift = 3, + FragmentShadingRateMax = 0x7fffffff, +}; + +enum FragmentShadingRateMask { + FragmentShadingRateMaskNone = 0, + FragmentShadingRateVertical2PixelsMask = 0x00000001, + FragmentShadingRateVertical4PixelsMask = 0x00000002, + FragmentShadingRateHorizontal2PixelsMask = 0x00000004, + FragmentShadingRateHorizontal4PixelsMask = 0x00000008, +}; + enum Op { OpNop = 0, OpUndef = 1, @@ -1369,6 +1388,7 @@ enum Op { OpPtrEqual = 401, OpPtrNotEqual = 402, OpPtrDiff = 403, + OpTerminateInvocation = 4416, OpSubgroupBallotKHR = 4421, OpSubgroupFirstInvocationKHR = 4422, OpSubgroupAllKHR = 4428, @@ -1939,6 +1959,7 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case OpPtrEqual: *hasResult = true; *hasResultType = true; break; case OpPtrNotEqual: *hasResult = true; *hasResultType = true; break; case OpPtrDiff: *hasResult = true; *hasResultType = true; break; + case OpTerminateInvocation: *hasResult = false; *hasResultType = false; break; case OpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break; case OpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break; case OpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break; @@ -2164,6 +2185,7 @@ inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); } inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); } inline RayFlagsMask operator|(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) | unsigned(b)); } +inline FragmentShadingRateMask operator|(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) | unsigned(b)); } } // end namespace spv diff --git a/Test/baseResults/spv.builtin.PrimitiveShadingRateEXT.vert.out b/Test/baseResults/spv.builtin.PrimitiveShadingRateEXT.vert.out new file mode 100644 index 00000000..8daa79ee --- /dev/null +++ b/Test/baseResults/spv.builtin.PrimitiveShadingRateEXT.vert.out @@ -0,0 +1,53 @@ +spv.builtin.PrimitiveShadingRateEXT.vert +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 26 + + Capability Shader + Capability FragmentShadingRateKHR + Extension "SPV_KHR_fragment_shading_rate" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" 8 16 + Source GLSL 450 + SourceExtension "GL_EXT_fragment_shading_rate" + Name 4 "main" + Name 8 "id" + Name 16 "gl_PrimitiveShadingRateEXT" + Decorate 8(id) Location 0 + Decorate 16(gl_PrimitiveShadingRateEXT) BuiltIn PrimitiveShadingRateKHR + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypePointer Input 6(int) + 8(id): 7(ptr) Variable Input + 15: TypePointer Output 6(int) +16(gl_PrimitiveShadingRateEXT): 15(ptr) Variable Output + 17: 6(int) Constant 5 + 19: 6(int) Constant 9 + 21: 6(int) Constant 6 + 23: 6(int) Constant 10 + 4(main): 2 Function None 3 + 5: Label + 9: 6(int) Load 8(id) + SelectionMerge 14 None + Switch 9 14 + case 0: 10 + case 1: 11 + case 2: 12 + case 3: 13 + 10: Label + Store 16(gl_PrimitiveShadingRateEXT) 17 + Branch 14 + 11: Label + Store 16(gl_PrimitiveShadingRateEXT) 19 + Branch 14 + 12: Label + Store 16(gl_PrimitiveShadingRateEXT) 21 + Branch 14 + 13: Label + Store 16(gl_PrimitiveShadingRateEXT) 23 + Branch 14 + 14: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.builtin.ShadingRateEXT.frag.out b/Test/baseResults/spv.builtin.ShadingRateEXT.frag.out new file mode 100644 index 00000000..95b94d25 --- /dev/null +++ b/Test/baseResults/spv.builtin.ShadingRateEXT.frag.out @@ -0,0 +1,36 @@ +spv.builtin.ShadingRateEXT.frag +WARNING: 0:5: '' : all default precisions are highp; use precision statements to quiet warning, e.g.: + "precision mediump int; precision highp float;" + +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 12 + + Capability Shader + Capability FragmentShadingRateKHR + Extension "SPV_KHR_fragment_shading_rate" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 8 10 + ExecutionMode 4 OriginUpperLeft + Source GLSL 450 + SourceExtension "GL_EXT_fragment_shading_rate" + Name 4 "main" + Name 8 "val" + Name 10 "gl_ShadingRateEXT" + Decorate 8(val) Location 0 + Decorate 10(gl_ShadingRateEXT) Flat + Decorate 10(gl_ShadingRateEXT) BuiltIn ShadingRateKHR + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypePointer Output 6(int) + 8(val): 7(ptr) Variable Output + 9: TypePointer Input 6(int) +10(gl_ShadingRateEXT): 9(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + 11: 6(int) Load 10(gl_ShadingRateEXT) + Store 8(val) 11 + Return + FunctionEnd diff --git a/Test/spv.builtin.PrimitiveShadingRateEXT.vert b/Test/spv.builtin.PrimitiveShadingRateEXT.vert new file mode 100644 index 00000000..6fd98c3e --- /dev/null +++ b/Test/spv.builtin.PrimitiveShadingRateEXT.vert @@ -0,0 +1,28 @@ +#version 450 + +#extension GL_EXT_fragment_shading_rate : enable + +layout(location = 0) in int id; + +void main() +{ + switch (id) + { + case 0: + // V2 | H2 => 5 + gl_PrimitiveShadingRateEXT = gl_ShadingRateFlag2VerticalPixelsEXT | gl_ShadingRateFlag2HorizontalPixelsEXT; + break; + case 1: + // V2 | H4 => 9 + gl_PrimitiveShadingRateEXT = gl_ShadingRateFlag2VerticalPixelsEXT | gl_ShadingRateFlag4HorizontalPixelsEXT; + break; + case 2: + // V4 | H2 => 6 + gl_PrimitiveShadingRateEXT = gl_ShadingRateFlag4VerticalPixelsEXT | gl_ShadingRateFlag2HorizontalPixelsEXT; + break; + case 3: + // V4 | H4 => 10 + gl_PrimitiveShadingRateEXT = gl_ShadingRateFlag4VerticalPixelsEXT | gl_ShadingRateFlag4HorizontalPixelsEXT; + break; + } +} \ No newline at end of file diff --git a/Test/spv.builtin.ShadingRateEXT.frag b/Test/spv.builtin.ShadingRateEXT.frag new file mode 100644 index 00000000..616baec8 --- /dev/null +++ b/Test/spv.builtin.ShadingRateEXT.frag @@ -0,0 +1,8 @@ +#version 450 + +#extension GL_EXT_fragment_shading_rate : enable + +out highp int val; +void main () { + val = gl_ShadingRateEXT; +} diff --git a/glslang/Include/BaseTypes.h b/glslang/Include/BaseTypes.h index b69eaebf..55bdd25d 100644 --- a/glslang/Include/BaseTypes.h +++ b/glslang/Include/BaseTypes.h @@ -228,6 +228,9 @@ enum TBuiltInVariable { EbvViewIndex, EbvDeviceIndex, + EbvShadingRateKHR, + EbvPrimitiveShadingRateKHR, + EbvFragSizeEXT, EbvFragInvocationCountEXT, @@ -480,6 +483,9 @@ __inline const char* GetBuiltInVariableString(TBuiltInVariable v) case EbvWarpID: return "WarpIDNV"; case EbvSMID: return "SMIDNV"; + case EbvShadingRateKHR: return "ShadingRateKHR"; + case EbvPrimitiveShadingRateKHR: return "PrimitiveShadingRateKHR"; + default: return "unknown built-in variable"; } } diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 8d5d04fb..0ce2583b 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -4928,6 +4928,11 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } + if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 310)) { + stageBuiltins[EShLangVertex].append( + "out highp int gl_PrimitiveShadingRateEXT;" // GL_EXT_fragment_shading_rate + "\n"); + } //============================================================================ // @@ -5041,6 +5046,12 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } + if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 310)) { + stageBuiltins[EShLangGeometry].append( + "out highp int gl_PrimitiveShadingRateEXT;" // GL_EXT_fragment_shading_rate + "\n"); + } + //============================================================================ // // Define the interface to the tessellation control shader. @@ -5338,6 +5349,11 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "in vec3 gl_BaryCoordNoPerspNV;" ); + if (version >= 450) + stageBuiltins[EShLangFragment].append( + "flat in int gl_ShadingRateEXT;" // GL_EXT_fragment_shading_rate + ); + } else { // ES profile @@ -5396,6 +5412,10 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "in vec3 gl_BaryCoordNV;" "in vec3 gl_BaryCoordNoPerspNV;" ); + if (version >= 310) + stageBuiltins[EShLangFragment].append( + "flat in highp int gl_ShadingRateEXT;" // GL_EXT_fragment_shading_rate + ); } #endif @@ -5692,6 +5712,18 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "flat in highp uint gl_ViewID_OVR;" // GL_OVR_multiview, GL_OVR_multiview2 "\n"); } + + // Adding these to common built-ins triggers an assert due to a memory corruption in related code when testing + // So instead add to each stage individually, avoiding the GLSLang bug + if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 310)) { + for (int stage=EShLangVertex; stage(stage)].append("const highp int gl_ShadingRateFlag2VerticalPixelsEXT = 1;\n"); + stageBuiltins[static_cast(stage)].append("const highp int gl_ShadingRateFlag4VerticalPixelsEXT = 2;\n"); + stageBuiltins[static_cast(stage)].append("const highp int gl_ShadingRateFlag2HorizontalPixelsEXT = 4;\n"); + stageBuiltins[static_cast(stage)].append("const highp int gl_ShadingRateFlag4HorizontalPixelsEXT = 8;\n"); + } + } #endif // !GLSLANG_WEB // printf("%s\n", commonBuiltins.c_str()); @@ -7650,6 +7682,20 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_WarpIDNV", EbvWarpID, symbolTable); BuiltInVariable("gl_SMIDNV", EbvSMID, symbolTable); } + + if (language == EShLangGeometry || language == EShLangVertex) { + if ((profile == EEsProfile && version >= 310) || + (profile != EEsProfile && version >= 450)) { + symbolTable.setVariableExtensions("gl_PrimitiveShadingRateEXT", 1, &E_GL_EXT_fragment_shading_rate); + BuiltInVariable("gl_PrimitiveShadingRateEXT", EbvPrimitiveShadingRateKHR, symbolTable); + + symbolTable.setVariableExtensions("gl_ShadingRateFlag2VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + symbolTable.setVariableExtensions("gl_ShadingRateFlag4VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + symbolTable.setVariableExtensions("gl_ShadingRateFlag2HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + symbolTable.setVariableExtensions("gl_ShadingRateFlag4HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + } + } + #endif // !GLSLANG_WEB break; @@ -8156,6 +8202,17 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion } symbolTable.setFunctionExtensions("helperInvocationEXT", 1, &E_GL_EXT_demote_to_helper_invocation); + + if ((profile == EEsProfile && version >= 310) || + (profile != EEsProfile && version >= 450)) { + symbolTable.setVariableExtensions("gl_ShadingRateEXT", 1, &E_GL_EXT_fragment_shading_rate); + BuiltInVariable("gl_ShadingRateEXT", EbvShadingRateKHR, symbolTable); + + symbolTable.setVariableExtensions("gl_ShadingRateFlag2VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + symbolTable.setVariableExtensions("gl_ShadingRateFlag4VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + symbolTable.setVariableExtensions("gl_ShadingRateFlag2HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + symbolTable.setVariableExtensions("gl_ShadingRateFlag4HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + } #endif // !GLSLANG_WEB break; @@ -8288,6 +8345,14 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("dFdyCoarse", 1, &E_GL_NV_compute_shader_derivatives); symbolTable.setFunctionExtensions("fwidthCoarse", 1, &E_GL_NV_compute_shader_derivatives); } + + if ((profile == EEsProfile && version >= 310) || + (profile != EEsProfile && version >= 450)) { + symbolTable.setVariableExtensions("gl_ShadingRateFlag2VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + symbolTable.setVariableExtensions("gl_ShadingRateFlag4VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + symbolTable.setVariableExtensions("gl_ShadingRateFlag2HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + symbolTable.setVariableExtensions("gl_ShadingRateFlag4HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + } #endif // !GLSLANG_WEB break; @@ -8437,6 +8502,13 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_WarpIDNV", EbvWarpID, symbolTable); BuiltInVariable("gl_SMIDNV", EbvSMID, symbolTable); } + if ((profile == EEsProfile && version >= 310) || + (profile != EEsProfile && version >= 450)) { + symbolTable.setVariableExtensions("gl_ShadingRateFlag2VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + symbolTable.setVariableExtensions("gl_ShadingRateFlag4VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + symbolTable.setVariableExtensions("gl_ShadingRateFlag2HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + symbolTable.setVariableExtensions("gl_ShadingRateFlag4HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + } break; case EShLangMeshNV: @@ -8581,6 +8653,14 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_WarpIDNV", EbvWarpID, symbolTable); BuiltInVariable("gl_SMIDNV", EbvSMID, symbolTable); } + + if ((profile == EEsProfile && version >= 310) || + (profile != EEsProfile && version >= 450)) { + symbolTable.setVariableExtensions("gl_ShadingRateFlag2VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + symbolTable.setVariableExtensions("gl_ShadingRateFlag4VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + symbolTable.setVariableExtensions("gl_ShadingRateFlag2HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + symbolTable.setVariableExtensions("gl_ShadingRateFlag4HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + } break; case EShLangTaskNV: @@ -8681,6 +8761,13 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_WarpIDNV", EbvWarpID, symbolTable); BuiltInVariable("gl_SMIDNV", EbvSMID, symbolTable); } + if ((profile == EEsProfile && version >= 310) || + (profile != EEsProfile && version >= 450)) { + symbolTable.setVariableExtensions("gl_ShadingRateFlag2VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + symbolTable.setVariableExtensions("gl_ShadingRateFlag4VerticalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + symbolTable.setVariableExtensions("gl_ShadingRateFlag2HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + symbolTable.setVariableExtensions("gl_ShadingRateFlag4HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); + } break; #endif diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 86a5a378..b9b37fb9 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -4226,6 +4226,8 @@ TSymbol* TParseContext::redeclareBuiltinVariable(const TSourceLoc& loc, const TS (identifier == "gl_FragCoord" && ((nonEsRedecls && version >= 150) || esRedecls)) || identifier == "gl_ClipDistance" || identifier == "gl_CullDistance" || + identifier == "gl_ShadingRateEXT" || + identifier == "gl_PrimitiveShadingRateEXT" || identifier == "gl_FrontColor" || identifier == "gl_BackColor" || identifier == "gl_FrontSecondaryColor" || diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index 896fd5ae..92d8d805 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -327,6 +327,7 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_EXT_ray_flags_primitive_culling] = EBhDisable; extensionBehavior[E_GL_EXT_blend_func_extended] = EBhDisable; extensionBehavior[E_GL_EXT_shader_implicit_conversions] = EBhDisable; + extensionBehavior[E_GL_EXT_fragment_shading_rate] = EBhDisable; // OVR extensions extensionBehavior[E_GL_OVR_multiview] = EBhDisable; @@ -371,6 +372,7 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_EXT_YUV_target 1\n" "#define GL_EXT_shader_texture_lod 1\n" "#define GL_EXT_shadow_samplers 1\n" + "#define GL_EXT_fragment_shading_rate 1\n" // AEP "#define GL_ANDROID_extension_pack_es31a 1\n" @@ -463,6 +465,7 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_EXT_buffer_reference_uvec2 1\n" "#define GL_EXT_demote_to_helper_invocation 1\n" "#define GL_EXT_debug_printf 1\n" + "#define GL_EXT_fragment_shading_rate 1\n" // GL_KHR_shader_subgroup "#define GL_KHR_shader_subgroup_basic 1\n" diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index f52f605e..7c38de39 100644 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -199,6 +199,7 @@ const char* const E_GL_EXT_ray_query = "GL_EXT_ray_query" const char* const E_GL_EXT_ray_flags_primitive_culling = "GL_EXT_ray_flags_primitive_culling"; const char* const E_GL_EXT_blend_func_extended = "GL_EXT_blend_func_extended"; const char* const E_GL_EXT_shader_implicit_conversions = "GL_EXT_shader_implicit_conversions"; +const char* const E_GL_EXT_fragment_shading_rate = "GL_EXT_fragment_shading_rate"; // Arrays of extensions for the above viewportEXTs duplications diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index df68f521..c0781567 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -446,6 +446,8 @@ INSTANTIATE_TEST_SUITE_P( "spv.samplerlessTextureFunctions.frag", "spv.smBuiltins.vert", "spv.smBuiltins.frag", + "spv.builtin.PrimitiveShadingRateEXT.vert", + "spv.builtin.ShadingRateEXT.frag", })), FileNameAsCustomTestSuffix ); diff --git a/known_good.json b/known_good.json index 289b384b..1ee683d6 100644 --- a/known_good.json +++ b/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "0a1fb588cd365f7737cb121fdd64553923e0cef6" + "commit" : "a1d38174b1f7d2651c718ae661886d606cb50a32" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "060627f0b0d2fa8581b5acb939f46e3b9e500593" + "commit" : "05836bdba63e7debce9fa9feaed42f20cd43af9d" } ] } From 490eba591db48872db3d430426f6dd163ac44d74 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Tue, 20 Oct 2020 14:46:15 -0600 Subject: [PATCH 29/57] SPV: Update to the latest SPIR-V header, includes variable-rate shading --- SPIRV/spirv.hpp | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp index 35482ea5..26b35bb4 100644 --- a/SPIRV/spirv.hpp +++ b/SPIRV/spirv.hpp @@ -274,6 +274,8 @@ enum ImageFormat { ImageFormatRg8ui = 37, ImageFormatR16ui = 38, ImageFormatR8ui = 39, + ImageFormatR64ui = 40, + ImageFormatR64i = 41, ImageFormatMax = 0x7fffffff, }; @@ -558,8 +560,10 @@ enum BuiltIn { BuiltInBaseVertex = 4424, BuiltInBaseInstance = 4425, BuiltInDrawIndex = 4426, + BuiltInPrimitiveShadingRateKHR = 4432, BuiltInDeviceIndex = 4438, BuiltInViewIndex = 4440, + BuiltInShadingRateKHR = 4444, BuiltInBaryCoordNoPerspAMD = 4992, BuiltInBaryCoordNoPerspCentroidAMD = 4993, BuiltInBaryCoordNoPerspSampleAMD = 4994, @@ -870,6 +874,7 @@ enum Capability { CapabilityGroupNonUniformQuad = 68, CapabilityShaderLayer = 69, CapabilityShaderViewportIndex = 70, + CapabilityFragmentShadingRateKHR = 4422, CapabilitySubgroupBallotKHR = 4423, CapabilityDrawParameters = 4427, CapabilitySubgroupVoteKHR = 4431, @@ -900,6 +905,7 @@ enum Capability { CapabilityFragmentMaskAMD = 5010, CapabilityStencilExportEXT = 5013, CapabilityImageReadWriteLodAMD = 5015, + CapabilityInt64ImageEXT = 5016, CapabilityShaderClockKHR = 5055, CapabilitySampleMaskOverrideCoverageNV = 5249, CapabilityGeometryShaderPassthroughNV = 5251, @@ -1024,6 +1030,22 @@ enum RayQueryCandidateIntersectionType { RayQueryCandidateIntersectionTypeMax = 0x7fffffff, }; +enum FragmentShadingRateShift { + FragmentShadingRateVertical2PixelsShift = 0, + FragmentShadingRateVertical4PixelsShift = 1, + FragmentShadingRateHorizontal2PixelsShift = 2, + FragmentShadingRateHorizontal4PixelsShift = 3, + FragmentShadingRateMax = 0x7fffffff, +}; + +enum FragmentShadingRateMask { + FragmentShadingRateMaskNone = 0, + FragmentShadingRateVertical2PixelsMask = 0x00000001, + FragmentShadingRateVertical4PixelsMask = 0x00000002, + FragmentShadingRateHorizontal2PixelsMask = 0x00000004, + FragmentShadingRateHorizontal4PixelsMask = 0x00000008, +}; + enum Op { OpNop = 0, OpUndef = 1, @@ -1369,6 +1391,7 @@ enum Op { OpPtrEqual = 401, OpPtrNotEqual = 402, OpPtrDiff = 403, + OpTerminateInvocation = 4416, OpSubgroupBallotKHR = 4421, OpSubgroupFirstInvocationKHR = 4422, OpSubgroupAllKHR = 4428, @@ -1939,6 +1962,7 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case OpPtrEqual: *hasResult = true; *hasResultType = true; break; case OpPtrNotEqual: *hasResult = true; *hasResultType = true; break; case OpPtrDiff: *hasResult = true; *hasResultType = true; break; + case OpTerminateInvocation: *hasResult = false; *hasResultType = false; break; case OpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break; case OpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break; case OpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break; @@ -2164,6 +2188,7 @@ inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); } inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); } inline RayFlagsMask operator|(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) | unsigned(b)); } +inline FragmentShadingRateMask operator|(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) | unsigned(b)); } } // end namespace spv From 0f52e7ef1216a5c6b3d198bea4097f371c063d95 Mon Sep 17 00:00:00 2001 From: Ben Clayton Date: Wed, 21 Oct 2020 13:36:50 +0100 Subject: [PATCH 30/57] Fix GN build and presubmits Add missing `.cfg` files for GN presubmit. Add missing `recursedeps` in the `DEPS` file. Call `./update_glslang_sources.py` before attempting to build. Add more GN spew to the `.gitignore` file. --- .gitignore | 9 +++++-- DEPS | 5 ++++ README.md | 1 + kokoro/linux-clang-gn/build-docker.sh | 3 +++ kokoro/linux-clang-gn/build.sh | 3 ++- kokoro/linux-clang-gn/continuous.cfg | 35 +++++++++++++++++++++++++++ kokoro/linux-clang-gn/presubmit.cfg | 35 +++++++++++++++++++++++++++ 7 files changed, 88 insertions(+), 3 deletions(-) create mode 100644 kokoro/linux-clang-gn/continuous.cfg create mode 100644 kokoro/linux-clang-gn/presubmit.cfg diff --git a/.gitignore b/.gitignore index d6e197df..ab25cec2 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,6 @@ *.a *.so *.exe -*.gclient_entries .vscode/ tags TAGS @@ -12,4 +11,10 @@ Test/localResults/ External/googletest External/spirv-tools out/ -third_party/llvm-build + +# GN generated files +.cipd/ +*.gclient_entries +third_party/ +buildtools/ +tools/ diff --git a/DEPS b/DEPS index 9c0e045a..2f5fa8ef 100644 --- a/DEPS +++ b/DEPS @@ -75,3 +75,8 @@ hooks = [ 'condition': 'not build_with_chromium', }, ] + +recursedeps = [ + # buildtools provides clang_format, libc++, and libc++abi + 'buildtools', +] diff --git a/README.md b/README.md index fa1fe601..7ad4ace9 100644 --- a/README.md +++ b/README.md @@ -200,6 +200,7 @@ This only needs to be done once after updating `glslang`. With the current directory set to your `glslang` checkout, type: ```bash +./update_glslang_sources.py gclient sync --gclientfile=standalone.gclient gn gen out/Default ``` diff --git a/kokoro/linux-clang-gn/build-docker.sh b/kokoro/linux-clang-gn/build-docker.sh index d2ee0e9e..1035ab88 100755 --- a/kokoro/linux-clang-gn/build-docker.sh +++ b/kokoro/linux-clang-gn/build-docker.sh @@ -36,6 +36,9 @@ set -e # Fail on any error. set -x # Display commands being run. +echo "Fetching external projects..." +./update_glslang_sources.py + echo "Fetching depot_tools..." mkdir -p /tmp/depot_tools curl https://storage.googleapis.com/chrome-infra/depot_tools.zip -o /tmp/depot_tools.zip diff --git a/kokoro/linux-clang-gn/build.sh b/kokoro/linux-clang-gn/build.sh index 2f459d2d..563432a1 100755 --- a/kokoro/linux-clang-gn/build.sh +++ b/kokoro/linux-clang-gn/build.sh @@ -43,6 +43,7 @@ docker run --rm -i \ --workdir "${ROOT_DIR}" \ --env ROOT_DIR="${ROOT_DIR}" \ --env SCRIPT_DIR="${SCRIPT_DIR}" \ - --env BUILD_SHARED_LIBS="${BUILD_SHARED_LIBS:-0}" \ --entrypoint "${SCRIPT_DIR}/build-docker.sh" \ "gcr.io/shaderc-build/radial-build:latest" + +sudo chown -R "$(id -u):$(id -g)" "${ROOT_DIR}" diff --git a/kokoro/linux-clang-gn/continuous.cfg b/kokoro/linux-clang-gn/continuous.cfg new file mode 100644 index 00000000..1b191467 --- /dev/null +++ b/kokoro/linux-clang-gn/continuous.cfg @@ -0,0 +1,35 @@ +# Copyright (C) 2020 Google, 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 Google Inc. 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. + +# Continuous build configuration. +build_file: "glslang/kokoro/linux-clang-gn/build.sh" diff --git a/kokoro/linux-clang-gn/presubmit.cfg b/kokoro/linux-clang-gn/presubmit.cfg new file mode 100644 index 00000000..a72b9a88 --- /dev/null +++ b/kokoro/linux-clang-gn/presubmit.cfg @@ -0,0 +1,35 @@ +# Copyright (C) 2020 Google, 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 Google Inc. 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. + +# Presubmit build configuration. +build_file: "glslang/kokoro/linux-clang-gn/build.sh" From f6e0fe8600f3ec44d6a91c8adcdd087e037c364f Mon Sep 17 00:00:00 2001 From: Rex Xu Date: Fri, 23 Oct 2020 22:54:35 +0800 Subject: [PATCH 31/57] HLSL: Add support for printf(). Translate printf() to what GL_EXT_debug_printf has done. HLSL could define non-constant string variable and we don't have such features in SPIR-V, so just support constant string variable. --- SPIRV/GlslangToSpv.cpp | 6 + Test/baseResults/hlsl.printf.comp.out | 178 +++++++++++++++++++++++ Test/hlsl.printf.comp | 11 ++ glslang/HLSL/hlslGrammar.cpp | 5 +- glslang/HLSL/hlslParseHelper.cpp | 12 +- glslang/HLSL/hlslParseables.cpp | 4 +- glslang/Include/Types.h | 1 + glslang/MachineIndependent/intermOut.cpp | 3 + gtests/Hlsl.FromFile.cpp | 1 + 9 files changed, 216 insertions(+), 5 deletions(-) create mode 100644 Test/baseResults/hlsl.printf.comp.out create mode 100644 Test/hlsl.printf.comp diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index d32c6464..5b7f89a5 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -1720,6 +1720,12 @@ void TGlslangToSpvTraverser::visitSymbol(glslang::TIntermSymbol* symbol) if (symbol->getType().getQualifier().isSpecConstant()) spec_constant_op_mode_setter.turnOnSpecConstantOpMode(); +#ifdef ENABLE_HLSL + // Skip symbol handling if it is string-typed + if (symbol->getBasicType() == glslang::EbtString) + return; +#endif + // getSymbolId() will set up all the IO decorations on the first call. // Formal function parameters were mapped during makeFunctions(). spv::Id id = getSymbolId(symbol); diff --git a/Test/baseResults/hlsl.printf.comp.out b/Test/baseResults/hlsl.printf.comp.out new file mode 100644 index 00000000..ea31c353 --- /dev/null +++ b/Test/baseResults/hlsl.printf.comp.out @@ -0,0 +1,178 @@ +hlsl.printf.comp +Shader version: 500 +local_size = (1, 1, 1) +0:? Sequence +0:4 Function Definition: @main( ( temp void) +0:4 Function Parameters: +0:? Sequence +0:5 Debug printf ( temp void) +0:5 Constant: +0:5 "first string" +0:6 Debug printf ( temp void) +0:6 Constant: +0:6 "please print this message." +0:7 Debug printf ( temp void) +0:7 Constant: +0:7 "Variables are: %d %d %.2f" +0:7 Constant: +0:7 1 (const uint) +0:7 Constant: +0:7 2 (const uint) +0:7 Constant: +0:7 1.500000 +0:8 Debug printf ( temp void) +0:8 Constant: +0:8 "Integers are: %d %d %d" +0:8 Constant: +0:8 1 (const int) +0:8 Constant: +0:8 2 (const int) +0:8 Constant: +0:8 3 (const int) +0:9 Debug printf ( temp void) +0:9 Constant: +0:9 "More: %d %d %d %d %d %d %d %d %d %d" +0:9 Constant: +0:9 1 (const int) +0:9 Constant: +0:9 2 (const int) +0:9 Constant: +0:9 3 (const int) +0:9 Constant: +0:9 4 (const int) +0:9 Constant: +0:9 5 (const int) +0:9 Constant: +0:9 6 (const int) +0:9 Constant: +0:9 7 (const int) +0:9 Constant: +0:9 8 (const int) +0:9 Constant: +0:9 9 (const int) +0:9 Constant: +0:9 10 (const int) +0:4 Function Definition: main( ( temp void) +0:4 Function Parameters: +0:? Sequence +0:4 Function Call: @main( ( temp void) +0:? Linker Objects +0:? 'first' ( const string) +0:? "first string" + + +Linked compute stage: + + +Shader version: 500 +local_size = (1, 1, 1) +0:? Sequence +0:4 Function Definition: @main( ( temp void) +0:4 Function Parameters: +0:? Sequence +0:5 Debug printf ( temp void) +0:5 Constant: +0:5 "first string" +0:6 Debug printf ( temp void) +0:6 Constant: +0:6 "please print this message." +0:7 Debug printf ( temp void) +0:7 Constant: +0:7 "Variables are: %d %d %.2f" +0:7 Constant: +0:7 1 (const uint) +0:7 Constant: +0:7 2 (const uint) +0:7 Constant: +0:7 1.500000 +0:8 Debug printf ( temp void) +0:8 Constant: +0:8 "Integers are: %d %d %d" +0:8 Constant: +0:8 1 (const int) +0:8 Constant: +0:8 2 (const int) +0:8 Constant: +0:8 3 (const int) +0:9 Debug printf ( temp void) +0:9 Constant: +0:9 "More: %d %d %d %d %d %d %d %d %d %d" +0:9 Constant: +0:9 1 (const int) +0:9 Constant: +0:9 2 (const int) +0:9 Constant: +0:9 3 (const int) +0:9 Constant: +0:9 4 (const int) +0:9 Constant: +0:9 5 (const int) +0:9 Constant: +0:9 6 (const int) +0:9 Constant: +0:9 7 (const int) +0:9 Constant: +0:9 8 (const int) +0:9 Constant: +0:9 9 (const int) +0:9 Constant: +0:9 10 (const int) +0:4 Function Definition: main( ( temp void) +0:4 Function Parameters: +0:? Sequence +0:4 Function Call: @main( ( temp void) +0:? Linker Objects +0:? 'first' ( const string) +0:? "first string" + +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 36 + + Capability Shader + Extension "SPV_KHR_non_semantic_info" + 1: ExtInstImport "GLSL.std.450" + 9: ExtInstImport "NonSemantic.DebugPrintf" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" + ExecutionMode 4 LocalSize 1 1 1 + 8: String "first string" + 11: String "please print this message." + 13: String "Variables are: %d %d %.2f" + 20: String "Integers are: %d %d %d" + 26: String "More: %d %d %d %d %d %d %d %d %d %d" + Source HLSL 500 + Name 4 "main" + Name 6 "@main(" + 2: TypeVoid + 3: TypeFunction 2 + 14: TypeInt 32 0 + 15: 14(int) Constant 1 + 16: 14(int) Constant 2 + 17: TypeFloat 32 + 18: 17(float) Constant 1069547520 + 21: TypeInt 32 1 + 22: 21(int) Constant 1 + 23: 21(int) Constant 2 + 24: 21(int) Constant 3 + 27: 21(int) Constant 4 + 28: 21(int) Constant 5 + 29: 21(int) Constant 6 + 30: 21(int) Constant 7 + 31: 21(int) Constant 8 + 32: 21(int) Constant 9 + 33: 21(int) Constant 10 + 4(main): 2 Function None 3 + 5: Label + 35: 2 FunctionCall 6(@main() + Return + FunctionEnd + 6(@main(): 2 Function None 3 + 7: Label + 10: 2 ExtInst 9(NonSemantic.DebugPrintf) 1(DebugPrintf) 8 + 12: 2 ExtInst 9(NonSemantic.DebugPrintf) 1(DebugPrintf) 11 + 19: 2 ExtInst 9(NonSemantic.DebugPrintf) 1(DebugPrintf) 13 15 16 18 + 25: 2 ExtInst 9(NonSemantic.DebugPrintf) 1(DebugPrintf) 20 22 23 24 + 34: 2 ExtInst 9(NonSemantic.DebugPrintf) 1(DebugPrintf) 26 22 23 24 27 28 29 30 31 32 33 + Return + FunctionEnd diff --git a/Test/hlsl.printf.comp b/Test/hlsl.printf.comp new file mode 100644 index 00000000..d117299a --- /dev/null +++ b/Test/hlsl.printf.comp @@ -0,0 +1,11 @@ +const string first = "first string"; + +[numthreads(1,1,1)] +void main() { + printf(first); + printf("please print this message."); + printf("Variables are: %d %d %.2f", 1u, 2u, 1.5f); + printf("Integers are: %d %d %d", 1, 2, 3); + printf("More: %d %d %d %d %d %d %d %d %d %d", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10); +} + diff --git a/glslang/HLSL/hlslGrammar.cpp b/glslang/HLSL/hlslGrammar.cpp index 5bfc53fe..f30c6409 100644 --- a/glslang/HLSL/hlslGrammar.cpp +++ b/glslang/HLSL/hlslGrammar.cpp @@ -480,8 +480,9 @@ bool HlslGrammar::acceptDeclaration(TIntermNode*& nodeList) } // TODO: things scoped within an annotation need their own name space; - // TODO: strings are not yet handled. - if (variableType.getBasicType() != EbtString && parseContext.getAnnotationNestingLevel() == 0) { + // TODO: non-constant strings are not yet handled. + if (!(variableType.getBasicType() == EbtString && !variableType.getQualifier().isConstant()) && + parseContext.getAnnotationNestingLevel() == 0) { if (typedefDecl) parseContext.declareTypedef(idToken.loc, *fullName, variableType); else if (variableType.getBasicType() == EbtBlock) { diff --git a/glslang/HLSL/hlslParseHelper.cpp b/glslang/HLSL/hlslParseHelper.cpp index 3150eacf..ea31837e 100644 --- a/glslang/HLSL/hlslParseHelper.cpp +++ b/glslang/HLSL/hlslParseHelper.cpp @@ -7628,7 +7628,17 @@ const TFunction* HlslParseContext::findFunction(const TSourceLoc& loc, TFunction bool tie = false; // send to the generic selector - const TFunction* bestMatch = selectFunction(candidateList, call, convertible, better, tie); + const TFunction* bestMatch = nullptr; + + // printf has var args and is in the symbol table as "printf()", + // mangled to "printf(" + if (call.getName() == "printf") { + TSymbol* symbol = symbolTable.find("printf(", &builtIn); + if (symbol) + return symbol->getAsFunction(); + } + + bestMatch = selectFunction(candidateList, call, convertible, better, tie); if (bestMatch == nullptr) { // If there is nothing selected by allowing only up-conversions (to a larger linearize() value), diff --git a/glslang/HLSL/hlslParseables.cpp b/glslang/HLSL/hlslParseables.cpp index 61c820bc..025cb5e1 100644 --- a/glslang/HLSL/hlslParseables.cpp +++ b/glslang/HLSL/hlslParseables.cpp @@ -605,7 +605,7 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c { "noise", "S", "F", "V", "F", EShLangPS, false }, { "normalize", nullptr, nullptr, "V", "F", EShLangAll, false }, { "pow", nullptr, nullptr, "SVM,", "F,", EShLangAll, false }, - // { "printf", "-", "-", "", "", EShLangAll, false }, TODO: varargs + { "printf", nullptr, nullptr, "-", "-", EShLangAll, false }, { "Process2DQuadTessFactorsAvg", "-", "-", "V4,V2,>V4,>V2,", "F,,,,", EShLangHS, false }, { "Process2DQuadTessFactorsMax", "-", "-", "V4,V2,>V4,>V2,", "F,,,,", EShLangHS, false }, { "Process2DQuadTessFactorsMin", "-", "-", "V4,V2,>V4,>V2,", "F,,,,", EShLangHS, false }, @@ -1107,7 +1107,7 @@ void TBuiltInParseablesHlsl::identifyBuiltIns(int /*version*/, EProfile /*profil // symbolTable.relateToOperator("noise", EOpNoise); // TODO: check return type symbolTable.relateToOperator("normalize", EOpNormalize); symbolTable.relateToOperator("pow", EOpPow); - // symbolTable.relateToOperator("printf", EOpPrintf); + symbolTable.relateToOperator("printf", EOpDebugPrintf); // symbolTable.relateToOperator("Process2DQuadTessFactorsAvg"); // symbolTable.relateToOperator("Process2DQuadTessFactorsMax"); // symbolTable.relateToOperator("Process2DQuadTessFactorsMin"); diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index 235ea3f1..514fa10c 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -1986,6 +1986,7 @@ public: case EbtAccStruct: return "accelerationStructureNV"; case EbtRayQuery: return "rayQueryEXT"; case EbtReference: return "reference"; + case EbtString: return "string"; #endif default: return "unknown type"; } diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp index f23a7058..0239e99c 100644 --- a/glslang/MachineIndependent/intermOut.cpp +++ b/glslang/MachineIndependent/intermOut.cpp @@ -1321,6 +1321,9 @@ static void OutputConstantUnion(TInfoSink& out, const TIntermTyped* node, const out.debug << buf << "\n"; } break; + case EbtString: + out.debug << "\"" << constUnion[i].getSConst()->c_str() << "\"\n"; + break; default: out.info.message(EPrefixInternalError, "Unknown constant", node->getLoc()); break; diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index 224ea59d..4d1cb50b 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -308,6 +308,7 @@ INSTANTIATE_TEST_SUITE_P( {"hlsl.pp.vert", "main"}, {"hlsl.pp.line.frag", "main"}, {"hlsl.precise.frag", "main"}, + {"hlsl.printf.comp", "main"}, {"hlsl.promote.atomic.frag", "main"}, {"hlsl.promote.binary.frag", "main"}, {"hlsl.promote.vec1.frag", "main"}, From ed8bd0453f73095f1e56bbd7b999c5c35f104dac Mon Sep 17 00:00:00 2001 From: Jaebaek Seo Date: Mon, 2 Nov 2020 12:49:31 -0500 Subject: [PATCH 32/57] Do not use PropagateLineInfoPass and RedundantLineInfoElimPass (#2440) * Do not use PropagateLineInfoPass and RedundantLineInfoElimPass Since spirv-opt will remove PropagateLineInfoPass and RedundantLineInfoElimPass, glslang should not use it. spirv-opt will propagate the line instructions and eliminate the redundant lines by default in IR loading/emission. * Update known_good.json for spirv-tool --- SPIRV/SpvTools.cpp | 8 +------- known_good.json | 2 +- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/SPIRV/SpvTools.cpp b/SPIRV/SpvTools.cpp index 112ac33c..8ba97992 100644 --- a/SPIRV/SpvTools.cpp +++ b/SPIRV/SpvTools.cpp @@ -174,10 +174,7 @@ void SpirvToolsTransform(const glslang::TIntermediate& intermediate, std::vector // line information into all SPIR-V instructions. This avoids loss of // information when instructions are deleted or moved. Later, remove // redundant information to minimize final SPRIR-V size. - if (options->generateDebugInfo) { - optimizer.RegisterPass(spvtools::CreatePropagateLineInfoPass()); - } - else if (options->stripDebugInfo) { + if (options->stripDebugInfo) { optimizer.RegisterPass(spvtools::CreateStripDebugInfoPass()); } optimizer.RegisterPass(spvtools::CreateWrapOpKillPass()); @@ -207,9 +204,6 @@ void SpirvToolsTransform(const glslang::TIntermediate& intermediate, std::vector } optimizer.RegisterPass(spvtools::CreateAggressiveDCEPass()); optimizer.RegisterPass(spvtools::CreateCFGCleanupPass()); - if (options->generateDebugInfo) { - optimizer.RegisterPass(spvtools::CreateRedundantLineInfoElimPass()); - } spvtools::OptimizerOptions spvOptOptions; optimizer.SetTargetEnv(MapToSpirvToolsEnv(intermediate.getSpv(), logger)); diff --git a/known_good.json b/known_good.json index 1ee683d6..5c498dcc 100644 --- a/known_good.json +++ b/known_good.json @@ -5,7 +5,7 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "a1d38174b1f7d2651c718ae661886d606cb50a32" + "commit" : "56d0f50357a192602216bfc4873e714905323e35" }, { "name" : "spirv-tools/external/spirv-headers", From 56350cadfe88ca847e920a1ac377b700b84190c7 Mon Sep 17 00:00:00 2001 From: Sidney Just Date: Mon, 2 Nov 2020 11:27:40 -0800 Subject: [PATCH 33/57] Support for CapabilityShaderViewportIndex and CapabilityShaderLayer (#2432) * When targeting SPIR-V 1.5, using gl_ViewportIndex will emit OpCapability ShaderViewportIndex and using gl_Layer will emit OpCapability CapabilityShaderLayer. OpCapability ShaderViewportIndexLayerEXT will only get emitted if the target < SPIR-V 1.5 * When using one of the viewport/layer arrays extensions, fallback to OpCapability ShaderViewportIndexLayerEXT, even when targeting SPIR-V 1.5 * Revert "When using one of the viewport/layer arrays extensions, fallback to OpCapability ShaderViewportIndexLayerEXT, even when targeting SPIR-V 1.5" This reverts commit dccca82f4076ea6e2bc01dd6d1e5d290c59fab20. * Using gl_Layer and gl_ViewportIndex outside of the geometry shader stage still requires one of the viewport extensions even when targeting SPIR-V 1.5 (Fixes a problem introduced by 670536b663f396815645b2f907f0ee92117b44f0) --- SPIRV/GlslangToSpv.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 1d153c0d..0b6c62b7 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -714,8 +714,12 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI glslangIntermediate->getStage() == EShLangTessControl || glslangIntermediate->getStage() == EShLangTessEvaluation) { - builder.addIncorporatedExtension(spv::E_SPV_EXT_shader_viewport_index_layer, spv::Spv_1_5); - builder.addCapability(spv::CapabilityShaderViewportIndexLayerEXT); + if (builder.getSpvVersion() < spv::Spv_1_5) { + builder.addIncorporatedExtension(spv::E_SPV_EXT_shader_viewport_index_layer, spv::Spv_1_5); + builder.addCapability(spv::CapabilityShaderViewportIndexLayerEXT); + } + else + builder.addCapability(spv::CapabilityShaderViewportIndex); } return spv::BuiltInViewportIndex; @@ -739,8 +743,11 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI glslangIntermediate->getStage() == EShLangTessControl || glslangIntermediate->getStage() == EShLangTessEvaluation) { - builder.addIncorporatedExtension(spv::E_SPV_EXT_shader_viewport_index_layer, spv::Spv_1_5); - builder.addCapability(spv::CapabilityShaderViewportIndexLayerEXT); + if (builder.getSpvVersion() < spv::Spv_1_5) { + builder.addIncorporatedExtension(spv::E_SPV_EXT_shader_viewport_index_layer, spv::Spv_1_5); + builder.addCapability(spv::CapabilityShaderViewportIndexLayerEXT); + } else + builder.addCapability(spv::CapabilityShaderLayer); } return spv::BuiltInLayer; From c897c3bc239a957f1a62557b1ddeee781250fa78 Mon Sep 17 00:00:00 2001 From: pheonix Date: Mon, 2 Nov 2020 13:40:50 -0800 Subject: [PATCH 34/57] Add new SpirvToolsDisassemble API interface + Improve Doc on existing API interface (#2442) * Add new SpirvToolsDisassemble API interface + Improve Doc on existing API interface (#2408) * Add more flexible SpirvToolsDisassemble interface to allow specifying spv_target_env for disassembly output. Improve documentation on existing SpirvToolsDisassemble interface. * Update pre-processor check - following existing ENABLE_OPT checks. * Fix not-found header paths for glslangValidator and glslangtests. * Add spirv_tools/include path where there is an ENABLE_OPT=1 in the BUILD.gn configuration. --- BUILD.gn | 12 +++++++++--- SPIRV/SpvTools.cpp | 12 +++++++++--- SPIRV/SpvTools.h | 11 ++++++++--- StandAlone/CMakeLists.txt | 7 ++++++- gtests/CMakeLists.txt | 6 ++++++ 5 files changed, 38 insertions(+), 10 deletions(-) diff --git a/BUILD.gn b/BUILD.gn index 29256c43..a23ff967 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -246,6 +246,8 @@ template("glslang_sources_common") { ] } + include_dirs = [ "${target_gen_dir}/include" ] + deps = [ ":glslang_build_info" ] if (invoker.enable_opt) { @@ -253,10 +255,9 @@ template("glslang_sources_common") { "${spirv_tools_dir}:spvtools_opt", "${spirv_tools_dir}:spvtools_val", ] + include_dirs += [ "${spirv_tools_dir}/include" ] } - include_dirs = [ "${target_gen_dir}/include" ] - configs -= _configs_to_remove configs += _configs_to_add } @@ -302,7 +303,10 @@ executable("glslang_validator") { ] public_configs = [ ":glslang_hlsl" ] - include_dirs = [ "${target_gen_dir}/include" ] + include_dirs = [ + "${target_gen_dir}/include", + "${spirv_tools_dir}/include", + ] configs -= _configs_to_remove configs += _configs_to_add @@ -313,6 +317,8 @@ executable("spirv-remap") { defines = [ "ENABLE_OPT=1" ] deps = [ ":glslang_sources" ] + include_dirs += [ "${spirv_tools_dir}/include" ] + configs -= _configs_to_remove configs += _configs_to_add } diff --git a/SPIRV/SpvTools.cpp b/SPIRV/SpvTools.cpp index 8ba97992..16d051a9 100644 --- a/SPIRV/SpvTools.cpp +++ b/SPIRV/SpvTools.cpp @@ -44,7 +44,6 @@ #include "SpvTools.h" #include "spirv-tools/optimizer.hpp" -#include "spirv-tools/libspirv.h" namespace glslang { @@ -114,11 +113,18 @@ void OptimizerMesssageConsumer(spv_message_level_t level, const char *source, out << std::endl; } -// Use the SPIRV-Tools disassembler to print SPIR-V. +// Use the SPIRV-Tools disassembler to print SPIR-V using a SPV_ENV_UNIVERSAL_1_3 environment. void SpirvToolsDisassemble(std::ostream& out, const std::vector& spirv) +{ + SpirvToolsDisassemble(out, spirv, spv_target_env::SPV_ENV_UNIVERSAL_1_3); +} + +// Use the SPIRV-Tools disassembler to print SPIR-V with a provided SPIR-V environment. +void SpirvToolsDisassemble(std::ostream& out, const std::vector& spirv, + spv_target_env requested_context) { // disassemble - spv_context context = spvContextCreate(SPV_ENV_UNIVERSAL_1_3); + spv_context context = spvContextCreate(requested_context); spv_text text; spv_diagnostic diagnostic = nullptr; spvBinaryToText(context, spirv.data(), spirv.size(), diff --git a/SPIRV/SpvTools.h b/SPIRV/SpvTools.h index 7779dfa7..3fb3cbac 100644 --- a/SPIRV/SpvTools.h +++ b/SPIRV/SpvTools.h @@ -41,9 +41,10 @@ #ifndef GLSLANG_SPV_TOOLS_H #define GLSLANG_SPV_TOOLS_H -#ifdef ENABLE_OPT +#if ENABLE_OPT #include #include +#include "spirv-tools/libspirv.h" #endif #include "glslang/MachineIndependent/localintermediate.h" @@ -62,11 +63,15 @@ struct SpvOptions { bool validate; }; -#ifdef ENABLE_OPT +#if ENABLE_OPT -// Use the SPIRV-Tools disassembler to print SPIR-V. +// Use the SPIRV-Tools disassembler to print SPIR-V using a SPV_ENV_UNIVERSAL_1_3 environment. void SpirvToolsDisassemble(std::ostream& out, const std::vector& spirv); +// Use the SPIRV-Tools disassembler to print SPIR-V with a provided SPIR-V environment. +void SpirvToolsDisassemble(std::ostream& out, const std::vector& spirv, + spv_target_env requested_context); + // Apply the SPIRV-Tools validator to generated SPIR-V. void SpirvToolsValidate(const glslang::TIntermediate& intermediate, std::vector& spirv, spv::SpvBuildLogger*, bool prelegalization); diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt index 8038c043..bff9ab61 100644 --- a/StandAlone/CMakeLists.txt +++ b/StandAlone/CMakeLists.txt @@ -41,7 +41,6 @@ target_include_directories(glslang-default-resource-limits PUBLIC $ PUBLIC $) - set(SOURCES StandAlone.cpp DirStackFileIncluder.h) add_executable(glslangValidator ${SOURCES}) @@ -70,6 +69,12 @@ target_include_directories(glslangValidator PUBLIC $ $) +if(ENABLE_OPT) + target_include_directories(glslangValidator + PRIVATE ${spirv-tools_SOURCE_DIR}/include + ) +endif(ENABLE_OPT) + if(ENABLE_SPVREMAPPER) set(REMAPPER_SOURCES spirv-remap.cpp) add_executable(spirv-remap ${REMAPPER_SOURCES}) diff --git a/gtests/CMakeLists.txt b/gtests/CMakeLists.txt index 6c48d9c2..0617ff85 100644 --- a/gtests/CMakeLists.txt +++ b/gtests/CMakeLists.txt @@ -83,6 +83,12 @@ if(BUILD_TESTING) ${gmock_SOURCE_DIR}/include ${gtest_SOURCE_DIR}/include) + if(ENABLE_OPT) + target_include_directories(glslangtests + PRIVATE ${spirv-tools_SOURCE_DIR}/include + ) + endif(ENABLE_OPT) + set(LIBRARIES glslang OSDependent OGLCompiler glslang SPIRV glslang-default-resource-limits) From d550bebee919179c9e332a0ab28a67f8fe3ca239 Mon Sep 17 00:00:00 2001 From: Courtney Goeltzenleuchter Date: Mon, 2 Nov 2020 21:22:55 -0700 Subject: [PATCH 35/57] Fix build error with Chromium & ANGLE (#2446) Getting error about undefined symbol (include_dir) at line 320. Was trying to append to a non-existant variable. Bug #2445 --- BUILD.gn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BUILD.gn b/BUILD.gn index a23ff967..973ca98b 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -317,7 +317,7 @@ executable("spirv-remap") { defines = [ "ENABLE_OPT=1" ] deps = [ ":glslang_sources" ] - include_dirs += [ "${spirv_tools_dir}/include" ] + include_dirs = [ "${spirv_tools_dir}/include" ] configs -= _configs_to_remove configs += _configs_to_add From 478b23295244c9f33eb90a47a99fb3b5cc6e0370 Mon Sep 17 00:00:00 2001 From: Chow Date: Wed, 4 Nov 2020 04:34:19 +0800 Subject: [PATCH 36/57] 8. io mapping refine & qualifier member check & resolver expand (#2396) * Code refine and adding missing features 1. Add new level for built in symbols. 2. Fix issues for structure members' qualifiers. 3. Global qualifier fix. 4. IO Mapper refine. Add support for checking with mangle names. * Additional missing features * Invariant member. (Only check non-interface). * Split block nesting level and struct nesting level. To fix issues of checking 'invariant' qualifier. Current grammar would check block/struct member without its parent class's information. So we split nesting level, and 'invariant' would only be checked within a struct. * Format anonymous block names. Refine codes for symbols from all kinds of resouces. * Fix writeonly check. * Use LValueBase to find operator. * Fix random null ptr issue. * invariant check, stage in io mapping, reference parameter should be used and remove wrong codes introduced with ordering vector. * Remained: to be fixed with double check link.vk.multiblocksValid * Fix version error. invariant * Revert loc modification. --- SPIRV/GlslangToSpv.cpp | 4 +- Test/baseResults/300layout.vert.out | 3 +- Test/baseResults/310.frag.out | 6 +- Test/baseResults/310.vert.out | 3 +- Test/baseResults/320.vert.out | 3 +- Test/baseResults/410.geom.out | 3 +- .../hlsl.structbuffer.append.fn.frag.out | 8 +- .../baseResults/hlsl.structbuffer.fn.frag.out | 4 +- .../link.vk.multiBlocksValid.0.0.vert.out | 4 +- .../link.vk.multiBlocksValid.1.0.geom.out | 8 +- Test/baseResults/spv.specConstant.vert.out | 6 +- glslang/Include/intermediate.h | 2 + glslang/MachineIndependent/IntermTraverse.cpp | 7 + .../MachineIndependent/ParseContextBase.cpp | 90 ++-- glslang/MachineIndependent/ParseHelper.cpp | 64 ++- glslang/MachineIndependent/ParseHelper.h | 7 +- glslang/MachineIndependent/Scan.cpp | 2 +- glslang/MachineIndependent/SymbolTable.cpp | 2 + glslang/MachineIndependent/SymbolTable.h | 24 +- glslang/MachineIndependent/glslang.m4 | 2 +- glslang/MachineIndependent/glslang.y | 2 +- glslang/MachineIndependent/glslang_tab.cpp | 2 +- glslang/MachineIndependent/iomapper.cpp | 432 +++++++++++++++--- glslang/MachineIndependent/iomapper.h | 13 +- glslang/MachineIndependent/reflection.cpp | 13 +- 25 files changed, 565 insertions(+), 149 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 0b6c62b7..7fc5c1ea 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -3959,6 +3959,8 @@ void TGlslangToSpvTraverser::decorateStructType(const glslang::TType& type, // Name and decorate the non-hidden members int offset = -1; int locationOffset = 0; // for use within the members of this struct + bool memberLocationInvalid = type.isArrayOfArrays() || + (type.isArray() && (type.getQualifier().isArrayedIo(glslangIntermediate->getStage()) == false)); for (int i = 0; i < (int)glslangMembers->size(); i++) { glslang::TType& glslangMember = *(*glslangMembers)[i].type; int member = i; @@ -4011,7 +4013,7 @@ void TGlslangToSpvTraverser::decorateStructType(const glslang::TType& type, // just track whether a member needs to be decorated. // Ignore member locations if the container is an array, as that's // ill-specified and decisions have been made to not allow this. - if (! type.isArray() && memberQualifier.hasLocation()) + if (!memberLocationInvalid && memberQualifier.hasLocation()) builder.addMemberDecoration(spvType, member, spv::DecorationLocation, memberQualifier.layoutLocation); if (qualifier.hasLocation()) // track for upcoming inheritance diff --git a/Test/baseResults/300layout.vert.out b/Test/baseResults/300layout.vert.out index e245cbcf..527425b3 100644 --- a/Test/baseResults/300layout.vert.out +++ b/Test/baseResults/300layout.vert.out @@ -1,6 +1,7 @@ 300layout.vert ERROR: 0:7: 'vertex input arrays' : not supported with this profile: es ERROR: 0:8: 'in' : cannot be a structure or array +ERROR: 0:8: 's' : A structure containing an array is not allowed as input in ES ERROR: 0:8: 'vertex input arrays' : not supported with this profile: es ERROR: 0:8: 'location' : overlapping use of location 10 ERROR: 0:12: 'layout' : cannot specify matrix layout on a variable declaration @@ -18,7 +19,7 @@ ERROR: 0:50: 'shared' : not supported for this version or the enabled extensions ERROR: 0:50: 'shared' : not supported in this stage: vertex ERROR: 0:54: 'layout' : cannot specify packing on a variable declaration ERROR: 0:57: 'location' : overlapping use of location 40 -ERROR: 19 compilation errors. No code generated. +ERROR: 20 compilation errors. No code generated. Shader version: 300 diff --git a/Test/baseResults/310.frag.out b/Test/baseResults/310.frag.out index 9fe93e95..9f73c675 100644 --- a/Test/baseResults/310.frag.out +++ b/Test/baseResults/310.frag.out @@ -40,10 +40,14 @@ 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 ERROR: 0:117: 'fragment-shader array-of-array input' : not supported with this profile: es +ERROR: 0:120: 'S' : A structure containing an array is not allowed as input in ES ERROR: 0:120: 'fragment-shader array-of-struct input' : not supported with this profile: es +ERROR: 0:121: 'S' : A structure containing an array is not allowed as input in ES ERROR: 0:121: 'fragment-shader array-of-struct input' : not supported with this profile: es ERROR: 0:123: 'fragment-shader struct input containing an array' : not supported with this profile: es +ERROR: 0:123: 'SA' : A structure containing an array is not allowed as input in ES ERROR: 0:125: 'fragment-shader struct input containing structure' : not supported with this profile: es +ERROR: 0:125: 'SS' : A structure containing an struct is not allowed as input in ES ERROR: 0:133: 'output block' : not supported in this stage: fragment ERROR: 0:138: '' : cannot nest a structure definition inside a structure or block ERROR: 0:146: 'location' : overlapping use of location 13 @@ -139,7 +143,7 @@ ERROR: 0:461: 'func' : function already has a body ERROR: 0:463: 'return' : void function cannot return a value ERROR: 0:472: '=' : cannot convert from ' temp mediump uint' to ' temp mediump int' ERROR: 0:485: '=' : cannot convert from ' global mediump int' to ' temp mediump uint' -ERROR: 132 compilation errors. No code generated. +ERROR: 136 compilation errors. No code generated. Shader version: 310 diff --git a/Test/baseResults/310.vert.out b/Test/baseResults/310.vert.out index a910e345..1d2152dd 100644 --- a/Test/baseResults/310.vert.out +++ b/Test/baseResults/310.vert.out @@ -21,6 +21,7 @@ ERROR: 0:105: 'location' : overlapping use of location 12 ERROR: 0:107: 'input block' : not supported in this stage: vertex ERROR: 0:109: 'gl_PerVertex' : block redeclaration has extra members ERROR: 0:119: 'gl_PointSize' : member of nameless block was not redeclared +ERROR: 0:119: 'assign' : l-value required "gl_PerVertex" (can't modify void) ERROR: 0:119: 'assign' : cannot convert from ' const float' to ' gl_PointSize highp void PointSize' ERROR: 0:122: 'gl_PerVertex' : can only redeclare a built-in block once, and before any use ERROR: 0:127: 'flat/smooth/noperspective' : cannot use interpolation qualifiers on an interface block @@ -96,7 +97,7 @@ ERROR: 0:389: 'sample' : Reserved word. ERROR: 0:400: 'interpolateAtCentroid' : no matching overloaded function found ERROR: 0:401: 'interpolateAtSample' : no matching overloaded function found ERROR: 0:402: 'interpolateAtOffset' : no matching overloaded function found -ERROR: 93 compilation errors. No code generated. +ERROR: 94 compilation errors. No code generated. Shader version: 310 diff --git a/Test/baseResults/320.vert.out b/Test/baseResults/320.vert.out index bf127d42..0313b619 100644 --- a/Test/baseResults/320.vert.out +++ b/Test/baseResults/320.vert.out @@ -4,6 +4,7 @@ ERROR: 0:14: 'location' : overlapping use of location 12 ERROR: 0:16: 'input block' : not supported in this stage: vertex ERROR: 0:18: 'gl_PerVertex' : block redeclaration has extra members ERROR: 0:28: 'gl_PointSize' : member of nameless block was not redeclared +ERROR: 0:28: 'assign' : l-value required "gl_PerVertex" (can't modify void) ERROR: 0:28: 'assign' : cannot convert from ' const float' to ' gl_PointSize highp void PointSize' ERROR: 0:31: 'gl_PerVertex' : can only redeclare a built-in block once, and before any use ERROR: 0:36: 'flat/smooth/noperspective' : cannot use interpolation qualifiers on an interface block @@ -33,7 +34,7 @@ ERROR: 0:211: '=' : cannot convert from ' const float' to ' temp highp 3-compon ERROR: 0:252: 'interpolateAtCentroid' : no matching overloaded function found ERROR: 0:253: 'interpolateAtSample' : no matching overloaded function found ERROR: 0:254: 'interpolateAtOffset' : no matching overloaded function found -ERROR: 34 compilation errors. No code generated. +ERROR: 35 compilation errors. No code generated. Shader version: 320 diff --git a/Test/baseResults/410.geom.out b/Test/baseResults/410.geom.out index c38ba483..498da5ac 100644 --- a/Test/baseResults/410.geom.out +++ b/Test/baseResults/410.geom.out @@ -5,9 +5,10 @@ ERROR: 0:20: 'gl_PerVertex' : can only redeclare a built-in block once, and befo ERROR: 0:32: 'gl_Position' : no such field in structure ERROR: 0:32: '=' : cannot convert from ' temp block{ in float PointSize gl_PointSize}' to ' temp 4-component vector of float' ERROR: 0:33: 'gl_Position' : member of nameless block was not redeclared +ERROR: 0:33: 'assign' : l-value required "gl_PerVertex" (can't modify void) ERROR: 0:33: 'assign' : cannot convert from ' const 4-component vector of float' to 'layout( stream=0) gl_Position void Position' WARNING: 0:38: 'return' : type conversion on return values was not explicitly allowed until version 420 -ERROR: 7 compilation errors. No code generated. +ERROR: 8 compilation errors. No code generated. Shader version: 410 diff --git a/Test/baseResults/hlsl.structbuffer.append.fn.frag.out b/Test/baseResults/hlsl.structbuffer.append.fn.frag.out index 6a239da4..2ac904eb 100644 --- a/Test/baseResults/hlsl.structbuffer.append.fn.frag.out +++ b/Test/baseResults/hlsl.structbuffer.append.fn.frag.out @@ -190,13 +190,13 @@ Validation failed Decorate 9 BufferBlock Decorate 12 BufferBlock Decorate 49(sbuf_a) DescriptorSet 0 - Decorate 49(sbuf_a) Binding 4 + Decorate 49(sbuf_a) Binding 0 Decorate 50(sbuf_a@count) DescriptorSet 0 - Decorate 50(sbuf_a@count) Binding 6 + Decorate 50(sbuf_a@count) Binding 0 Decorate 51(sbuf_c) DescriptorSet 0 - Decorate 51(sbuf_c) Binding 5 + Decorate 51(sbuf_c) Binding 1 Decorate 52(sbuf_c@count) DescriptorSet 0 - Decorate 52(sbuf_c@count) Binding 7 + Decorate 52(sbuf_c@count) Binding 0 Decorate 58(pos) Flat Decorate 58(pos) Location 0 Decorate 61(@entryPointOutput) Location 0 diff --git a/Test/baseResults/hlsl.structbuffer.fn.frag.out b/Test/baseResults/hlsl.structbuffer.fn.frag.out index c5afd356..bd2a4e67 100644 --- a/Test/baseResults/hlsl.structbuffer.fn.frag.out +++ b/Test/baseResults/hlsl.structbuffer.fn.frag.out @@ -191,9 +191,9 @@ Validation failed Decorate 18 BufferBlock Decorate 20 BufferBlock Decorate 47(sbuf2) DescriptorSet 0 - Decorate 47(sbuf2) Binding 2 + Decorate 47(sbuf2) Binding 0 Decorate 48(sbuf2@count) DescriptorSet 0 - Decorate 48(sbuf2@count) Binding 3 + Decorate 48(sbuf2@count) Binding 0 Decorate 50(sbuf) DescriptorSet 0 Decorate 50(sbuf) Binding 10 Decorate 63(pos) Flat diff --git a/Test/baseResults/link.vk.multiBlocksValid.0.0.vert.out b/Test/baseResults/link.vk.multiBlocksValid.0.0.vert.out index ddb856d8..bdabab18 100644 --- a/Test/baseResults/link.vk.multiBlocksValid.0.0.vert.out +++ b/Test/baseResults/link.vk.multiBlocksValid.0.0.vert.out @@ -211,7 +211,7 @@ Shader version: 430 Name 70 "BufferBlock" MemberName 70(BufferBlock) 0 "p" Name 72 "uBuf" - Decorate 14(oColor) Location 4 + Decorate 14(oColor) Location 2 MemberDecorate 16(ColorBlock) 0 Offset 0 MemberDecorate 16(ColorBlock) 1 Offset 16 MemberDecorate 16(ColorBlock) 2 Offset 32 @@ -224,7 +224,7 @@ Shader version: 430 Decorate 28(uColorBuf) DescriptorSet 0 Decorate 28(uColorBuf) Binding 0 Decorate 32(Vertex) Block - Decorate 34(oV) Location 2 + Decorate 34(oV) Location 0 MemberDecorate 40(gl_PerVertex) 0 BuiltIn Position MemberDecorate 40(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 40(gl_PerVertex) 2 BuiltIn ClipDistance diff --git a/Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out b/Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out index 63be728b..c0b33b70 100644 --- a/Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out +++ b/Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out @@ -304,7 +304,7 @@ output primitive = triangle_strip MemberName 95(BufferBlock) 0 "p" Name 97 "uBuf" Name 100 "P" - Decorate 18(oColor) Location 2 + Decorate 18(oColor) Location 1 MemberDecorate 20(ColorBlock) 0 Offset 0 MemberDecorate 20(ColorBlock) 1 Offset 16 MemberDecorate 20(ColorBlock) 2 Offset 32 @@ -326,16 +326,16 @@ output primitive = triangle_strip Decorate 50(uM) DescriptorSet 0 Decorate 50(uM) Binding 0 Decorate 59(Vertex) Block - Decorate 61(oV) Location 1 + Decorate 61(oV) Location 0 Decorate 64(Vertex) Block - Decorate 68(iV) Location 0 + Decorate 68(iV) Location 1 MemberDecorate 95(BufferBlock) 0 ColMajor MemberDecorate 95(BufferBlock) 0 Offset 0 MemberDecorate 95(BufferBlock) 0 MatrixStride 16 Decorate 95(BufferBlock) BufferBlock Decorate 97(uBuf) DescriptorSet 0 Decorate 97(uBuf) Binding 1 - Decorate 100(P) Location 4 + Decorate 100(P) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.specConstant.vert.out b/Test/baseResults/spv.specConstant.vert.out index 921cc681..76f3de61 100644 --- a/Test/baseResults/spv.specConstant.vert.out +++ b/Test/baseResults/spv.specConstant.vert.out @@ -11,7 +11,7 @@ spv.specConstant.vert Source GLSL 400 Name 4 "main" Name 9 "arraySize" - Name 14 "foo(vf4[s4546];" + Name 14 "foo(vf4[s805310914];" Name 13 "p" Name 17 "builtin_spec_constant(" Name 20 "color" @@ -106,10 +106,10 @@ spv.specConstant.vert Store 20(color) 46 48: 10 Load 22(ucol) Store 47(param) 48 - 49: 2 FunctionCall 14(foo(vf4[s4546];) 47(param) + 49: 2 FunctionCall 14(foo(vf4[s805310914];) 47(param) Return FunctionEnd -14(foo(vf4[s4546];): 2 Function None 12 +14(foo(vf4[s805310914];): 2 Function None 12 13(p): 11(ptr) FunctionParameter 15: Label 54: 24(ptr) AccessChain 53(dupUcol) 23 diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index 30cb6fb1..9e41a997 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -1282,6 +1282,8 @@ public: TIntermTyped* getConstSubtree() const { return constSubtree; } #ifndef GLSLANG_WEB void setFlattenSubset(int subset) { flattenSubset = subset; } + virtual const TString& getAccessName() const; + int getFlattenSubset() const { return flattenSubset; } // -1 means full object #endif diff --git a/glslang/MachineIndependent/IntermTraverse.cpp b/glslang/MachineIndependent/IntermTraverse.cpp index f46010b7..553b1b5f 100644 --- a/glslang/MachineIndependent/IntermTraverse.cpp +++ b/glslang/MachineIndependent/IntermTraverse.cpp @@ -71,6 +71,13 @@ void TIntermConstantUnion::traverse(TIntermTraverser *it) it->visitConstantUnion(this); } +const TString& TIntermSymbol::getAccessName() const { + if (getBasicType() == EbtBlock) + return getType().getTypeName(); + else + return getName(); +} + // // Traverse a binary node. // diff --git a/glslang/MachineIndependent/ParseContextBase.cpp b/glslang/MachineIndependent/ParseContextBase.cpp index b4640091..3efa27ac 100644 --- a/glslang/MachineIndependent/ParseContextBase.cpp +++ b/glslang/MachineIndependent/ParseContextBase.cpp @@ -127,22 +127,6 @@ bool TParseContextBase::lValueErrorCheck(const TSourceLoc& loc, const char* op, { TIntermBinary* binaryNode = node->getAsBinaryNode(); - if (binaryNode) { - switch(binaryNode->getOp()) { - case EOpIndexDirect: - case EOpIndexIndirect: // fall through - case EOpIndexDirectStruct: // fall through - case EOpVectorSwizzle: - case EOpMatrixSwizzle: - return lValueErrorCheck(loc, op, binaryNode->getLeft()); - default: - break; - } - error(loc, " l-value required", op, "", ""); - - return true; - } - const char* symbol = nullptr; TIntermSymbol* symNode = node->getAsSymbolNode(); if (symNode != nullptr) @@ -203,15 +187,40 @@ bool TParseContextBase::lValueErrorCheck(const TSourceLoc& loc, const char* op, // Everything else is okay, no error. // if (message == nullptr) + { + if (binaryNode) { + switch (binaryNode->getOp()) { + case EOpIndexDirect: + case EOpIndexIndirect: // fall through + case EOpIndexDirectStruct: // fall through + case EOpVectorSwizzle: + case EOpMatrixSwizzle: + return lValueErrorCheck(loc, op, binaryNode->getLeft()); + default: + break; + } + error(loc, " l-value required", op, "", ""); + + return true; + } return false; + } // // If we get here, we have an error and a message. // + const TIntermTyped* leftMostTypeNode = TIntermediate::findLValueBase(node, true); + if (symNode) error(loc, " l-value required", op, "\"%s\" (%s)", symbol, message); else - error(loc, " l-value required", op, "(%s)", message); + if (binaryNode && binaryNode->getAsOperator()->getOp() == EOpIndexDirectStruct) + if(IsAnonymous(leftMostTypeNode->getAsSymbolNode()->getName())) + error(loc, " l-value required", op, "\"%s\" (%s)", leftMostTypeNode->getAsSymbolNode()->getAccessName().c_str(), message); + else + error(loc, " l-value required", op, "\"%s\" (%s)", leftMostTypeNode->getAsSymbolNode()->getName().c_str(), message); + else + error(loc, " l-value required", op, "(%s)", message); return true; } @@ -219,28 +228,41 @@ bool TParseContextBase::lValueErrorCheck(const TSourceLoc& loc, const char* op, // Test for and give an error if the node can't be read from. void TParseContextBase::rValueErrorCheck(const TSourceLoc& loc, const char* op, TIntermTyped* node) { + TIntermBinary* binaryNode = node->getAsBinaryNode(); + const TIntermSymbol* symNode = node->getAsSymbolNode(); + if (! node) return; - TIntermBinary* binaryNode = node->getAsBinaryNode(); - if (binaryNode) { - switch(binaryNode->getOp()) { - case EOpIndexDirect: - case EOpIndexIndirect: - case EOpIndexDirectStruct: - case EOpVectorSwizzle: - case EOpMatrixSwizzle: - rValueErrorCheck(loc, op, binaryNode->getLeft()); - default: - break; + if (node->getQualifier().isWriteOnly()) { + const TIntermTyped* leftMostTypeNode = TIntermediate::findLValueBase(node, true); + + if (symNode != nullptr) + error(loc, "can't read from writeonly object: ", op, symNode->getName().c_str()); + else if (binaryNode && + (binaryNode->getAsOperator()->getOp() == EOpIndexDirectStruct || + binaryNode->getAsOperator()->getOp() == EOpIndexDirect)) + if(IsAnonymous(leftMostTypeNode->getAsSymbolNode()->getName())) + error(loc, "can't read from writeonly object: ", op, leftMostTypeNode->getAsSymbolNode()->getAccessName().c_str()); + else + error(loc, "can't read from writeonly object: ", op, leftMostTypeNode->getAsSymbolNode()->getName().c_str()); + else + error(loc, "can't read from writeonly object: ", op, ""); + + } else { + if (binaryNode) { + switch (binaryNode->getOp()) { + case EOpIndexDirect: + case EOpIndexIndirect: + case EOpIndexDirectStruct: + case EOpVectorSwizzle: + case EOpMatrixSwizzle: + rValueErrorCheck(loc, op, binaryNode->getLeft()); + default: + break; + } } - - return; } - - TIntermSymbol* symNode = node->getAsSymbolNode(); - if (symNode && symNode->getQualifier().isWriteOnly()) - error(loc, "can't read from writeonly object: ", op, symNode->getName().c_str()); } // Add 'symbol' to the list of deferred linkage symbols, which diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index b9b37fb9..032774f9 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -3368,7 +3368,7 @@ void TParseContext::transparentOpaqueCheck(const TSourceLoc& loc, const TType& t // void TParseContext::memberQualifierCheck(glslang::TPublicType& publicType) { - globalQualifierFixCheck(publicType.loc, publicType.qualifier); + globalQualifierFixCheck(publicType.loc, publicType.qualifier, true); checkNoShaderLayouts(publicType.loc, publicType.shaderQualifiers); if (publicType.qualifier.isNonUniform()) { error(publicType.loc, "not allowed on block or structure members", "nonuniformEXT", ""); @@ -3379,7 +3379,7 @@ void TParseContext::memberQualifierCheck(glslang::TPublicType& publicType) // // Check/fix just a full qualifier (no variables or types yet, but qualifier is complete) at global level. // -void TParseContext::globalQualifierFixCheck(const TSourceLoc& loc, TQualifier& qualifier) +void TParseContext::globalQualifierFixCheck(const TSourceLoc& loc, TQualifier& qualifier, bool isMemberCheck) { bool nonuniformOkay = false; @@ -3404,6 +3404,16 @@ void TParseContext::globalQualifierFixCheck(const TSourceLoc& loc, TQualifier& q case EvqTemporary: nonuniformOkay = true; break; + case EvqUniform: + // According to GLSL spec: The std430 qualifier is supported only for shader storage blocks; a shader using + // the std430 qualifier on a uniform block will fail to compile. + // Only check the global declaration: layout(std430) uniform; + if (blockName == nullptr && + qualifier.layoutPacking == ElpStd430) + { + error(loc, "it is invalid to declare std430 qualifier on uniform", "", ""); + } + break; default: break; } @@ -3411,7 +3421,9 @@ void TParseContext::globalQualifierFixCheck(const TSourceLoc& loc, TQualifier& q if (!nonuniformOkay && qualifier.isNonUniform()) error(loc, "for non-parameter, can only apply to 'in' or no storage qualifier", "nonuniformEXT", ""); - invariantCheck(loc, qualifier); + // Storage qualifier isn't ready for memberQualifierCheck, we should skip invariantCheck for it. + if (!isMemberCheck || structNestingLevel > 0) + invariantCheck(loc, qualifier); } // @@ -4083,6 +4095,9 @@ void TParseContext::checkRuntimeSizable(const TSourceLoc& loc, const TIntermType if (isRuntimeLength(base)) return; + if (base.getType().getQualifier().builtIn == EbvSampleMask) + return; + // Check for last member of a bufferreference type, which is runtime sizeable // but doesn't support runtime length if (base.getType().getQualifier().storage == EvqBuffer) { @@ -4634,14 +4649,14 @@ void TParseContext::paramCheckFix(const TSourceLoc& loc, const TQualifier& quali void TParseContext::nestedBlockCheck(const TSourceLoc& loc) { - if (structNestingLevel > 0) + if (structNestingLevel > 0 || blockNestingLevel > 0) error(loc, "cannot nest a block definition inside a structure or block", "", ""); - ++structNestingLevel; + ++blockNestingLevel; } void TParseContext::nestedStructCheck(const TSourceLoc& loc) { - if (structNestingLevel > 0) + if (structNestingLevel > 0 || blockNestingLevel > 0) error(loc, "cannot nest a structure definition inside a structure or block", "", ""); ++structNestingLevel; } @@ -6537,13 +6552,15 @@ void TParseContext::declareTypeDefaults(const TSourceLoc& loc, const TPublicType error(loc, "atomic_uint binding is too large", "binding", ""); return; } - - if(publicType.qualifier.hasOffset()) { + if (publicType.qualifier.hasOffset()) atomicUintOffsets[publicType.qualifier.layoutBinding] = publicType.qualifier.layoutOffset; - } return; } + if (publicType.arraySizes) { + error(loc, "expect an array name", "", ""); + } + if (publicType.qualifier.hasLayout() && !publicType.qualifier.hasBufferReference()) warn(loc, "useless application of layout qualifier", "layout", ""); #endif @@ -6634,6 +6651,22 @@ TIntermNode* TParseContext::declareVariable(const TSourceLoc& loc, TString& iden if (type.getQualifier().storage == EvqShared && type.containsCoopMat()) error(loc, "qualifier", "Cooperative matrix types must not be used in shared memory", ""); + if (profile == EEsProfile) { + if (type.getQualifier().isPipeInput() && type.getBasicType() == EbtStruct) { + if (type.getQualifier().isArrayedIo(language)) { + TType perVertexType(type, 0); + if (perVertexType.containsArray() && perVertexType.containsBuiltIn() == false) { + error(loc, "A per vertex structure containing an array is not allowed as input in ES", type.getTypeName().c_str(), ""); + } + } + else if (type.containsArray() && type.containsBuiltIn() == false) { + error(loc, "A structure containing an array is not allowed as input in ES", type.getTypeName().c_str(), ""); + } + if (type.containsStructure()) + error(loc, "A structure containing an struct is not allowed as input in ES", type.getTypeName().c_str(), ""); + } + } + if (identifier != "gl_FragCoord" && (publicType.shaderQualifiers.originUpperLeft || publicType.shaderQualifiers.pixelCenterInteger)) error(loc, "can only apply origin_upper_left and pixel_center_origin to gl_FragCoord", "layout qualifier", ""); if (identifier != "gl_FragDepth" && publicType.shaderQualifiers.getDepth() != EldNone) @@ -6956,6 +6989,15 @@ TIntermTyped* TParseContext::convertInitializerList(const TSourceLoc& loc, const error(loc, "wrong vector size (or rows in a matrix column):", "initializer list", type.getCompleteString().c_str()); return nullptr; } + TBasicType destType = type.getBasicType(); + for (int i = 0; i < type.getVectorSize(); ++i) { + TBasicType initType = initList->getSequence()[i]->getAsTyped()->getBasicType(); + if (destType != initType && !intermediate.canImplicitlyPromote(initType, destType)) { + error(loc, "type mismatch in initializer list", "initializer list", type.getCompleteString().c_str()); + return nullptr; + } + + } } else { error(loc, "unexpected initializer-list type:", "initializer list", type.getCompleteString().c_str()); return nullptr; @@ -7492,10 +7534,10 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con TType& memberType = *typeList[member].type; TQualifier& memberQualifier = memberType.getQualifier(); const TSourceLoc& memberLoc = typeList[member].loc; - globalQualifierFixCheck(memberLoc, memberQualifier); if (memberQualifier.storage != EvqTemporary && memberQualifier.storage != EvqGlobal && memberQualifier.storage != currentBlockQualifier.storage) error(memberLoc, "member storage qualifier cannot contradict block storage qualifier", memberType.getFieldName().c_str(), ""); memberQualifier.storage = currentBlockQualifier.storage; + globalQualifierFixCheck(memberLoc, memberQualifier); #ifndef GLSLANG_WEB inheritMemoryQualifiers(currentBlockQualifier, memberQualifier); if (currentBlockQualifier.perPrimitiveNV) @@ -8193,7 +8235,7 @@ void TParseContext::invariantCheck(const TSourceLoc& loc, const TQualifier& qual bool pipeOut = qualifier.isPipeOutput(); bool pipeIn = qualifier.isPipeInput(); - if (version >= 300 || (!isEsProfile() && version >= 420)) { + if ((version >= 300 && isEsProfile()) || (!isEsProfile() && version >= 420)) { if (! pipeOut) error(loc, "can only apply to an output", "invariant", ""); } else { diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h index 0f09adaf..fe2b6fbb 100644 --- a/glslang/MachineIndependent/ParseHelper.h +++ b/glslang/MachineIndependent/ParseHelper.h @@ -83,7 +83,7 @@ public: : TParseVersions(interm, version, profile, spvVersion, language, infoSink, forwardCompatible, messages), scopeMangler("::"), symbolTable(symbolTable), - statementNestingLevel(0), loopNestingLevel(0), structNestingLevel(0), controlFlowNestingLevel(0), + statementNestingLevel(0), loopNestingLevel(0), structNestingLevel(0), blockNestingLevel(0), controlFlowNestingLevel(0), currentFunctionType(nullptr), postEntryPointReturn(false), contextPragma(true, false), @@ -178,7 +178,8 @@ public: 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 structNestingLevel; // 0 if outside structures + int blockNestingLevel; // 0 if outside blocks 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 @@ -365,7 +366,7 @@ public: void accStructCheck(const TSourceLoc & loc, const TType & type, const TString & identifier); void transparentOpaqueCheck(const TSourceLoc&, const TType&, const TString& identifier); void memberQualifierCheck(glslang::TPublicType&); - void globalQualifierFixCheck(const TSourceLoc&, TQualifier&); + void globalQualifierFixCheck(const TSourceLoc&, TQualifier&, bool isMemberCheck = false); void globalQualifierTypeCheck(const TSourceLoc&, const TQualifier&, const TPublicType&); bool structQualifierErrorCheck(const TSourceLoc&, const TPublicType& pType); void mergeQualifiers(const TSourceLoc&, TQualifier& dst, const TQualifier& src, bool force); diff --git a/glslang/MachineIndependent/Scan.cpp b/glslang/MachineIndependent/Scan.cpp index bd3181a7..3a5f090f 100644 --- a/glslang/MachineIndependent/Scan.cpp +++ b/glslang/MachineIndependent/Scan.cpp @@ -982,7 +982,7 @@ int TScanContext::tokenizeIdentifier() return keyword; case PACKED: if ((parseContext.isEsProfile() && parseContext.version < 300) || - (!parseContext.isEsProfile() && parseContext.version < 330)) + (!parseContext.isEsProfile() && parseContext.version < 140)) return reservedWord(); return identifierOrType(); diff --git a/glslang/MachineIndependent/SymbolTable.cpp b/glslang/MachineIndependent/SymbolTable.cpp index 007f22c1..e2458145 100644 --- a/glslang/MachineIndependent/SymbolTable.cpp +++ b/glslang/MachineIndependent/SymbolTable.cpp @@ -146,6 +146,8 @@ void TType::buildMangledName(TString& mangledName) const if (typeName) mangledName += *typeName; for (unsigned int i = 0; i < structure->size(); ++i) { + if ((*structure)[i].type->getBasicType() == EbtVoid) + continue; mangledName += '-'; (*structure)[i].type->buildMangledName(mangledName); } diff --git a/glslang/MachineIndependent/SymbolTable.h b/glslang/MachineIndependent/SymbolTable.h index ec4bc3c5..db16c19b 100644 --- a/glslang/MachineIndependent/SymbolTable.h +++ b/glslang/MachineIndependent/SymbolTable.h @@ -613,20 +613,24 @@ public: // protected: static const int globalLevel = 3; - bool isSharedLevel(int level) { return level <= 1; } // exclude all per-compile levels - bool isBuiltInLevel(int level) { return level <= 2; } // exclude user globals - bool isGlobalLevel(int level) { return level <= globalLevel; } // include user globals + static bool isSharedLevel(int level) { return level <= 1; } // exclude all per-compile levels + static bool isBuiltInLevel(int level) { return level <= 2; } // exclude user globals + static bool isGlobalLevel(int level) { return level <= globalLevel; } // include user globals public: bool isEmpty() { return table.size() == 0; } bool atBuiltInLevel() { return isBuiltInLevel(currentLevel()); } bool atGlobalLevel() { return isGlobalLevel(currentLevel()); } - + static bool isBuiltInSymbol(int uniqueId) { + int level = uniqueId >> LevelFlagBitOffset; + return isBuiltInLevel(level); + } void setNoBuiltInRedeclarations() { noBuiltInRedeclarations = true; } void setSeparateNameSpaces() { separateNameSpaces = true; } void push() { table.push_back(new TSymbolTableLevel); + updateUniqueIdLevelFlag(); } // Make a new symbol-table level to represent the scope introduced by a structure @@ -639,6 +643,7 @@ public: { assert(thisSymbol.getName().size() == 0); table.push_back(new TSymbolTableLevel); + updateUniqueIdLevelFlag(); table.back()->setThisLevel(); insert(thisSymbol); } @@ -648,6 +653,7 @@ public: table[currentLevel()]->getPreviousDefaultPrecisions(p); delete table.back(); table.pop_back(); + updateUniqueIdLevelFlag(); } // @@ -867,12 +873,20 @@ public: table[level]->readOnly(); } + // Add current level in the high-bits of unique id + void updateUniqueIdLevelFlag() { + // clamp level to avoid overflow + uint32_t level = currentLevel() > 7 ? 7 : currentLevel(); + uniqueId &= ((1 << LevelFlagBitOffset) - 1); + uniqueId |= (level << LevelFlagBitOffset); + } + protected: TSymbolTable(TSymbolTable&); TSymbolTable& operator=(TSymbolTableLevel&); int currentLevel() const { return static_cast(table.size()) - 1; } - + static const uint32_t LevelFlagBitOffset = 28; std::vector table; int uniqueId; // for unique identification in code generation bool noBuiltInRedeclarations; diff --git a/glslang/MachineIndependent/glslang.m4 b/glslang/MachineIndependent/glslang.m4 index 0b4b53fb..6bd3759a 100644 --- a/glslang/MachineIndependent/glslang.m4 +++ b/glslang/MachineIndependent/glslang.m4 @@ -905,7 +905,7 @@ declaration block_structure : type_qualifier IDENTIFIER LEFT_BRACE { parseContext.nestedBlockCheck($1.loc); } struct_declaration_list RIGHT_BRACE { - --parseContext.structNestingLevel; + --parseContext.blockNestingLevel; parseContext.blockName = $2.string; parseContext.globalQualifierFixCheck($1.loc, $1.qualifier); parseContext.checkNoShaderLayouts($1.loc, $1.shaderQualifiers); diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index 23adcb05..f5070026 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -905,7 +905,7 @@ declaration block_structure : type_qualifier IDENTIFIER LEFT_BRACE { parseContext.nestedBlockCheck($1.loc); } struct_declaration_list RIGHT_BRACE { - --parseContext.structNestingLevel; + --parseContext.blockNestingLevel; parseContext.blockName = $2.string; parseContext.globalQualifierFixCheck($1.loc, $1.qualifier); parseContext.checkNoShaderLayouts($1.loc, $1.shaderQualifiers); diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp index ac357977..0204660e 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -5186,7 +5186,7 @@ yyreduce: case 104: #line 907 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - --parseContext.structNestingLevel; + --parseContext.blockNestingLevel; parseContext.blockName = (yyvsp[-4].lex).string; parseContext.globalQualifierFixCheck((yyvsp[-5].interm.type).loc, (yyvsp[-5].interm.type).qualifier); parseContext.checkNoShaderLayouts((yyvsp[-5].interm.type).loc, (yyvsp[-5].interm.type).shaderQualifiers); diff --git a/glslang/MachineIndependent/iomapper.cpp b/glslang/MachineIndependent/iomapper.cpp index 905cf65d..0e9e717a 100644 --- a/glslang/MachineIndependent/iomapper.cpp +++ b/glslang/MachineIndependent/iomapper.cpp @@ -37,9 +37,11 @@ #include "../Include/Common.h" #include "../Include/InfoSink.h" +#include "../Include/Types.h" #include "gl_types.h" #include "iomapper.h" +#include "SymbolTable.h" // // Map IO bindings. @@ -82,17 +84,17 @@ public: // If a global is being visited, then we should also traverse it incase it's evaluation // ends up visiting inputs we want to tag as live else if (base->getQualifier().storage == EvqGlobal) - addGlobalReference(base->getName()); + addGlobalReference(base->getAccessName()); if (target) { TVarEntryInfo ent = {base->getId(), base, ! traverseAll}; ent.stage = intermediate.getStage(); TVarLiveMap::iterator at = target->find( - ent.symbol->getName()); // std::lower_bound(target->begin(), target->end(), ent, TVarEntryInfo::TOrderById()); + ent.symbol->getAccessName()); // std::lower_bound(target->begin(), target->end(), ent, TVarEntryInfo::TOrderById()); if (at != target->end() && at->second.id == ent.id) at->second.live = at->second.live || ! traverseAll; // update live state else - (*target)[ent.symbol->getName()] = ent; + (*target)[ent.symbol->getAccessName()] = ent; } } @@ -125,7 +127,8 @@ public: return; TVarEntryInfo ent = { base->getId() }; - TVarLiveMap::const_iterator at = source->find(base->getName()); + // Fix a defect, when block has no instance name, we need to find its block name + TVarLiveMap::const_iterator at = source->find(base->getAccessName()); if (at == source->end()) return; @@ -181,7 +184,7 @@ struct TNotifyInOutAdaptor inline void operator()(std::pair& entKey) { - resolver.notifyInOut(stage, entKey.second); + resolver.notifyInOut(entKey.second.stage, entKey.second); } private: @@ -189,12 +192,13 @@ private: }; struct TResolverUniformAdaptor { - TResolverUniformAdaptor(EShLanguage s, TIoMapResolver& r, TInfoSink& i, bool& e) + TResolverUniformAdaptor(EShLanguage s, TIoMapResolver& r, TVarLiveMap* uniform[EShLangCount], TInfoSink& i, bool& e) : stage(s) , resolver(r) , infoSink(i) , error(e) { + memcpy(uniformVarMap, uniform, EShLangCount * (sizeof(TVarLiveMap*))); } inline void operator()(std::pair& entKey) { @@ -206,9 +210,9 @@ struct TResolverUniformAdaptor { ent.newIndex = -1; const bool isValid = resolver.validateBinding(stage, ent); if (isValid) { - resolver.resolveBinding(stage, ent); - resolver.resolveSet(stage, ent); - resolver.resolveUniformLocation(stage, ent); + resolver.resolveBinding(ent.stage, ent); + resolver.resolveSet(ent.stage, ent); + resolver.resolveUniformLocation(ent.stage, ent); if (ent.newBinding != -1) { if (ent.newBinding >= int(TQualifier::layoutBindingEnd)) { @@ -217,6 +221,17 @@ struct TResolverUniformAdaptor { infoSink.info.message(EPrefixInternalError, err.c_str()); error = true; } + + if (ent.symbol->getQualifier().hasBinding()) { + for (uint32_t idx = EShLangVertex; idx < EShLangCount; ++idx) { + if (idx == ent.stage || uniformVarMap[idx] == nullptr) + continue; + auto entKey2 = uniformVarMap[idx]->find(entKey.first); + if (entKey2 != uniformVarMap[idx]->end()) { + entKey2->second.newBinding = ent.newBinding; + } + } + } } if (ent.newSet != -1) { if (ent.newSet >= int(TQualifier::layoutSetEnd)) { @@ -225,6 +240,16 @@ struct TResolverUniformAdaptor { infoSink.info.message(EPrefixInternalError, err.c_str()); error = true; } + if (ent.symbol->getQualifier().hasSet()) { + for (uint32_t idx = EShLangVertex; idx < EShLangCount; ++idx) { + if ((idx == stage) || (uniformVarMap[idx] == nullptr)) + continue; + auto entKey2 = uniformVarMap[idx]->find(entKey.first); + if (entKey2 != uniformVarMap[idx]->end()) { + entKey2->second.newSet = ent.newSet; + } + } + } } } else { TString errorMsg = "Invalid binding: " + entKey.first; @@ -239,7 +264,7 @@ struct TResolverUniformAdaptor { TIoMapResolver& resolver; TInfoSink& infoSink; bool& error; - + TVarLiveMap* uniformVarMap[EShLangCount]; private: TResolverUniformAdaptor& operator=(TResolverUniformAdaptor&) = delete; }; @@ -261,7 +286,7 @@ struct TResolverInOutAdaptor { ent.newBinding = -1; ent.newSet = -1; ent.newIndex = -1; - const bool isValid = resolver.validateInOut(stage, ent); + const bool isValid = resolver.validateInOut(ent.stage, ent); if (isValid) { resolver.resolveInOutLocation(stage, ent); resolver.resolveInOutComponent(stage, ent); @@ -296,17 +321,116 @@ private: struct TSymbolValidater { TSymbolValidater(TIoMapResolver& r, TInfoSink& i, TVarLiveMap* in[EShLangCount], TVarLiveMap* out[EShLangCount], - TVarLiveMap* uniform[EShLangCount], bool& hadError) + TVarLiveMap* uniform[EShLangCount], bool& hadError, EProfile profile, int version) : preStage(EShLangCount) , currentStage(EShLangCount) , nextStage(EShLangCount) , resolver(r) , infoSink(i) , hadError(hadError) + , profile(profile) + , version(version) { memcpy(inVarMaps, in, EShLangCount * (sizeof(TVarLiveMap*))); memcpy(outVarMaps, out, EShLangCount * (sizeof(TVarLiveMap*))); memcpy(uniformVarMap, uniform, EShLangCount * (sizeof(TVarLiveMap*))); + + std::map anonymousMemberMap; + std::vector usedUniformLocation; + std::vector usedUniformName; + usedUniformLocation.clear(); + usedUniformName.clear(); + for (int i = 0; i < EShLangCount; i++) { + if (uniformVarMap[i]) { + for (auto uniformVar : *uniformVarMap[i]) + { + TIntermSymbol* pSymbol = uniformVar.second.symbol; + TQualifier qualifier = uniformVar.second.symbol->getQualifier(); + TString symbolName = pSymbol->getAccessName(); + + // All the uniform needs multi-stage location check (block/default) + int uniformLocation = qualifier.layoutLocation; + + if (uniformLocation != TQualifier::layoutLocationEnd) { + // Total size of current uniform, could be block, struct or other types. + int size = TIntermediate::computeTypeUniformLocationSize(pSymbol->getType()); + + TRange locationRange(uniformLocation, uniformLocation + size - 1); + + // Combine location and component ranges + int overlapLocation = -1; + bool diffLocation = false; + + // Check for collisions, except for vertex inputs on desktop targeting OpenGL + overlapLocation = checkLocationOverlap(locationRange, usedUniformLocation, symbolName, usedUniformName, diffLocation); + + // Overlap locations of uniforms, regardless of components (multi stages) + if (overlapLocation == -1) { + usedUniformLocation.push_back(locationRange); + usedUniformName.push_back(symbolName); + } + else if (overlapLocation >= 0) { + if (diffLocation == true) { + TString err = "Uniform location should be equal for same uniforms: " + overlapLocation; + infoSink.info.message(EPrefixInternalError, err.c_str()); + hadError = true; + break; + } + else { + TString err = "Uniform location overlaps across stages: " + overlapLocation; + infoSink.info.message(EPrefixInternalError, err.c_str()); + hadError = true; + break; + } + } + } + + if ((uniformVar.second.symbol->getBasicType() == EbtBlock) && + IsAnonymous(uniformVar.second.symbol->getName())) + { + auto blockType = uniformVar.second.symbol->getType().getStruct(); + for (size_t memberIdx = 0; memberIdx < blockType->size(); ++memberIdx) { + auto memberName = (*blockType)[memberIdx].type->getFieldName(); + if (anonymousMemberMap.find(memberName) != anonymousMemberMap.end()) + { + if (anonymousMemberMap[memberName] != uniformVar.second.symbol->getType().getTypeName()) + { + TString err = "Invalid block member name: " + memberName; + infoSink.info.message(EPrefixInternalError, err.c_str()); + hadError = true; + break; + } + } + else + { + anonymousMemberMap[memberName] = uniformVar.second.symbol->getType().getTypeName(); + } + } + } + if (hadError) + break; + } + } + } + } + + // In case we need to new an intermediate, which costs too much + int checkLocationOverlap(const TRange& locationRange, std::vector& usedUniformLocation, const TString symbolName, std::vector& usedUniformName, bool& diffLocation) + { + for (size_t r = 0; r < usedUniformLocation.size(); ++r) { + if (usedUniformName[r] == symbolName) { + diffLocation = true; + return (usedUniformLocation[r].start == locationRange.start && + usedUniformLocation[r].last == locationRange.last) + ? -2 : std::max(locationRange.start, usedUniformLocation[r].start); + } + if (locationRange.overlap(usedUniformLocation[r])) { + // there is a collision; pick one + return std::max(locationRange.start, usedUniformLocation[r].start); + } + } + + return -1; // no collision } inline void operator()(std::pair& entKey) { @@ -339,11 +463,24 @@ struct TSymbolValidater // validate stage in; if (preStage == EShLangCount) return; - if (name == "gl_PerVertex") + if (TSymbolTable::isBuiltInSymbol(base->getId())) return; if (outVarMaps[preStage] != nullptr) { auto ent2 = outVarMaps[preStage]->find(name); + uint32_t location = base->getType().getQualifier().layoutLocation; + if (ent2 == outVarMaps[preStage]->end() && + location != glslang::TQualifier::layoutLocationEnd) { + for (auto var = outVarMaps[preStage]->begin(); var != ent2; var++) { + if (var->second.symbol->getType().getQualifier().layoutLocation == location) { + ent2 = var; + break; + } + } + } if (ent2 != outVarMaps[preStage]->end()) { + auto& type1 = base->getType(); + auto& type2 = ent2->second.symbol->getType(); + hadError = hadError || typeCheck(&type1, &type2, name.c_str(), false); if (ent2->second.symbol->getType().getQualifier().isArrayedIo(preStage)) { TType subType(ent2->second.symbol->getType(), 0); subType.appendMangledName(mangleName2); @@ -351,23 +488,49 @@ struct TSymbolValidater else { ent2->second.symbol->getType().appendMangledName(mangleName2); } - if (mangleName1 == mangleName2) + + if (mangleName1 == mangleName2) { + // For ES 3.0 only, other versions have no such restrictions + // According to ES 3.0 spec: The type and presence of the interpolation qualifiers and + // storage qualifiers of variables with the same name declared in all linked shaders must + // match, otherwise the link command will fail. + if (profile == EEsProfile && version == 300) { + // Don't need to check smooth qualifier, as it uses the default interpolation mode + if (ent1.stage == EShLangFragment && type1.isBuiltIn() == false) { + if (type1.getQualifier().flat != type2.getQualifier().flat || + type1.getQualifier().nopersp != type2.getQualifier().nopersp) { + TString err = "Interpolation qualifier mismatch : " + entKey.first; + infoSink.info.message(EPrefixInternalError, err.c_str()); + hadError = true; + } + } + } return; + } else { TString err = "Invalid In/Out variable type : " + entKey.first; infoSink.info.message(EPrefixInternalError, err.c_str()); hadError = true; } } + else if (!base->getType().isBuiltIn()) { + // According to spec: A link error is generated if any statically referenced input variable + // or block does not have a matching output + if (profile == EEsProfile && ent1.live) { + hadError = true; + TString errorStr = name + ": not been declare as a output variable in pre shader stage."; + infoSink.info.message(EPrefixError, errorStr.c_str()); + } + } return; } } else if (base->getQualifier().storage == EvqVaryingOut) { // validate stage out; if (nextStage == EShLangCount) return; - if (name == "gl_PerVertex") + if (TSymbolTable::isBuiltInSymbol(base->getId())) return; - if (outVarMaps[nextStage] != nullptr) { + if (inVarMaps[nextStage] != nullptr) { auto ent2 = inVarMaps[nextStage]->find(name); if (ent2 != inVarMaps[nextStage]->end()) { if (ent2->second.symbol->getType().getQualifier().isArrayedIo(nextStage)) { @@ -400,11 +563,50 @@ struct TSymbolValidater hadError = true; } mangleName2.clear(); + + // validate instance name of blocks + if (hadError == false && + base->getType().getBasicType() == EbtBlock && + IsAnonymous(base->getName()) != IsAnonymous(ent2->second.symbol->getName())) { + TString err = "Matched uniform block names must also either all be lacking " + "an instance name or all having an instance name: " + entKey.first; + infoSink.info.message(EPrefixInternalError, err.c_str()); + hadError = true; + } + + // validate uniform block member qualifier and member names + auto& type1 = base->getType(); + auto& type2 = ent2->second.symbol->getType(); + if (hadError == false && base->getType().getBasicType() == EbtBlock) { + hadError = hadError || typeCheck(&type1, &type2, name.c_str(), true); + } + else { + hadError = hadError || typeCheck(&type1, &type2, name.c_str(), false); + } + } + else if (base->getBasicType() == EbtBlock) + { + if (IsAnonymous(base->getName())) + { + // The name of anonymous block member can't same with default uniform variable. + auto blockType1 = base->getType().getStruct(); + for (size_t memberIdx = 0; memberIdx < blockType1->size(); ++memberIdx) { + auto memberName = (*blockType1)[memberIdx].type->getFieldName(); + if (uniformVarMap[i]->find(memberName) != uniformVarMap[i]->end()) + { + TString err = "Invalid Uniform variable name : " + memberName; + infoSink.info.message(EPrefixInternalError, err.c_str()); + hadError = true; + break; + } + } + } } } } } } + TVarLiveMap *inVarMaps[EShLangCount], *outVarMaps[EShLangCount], *uniformVarMap[EShLangCount]; // Use for mark pre stage, to get more interface symbol information. EShLanguage preStage, currentStage, nextStage; @@ -412,9 +614,118 @@ struct TSymbolValidater TIoMapResolver& resolver; TInfoSink& infoSink; bool& hadError; + EProfile profile; + int version; private: TSymbolValidater& operator=(TSymbolValidater&) = delete; + + bool qualifierCheck(const TType* const type1, const TType* const type2, const std::string& name, bool isBlock) + { + bool hasError = false; + const TQualifier& qualifier1 = type1->getQualifier(); + const TQualifier& qualifier2 = type2->getQualifier(); + + if (isBlock == false && + (type1->getQualifier().storage == EvqUniform && type2->getQualifier().storage == EvqUniform) || + (type1->getQualifier().storage == EvqGlobal && type2->getQualifier().storage == EvqGlobal)) { + if (qualifier1.precision != qualifier2.precision) { + hasError = true; + std::string errorStr = name + ": have precision conflict cross stage."; + infoSink.info.message(EPrefixError, errorStr.c_str()); + } + if (qualifier1.hasFormat() && qualifier2.hasFormat()) { + if (qualifier1.layoutFormat != qualifier2.layoutFormat) { + hasError = true; + std::string errorStr = name + ": have layout format conflict cross stage."; + infoSink.info.message(EPrefixError, errorStr.c_str()); + } + + } + } + + if (isBlock == true) { + if (qualifier1.layoutPacking != qualifier2.layoutPacking) { + hasError = true; + std::string errorStr = name + ": have layoutPacking conflict cross stage."; + infoSink.info.message(EPrefixError, errorStr.c_str()); + } + if (qualifier1.layoutMatrix != qualifier2.layoutMatrix) { + hasError = true; + std::string errorStr = name + ": have layoutMatrix conflict cross stage."; + infoSink.info.message(EPrefixError, errorStr.c_str()); + } + if (qualifier1.layoutOffset != qualifier2.layoutOffset) { + hasError = true; + std::string errorStr = name + ": have layoutOffset conflict cross stage."; + infoSink.info.message(EPrefixError, errorStr.c_str()); + } + if (qualifier1.layoutAlign != qualifier2.layoutAlign) { + hasError = true; + std::string errorStr = name + ": have layoutAlign conflict cross stage."; + infoSink.info.message(EPrefixError, errorStr.c_str()); + } + } + + return hasError; + } + + bool typeCheck(const TType* const type1, const TType* const type2, const std::string& name, bool isBlock) + { + bool hasError = false; + if (!(type1->isStruct() && type2->isStruct())) { + hasError = hasError || qualifierCheck(type1, type2, name, isBlock); + } + else { + if (type1->getBasicType() == EbtBlock && type2->getBasicType() == EbtBlock) + isBlock = true; + const TTypeList* typeList1 = type1->getStruct(); + const TTypeList* typeList2 = type2->getStruct(); + + std::string newName = name; + size_t memberCount = typeList1->size(); + size_t index2 = 0; + for (size_t index = 0; index < memberCount; index++, index2++) { + // Skip inactive member + if (typeList1->at(index).type->getBasicType() == EbtVoid) + continue; + while (index2 < typeList2->size() && typeList2->at(index2).type->getBasicType() == EbtVoid) { + ++index2; + } + + // TypeList1 has more members in list + if (index2 == typeList2->size()) { + std::string errorStr = name + ": struct mismatch."; + infoSink.info.message(EPrefixError, errorStr.c_str()); + hasError = true; + break; + } + + if (typeList1->at(index).type->getFieldName() != typeList2->at(index2).type->getFieldName()) { + std::string errorStr = name + ": member name mismatch."; + infoSink.info.message(EPrefixError, errorStr.c_str()); + hasError = true; + } + else { + newName = typeList1->at(index).type->getFieldName().c_str(); + } + hasError = hasError || typeCheck(typeList1->at(index).type, typeList2->at(index2).type, newName, isBlock); + } + + while (index2 < typeList2->size()) + { + // TypeList2 has more members + if (typeList2->at(index2).type->getBasicType() != EbtVoid) { + std::string errorStr = name + ": struct mismatch."; + infoSink.info.message(EPrefixError, errorStr.c_str()); + hasError = true; + break; + } + ++index2; + } + } + return hasError; + } }; struct TSlotCollector { @@ -500,7 +811,7 @@ int TDefaultIoResolverBase::resolveSet(EShLanguage /*stage*/, TVarEntryInfo& ent int TDefaultIoResolverBase::resolveUniformLocation(EShLanguage /*stage*/, TVarEntryInfo& ent) { const TType& type = ent.symbol->getType(); - const char* name = ent.symbol->getName().c_str(); + const char* name = ent.symbol->getAccessName().c_str(); // kick out of not doing this if (! doAutoLocationMapping()) { return ent.newLocation = -1; @@ -609,7 +920,7 @@ TDefaultGlslIoResolver::TDefaultGlslIoResolver(const TIntermediate& intermediate int TDefaultGlslIoResolver::resolveInOutLocation(EShLanguage stage, TVarEntryInfo& ent) { const TType& type = ent.symbol->getType(); - const TString& name = getAccessName(ent.symbol); + const TString& name = ent.symbol->getAccessName(); if (currentStage != stage) { preStage = currentStage; currentStage = stage; @@ -693,7 +1004,7 @@ int TDefaultGlslIoResolver::resolveInOutLocation(EShLanguage stage, TVarEntryInf int TDefaultGlslIoResolver::resolveUniformLocation(EShLanguage /*stage*/, TVarEntryInfo& ent) { const TType& type = ent.symbol->getType(); - const TString& name = getAccessName(ent.symbol); + const TString& name = ent.symbol->getAccessName(); // kick out of not doing this if (! doAutoLocationMapping()) { return ent.newLocation = -1; @@ -764,7 +1075,7 @@ int TDefaultGlslIoResolver::resolveUniformLocation(EShLanguage /*stage*/, TVarEn int TDefaultGlslIoResolver::resolveBinding(EShLanguage /*stage*/, TVarEntryInfo& ent) { const TType& type = ent.symbol->getType(); - const TString& name = getAccessName(ent.symbol); + const TString& name = ent.symbol->getAccessName(); // On OpenGL arrays of opaque types take a separate binding for each element int numBindings = intermediate.getSpv().openGl != 0 && type.isSizedArray() ? type.getCumulativeArraySize() : 1; TResourceType resource = getResourceType(type); @@ -839,7 +1150,7 @@ void TDefaultGlslIoResolver::endCollect(EShLanguage /*stage*/) { void TDefaultGlslIoResolver::reserverStorageSlot(TVarEntryInfo& ent, TInfoSink& infoSink) { const TType& type = ent.symbol->getType(); - const TString& name = getAccessName(ent.symbol); + const TString& name = ent.symbol->getAccessName(); TStorageQualifier storage = type.getQualifier().storage; EShLanguage stage(EShLangCount); switch (storage) { @@ -899,7 +1210,7 @@ void TDefaultGlslIoResolver::reserverStorageSlot(TVarEntryInfo& ent, TInfoSink& void TDefaultGlslIoResolver::reserverResourceSlot(TVarEntryInfo& ent, TInfoSink& infoSink) { const TType& type = ent.symbol->getType(); - const TString& name = getAccessName(ent.symbol); + const TString& name = ent.symbol->getAccessName(); int resource = getResourceType(type); if (type.getQualifier().hasBinding()) { TVarSlotMap& varSlotMap = resourceSlotMap[resource]; @@ -922,13 +1233,6 @@ void TDefaultGlslIoResolver::reserverResourceSlot(TVarEntryInfo& ent, TInfoSink& } } -const TString& TDefaultGlslIoResolver::getAccessName(const TIntermSymbol* symbol) -{ - return symbol->getBasicType() == EbtBlock ? - symbol->getType().getTypeName() : - symbol->getName(); -} - //TDefaultGlslIoResolver end /* @@ -1117,25 +1421,23 @@ bool TIoMapper::addStage(EShLanguage stage, TIntermediate& intermediate, TInfoSi } // sort entries by priority. see TVarEntryInfo::TOrderByPriority for info. - std::for_each(inVarMap.begin(), inVarMap.end(), - [&inVector](TVarLivePair p) { inVector.push_back(p); }); + for (auto& var : inVarMap) { inVector.push_back(var); } std::sort(inVector.begin(), inVector.end(), [](const TVarLivePair& p1, const TVarLivePair& p2) -> bool { return TVarEntryInfo::TOrderByPriority()(p1.second, p2.second); }); - std::for_each(outVarMap.begin(), outVarMap.end(), - [&outVector](TVarLivePair p) { outVector.push_back(p); }); + for (auto& var : outVarMap) { outVector.push_back(var); } std::sort(outVector.begin(), outVector.end(), [](const TVarLivePair& p1, const TVarLivePair& p2) -> bool { return TVarEntryInfo::TOrderByPriority()(p1.second, p2.second); }); - std::for_each(uniformVarMap.begin(), uniformVarMap.end(), - [&uniformVector](TVarLivePair p) { uniformVector.push_back(p); }); + for (auto& var : uniformVarMap) { uniformVector.push_back(var); } std::sort(uniformVector.begin(), uniformVector.end(), [](const TVarLivePair& p1, const TVarLivePair& p2) -> bool { return TVarEntryInfo::TOrderByPriority()(p1.second, p2.second); }); bool hadError = false; + TVarLiveMap* dummyUniformVarMap[EShLangCount] = {}; TNotifyInOutAdaptor inOutNotify(stage, *resolver); TNotifyUniformAdaptor uniformNotify(stage, *resolver); - TResolverUniformAdaptor uniformResolve(stage, *resolver, infoSink, hadError); + TResolverUniformAdaptor uniformResolve(stage, *resolver, dummyUniformVarMap, infoSink, hadError); TResolverInOutAdaptor inOutResolve(stage, *resolver, infoSink, hadError); resolver->beginNotifications(stage); std::for_each(inVector.begin(), inVector.end(), inOutNotify); @@ -1143,22 +1445,22 @@ bool TIoMapper::addStage(EShLanguage stage, TIntermediate& intermediate, TInfoSi std::for_each(uniformVector.begin(), uniformVector.end(), uniformNotify); resolver->endNotifications(stage); resolver->beginResolve(stage); - std::for_each(inVector.begin(), inVector.end(), inOutResolve); + for (auto& var : inVector) { inOutResolve(var); } std::for_each(inVector.begin(), inVector.end(), [&inVarMap](TVarLivePair p) { - auto at = inVarMap.find(p.second.symbol->getName()); - if (at != inVarMap.end()) + auto at = inVarMap.find(p.second.symbol->getAccessName()); + if (at != inVarMap.end() && p.second.id == at->second.id) at->second = p.second; }); - std::for_each(outVector.begin(), outVector.end(), inOutResolve); + for (auto& var : outVector) { inOutResolve(var); } std::for_each(outVector.begin(), outVector.end(), [&outVarMap](TVarLivePair p) { - auto at = outVarMap.find(p.second.symbol->getName()); - if (at != outVarMap.end()) + auto at = outVarMap.find(p.second.symbol->getAccessName()); + if (at != outVarMap.end() && p.second.id == at->second.id) at->second = p.second; }); std::for_each(uniformVector.begin(), uniformVector.end(), uniformResolve); std::for_each(uniformVector.begin(), uniformVector.end(), [&uniformVarMap](TVarLivePair p) { - auto at = uniformVarMap.find(p.second.symbol->getName()); - if (at != uniformVarMap.end()) + auto at = uniformVarMap.find(p.second.symbol->getAccessName()); + if (at != uniformVarMap.end() && p.second.id == at->second.id) at->second = p.second; }); resolver->endResolve(stage); @@ -1174,9 +1476,14 @@ bool TIoMapper::addStage(EShLanguage stage, TIntermediate& intermediate, TInfoSi // // Returns false if the input is too malformed to do this. bool TGlslIoMapper::addStage(EShLanguage stage, TIntermediate& intermediate, TInfoSink& infoSink, TIoMapResolver* resolver) { + bool somethingToDo = !intermediate.getResourceSetBinding().empty() || + intermediate.getAutoMapBindings() || + intermediate.getAutoMapLocations(); + + // Profile and version are use for symbol validate. + profile = intermediate.getProfile(); + version = intermediate.getVersion(); - bool somethingToDo = ! intermediate.getResourceSetBinding().empty() || intermediate.getAutoMapBindings() || - intermediate.getAutoMapLocations(); // Restrict the stricter condition to further check 'somethingToDo' only if 'somethingToDo' has not been set, reduce // unnecessary or insignificant for-loop operation after 'somethingToDo' have been true. for (int res = 0; (res < EResCount && !somethingToDo); ++res) { @@ -1236,31 +1543,30 @@ bool TGlslIoMapper::doMap(TIoMapResolver* resolver, TInfoSink& infoSink) { resolver->endResolve(EShLangCount); if (!hadError) { //Resolve uniform location, ubo/ssbo/opaque bindings across stages - TResolverUniformAdaptor uniformResolve(EShLangCount, *resolver, infoSink, hadError); + TResolverUniformAdaptor uniformResolve(EShLangCount, *resolver, uniformVarMap, infoSink, hadError); TResolverInOutAdaptor inOutResolve(EShLangCount, *resolver, infoSink, hadError); - TSymbolValidater symbolValidater(*resolver, infoSink, inVarMaps, outVarMaps, uniformVarMap, hadError); + TSymbolValidater symbolValidater(*resolver, infoSink, inVarMaps, + outVarMaps, uniformVarMap, hadError, profile, version); TVarLiveVector uniformVector; resolver->beginResolve(EShLangCount); for (int stage = EShLangVertex; stage < EShLangCount; stage++) { if (inVarMaps[stage] != nullptr) { inOutResolve.setStage(EShLanguage(stage)); - std::for_each(inVarMaps[stage]->begin(), inVarMaps[stage]->end(), symbolValidater); - std::for_each(inVarMaps[stage]->begin(), inVarMaps[stage]->end(), inOutResolve); - std::for_each(outVarMaps[stage]->begin(), outVarMaps[stage]->end(), symbolValidater); - std::for_each(outVarMaps[stage]->begin(), outVarMaps[stage]->end(), inOutResolve); + for (auto& var : *(inVarMaps[stage])) { symbolValidater(var); } + for (auto& var : *(inVarMaps[stage])) { inOutResolve(var); } + for (auto& var : *(outVarMaps[stage])) { symbolValidater(var); } + for (auto& var : *(outVarMaps[stage])) { inOutResolve(var); } } if (uniformVarMap[stage] != nullptr) { uniformResolve.setStage(EShLanguage(stage)); - // sort entries by priority. see TVarEntryInfo::TOrderByPriority for info. - std::for_each(uniformVarMap[stage]->begin(), uniformVarMap[stage]->end(), - [&uniformVector](TVarLivePair p) { uniformVector.push_back(p); }); + for (auto& var : *(uniformVarMap[stage])) { uniformVector.push_back(var); } } } std::sort(uniformVector.begin(), uniformVector.end(), [](const TVarLivePair& p1, const TVarLivePair& p2) -> bool { return TVarEntryInfo::TOrderByPriority()(p1.second, p2.second); }); - std::for_each(uniformVector.begin(), uniformVector.end(), symbolValidater); - std::for_each(uniformVector.begin(), uniformVector.end(), uniformResolve); + for (auto& var : uniformVector) { symbolValidater(var); } + for (auto& var : uniformVector) { uniformResolve(var); } std::sort(uniformVector.begin(), uniformVector.end(), [](const TVarLivePair& p1, const TVarLivePair& p2) -> bool { return TVarEntryInfo::TOrderByPriority()(p1.second, p2.second); }); @@ -1269,14 +1575,18 @@ bool TGlslIoMapper::doMap(TIoMapResolver* resolver, TInfoSink& infoSink) { if (intermediates[stage] != nullptr) { // traverse each stage, set new location to each input/output and unifom symbol, set new binding to // ubo, ssbo and opaque symbols - TVarLiveMap** pUniformVarMap = uniformVarMap; + TVarLiveMap** pUniformVarMap = uniformResolve.uniformVarMap; std::for_each(uniformVector.begin(), uniformVector.end(), [pUniformVarMap, stage](TVarLivePair p) { - auto at = pUniformVarMap[stage]->find(p.second.symbol->getName()); - if (at != pUniformVarMap[stage]->end()) + auto at = pUniformVarMap[stage]->find(p.second.symbol->getAccessName()); + if (at != pUniformVarMap[stage]->end() && at->second.id == p.second.id){ + int resolvedBinding = at->second.newBinding; at->second = p.second; + if (resolvedBinding > 0) + at->second.newBinding = resolvedBinding; + } }); TVarSetTraverser iter_iomap(*intermediates[stage], *inVarMaps[stage], *outVarMaps[stage], - *uniformVarMap[stage]); + *uniformResolve.uniformVarMap[stage]); intermediates[stage]->getTreeRoot()->traverse(&iter_iomap); } } diff --git a/glslang/MachineIndependent/iomapper.h b/glslang/MachineIndependent/iomapper.h index 67413278..7934c4a9 100644 --- a/glslang/MachineIndependent/iomapper.h +++ b/glslang/MachineIndependent/iomapper.h @@ -203,7 +203,6 @@ public: void endCollect(EShLanguage) override; void reserverStorageSlot(TVarEntryInfo& ent, TInfoSink& infoSink) override; void reserverResourceSlot(TVarEntryInfo& ent, TInfoSink& infoSink) override; - const TString& getAccessName(const TIntermSymbol*); // in/out symbol and uniform symbol are stored in the same resourceSlotMap, the storage key is used to identify each type of symbol. // We use stage and storage qualifier to construct a storage key. it can help us identify the same storage resource used in different stage. // if a resource is a program resource and we don't need know it usage stage, we can use same stage to build storage key. @@ -263,10 +262,12 @@ public: class TGlslIoMapper : public TIoMapper { public: TGlslIoMapper() { - memset(inVarMaps, 0, sizeof(TVarLiveMap*) * EShLangCount); - memset(outVarMaps, 0, sizeof(TVarLiveMap*) * EShLangCount); - memset(uniformVarMap, 0, sizeof(TVarLiveMap*) * EShLangCount); - memset(intermediates, 0, sizeof(TIntermediate*) * EShLangCount); + memset(inVarMaps, 0, sizeof(TVarLiveMap*) * (EShLangCount + 1)); + memset(outVarMaps, 0, sizeof(TVarLiveMap*) * (EShLangCount + 1)); + memset(uniformVarMap, 0, sizeof(TVarLiveMap*) * (EShLangCount + 1)); + memset(intermediates, 0, sizeof(TIntermediate*) * (EShLangCount + 1)); + profile = ENoProfile; + version = 0; } virtual ~TGlslIoMapper() { for (size_t stage = 0; stage < EShLangCount; stage++) { @@ -293,6 +294,8 @@ public: *uniformVarMap[EShLangCount]; TIntermediate* intermediates[EShLangCount]; bool hadError = false; + EProfile profile; + int version; }; } // end namespace glslang diff --git a/glslang/MachineIndependent/reflection.cpp b/glslang/MachineIndependent/reflection.cpp index 0aabf37f..72950029 100644 --- a/glslang/MachineIndependent/reflection.cpp +++ b/glslang/MachineIndependent/reflection.cpp @@ -658,14 +658,17 @@ public: blocks.back().numMembers = countAggregateMembers(type); - EShLanguageMask& stages = blocks.back().stages; - stages = static_cast(stages | 1 << intermediate.getStage()); + if (updateStageMasks) { + EShLanguageMask& stages = blocks.back().stages; + stages = static_cast(stages | 1 << intermediate.getStage()); + } } else { blockIndex = it->second; - - EShLanguageMask& stages = blocks[blockIndex].stages; - stages = static_cast(stages | 1 << intermediate.getStage()); + if (updateStageMasks) { + EShLanguageMask& stages = blocks[blockIndex].stages; + stages = static_cast(stages | 1 << intermediate.getStage()); + } } } From 8c1a3a06b86039cb41fa9b090ece846d31e6edc5 Mon Sep 17 00:00:00 2001 From: Tobski Date: Wed, 4 Nov 2020 16:24:23 +0000 Subject: [PATCH 37/57] Add GL_EXT_shader_image_int64 support (#2409) --- SPIRV/GLSL.ext.EXT.h | 1 + SPIRV/GlslangToSpv.cpp | 12 + SPIRV/doc.cpp | 3 + Test/baseResults/spv.imageAtomic64.frag.out | 634 ++ .../spv.imageLoadStoreLod.frag.out | 111 +- Test/spv.imageAtomic64.frag | 92 + Test/spv.imageLoadStoreLod.frag | 26 + glslang/Include/Types.h | 4 + glslang/MachineIndependent/Initialize.cpp | 54 +- glslang/MachineIndependent/ParseHelper.cpp | 10 +- glslang/MachineIndependent/Scan.cpp | 84 + glslang/MachineIndependent/SymbolTable.cpp | 2 + glslang/MachineIndependent/Versions.cpp | 2 + glslang/MachineIndependent/Versions.h | 1 + glslang/MachineIndependent/glslang.m4 | 122 + glslang/MachineIndependent/glslang.y | 122 + glslang/MachineIndependent/glslang_tab.cpp | 7411 +++++++++-------- glslang/MachineIndependent/glslang_tab.cpp.h | 354 +- gtests/Spv.FromFile.cpp | 1 + 19 files changed, 5349 insertions(+), 3697 deletions(-) create mode 100644 Test/baseResults/spv.imageAtomic64.frag.out create mode 100644 Test/spv.imageAtomic64.frag diff --git a/SPIRV/GLSL.ext.EXT.h b/SPIRV/GLSL.ext.EXT.h index 6eb0eeea..20b9e540 100644 --- a/SPIRV/GLSL.ext.EXT.h +++ b/SPIRV/GLSL.ext.EXT.h @@ -36,5 +36,6 @@ static const char* const E_SPV_EXT_fragment_fully_covered = "SPV_EXT_fragment_fu static const char* const E_SPV_EXT_fragment_invocation_density = "SPV_EXT_fragment_invocation_density"; static const char* const E_SPV_EXT_demote_to_helper_invocation = "SPV_EXT_demote_to_helper_invocation"; static const char* const E_SPV_EXT_shader_atomic_float_add = "SPV_EXT_shader_atomic_float_add"; +static const char* const E_SPV_EXT_shader_image_int64 = "SPV_EXT_shader_image_int64"; #endif // #ifndef GLSLextEXT_H diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 7fc5c1ea..ddc63783 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -1088,6 +1088,10 @@ spv::ImageFormat TGlslangToSpvTraverser::TranslateImageFormat(const glslang::TTy builder.addCapability(spv::CapabilityStorageImageExtendedFormats); break; + case glslang::ElfR64ui: + case glslang::ElfR64i: + builder.addExtension(spv::E_SPV_EXT_shader_image_int64); + builder.addCapability(spv::CapabilityInt64ImageEXT); default: break; } @@ -1134,6 +1138,8 @@ spv::ImageFormat TGlslangToSpvTraverser::TranslateImageFormat(const glslang::TTy case glslang::ElfRg8ui: return spv::ImageFormatRg8ui; case glslang::ElfR16ui: return spv::ImageFormatR16ui; case glslang::ElfR8ui: return spv::ImageFormatR8ui; + case glslang::ElfR64ui: return spv::ImageFormatR64ui; + case glslang::ElfR64i: return spv::ImageFormatR64i; default: return spv::ImageFormatMax; } } @@ -3594,6 +3600,12 @@ spv::Id TGlslangToSpvTraverser::getSampledType(const glslang::TSampler& sampler) builder.addExtension(spv::E_SPV_AMD_gpu_shader_half_float_fetch); builder.addCapability(spv::CapabilityFloat16ImageAMD); return builder.makeFloatType(16); + case glslang::EbtInt64: return builder.makeIntType(64); + builder.addExtension(spv::E_SPV_EXT_shader_image_int64); + builder.addCapability(spv::CapabilityFloat16ImageAMD); + case glslang::EbtUint64: return builder.makeUintType(64); + builder.addExtension(spv::E_SPV_EXT_shader_image_int64); + builder.addCapability(spv::CapabilityFloat16ImageAMD); #endif default: assert(0); diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index b1d7eb70..09e035ae 100644 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -523,6 +523,8 @@ const char* ImageFormatString(int format) case 37: return "Rg8ui"; case 38: return "R16ui"; case 39: return "R8ui"; + case 40: return "R64ui"; + case 41: return "R64i"; default: return "Bad"; @@ -958,6 +960,7 @@ const char* CapabilityString(int info) case CapabilityDemoteToHelperInvocationEXT: return "DemoteToHelperInvocationEXT"; case CapabilityShaderClockKHR: return "ShaderClockKHR"; + case CapabilityInt64ImageEXT: return "Int64ImageEXT"; case CapabilityIntegerFunctions2INTEL: return "CapabilityIntegerFunctions2INTEL"; diff --git a/Test/baseResults/spv.imageAtomic64.frag.out b/Test/baseResults/spv.imageAtomic64.frag.out new file mode 100644 index 00000000..30836978 --- /dev/null +++ b/Test/baseResults/spv.imageAtomic64.frag.out @@ -0,0 +1,634 @@ +spv.imageAtomic64.frag +Validation failed +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 503 + + Capability Shader + Capability Int64 + Capability Int64Atomics + Capability StorageImageMultisample + Capability ImageCubeArray + Capability ImageRect + Capability SparseResidency + Capability Image1D + Capability ImageBuffer + Capability ImageMSArray + Capability Int64ImageEXT + Extension "SPV_EXT_shader_image_int64" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginUpperLeft + Source GLSL 450 + SourceExtension "GL_ARB_gpu_shader_int64" + SourceExtension "GL_ARB_sparse_texture2" + SourceExtension "GL_EXT_shader_image_int64" + SourceExtension "GL_KHR_memory_scope_semantics" + Name 4 "main" + Name 12 "Buf" + MemberName 12(Buf) 0 "i64" + MemberName 12(Buf) 1 "u64" + MemberName 12(Buf) 2 "i64v4" + MemberName 12(Buf) 3 "u64v4" + MemberName 12(Buf) 4 "i32v4" + Name 14 "" + Name 18 "i1D" + Name 35 "i3D" + Name 48 "iBuf" + Name 58 "i2DArray" + Name 69 "i2DRect" + Name 81 "i2DMSArray" + Name 194 "u2D" + Name 207 "uCube" + Name 218 "u1DArray" + Name 229 "uCubeArray" + Name 240 "u2DMS" + Name 458 "ResType" + Name 483 "ResType" + MemberDecorate 12(Buf) 0 Offset 0 + MemberDecorate 12(Buf) 1 Offset 8 + MemberDecorate 12(Buf) 2 Offset 32 + MemberDecorate 12(Buf) 3 Offset 64 + MemberDecorate 12(Buf) 4 Offset 96 + Decorate 12(Buf) BufferBlock + Decorate 14 DescriptorSet 0 + Decorate 14 Binding 11 + Decorate 18(i1D) DescriptorSet 0 + Decorate 18(i1D) Binding 0 + Decorate 35(i3D) DescriptorSet 0 + Decorate 35(i3D) Binding 2 + Decorate 48(iBuf) DescriptorSet 0 + Decorate 48(iBuf) Binding 4 + Decorate 58(i2DArray) DescriptorSet 0 + Decorate 58(i2DArray) Binding 6 + Decorate 69(i2DRect) DescriptorSet 0 + Decorate 69(i2DRect) Binding 8 + Decorate 81(i2DMSArray) DescriptorSet 0 + Decorate 81(i2DMSArray) Binding 10 + Decorate 194(u2D) DescriptorSet 0 + Decorate 194(u2D) Binding 1 + Decorate 207(uCube) DescriptorSet 0 + Decorate 207(uCube) Binding 3 + Decorate 218(u1DArray) DescriptorSet 0 + Decorate 218(u1DArray) Binding 5 + Decorate 229(uCubeArray) DescriptorSet 0 + Decorate 229(uCubeArray) Binding 7 + Decorate 240(u2DMS) DescriptorSet 0 + Decorate 240(u2DMS) Binding 9 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 64 1 + 7: TypeInt 64 0 + 8: TypeVector 6(int64_t) 4 + 9: TypeVector 7(int64_t) 4 + 10: TypeInt 32 1 + 11: TypeVector 10(int) 4 + 12(Buf): TypeStruct 6(int64_t) 7(int64_t) 8(i64vec4) 9(i64vec4) 11(ivec4) + 13: TypePointer Uniform 12(Buf) + 14: 13(ptr) Variable Uniform + 15: 10(int) Constant 0 + 16: TypeImage 6(int64_t) 1D nonsampled format:R64i + 17: TypePointer UniformConstant 16 + 18(i1D): 17(ptr) Variable UniformConstant + 19: 10(int) Constant 4 + 20: TypeInt 32 0 + 21: 20(int) Constant 0 + 22: TypePointer Uniform 10(int) + 25: TypePointer Uniform 6(int64_t) + 28: TypePointer Image 6(int64_t) + 30: 20(int) Constant 1 + 33: TypeImage 6(int64_t) 3D nonsampled format:R64i + 34: TypePointer UniformConstant 33 + 35(i3D): 34(ptr) Variable UniformConstant + 36: TypeVector 10(int) 3 + 37: TypePointer Uniform 11(ivec4) + 46: TypeImage 6(int64_t) Buffer nonsampled format:R64i + 47: TypePointer UniformConstant 46 + 48(iBuf): 47(ptr) Variable UniformConstant + 56: TypeImage 6(int64_t) 2D array nonsampled format:R64i + 57: TypePointer UniformConstant 56 + 58(i2DArray): 57(ptr) Variable UniformConstant + 67: TypeImage 6(int64_t) Rect nonsampled format:R64i + 68: TypePointer UniformConstant 67 + 69(i2DRect): 68(ptr) Variable UniformConstant + 70: TypeVector 10(int) 2 + 79: TypeImage 6(int64_t) 2D array multi-sampled nonsampled format:R64i + 80: TypePointer UniformConstant 79 + 81(i2DMSArray): 80(ptr) Variable UniformConstant + 85: 20(int) Constant 3 + 107: 6(int64_t) Constant 1 0 + 116: 10(int) Constant 1 + 117: 10(int) Constant 2048 + 119: 20(int) Constant 2048 + 192: TypeImage 7(int64_t) 2D nonsampled format:R64ui + 193: TypePointer UniformConstant 192 + 194(u2D): 193(ptr) Variable UniformConstant + 198: TypePointer Uniform 7(int64_t) + 201: TypePointer Image 7(int64_t) + 205: TypeImage 7(int64_t) Cube nonsampled format:R64ui + 206: TypePointer UniformConstant 205 + 207(uCube): 206(ptr) Variable UniformConstant + 216: TypeImage 7(int64_t) 1D array nonsampled format:R64ui + 217: TypePointer UniformConstant 216 + 218(u1DArray): 217(ptr) Variable UniformConstant + 227: TypeImage 7(int64_t) Cube array nonsampled format:R64ui + 228: TypePointer UniformConstant 227 + 229(uCubeArray): 228(ptr) Variable UniformConstant + 238: TypeImage 7(int64_t) 2D multi-sampled nonsampled format:R64ui + 239: TypePointer UniformConstant 238 + 240(u2DMS): 239(ptr) Variable UniformConstant + 244: 20(int) Constant 2 + 275: 7(int64_t) Constant 1 0 + 363: 10(int) Constant 2 + 368: TypePointer Uniform 8(i64vec4) + 423: 10(int) Constant 3 + 424: TypePointer Uniform 9(i64vec4) + 458(ResType): TypeStruct 10(int) 8(i64vec4) + 483(ResType): TypeStruct 10(int) 9(i64vec4) + 4(main): 2 Function None 3 + 5: Label + 23: 22(ptr) AccessChain 14 19 21 + 24: 10(int) Load 23 + 26: 25(ptr) AccessChain 14 15 + 27: 6(int64_t) Load 26 + 29: 28(ptr) ImageTexelPointer 18(i1D) 24 21 + 31: 6(int64_t) AtomicIAdd 29 30 21 27 + 32: 25(ptr) AccessChain 14 15 + Store 32 31 + 38: 37(ptr) AccessChain 14 19 + 39: 11(ivec4) Load 38 + 40: 36(ivec3) VectorShuffle 39 39 0 1 2 + 41: 25(ptr) AccessChain 14 15 + 42: 6(int64_t) Load 41 + 43: 28(ptr) ImageTexelPointer 35(i3D) 40 21 + 44: 6(int64_t) AtomicSMin 43 30 21 42 + 45: 25(ptr) AccessChain 14 15 + Store 45 44 + 49: 22(ptr) AccessChain 14 19 21 + 50: 10(int) Load 49 + 51: 25(ptr) AccessChain 14 15 + 52: 6(int64_t) Load 51 + 53: 28(ptr) ImageTexelPointer 48(iBuf) 50 21 + 54: 6(int64_t) AtomicSMax 53 30 21 52 + 55: 25(ptr) AccessChain 14 15 + Store 55 54 + 59: 37(ptr) AccessChain 14 19 + 60: 11(ivec4) Load 59 + 61: 36(ivec3) VectorShuffle 60 60 0 1 2 + 62: 25(ptr) AccessChain 14 15 + 63: 6(int64_t) Load 62 + 64: 28(ptr) ImageTexelPointer 58(i2DArray) 61 21 + 65: 6(int64_t) AtomicAnd 64 30 21 63 + 66: 25(ptr) AccessChain 14 15 + Store 66 65 + 71: 37(ptr) AccessChain 14 19 + 72: 11(ivec4) Load 71 + 73: 70(ivec2) VectorShuffle 72 72 0 1 + 74: 25(ptr) AccessChain 14 15 + 75: 6(int64_t) Load 74 + 76: 28(ptr) ImageTexelPointer 69(i2DRect) 73 21 + 77: 6(int64_t) AtomicOr 76 30 21 75 + 78: 25(ptr) AccessChain 14 15 + Store 78 77 + 82: 37(ptr) AccessChain 14 19 + 83: 11(ivec4) Load 82 + 84: 36(ivec3) VectorShuffle 83 83 0 1 2 + 86: 22(ptr) AccessChain 14 19 85 + 87: 10(int) Load 86 + 88: 25(ptr) AccessChain 14 15 + 89: 6(int64_t) Load 88 + 90: 28(ptr) ImageTexelPointer 81(i2DMSArray) 84 87 + 91: 6(int64_t) AtomicXor 90 30 21 89 + 92: 25(ptr) AccessChain 14 15 + Store 92 91 + 93: 22(ptr) AccessChain 14 19 21 + 94: 10(int) Load 93 + 95: 25(ptr) AccessChain 14 15 + 96: 6(int64_t) Load 95 + 97: 28(ptr) ImageTexelPointer 18(i1D) 94 21 + 98: 6(int64_t) AtomicExchange 97 30 21 96 + 99: 25(ptr) AccessChain 14 15 + Store 99 98 + 100: 37(ptr) AccessChain 14 19 + 101: 11(ivec4) Load 100 + 102: 36(ivec3) VectorShuffle 101 101 0 1 2 + 103: 25(ptr) AccessChain 14 15 + 104: 6(int64_t) Load 103 + 105: 25(ptr) AccessChain 14 15 + 106: 6(int64_t) Load 105 + 108: 6(int64_t) IAdd 106 107 + 109: 28(ptr) ImageTexelPointer 35(i3D) 102 21 + 110: 6(int64_t) AtomicCompareExchange 109 30 21 21 108 104 + 111: 25(ptr) AccessChain 14 15 + Store 111 110 + 112: 22(ptr) AccessChain 14 19 21 + 113: 10(int) Load 112 + 114: 25(ptr) AccessChain 14 15 + 115: 6(int64_t) Load 114 + 118: 28(ptr) ImageTexelPointer 18(i1D) 113 21 + 120: 6(int64_t) AtomicIAdd 118 116 119 115 + 121: 25(ptr) AccessChain 14 15 + Store 121 120 + 122: 37(ptr) AccessChain 14 19 + 123: 11(ivec4) Load 122 + 124: 36(ivec3) VectorShuffle 123 123 0 1 2 + 125: 25(ptr) AccessChain 14 15 + 126: 6(int64_t) Load 125 + 127: 28(ptr) ImageTexelPointer 35(i3D) 124 21 + 128: 6(int64_t) AtomicSMin 127 116 119 126 + 129: 25(ptr) AccessChain 14 15 + Store 129 128 + 130: 22(ptr) AccessChain 14 19 21 + 131: 10(int) Load 130 + 132: 25(ptr) AccessChain 14 15 + 133: 6(int64_t) Load 132 + 134: 28(ptr) ImageTexelPointer 48(iBuf) 131 21 + 135: 6(int64_t) AtomicSMax 134 116 119 133 + 136: 25(ptr) AccessChain 14 15 + Store 136 135 + 137: 37(ptr) AccessChain 14 19 + 138: 11(ivec4) Load 137 + 139: 36(ivec3) VectorShuffle 138 138 0 1 2 + 140: 25(ptr) AccessChain 14 15 + 141: 6(int64_t) Load 140 + 142: 28(ptr) ImageTexelPointer 58(i2DArray) 139 21 + 143: 6(int64_t) AtomicAnd 142 116 119 141 + 144: 25(ptr) AccessChain 14 15 + Store 144 143 + 145: 37(ptr) AccessChain 14 19 + 146: 11(ivec4) Load 145 + 147: 70(ivec2) VectorShuffle 146 146 0 1 + 148: 25(ptr) AccessChain 14 15 + 149: 6(int64_t) Load 148 + 150: 28(ptr) ImageTexelPointer 69(i2DRect) 147 21 + 151: 6(int64_t) AtomicOr 150 116 119 149 + 152: 25(ptr) AccessChain 14 15 + Store 152 151 + 153: 37(ptr) AccessChain 14 19 + 154: 11(ivec4) Load 153 + 155: 36(ivec3) VectorShuffle 154 154 0 1 2 + 156: 22(ptr) AccessChain 14 19 85 + 157: 10(int) Load 156 + 158: 25(ptr) AccessChain 14 15 + 159: 6(int64_t) Load 158 + 160: 28(ptr) ImageTexelPointer 81(i2DMSArray) 155 157 + 161: 6(int64_t) AtomicXor 160 116 119 159 + 162: 25(ptr) AccessChain 14 15 + Store 162 161 + 163: 22(ptr) AccessChain 14 19 21 + 164: 10(int) Load 163 + 165: 25(ptr) AccessChain 14 15 + 166: 6(int64_t) Load 165 + 167: 28(ptr) ImageTexelPointer 18(i1D) 164 21 + 168: 6(int64_t) AtomicExchange 167 116 119 166 + 169: 25(ptr) AccessChain 14 15 + Store 169 168 + 170: 37(ptr) AccessChain 14 19 + 171: 11(ivec4) Load 170 + 172: 36(ivec3) VectorShuffle 171 171 0 1 2 + 173: 25(ptr) AccessChain 14 15 + 174: 6(int64_t) Load 173 + 175: 25(ptr) AccessChain 14 15 + 176: 6(int64_t) Load 175 + 177: 6(int64_t) IAdd 176 107 + 178: 28(ptr) ImageTexelPointer 35(i3D) 172 21 + 179: 6(int64_t) AtomicCompareExchange 178 116 119 119 177 174 + 180: 25(ptr) AccessChain 14 15 + Store 180 179 + 181: 22(ptr) AccessChain 14 19 21 + 182: 10(int) Load 181 + 183: 28(ptr) ImageTexelPointer 48(iBuf) 182 21 + 184: 6(int64_t) AtomicLoad 183 116 119 + 185: 25(ptr) AccessChain 14 15 + Store 185 184 + 186: 37(ptr) AccessChain 14 19 + 187: 11(ivec4) Load 186 + 188: 36(ivec3) VectorShuffle 187 187 0 1 2 + 189: 25(ptr) AccessChain 14 15 + 190: 6(int64_t) Load 189 + 191: 28(ptr) ImageTexelPointer 58(i2DArray) 188 21 + AtomicStore 191 116 119 190 + 195: 37(ptr) AccessChain 14 19 + 196: 11(ivec4) Load 195 + 197: 70(ivec2) VectorShuffle 196 196 0 1 + 199: 198(ptr) AccessChain 14 116 + 200: 7(int64_t) Load 199 + 202: 201(ptr) ImageTexelPointer 194(u2D) 197 21 + 203: 7(int64_t) AtomicIAdd 202 30 21 200 + 204: 198(ptr) AccessChain 14 116 + Store 204 203 + 208: 37(ptr) AccessChain 14 19 + 209: 11(ivec4) Load 208 + 210: 36(ivec3) VectorShuffle 209 209 0 1 2 + 211: 198(ptr) AccessChain 14 116 + 212: 7(int64_t) Load 211 + 213: 201(ptr) ImageTexelPointer 207(uCube) 210 21 + 214: 7(int64_t) AtomicUMin 213 30 21 212 + 215: 198(ptr) AccessChain 14 116 + Store 215 214 + 219: 37(ptr) AccessChain 14 19 + 220: 11(ivec4) Load 219 + 221: 70(ivec2) VectorShuffle 220 220 0 1 + 222: 198(ptr) AccessChain 14 116 + 223: 7(int64_t) Load 222 + 224: 201(ptr) ImageTexelPointer 218(u1DArray) 221 21 + 225: 7(int64_t) AtomicUMax 224 30 21 223 + 226: 198(ptr) AccessChain 14 116 + Store 226 225 + 230: 37(ptr) AccessChain 14 19 + 231: 11(ivec4) Load 230 + 232: 36(ivec3) VectorShuffle 231 231 0 1 2 + 233: 198(ptr) AccessChain 14 116 + 234: 7(int64_t) Load 233 + 235: 201(ptr) ImageTexelPointer 229(uCubeArray) 232 21 + 236: 7(int64_t) AtomicAnd 235 30 21 234 + 237: 198(ptr) AccessChain 14 116 + Store 237 236 + 241: 37(ptr) AccessChain 14 19 + 242: 11(ivec4) Load 241 + 243: 70(ivec2) VectorShuffle 242 242 0 1 + 245: 22(ptr) AccessChain 14 19 244 + 246: 10(int) Load 245 + 247: 198(ptr) AccessChain 14 116 + 248: 7(int64_t) Load 247 + 249: 201(ptr) ImageTexelPointer 240(u2DMS) 243 246 + 250: 7(int64_t) AtomicOr 249 30 21 248 + 251: 198(ptr) AccessChain 14 116 + Store 251 250 + 252: 37(ptr) AccessChain 14 19 + 253: 11(ivec4) Load 252 + 254: 70(ivec2) VectorShuffle 253 253 0 1 + 255: 198(ptr) AccessChain 14 116 + 256: 7(int64_t) Load 255 + 257: 201(ptr) ImageTexelPointer 194(u2D) 254 21 + 258: 7(int64_t) AtomicXor 257 30 21 256 + 259: 198(ptr) AccessChain 14 116 + Store 259 258 + 260: 37(ptr) AccessChain 14 19 + 261: 11(ivec4) Load 260 + 262: 36(ivec3) VectorShuffle 261 261 0 1 2 + 263: 198(ptr) AccessChain 14 116 + 264: 7(int64_t) Load 263 + 265: 201(ptr) ImageTexelPointer 207(uCube) 262 21 + 266: 7(int64_t) AtomicExchange 265 30 21 264 + 267: 198(ptr) AccessChain 14 116 + Store 267 266 + 268: 37(ptr) AccessChain 14 19 + 269: 11(ivec4) Load 268 + 270: 70(ivec2) VectorShuffle 269 269 0 1 + 271: 198(ptr) AccessChain 14 116 + 272: 7(int64_t) Load 271 + 273: 198(ptr) AccessChain 14 116 + 274: 7(int64_t) Load 273 + 276: 7(int64_t) IAdd 274 275 + 277: 201(ptr) ImageTexelPointer 218(u1DArray) 270 21 + 278: 7(int64_t) AtomicCompareExchange 277 30 21 21 276 272 + 279: 198(ptr) AccessChain 14 116 + Store 279 278 + 280: 37(ptr) AccessChain 14 19 + 281: 11(ivec4) Load 280 + 282: 70(ivec2) VectorShuffle 281 281 0 1 + 283: 198(ptr) AccessChain 14 116 + 284: 7(int64_t) Load 283 + 285: 201(ptr) ImageTexelPointer 194(u2D) 282 21 + 286: 7(int64_t) AtomicIAdd 285 116 119 284 + 287: 198(ptr) AccessChain 14 116 + Store 287 286 + 288: 37(ptr) AccessChain 14 19 + 289: 11(ivec4) Load 288 + 290: 36(ivec3) VectorShuffle 289 289 0 1 2 + 291: 198(ptr) AccessChain 14 116 + 292: 7(int64_t) Load 291 + 293: 201(ptr) ImageTexelPointer 207(uCube) 290 21 + 294: 7(int64_t) AtomicUMin 293 116 119 292 + 295: 198(ptr) AccessChain 14 116 + Store 295 294 + 296: 37(ptr) AccessChain 14 19 + 297: 11(ivec4) Load 296 + 298: 70(ivec2) VectorShuffle 297 297 0 1 + 299: 198(ptr) AccessChain 14 116 + 300: 7(int64_t) Load 299 + 301: 201(ptr) ImageTexelPointer 218(u1DArray) 298 21 + 302: 7(int64_t) AtomicUMax 301 116 119 300 + 303: 198(ptr) AccessChain 14 116 + Store 303 302 + 304: 37(ptr) AccessChain 14 19 + 305: 11(ivec4) Load 304 + 306: 36(ivec3) VectorShuffle 305 305 0 1 2 + 307: 198(ptr) AccessChain 14 116 + 308: 7(int64_t) Load 307 + 309: 201(ptr) ImageTexelPointer 229(uCubeArray) 306 21 + 310: 7(int64_t) AtomicAnd 309 116 119 308 + 311: 198(ptr) AccessChain 14 116 + Store 311 310 + 312: 37(ptr) AccessChain 14 19 + 313: 11(ivec4) Load 312 + 314: 70(ivec2) VectorShuffle 313 313 0 1 + 315: 22(ptr) AccessChain 14 19 244 + 316: 10(int) Load 315 + 317: 198(ptr) AccessChain 14 116 + 318: 7(int64_t) Load 317 + 319: 201(ptr) ImageTexelPointer 240(u2DMS) 314 316 + 320: 7(int64_t) AtomicOr 319 116 119 318 + 321: 198(ptr) AccessChain 14 116 + Store 321 320 + 322: 37(ptr) AccessChain 14 19 + 323: 11(ivec4) Load 322 + 324: 70(ivec2) VectorShuffle 323 323 0 1 + 325: 198(ptr) AccessChain 14 116 + 326: 7(int64_t) Load 325 + 327: 201(ptr) ImageTexelPointer 194(u2D) 324 21 + 328: 7(int64_t) AtomicXor 327 116 119 326 + 329: 198(ptr) AccessChain 14 116 + Store 329 328 + 330: 37(ptr) AccessChain 14 19 + 331: 11(ivec4) Load 330 + 332: 36(ivec3) VectorShuffle 331 331 0 1 2 + 333: 198(ptr) AccessChain 14 116 + 334: 7(int64_t) Load 333 + 335: 201(ptr) ImageTexelPointer 207(uCube) 332 21 + 336: 7(int64_t) AtomicExchange 335 116 119 334 + 337: 198(ptr) AccessChain 14 116 + Store 337 336 + 338: 37(ptr) AccessChain 14 19 + 339: 11(ivec4) Load 338 + 340: 70(ivec2) VectorShuffle 339 339 0 1 + 341: 198(ptr) AccessChain 14 116 + 342: 7(int64_t) Load 341 + 343: 198(ptr) AccessChain 14 116 + 344: 7(int64_t) Load 343 + 345: 7(int64_t) IAdd 344 275 + 346: 201(ptr) ImageTexelPointer 218(u1DArray) 340 21 + 347: 7(int64_t) AtomicCompareExchange 346 116 119 119 345 342 + 348: 198(ptr) AccessChain 14 116 + Store 348 347 + 349: 37(ptr) AccessChain 14 19 + 350: 11(ivec4) Load 349 + 351: 36(ivec3) VectorShuffle 350 350 0 1 2 + 352: 201(ptr) ImageTexelPointer 229(uCubeArray) 351 21 + 353: 7(int64_t) AtomicLoad 352 116 119 + 354: 198(ptr) AccessChain 14 116 + Store 354 353 + 355: 37(ptr) AccessChain 14 19 + 356: 11(ivec4) Load 355 + 357: 70(ivec2) VectorShuffle 356 356 0 1 + 358: 22(ptr) AccessChain 14 19 244 + 359: 10(int) Load 358 + 360: 198(ptr) AccessChain 14 116 + 361: 7(int64_t) Load 360 + 362: 201(ptr) ImageTexelPointer 240(u2DMS) 357 359 + AtomicStore 362 116 119 361 + 364: 16 Load 18(i1D) + 365: 22(ptr) AccessChain 14 19 21 + 366: 10(int) Load 365 + 367: 8(i64vec4) ImageRead 364 366 + 369: 368(ptr) AccessChain 14 363 + 370: 8(i64vec4) Load 369 + 371: 8(i64vec4) IAdd 370 367 + 372: 368(ptr) AccessChain 14 363 + Store 372 371 + 373: 33 Load 35(i3D) + 374: 37(ptr) AccessChain 14 19 + 375: 11(ivec4) Load 374 + 376: 36(ivec3) VectorShuffle 375 375 0 1 2 + 377: 8(i64vec4) ImageRead 373 376 + 378: 368(ptr) AccessChain 14 363 + 379: 8(i64vec4) Load 378 + 380: 8(i64vec4) IAdd 379 377 + 381: 368(ptr) AccessChain 14 363 + Store 381 380 + 382: 46 Load 48(iBuf) + 383: 22(ptr) AccessChain 14 19 21 + 384: 10(int) Load 383 + 385: 8(i64vec4) ImageRead 382 384 + 386: 368(ptr) AccessChain 14 363 + 387: 8(i64vec4) Load 386 + 388: 8(i64vec4) IAdd 387 385 + 389: 368(ptr) AccessChain 14 363 + Store 389 388 + 390: 56 Load 58(i2DArray) + 391: 37(ptr) AccessChain 14 19 + 392: 11(ivec4) Load 391 + 393: 36(ivec3) VectorShuffle 392 392 0 1 2 + 394: 8(i64vec4) ImageRead 390 393 + 395: 368(ptr) AccessChain 14 363 + 396: 8(i64vec4) Load 395 + 397: 8(i64vec4) IAdd 396 394 + 398: 368(ptr) AccessChain 14 363 + Store 398 397 + 399: 67 Load 69(i2DRect) + 400: 37(ptr) AccessChain 14 19 + 401: 11(ivec4) Load 400 + 402: 70(ivec2) VectorShuffle 401 401 0 1 + 403: 8(i64vec4) ImageRead 399 402 + 404: 368(ptr) AccessChain 14 363 + 405: 8(i64vec4) Load 404 + 406: 8(i64vec4) IAdd 405 403 + 407: 368(ptr) AccessChain 14 363 + Store 407 406 + 408: 79 Load 81(i2DMSArray) + 409: 37(ptr) AccessChain 14 19 + 410: 11(ivec4) Load 409 + 411: 36(ivec3) VectorShuffle 410 410 0 1 2 + 412: 22(ptr) AccessChain 14 19 85 + 413: 10(int) Load 412 + 414: 8(i64vec4) ImageRead 408 411 Sample 413 + 415: 368(ptr) AccessChain 14 363 + 416: 8(i64vec4) Load 415 + 417: 8(i64vec4) IAdd 416 414 + 418: 368(ptr) AccessChain 14 363 + Store 418 417 + 419: 192 Load 194(u2D) + 420: 37(ptr) AccessChain 14 19 + 421: 11(ivec4) Load 420 + 422: 70(ivec2) VectorShuffle 421 421 0 1 + 425: 424(ptr) AccessChain 14 423 + 426: 9(i64vec4) Load 425 + ImageWrite 419 422 426 + 427: 205 Load 207(uCube) + 428: 37(ptr) AccessChain 14 19 + 429: 11(ivec4) Load 428 + 430: 36(ivec3) VectorShuffle 429 429 0 1 2 + 431: 424(ptr) AccessChain 14 423 + 432: 9(i64vec4) Load 431 + ImageWrite 427 430 432 + 433: 216 Load 218(u1DArray) + 434: 37(ptr) AccessChain 14 19 + 435: 11(ivec4) Load 434 + 436: 70(ivec2) VectorShuffle 435 435 0 1 + 437: 424(ptr) AccessChain 14 423 + 438: 9(i64vec4) Load 437 + ImageWrite 433 436 438 + 439: 227 Load 229(uCubeArray) + 440: 37(ptr) AccessChain 14 19 + 441: 11(ivec4) Load 440 + 442: 36(ivec3) VectorShuffle 441 441 0 1 2 + 443: 424(ptr) AccessChain 14 423 + 444: 9(i64vec4) Load 443 + ImageWrite 439 442 444 + 445: 238 Load 240(u2DMS) + 446: 37(ptr) AccessChain 14 19 + 447: 11(ivec4) Load 446 + 448: 70(ivec2) VectorShuffle 447 447 0 1 + 449: 22(ptr) AccessChain 14 19 244 + 450: 10(int) Load 449 + 451: 424(ptr) AccessChain 14 423 + 452: 9(i64vec4) Load 451 + ImageWrite 445 448 452 Sample 450 + 453: 33 Load 35(i3D) + 454: 37(ptr) AccessChain 14 19 + 455: 11(ivec4) Load 454 + 456: 36(ivec3) VectorShuffle 455 455 0 1 2 + 457: 368(ptr) AccessChain 14 363 + 459:458(ResType) ImageSparseRead 453 456 + 460: 8(i64vec4) CompositeExtract 459 1 + Store 457 460 + 461: 10(int) CompositeExtract 459 0 + 462: 56 Load 58(i2DArray) + 463: 37(ptr) AccessChain 14 19 + 464: 11(ivec4) Load 463 + 465: 36(ivec3) VectorShuffle 464 464 0 1 2 + 466: 368(ptr) AccessChain 14 363 + 467:458(ResType) ImageSparseRead 462 465 + 468: 8(i64vec4) CompositeExtract 467 1 + Store 466 468 + 469: 10(int) CompositeExtract 467 0 + 470: 67 Load 69(i2DRect) + 471: 37(ptr) AccessChain 14 19 + 472: 11(ivec4) Load 471 + 473: 70(ivec2) VectorShuffle 472 472 0 1 + 474: 368(ptr) AccessChain 14 363 + 475:458(ResType) ImageSparseRead 470 473 + 476: 8(i64vec4) CompositeExtract 475 1 + Store 474 476 + 477: 10(int) CompositeExtract 475 0 + 478: 192 Load 194(u2D) + 479: 37(ptr) AccessChain 14 19 + 480: 11(ivec4) Load 479 + 481: 70(ivec2) VectorShuffle 480 480 0 1 + 482: 424(ptr) AccessChain 14 423 + 484:483(ResType) ImageSparseRead 478 481 + 485: 9(i64vec4) CompositeExtract 484 1 + Store 482 485 + 486: 10(int) CompositeExtract 484 0 + 487: 205 Load 207(uCube) + 488: 37(ptr) AccessChain 14 19 + 489: 11(ivec4) Load 488 + 490: 36(ivec3) VectorShuffle 489 489 0 1 2 + 491: 424(ptr) AccessChain 14 423 + 492:483(ResType) ImageSparseRead 487 490 + 493: 9(i64vec4) CompositeExtract 492 1 + Store 491 493 + 494: 10(int) CompositeExtract 492 0 + 495: 227 Load 229(uCubeArray) + 496: 37(ptr) AccessChain 14 19 + 497: 11(ivec4) Load 496 + 498: 36(ivec3) VectorShuffle 497 497 0 1 2 + 499: 424(ptr) AccessChain 14 423 + 500:483(ResType) ImageSparseRead 495 498 + 501: 9(i64vec4) CompositeExtract 500 1 + Store 499 501 + 502: 10(int) CompositeExtract 500 0 + Return + FunctionEnd diff --git a/Test/baseResults/spv.imageLoadStoreLod.frag.out b/Test/baseResults/spv.imageLoadStoreLod.frag.out index 2f83604f..b8094742 100644 --- a/Test/baseResults/spv.imageLoadStoreLod.frag.out +++ b/Test/baseResults/spv.imageLoadStoreLod.frag.out @@ -1,20 +1,25 @@ spv.imageLoadStoreLod.frag // Module Version 10000 // Generated by (magic number): 8000a -// Id's are bound by 82 +// Id's are bound by 148 Capability Shader + Capability Int64 Capability ImageCubeArray Capability SparseResidency Capability Image1D Capability ImageReadWriteLodAMD + Capability Int64ImageEXT Extension "SPV_AMD_shader_image_load_store_lod" + Extension "SPV_EXT_shader_image_int64" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 77 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_AMD_shader_image_load_store_lod" + SourceExtension "GL_ARB_gpu_shader_int64" + SourceExtension "GL_EXT_shader_image_int64" Name 4 "main" Name 9 "f4" Name 14 "i1D" @@ -27,6 +32,18 @@ spv.imageLoadStoreLod.frag Name 65 "ResType" Name 71 "uiCubeArray" Name 77 "fragColor" + Name 86 "Buf" + MemberName 86(Buf) 0 "i64v4" + MemberName 86(Buf) 1 "u64v4" + Name 88 "" + Name 92 "i64i1D" + Name 102 "i64i2D" + Name 111 "i64i3D" + Name 120 "u64iCube" + Name 127 "u64i1DArray" + Name 133 "u64i2DArray" + Name 136 "ResType" + Name 142 "u64iCubeArray" Decorate 14(i1D) DescriptorSet 0 Decorate 14(i1D) Binding 0 Decorate 24(i2D) DescriptorSet 0 @@ -42,6 +59,25 @@ spv.imageLoadStoreLod.frag Decorate 71(uiCubeArray) DescriptorSet 0 Decorate 71(uiCubeArray) Binding 6 Decorate 77(fragColor) Location 0 + MemberDecorate 86(Buf) 0 Offset 0 + MemberDecorate 86(Buf) 1 Offset 32 + Decorate 86(Buf) BufferBlock + Decorate 88 DescriptorSet 0 + Decorate 88 Binding 14 + Decorate 92(i64i1D) DescriptorSet 0 + Decorate 92(i64i1D) Binding 7 + Decorate 102(i64i2D) DescriptorSet 0 + Decorate 102(i64i2D) Binding 8 + Decorate 111(i64i3D) DescriptorSet 0 + Decorate 111(i64i3D) Binding 9 + Decorate 120(u64iCube) DescriptorSet 0 + Decorate 120(u64iCube) Binding 10 + Decorate 127(u64i1DArray) DescriptorSet 0 + Decorate 127(u64i1DArray) Binding 11 + Decorate 133(u64i2DArray) DescriptorSet 0 + Decorate 133(u64i2DArray) Binding 12 + Decorate 142(u64iCubeArray) DescriptorSet 0 + Decorate 142(u64iCubeArray) Binding 13 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -88,6 +124,38 @@ spv.imageLoadStoreLod.frag 71(uiCubeArray): 70(ptr) Variable UniformConstant 76: TypePointer Output 7(fvec4) 77(fragColor): 76(ptr) Variable Output + 82: TypeInt 64 1 + 83: TypeVector 82(int64_t) 4 + 84: TypeInt 64 0 + 85: TypeVector 84(int64_t) 4 + 86(Buf): TypeStruct 83(i64vec4) 85(i64vec4) + 87: TypePointer Uniform 86(Buf) + 88: 87(ptr) Variable Uniform + 89: 16(int) Constant 0 + 90: TypeImage 82(int64_t) 1D nonsampled format:R64i + 91: TypePointer UniformConstant 90 + 92(i64i1D): 91(ptr) Variable UniformConstant + 95: TypePointer Uniform 83(i64vec4) + 100: TypeImage 82(int64_t) 2D nonsampled format:R64i + 101: TypePointer UniformConstant 100 + 102(i64i2D): 101(ptr) Variable UniformConstant + 109: TypeImage 82(int64_t) 3D nonsampled format:R64i + 110: TypePointer UniformConstant 109 + 111(i64i3D): 110(ptr) Variable UniformConstant + 118: TypeImage 84(int64_t) Cube nonsampled format:R64ui + 119: TypePointer UniformConstant 118 + 120(u64iCube): 119(ptr) Variable UniformConstant + 122: TypePointer Uniform 85(i64vec4) + 125: TypeImage 84(int64_t) 1D array nonsampled format:R64ui + 126: TypePointer UniformConstant 125 +127(u64i1DArray): 126(ptr) Variable UniformConstant + 131: TypeImage 84(int64_t) 2D array nonsampled format:R64ui + 132: TypePointer UniformConstant 131 +133(u64i2DArray): 132(ptr) Variable UniformConstant + 136(ResType): TypeStruct 16(int) 85(i64vec4) + 140: TypeImage 84(int64_t) Cube array nonsampled format:R64ui + 141: TypePointer UniformConstant 140 +142(u64iCubeArray): 141(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 9(f4): 8(ptr) Variable Function @@ -131,5 +199,46 @@ spv.imageLoadStoreLod.frag 80: 7(fvec4) ConvertUToF 79 81: 7(fvec4) FAdd 78 80 Store 77(fragColor) 81 + 93: 90 Load 92(i64i1D) + 94: 83(i64vec4) ImageRead 93 17 Lod 18 + 96: 95(ptr) AccessChain 88 89 + 97: 83(i64vec4) Load 96 + 98: 83(i64vec4) IAdd 97 94 + 99: 95(ptr) AccessChain 88 89 + Store 99 98 + 103: 100 Load 102(i64i2D) + 104: 83(i64vec4) ImageRead 103 28 Lod 18 + 105: 95(ptr) AccessChain 88 89 + 106: 83(i64vec4) Load 105 + 107: 83(i64vec4) IAdd 106 104 + 108: 95(ptr) AccessChain 88 89 + Store 108 107 + 112: 109 Load 111(i64i3D) + 113: 83(i64vec4) ImageRead 112 40 Lod 18 + 114: 95(ptr) AccessChain 88 89 + 115: 83(i64vec4) Load 114 + 116: 83(i64vec4) IAdd 115 113 + 117: 95(ptr) AccessChain 88 89 + Store 117 116 + 121: 118 Load 120(u64iCube) + 123: 122(ptr) AccessChain 88 17 + 124: 85(i64vec4) Load 123 + ImageWrite 121 40 124 Lod 18 + 128: 125 Load 127(u64i1DArray) + 129: 122(ptr) AccessChain 88 17 + 130: 85(i64vec4) Load 129 + ImageWrite 128 28 130 Lod 18 + 134: 131 Load 133(u64i2DArray) + 135: 122(ptr) AccessChain 88 17 + 137:136(ResType) ImageSparseRead 134 40 Lod 18 + 138: 85(i64vec4) CompositeExtract 137 1 + Store 135 138 + 139: 16(int) CompositeExtract 137 0 + 143: 140 Load 142(u64iCubeArray) + 144: 122(ptr) AccessChain 88 17 + 145:136(ResType) ImageSparseRead 143 40 Lod 18 + 146: 85(i64vec4) CompositeExtract 145 1 + Store 144 146 + 147: 16(int) CompositeExtract 145 0 Return FunctionEnd diff --git a/Test/spv.imageAtomic64.frag b/Test/spv.imageAtomic64.frag new file mode 100644 index 00000000..bd671d98 --- /dev/null +++ b/Test/spv.imageAtomic64.frag @@ -0,0 +1,92 @@ +#version 450 core + +#extension GL_ARB_gpu_shader_int64: enable +#extension GL_EXT_shader_image_int64: enable +#extension GL_KHR_memory_scope_semantics: enable +#extension GL_ARB_sparse_texture2: enable + +layout(binding = 0, r64i) uniform i64image1D i1D; +layout(binding = 1, r64ui) uniform u64image2D u2D; +layout(binding = 2, r64i) uniform i64image3D i3D; +layout(binding = 3, r64ui) uniform u64imageCube uCube; +layout(binding = 4, r64i) uniform i64imageBuffer iBuf; +layout(binding = 5, r64ui) uniform u64image1DArray u1DArray; +layout(binding = 6, r64i) uniform i64image2DArray i2DArray; +layout(binding = 7, r64ui) uniform u64imageCubeArray uCubeArray; +layout(binding = 8, r64i) uniform i64image2DRect i2DRect; +layout(binding = 9, r64ui) uniform u64image2DMS u2DMS; +layout(binding = 10, r64i) uniform i64image2DMSArray i2DMSArray; + +layout(binding = 11) buffer Buf +{ + int64_t i64; + uint64_t u64; + i64vec4 i64v4; + u64vec4 u64v4; + ivec4 i32v4; +}; + +void main() +{ + i64 = imageAtomicAdd(i1D, i32v4.x, i64); + i64 = imageAtomicMin(i3D, i32v4.xyz, i64); + i64 = imageAtomicMax(iBuf, i32v4.x, i64); + i64 = imageAtomicAnd(i2DArray, i32v4.xyz, i64); + i64 = imageAtomicOr(i2DRect, i32v4.xy, i64); + i64 = imageAtomicXor(i2DMSArray, i32v4.xyz, i32v4.w, i64); + i64 = imageAtomicExchange(i1D, i32v4.x, i64); + i64 = imageAtomicCompSwap(i3D, i32v4.xyz, i64, i64 + 1); + + i64 = imageAtomicAdd(i1D, i32v4.x, i64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelaxed); + i64 = imageAtomicMin(i3D, i32v4.xyz, i64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelaxed); + i64 = imageAtomicMax(iBuf, i32v4.x, i64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelaxed); + i64 = imageAtomicAnd(i2DArray, i32v4.xyz, i64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelaxed); + i64 = imageAtomicOr(i2DRect, i32v4.xy, i64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelaxed); + i64 = imageAtomicXor(i2DMSArray, i32v4.xyz, i32v4.w, i64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelaxed); + i64 = imageAtomicExchange(i1D, i32v4.x, i64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelaxed); + i64 = imageAtomicCompSwap(i3D, i32v4.xyz, i64, i64 + 1, gl_ScopeDevice, + gl_StorageSemanticsImage, gl_SemanticsRelaxed, gl_StorageSemanticsImage, gl_SemanticsRelaxed); + i64 = imageAtomicLoad(iBuf, i32v4.x, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelaxed); + imageAtomicStore(i2DArray, i32v4.xyz, i64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelaxed); + + u64 = imageAtomicAdd(u2D, i32v4.xy, u64); + u64 = imageAtomicMin(uCube, i32v4.xyz, u64); + u64 = imageAtomicMax(u1DArray, i32v4.xy, u64); + u64 = imageAtomicAnd(uCubeArray, i32v4.xyz, u64); + u64 = imageAtomicOr(u2DMS, i32v4.xy, i32v4.z, u64); + u64 = imageAtomicXor(u2D, i32v4.xy, u64); + u64 = imageAtomicExchange(uCube, i32v4.xyz, u64); + u64 = imageAtomicCompSwap(u1DArray, i32v4.xy, u64, u64 + 1); + + u64 = imageAtomicAdd(u2D, i32v4.xy, u64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelaxed); + u64 = imageAtomicMin(uCube, i32v4.xyz, u64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelaxed); + u64 = imageAtomicMax(u1DArray, i32v4.xy, u64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelaxed); + u64 = imageAtomicAnd(uCubeArray, i32v4.xyz, u64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelaxed); + u64 = imageAtomicOr(u2DMS, i32v4.xy, i32v4.z, u64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelaxed); + u64 = imageAtomicXor(u2D, i32v4.xy, u64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelaxed); + u64 = imageAtomicExchange(uCube, i32v4.xyz, u64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelaxed); + u64 = imageAtomicCompSwap(u1DArray, i32v4.xy, u64, u64 + 1, gl_ScopeDevice, + gl_StorageSemanticsImage, gl_SemanticsRelaxed, gl_StorageSemanticsImage, gl_SemanticsRelaxed); + u64 = imageAtomicLoad(uCubeArray, i32v4.xyz, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelaxed); + imageAtomicStore(u2DMS, i32v4.xy, i32v4.z, u64, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelaxed); + + i64v4 += imageLoad(i1D, i32v4.x); + i64v4 += imageLoad(i3D, i32v4.xyz); + i64v4 += imageLoad(iBuf, i32v4.x); + i64v4 += imageLoad(i2DArray, i32v4.xyz); + i64v4 += imageLoad(i2DRect, i32v4.xy); + i64v4 += imageLoad(i2DMSArray, i32v4.xyz, i32v4.w); + + imageStore(u2D, i32v4.xy, u64v4); + imageStore(uCube, i32v4.xyz, u64v4); + imageStore(u1DArray, i32v4.xy, u64v4); + imageStore(uCubeArray, i32v4.xyz, u64v4); + imageStore(u2DMS, i32v4.xy, i32v4.z, u64v4); + + sparseImageLoadARB(i3D, i32v4.xyz, i64v4); + sparseImageLoadARB(i2DArray, i32v4.xyz, i64v4); + sparseImageLoadARB(i2DRect, i32v4.xy, i64v4); + sparseImageLoadARB(u2D, i32v4.xy, u64v4); + sparseImageLoadARB(uCube, i32v4.xyz, u64v4); + sparseImageLoadARB(uCubeArray, i32v4.xyz, u64v4); +} \ No newline at end of file diff --git a/Test/spv.imageLoadStoreLod.frag b/Test/spv.imageLoadStoreLod.frag index 0da1da12..ed3cad22 100644 --- a/Test/spv.imageLoadStoreLod.frag +++ b/Test/spv.imageLoadStoreLod.frag @@ -1,6 +1,8 @@ #version 450 core #extension GL_AMD_shader_image_load_store_lod: enable +#extension GL_ARB_gpu_shader_int64: enable +#extension GL_EXT_shader_image_int64: enable layout(rgba32f, binding = 0) uniform image1D i1D; layout(rgba32f, binding = 1) uniform image2D i2D; @@ -12,6 +14,20 @@ layout(rgba32ui, binding = 6) uniform uimageCubeArray uiCubeArray; layout(location = 0) out vec4 fragColor; +layout(r64i, binding = 7) uniform i64image1D i64i1D; +layout(r64i, binding = 8) uniform i64image2D i64i2D; +layout(r64i, binding = 9) uniform i64image3D i64i3D; +layout(r64ui, binding = 10) uniform u64imageCube u64iCube; +layout(r64ui, binding = 11) uniform u64image1DArray u64i1DArray; +layout(r64ui, binding = 12) uniform u64image2DArray u64i2DArray; +layout(r64ui, binding = 13) uniform u64imageCubeArray u64iCubeArray; + +layout(binding = 14) buffer Buf +{ + i64vec4 i64v4; + u64vec4 u64v4; +}; + void main() { const int c1 = 1; @@ -33,4 +49,14 @@ void main() sparseImageLoadLodAMD(uiCubeArray, c3, lod, u4); fragColor = f4 + vec4(u4); + + i64v4 += imageLoadLodAMD(i64i1D, c1, lod); + i64v4 += imageLoadLodAMD(i64i2D, c2, lod); + i64v4 += imageLoadLodAMD(i64i3D, c3, lod); + + imageStoreLodAMD(u64iCube, c3, lod, u64v4); + imageStoreLodAMD(u64i1DArray, c2, lod, u64v4); + + sparseImageLoadLodAMD(u64i2DArray, c3, lod, u64v4); + sparseImageLoadLodAMD(u64iCubeArray, c3, lod, u64v4); } \ No newline at end of file diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index 514fa10c..a3043f8a 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -406,6 +406,7 @@ enum TLayoutFormat { ElfRg8i, ElfR16i, ElfR8i, + ElfR64i, ElfIntGuard, // to help with comparisons @@ -423,6 +424,7 @@ enum TLayoutFormat { ElfRg8ui, ElfR16ui, ElfR8ui, + ElfR64ui, ElfCount }; @@ -1117,6 +1119,8 @@ public: case ElfR32ui: return "r32ui"; case ElfR16ui: return "r16ui"; case ElfR8ui: return "r8ui"; + case ElfR64ui: return "r64ui"; + case ElfR64i: return "r64i"; default: return "none"; } } diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 0ce2583b..c765199b 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -509,6 +509,8 @@ TBuiltIns::TBuiltIns() prefixes[EbtUint8] = "u8"; prefixes[EbtInt16] = "i16"; prefixes[EbtUint16] = "u16"; + prefixes[EbtInt64] = "i64"; + prefixes[EbtUint64] = "u64"; #endif postfixes[2] = "2"; @@ -5724,6 +5726,45 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV stageBuiltins[static_cast(stage)].append("const highp int gl_ShadingRateFlag4HorizontalPixelsEXT = 8;\n"); } } + + // GL_EXT_shader_image_int64 + if ((profile != EEsProfile && version >= 420) || + (profile == EEsProfile && version >= 310)) { + + const TBasicType bTypes[] = { EbtInt64, EbtUint64 }; + for (int ms = 0; ms <= 1; ++ms) { // loop over "bool" multisample or not + for (int arrayed = 0; arrayed <= 1; ++arrayed) { // loop over "bool" arrayed or not + for (int dim = Esd1D; dim < EsdSubpass; ++dim) { // 1D, ..., buffer + if ((dim == Esd1D || dim == EsdRect) && profile == EEsProfile) + continue; + + if ((dim == Esd3D || dim == EsdRect || dim == EsdBuffer) && arrayed) + continue; + + if (dim != Esd2D && ms) + continue; + + // Loop over the bTypes + for (size_t bType = 0; bType < sizeof(bTypes)/sizeof(TBasicType); ++bType) { + // + // Now, make all the function prototypes for the type we just built... + // + TSampler sampler; + + sampler.setImage(bTypes[bType], (TSamplerDim)dim, arrayed ? true : false, + false, + ms ? true : false); + + TString typeName = sampler.getString(); + + addQueryFunctions(sampler, typeName, version, profile); + addImageFunctions(sampler, typeName, version, profile); + } + } + } + } + } + #endif // !GLSLANG_WEB // printf("%s\n", commonBuiltins.c_str()); @@ -5820,7 +5861,6 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c #endif if (shadow && (bTypes[bType] == EbtInt || bTypes[bType] == EbtUint)) continue; - // // Now, make all the function prototypes for the type we just built... // @@ -6045,8 +6085,16 @@ void TBuiltIns::addImageFunctions(TSampler sampler, const TString& typeName, int if ( profile != EEsProfile || (profile == EEsProfile && version >= 310)) { - if (sampler.type == EbtInt || sampler.type == EbtUint) { - const char* dataType = sampler.type == EbtInt ? "highp int" : "highp uint"; + if (sampler.type == EbtInt || sampler.type == EbtUint || sampler.type == EbtInt64 || sampler.type == EbtUint64 ) { + + const char* dataType; + switch (sampler.type) { + case(EbtInt): dataType = "highp int"; break; + case(EbtUint): dataType = "highp uint"; break; + case(EbtInt64): dataType = "highp int64_t"; break; + case(EbtUint64): dataType = "highp uint64_t"; break; + default: dataType = ""; + } const int numBuiltins = 7; diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 032774f9..63fb957c 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -2121,9 +2121,15 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan { // Make sure the image types have the correct layout() format and correct argument types const TType& imageType = arg0->getType(); - if (imageType.getSampler().type == EbtInt || imageType.getSampler().type == EbtUint) { - if (imageType.getQualifier().getFormat() != ElfR32i && imageType.getQualifier().getFormat() != ElfR32ui) + if (imageType.getSampler().type == EbtInt || imageType.getSampler().type == EbtUint || + imageType.getSampler().type == EbtInt64 || imageType.getSampler().type == EbtUint64) { + if (imageType.getQualifier().getFormat() != ElfR32i && imageType.getQualifier().getFormat() != ElfR32ui && + imageType.getQualifier().getFormat() != ElfR64i && imageType.getQualifier().getFormat() != ElfR64ui) error(loc, "only supported on image with format r32i or r32ui", fnCandidate.getName().c_str(), ""); + if (callNode.getType().getBasicType() == EbtInt64 && imageType.getQualifier().getFormat() != ElfR64i) + error(loc, "only supported on image with format r64i", fnCandidate.getName().c_str(), ""); + else if (callNode.getType().getBasicType() == EbtUint64 && imageType.getQualifier().getFormat() != ElfR64ui) + error(loc, "only supported on image with format r64ui", fnCandidate.getName().c_str(), ""); } else { bool isImageAtomicOnFloatAllowed = ((fnCandidate.getName().compare(0, 14, "imageAtomicAdd") == 0) || (fnCandidate.getName().compare(0, 15, "imageAtomicLoad") == 0) || diff --git a/glslang/MachineIndependent/Scan.cpp b/glslang/MachineIndependent/Scan.cpp index 3a5f090f..1124b943 100644 --- a/glslang/MachineIndependent/Scan.cpp +++ b/glslang/MachineIndependent/Scan.cpp @@ -471,6 +471,28 @@ void TScanContext::fillInKeywordMap() (*KeywordMap)["image2DMSArray"] = IMAGE2DMSARRAY; (*KeywordMap)["iimage2DMSArray"] = IIMAGE2DMSARRAY; (*KeywordMap)["uimage2DMSArray"] = UIMAGE2DMSARRAY; + (*KeywordMap)["i64image1D"] = I64IMAGE1D; + (*KeywordMap)["u64image1D"] = U64IMAGE1D; + (*KeywordMap)["i64image2D"] = I64IMAGE2D; + (*KeywordMap)["u64image2D"] = U64IMAGE2D; + (*KeywordMap)["i64image3D"] = I64IMAGE3D; + (*KeywordMap)["u64image3D"] = U64IMAGE3D; + (*KeywordMap)["i64image2DRect"] = I64IMAGE2DRECT; + (*KeywordMap)["u64image2DRect"] = U64IMAGE2DRECT; + (*KeywordMap)["i64imageCube"] = I64IMAGECUBE; + (*KeywordMap)["u64imageCube"] = U64IMAGECUBE; + (*KeywordMap)["i64imageBuffer"] = I64IMAGEBUFFER; + (*KeywordMap)["u64imageBuffer"] = U64IMAGEBUFFER; + (*KeywordMap)["i64image1DArray"] = I64IMAGE1DARRAY; + (*KeywordMap)["u64image1DArray"] = U64IMAGE1DARRAY; + (*KeywordMap)["i64image2DArray"] = I64IMAGE2DARRAY; + (*KeywordMap)["u64image2DArray"] = U64IMAGE2DARRAY; + (*KeywordMap)["i64imageCubeArray"] = I64IMAGECUBEARRAY; + (*KeywordMap)["u64imageCubeArray"] = U64IMAGECUBEARRAY; + (*KeywordMap)["i64image2DMS"] = I64IMAGE2DMS; + (*KeywordMap)["u64image2DMS"] = U64IMAGE2DMS; + (*KeywordMap)["i64image2DMSArray"] = I64IMAGE2DMSARRAY; + (*KeywordMap)["u64image2DMSArray"] = U64IMAGE2DMSARRAY; (*KeywordMap)["double"] = DOUBLE; (*KeywordMap)["dvec2"] = DVEC2; (*KeywordMap)["dvec3"] = DVEC3; @@ -1147,6 +1169,19 @@ int TScanContext::tokenizeIdentifier() afterType = true; return firstGenerationImage(false); + case I64IMAGE1D: + case U64IMAGE1D: + case I64IMAGE1DARRAY: + case U64IMAGE1DARRAY: + case I64IMAGE2DRECT: + case U64IMAGE2DRECT: + afterType = true; + if (parseContext.symbolTable.atBuiltInLevel() || + parseContext.extensionTurnedOn(E_GL_EXT_shader_image_int64)) { + return firstGenerationImage(false); + } + return identifierOrType(); + case IMAGEBUFFER: case IIMAGEBUFFER: case UIMAGEBUFFER: @@ -1155,6 +1190,18 @@ int TScanContext::tokenizeIdentifier() parseContext.extensionsTurnedOn(Num_AEP_texture_buffer, AEP_texture_buffer)) return keyword; return firstGenerationImage(false); + + case I64IMAGEBUFFER: + case U64IMAGEBUFFER: + afterType = true; + if (parseContext.symbolTable.atBuiltInLevel() || + parseContext.extensionTurnedOn(E_GL_EXT_shader_image_int64)) { + if ((parseContext.isEsProfile() && parseContext.version >= 320) || + parseContext.extensionsTurnedOn(Num_AEP_texture_buffer, AEP_texture_buffer)) + return keyword; + return firstGenerationImage(false); + } + return identifierOrType(); case IMAGE2D: case IIMAGE2D: @@ -1171,6 +1218,20 @@ int TScanContext::tokenizeIdentifier() afterType = true; return firstGenerationImage(true); + case I64IMAGE2D: + case U64IMAGE2D: + case I64IMAGE3D: + case U64IMAGE3D: + case I64IMAGECUBE: + case U64IMAGECUBE: + case I64IMAGE2DARRAY: + case U64IMAGE2DARRAY: + afterType = true; + if (parseContext.symbolTable.atBuiltInLevel() || + parseContext.extensionTurnedOn(E_GL_EXT_shader_image_int64)) + return firstGenerationImage(true); + return identifierOrType(); + case IMAGECUBEARRAY: case IIMAGECUBEARRAY: case UIMAGECUBEARRAY: @@ -1179,6 +1240,18 @@ int TScanContext::tokenizeIdentifier() parseContext.extensionsTurnedOn(Num_AEP_texture_cube_map_array, AEP_texture_cube_map_array)) return keyword; return secondGenerationImage(); + + case I64IMAGECUBEARRAY: + case U64IMAGECUBEARRAY: + afterType = true; + if (parseContext.symbolTable.atBuiltInLevel() || + parseContext.extensionTurnedOn(E_GL_EXT_shader_image_int64)) { + if ((parseContext.isEsProfile() && parseContext.version >= 320) || + parseContext.extensionsTurnedOn(Num_AEP_texture_cube_map_array, AEP_texture_cube_map_array)) + return keyword; + return secondGenerationImage(); + } + return identifierOrType(); case IMAGE2DMS: case IIMAGE2DMS: @@ -1188,6 +1261,17 @@ int TScanContext::tokenizeIdentifier() case UIMAGE2DMSARRAY: afterType = true; return secondGenerationImage(); + + case I64IMAGE2DMS: + case U64IMAGE2DMS: + case I64IMAGE2DMSARRAY: + case U64IMAGE2DMSARRAY: + afterType = true; + if (parseContext.symbolTable.atBuiltInLevel() || + parseContext.extensionTurnedOn(E_GL_EXT_shader_image_int64)) { + return secondGenerationImage(); + } + return identifierOrType(); case DOUBLE: case DVEC2: diff --git a/glslang/MachineIndependent/SymbolTable.cpp b/glslang/MachineIndependent/SymbolTable.cpp index e2458145..f6291c39 100644 --- a/glslang/MachineIndependent/SymbolTable.cpp +++ b/glslang/MachineIndependent/SymbolTable.cpp @@ -85,6 +85,8 @@ void TType::buildMangledName(TString& mangledName) const #endif case EbtInt: mangledName += "i"; break; case EbtUint: mangledName += "u"; break; + case EbtInt64: mangledName += "i64"; break; + case EbtUint64: mangledName += "u64"; break; default: break; // some compilers want this } if (sampler.isImageClass()) diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index 92d8d805..48d93cfc 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -328,6 +328,7 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_EXT_blend_func_extended] = EBhDisable; extensionBehavior[E_GL_EXT_shader_implicit_conversions] = EBhDisable; extensionBehavior[E_GL_EXT_fragment_shading_rate] = EBhDisable; + extensionBehavior[E_GL_EXT_shader_image_int64] = EBhDisable; // OVR extensions extensionBehavior[E_GL_OVR_multiview] = EBhDisable; @@ -477,6 +478,7 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_KHR_shader_subgroup_clustered 1\n" "#define GL_KHR_shader_subgroup_quad 1\n" + "#define GL_EXT_shader_image_int64 1\n" "#define GL_EXT_shader_atomic_int64 1\n" "#define GL_EXT_shader_realtime_clock 1\n" "#define GL_EXT_ray_tracing 1\n" diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index 7c38de39..e484f556 100644 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -200,6 +200,7 @@ const char* const E_GL_EXT_ray_flags_primitive_culling = "GL_EXT_ray_flags_ const char* const E_GL_EXT_blend_func_extended = "GL_EXT_blend_func_extended"; const char* const E_GL_EXT_shader_implicit_conversions = "GL_EXT_shader_implicit_conversions"; const char* const E_GL_EXT_fragment_shading_rate = "GL_EXT_fragment_shading_rate"; +const char* const E_GL_EXT_shader_image_int64 = "GL_EXT_shader_image_int64"; // Arrays of extensions for the above viewportEXTs duplications diff --git a/glslang/MachineIndependent/glslang.m4 b/glslang/MachineIndependent/glslang.m4 index 6bd3759a..f71d4b9c 100644 --- a/glslang/MachineIndependent/glslang.m4 +++ b/glslang/MachineIndependent/glslang.m4 @@ -242,6 +242,18 @@ GLSLANG_WEB_EXCLUDE_ON %token F16IMAGECUBE F16IMAGE1DARRAY F16IMAGE2DARRAY F16IMAGECUBEARRAY %token F16IMAGEBUFFER F16IMAGE2DMS F16IMAGE2DMSARRAY +%token I64IMAGE1D U64IMAGE1D +%token I64IMAGE2D U64IMAGE2D +%token I64IMAGE3D U64IMAGE3D +%token I64IMAGE2DRECT U64IMAGE2DRECT +%token I64IMAGECUBE U64IMAGECUBE +%token I64IMAGEBUFFER U64IMAGEBUFFER +%token I64IMAGE1DARRAY U64IMAGE1DARRAY +%token I64IMAGE2DARRAY U64IMAGE2DARRAY +%token I64IMAGECUBEARRAY U64IMAGECUBEARRAY +%token I64IMAGE2DMS U64IMAGE2DMS +%token I64IMAGE2DMSARRAY U64IMAGE2DMSARRAY + // texture without sampler %token TEXTURECUBEARRAY ITEXTURECUBEARRAY UTEXTURECUBEARRAY %token TEXTURE1D ITEXTURE1D UTEXTURE1D @@ -3203,6 +3215,116 @@ GLSLANG_WEB_EXCLUDE_ON $$.basicType = EbtSampler; $$.sampler.setImage(EbtUint, Esd2D, true, false, true); } + | I64IMAGE1D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, Esd1D); + } + | U64IMAGE1D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, Esd1D); + } + | I64IMAGE2D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, Esd2D); + } + | U64IMAGE2D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, Esd2D); + } + | I64IMAGE3D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, Esd3D); + } + | U64IMAGE3D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, Esd3D); + } + | I64IMAGE2DRECT { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, EsdRect); + } + | U64IMAGE2DRECT { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, EsdRect); + } + | I64IMAGECUBE { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, EsdCube); + } + | U64IMAGECUBE { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, EsdCube); + } + | I64IMAGEBUFFER { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, EsdBuffer); + } + | U64IMAGEBUFFER { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, EsdBuffer); + } + | I64IMAGE1DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, Esd1D, true); + } + | U64IMAGE1DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, Esd1D, true); + } + | I64IMAGE2DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, Esd2D, true); + } + | U64IMAGE2DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, Esd2D, true); + } + | I64IMAGECUBEARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, EsdCube, true); + } + | U64IMAGECUBEARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, EsdCube, true); + } + | I64IMAGE2DMS { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, Esd2D, false, false, true); + } + | U64IMAGE2DMS { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, Esd2D, false, false, true); + } + | I64IMAGE2DMSARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, Esd2D, true, false, true); + } + | U64IMAGE2DMSARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, Esd2D, true, false, true); + } | SAMPLEREXTERNALOES { // GL_OES_EGL_image_external $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index f5070026..d7eb3587 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -242,6 +242,18 @@ extern int yylex(YYSTYPE*, TParseContext&); %token F16IMAGECUBE F16IMAGE1DARRAY F16IMAGE2DARRAY F16IMAGECUBEARRAY %token F16IMAGEBUFFER F16IMAGE2DMS F16IMAGE2DMSARRAY +%token I64IMAGE1D U64IMAGE1D +%token I64IMAGE2D U64IMAGE2D +%token I64IMAGE3D U64IMAGE3D +%token I64IMAGE2DRECT U64IMAGE2DRECT +%token I64IMAGECUBE U64IMAGECUBE +%token I64IMAGEBUFFER U64IMAGEBUFFER +%token I64IMAGE1DARRAY U64IMAGE1DARRAY +%token I64IMAGE2DARRAY U64IMAGE2DARRAY +%token I64IMAGECUBEARRAY U64IMAGECUBEARRAY +%token I64IMAGE2DMS U64IMAGE2DMS +%token I64IMAGE2DMSARRAY U64IMAGE2DMSARRAY + // texture without sampler %token TEXTURECUBEARRAY ITEXTURECUBEARRAY UTEXTURECUBEARRAY %token TEXTURE1D ITEXTURE1D UTEXTURE1D @@ -3203,6 +3215,116 @@ type_specifier_nonarray $$.basicType = EbtSampler; $$.sampler.setImage(EbtUint, Esd2D, true, false, true); } + | I64IMAGE1D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, Esd1D); + } + | U64IMAGE1D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, Esd1D); + } + | I64IMAGE2D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, Esd2D); + } + | U64IMAGE2D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, Esd2D); + } + | I64IMAGE3D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, Esd3D); + } + | U64IMAGE3D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, Esd3D); + } + | I64IMAGE2DRECT { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, EsdRect); + } + | U64IMAGE2DRECT { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, EsdRect); + } + | I64IMAGECUBE { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, EsdCube); + } + | U64IMAGECUBE { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, EsdCube); + } + | I64IMAGEBUFFER { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, EsdBuffer); + } + | U64IMAGEBUFFER { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, EsdBuffer); + } + | I64IMAGE1DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, Esd1D, true); + } + | U64IMAGE1DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, Esd1D, true); + } + | I64IMAGE2DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, Esd2D, true); + } + | U64IMAGE2DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, Esd2D, true); + } + | I64IMAGECUBEARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, EsdCube, true); + } + | U64IMAGECUBEARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, EsdCube, true); + } + | I64IMAGE2DMS { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, Esd2D, false, false, true); + } + | U64IMAGE2DMS { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, Esd2D, false, false, true); + } + | I64IMAGE2DMSARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt64, Esd2D, true, false, true); + } + | U64IMAGE2DMSARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint64, Esd2D, true, false, true); + } | SAMPLEREXTERNALOES { // GL_OES_EGL_image_external $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp index 0204660e..22af333c 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -375,171 +375,193 @@ extern int yydebug; F16IMAGEBUFFER = 507, F16IMAGE2DMS = 508, F16IMAGE2DMSARRAY = 509, - TEXTURECUBEARRAY = 510, - ITEXTURECUBEARRAY = 511, - UTEXTURECUBEARRAY = 512, - TEXTURE1D = 513, - ITEXTURE1D = 514, - UTEXTURE1D = 515, - TEXTURE1DARRAY = 516, - ITEXTURE1DARRAY = 517, - UTEXTURE1DARRAY = 518, - TEXTURE2DRECT = 519, - ITEXTURE2DRECT = 520, - UTEXTURE2DRECT = 521, - TEXTUREBUFFER = 522, - ITEXTUREBUFFER = 523, - UTEXTUREBUFFER = 524, - TEXTURE2DMS = 525, - ITEXTURE2DMS = 526, - UTEXTURE2DMS = 527, - TEXTURE2DMSARRAY = 528, - ITEXTURE2DMSARRAY = 529, - UTEXTURE2DMSARRAY = 530, - F16TEXTURE1D = 531, - F16TEXTURE2D = 532, - F16TEXTURE3D = 533, - F16TEXTURE2DRECT = 534, - F16TEXTURECUBE = 535, - F16TEXTURE1DARRAY = 536, - F16TEXTURE2DARRAY = 537, - F16TEXTURECUBEARRAY = 538, - F16TEXTUREBUFFER = 539, - F16TEXTURE2DMS = 540, - F16TEXTURE2DMSARRAY = 541, - SUBPASSINPUT = 542, - SUBPASSINPUTMS = 543, - ISUBPASSINPUT = 544, - ISUBPASSINPUTMS = 545, - USUBPASSINPUT = 546, - USUBPASSINPUTMS = 547, - F16SUBPASSINPUT = 548, - F16SUBPASSINPUTMS = 549, - LEFT_OP = 550, - RIGHT_OP = 551, - INC_OP = 552, - DEC_OP = 553, - LE_OP = 554, - GE_OP = 555, - EQ_OP = 556, - NE_OP = 557, - AND_OP = 558, - OR_OP = 559, - XOR_OP = 560, - MUL_ASSIGN = 561, - DIV_ASSIGN = 562, - ADD_ASSIGN = 563, - MOD_ASSIGN = 564, - LEFT_ASSIGN = 565, - RIGHT_ASSIGN = 566, - AND_ASSIGN = 567, - XOR_ASSIGN = 568, - OR_ASSIGN = 569, - SUB_ASSIGN = 570, - STRING_LITERAL = 571, - LEFT_PAREN = 572, - RIGHT_PAREN = 573, - LEFT_BRACKET = 574, - RIGHT_BRACKET = 575, - LEFT_BRACE = 576, - RIGHT_BRACE = 577, - DOT = 578, - COMMA = 579, - COLON = 580, - EQUAL = 581, - SEMICOLON = 582, - BANG = 583, - DASH = 584, - TILDE = 585, - PLUS = 586, - STAR = 587, - SLASH = 588, - PERCENT = 589, - LEFT_ANGLE = 590, - RIGHT_ANGLE = 591, - VERTICAL_BAR = 592, - CARET = 593, - AMPERSAND = 594, - QUESTION = 595, - INVARIANT = 596, - HIGH_PRECISION = 597, - MEDIUM_PRECISION = 598, - LOW_PRECISION = 599, - PRECISION = 600, - PACKED = 601, - RESOURCE = 602, - SUPERP = 603, - FLOATCONSTANT = 604, - INTCONSTANT = 605, - UINTCONSTANT = 606, - BOOLCONSTANT = 607, - IDENTIFIER = 608, - TYPE_NAME = 609, - CENTROID = 610, - IN = 611, - OUT = 612, - INOUT = 613, - STRUCT = 614, - VOID = 615, - WHILE = 616, - BREAK = 617, - CONTINUE = 618, - DO = 619, - ELSE = 620, - FOR = 621, - IF = 622, - DISCARD = 623, - RETURN = 624, - SWITCH = 625, - CASE = 626, - DEFAULT = 627, - UNIFORM = 628, - SHARED = 629, - BUFFER = 630, - FLAT = 631, - SMOOTH = 632, - LAYOUT = 633, - DOUBLECONSTANT = 634, - INT16CONSTANT = 635, - UINT16CONSTANT = 636, - FLOAT16CONSTANT = 637, - INT32CONSTANT = 638, - UINT32CONSTANT = 639, - INT64CONSTANT = 640, - UINT64CONSTANT = 641, - SUBROUTINE = 642, - DEMOTE = 643, - PAYLOADNV = 644, - PAYLOADINNV = 645, - HITATTRNV = 646, - CALLDATANV = 647, - CALLDATAINNV = 648, - PAYLOADEXT = 649, - PAYLOADINEXT = 650, - HITATTREXT = 651, - CALLDATAEXT = 652, - CALLDATAINEXT = 653, - PATCH = 654, - SAMPLE = 655, - NONUNIFORM = 656, - COHERENT = 657, - VOLATILE = 658, - RESTRICT = 659, - READONLY = 660, - WRITEONLY = 661, - DEVICECOHERENT = 662, - QUEUEFAMILYCOHERENT = 663, - WORKGROUPCOHERENT = 664, - SUBGROUPCOHERENT = 665, - NONPRIVATE = 666, - SHADERCALLCOHERENT = 667, - NOPERSPECTIVE = 668, - EXPLICITINTERPAMD = 669, - PERVERTEXNV = 670, - PERPRIMITIVENV = 671, - PERVIEWNV = 672, - PERTASKNV = 673, - PRECISE = 674 + I64IMAGE1D = 510, + U64IMAGE1D = 511, + I64IMAGE2D = 512, + U64IMAGE2D = 513, + I64IMAGE3D = 514, + U64IMAGE3D = 515, + I64IMAGE2DRECT = 516, + U64IMAGE2DRECT = 517, + I64IMAGECUBE = 518, + U64IMAGECUBE = 519, + I64IMAGEBUFFER = 520, + U64IMAGEBUFFER = 521, + I64IMAGE1DARRAY = 522, + U64IMAGE1DARRAY = 523, + I64IMAGE2DARRAY = 524, + U64IMAGE2DARRAY = 525, + I64IMAGECUBEARRAY = 526, + U64IMAGECUBEARRAY = 527, + I64IMAGE2DMS = 528, + U64IMAGE2DMS = 529, + I64IMAGE2DMSARRAY = 530, + U64IMAGE2DMSARRAY = 531, + TEXTURECUBEARRAY = 532, + ITEXTURECUBEARRAY = 533, + UTEXTURECUBEARRAY = 534, + TEXTURE1D = 535, + ITEXTURE1D = 536, + UTEXTURE1D = 537, + TEXTURE1DARRAY = 538, + ITEXTURE1DARRAY = 539, + UTEXTURE1DARRAY = 540, + TEXTURE2DRECT = 541, + ITEXTURE2DRECT = 542, + UTEXTURE2DRECT = 543, + TEXTUREBUFFER = 544, + ITEXTUREBUFFER = 545, + UTEXTUREBUFFER = 546, + TEXTURE2DMS = 547, + ITEXTURE2DMS = 548, + UTEXTURE2DMS = 549, + TEXTURE2DMSARRAY = 550, + ITEXTURE2DMSARRAY = 551, + UTEXTURE2DMSARRAY = 552, + F16TEXTURE1D = 553, + F16TEXTURE2D = 554, + F16TEXTURE3D = 555, + F16TEXTURE2DRECT = 556, + F16TEXTURECUBE = 557, + F16TEXTURE1DARRAY = 558, + F16TEXTURE2DARRAY = 559, + F16TEXTURECUBEARRAY = 560, + F16TEXTUREBUFFER = 561, + F16TEXTURE2DMS = 562, + F16TEXTURE2DMSARRAY = 563, + SUBPASSINPUT = 564, + SUBPASSINPUTMS = 565, + ISUBPASSINPUT = 566, + ISUBPASSINPUTMS = 567, + USUBPASSINPUT = 568, + USUBPASSINPUTMS = 569, + F16SUBPASSINPUT = 570, + F16SUBPASSINPUTMS = 571, + LEFT_OP = 572, + RIGHT_OP = 573, + INC_OP = 574, + DEC_OP = 575, + LE_OP = 576, + GE_OP = 577, + EQ_OP = 578, + NE_OP = 579, + AND_OP = 580, + OR_OP = 581, + XOR_OP = 582, + MUL_ASSIGN = 583, + DIV_ASSIGN = 584, + ADD_ASSIGN = 585, + MOD_ASSIGN = 586, + LEFT_ASSIGN = 587, + RIGHT_ASSIGN = 588, + AND_ASSIGN = 589, + XOR_ASSIGN = 590, + OR_ASSIGN = 591, + SUB_ASSIGN = 592, + STRING_LITERAL = 593, + LEFT_PAREN = 594, + RIGHT_PAREN = 595, + LEFT_BRACKET = 596, + RIGHT_BRACKET = 597, + LEFT_BRACE = 598, + RIGHT_BRACE = 599, + DOT = 600, + COMMA = 601, + COLON = 602, + EQUAL = 603, + SEMICOLON = 604, + BANG = 605, + DASH = 606, + TILDE = 607, + PLUS = 608, + STAR = 609, + SLASH = 610, + PERCENT = 611, + LEFT_ANGLE = 612, + RIGHT_ANGLE = 613, + VERTICAL_BAR = 614, + CARET = 615, + AMPERSAND = 616, + QUESTION = 617, + INVARIANT = 618, + HIGH_PRECISION = 619, + MEDIUM_PRECISION = 620, + LOW_PRECISION = 621, + PRECISION = 622, + PACKED = 623, + RESOURCE = 624, + SUPERP = 625, + FLOATCONSTANT = 626, + INTCONSTANT = 627, + UINTCONSTANT = 628, + BOOLCONSTANT = 629, + IDENTIFIER = 630, + TYPE_NAME = 631, + CENTROID = 632, + IN = 633, + OUT = 634, + INOUT = 635, + STRUCT = 636, + VOID = 637, + WHILE = 638, + BREAK = 639, + CONTINUE = 640, + DO = 641, + ELSE = 642, + FOR = 643, + IF = 644, + DISCARD = 645, + RETURN = 646, + SWITCH = 647, + CASE = 648, + DEFAULT = 649, + UNIFORM = 650, + SHARED = 651, + BUFFER = 652, + FLAT = 653, + SMOOTH = 654, + LAYOUT = 655, + DOUBLECONSTANT = 656, + INT16CONSTANT = 657, + UINT16CONSTANT = 658, + FLOAT16CONSTANT = 659, + INT32CONSTANT = 660, + UINT32CONSTANT = 661, + INT64CONSTANT = 662, + UINT64CONSTANT = 663, + SUBROUTINE = 664, + DEMOTE = 665, + PAYLOADNV = 666, + PAYLOADINNV = 667, + HITATTRNV = 668, + CALLDATANV = 669, + CALLDATAINNV = 670, + PAYLOADEXT = 671, + PAYLOADINEXT = 672, + HITATTREXT = 673, + CALLDATAEXT = 674, + CALLDATAINEXT = 675, + PATCH = 676, + SAMPLE = 677, + NONUNIFORM = 678, + COHERENT = 679, + VOLATILE = 680, + RESTRICT = 681, + READONLY = 682, + WRITEONLY = 683, + DEVICECOHERENT = 684, + QUEUEFAMILYCOHERENT = 685, + WORKGROUPCOHERENT = 686, + SUBGROUPCOHERENT = 687, + NONPRIVATE = 688, + SHADERCALLCOHERENT = 689, + NOPERSPECTIVE = 690, + EXPLICITINTERPAMD = 691, + PERVERTEXNV = 692, + PERPRIMITIVENV = 693, + PERVIEWNV = 694, + PERTASKNV = 695, + PRECISE = 696 }; #endif @@ -584,7 +606,7 @@ union YYSTYPE glslang::TArraySizes* typeParameters; } interm; -#line 588 "MachineIndependent/glslang_tab.cpp" /* yacc.c:355 */ +#line 610 "MachineIndependent/glslang_tab.cpp" /* yacc.c:355 */ }; typedef union YYSTYPE YYSTYPE; @@ -615,7 +637,7 @@ int yyparse (glslang::TParseContext* pParseContext); extern int yylex(YYSTYPE*, TParseContext&); -#line 619 "MachineIndependent/glslang_tab.cpp" /* yacc.c:358 */ +#line 641 "MachineIndependent/glslang_tab.cpp" /* yacc.c:358 */ #ifdef short # undef short @@ -855,23 +877,23 @@ union yyalloc #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 394 +#define YYFINAL 416 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 9550 +#define YYLAST 10034 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 420 +#define YYNTOKENS 442 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 111 /* YYNRULES -- Number of rules. */ -#define YYNRULES 591 +#define YYNRULES 613 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 736 +#define YYNSTATES 758 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 674 +#define YYMAXUTOK 696 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -947,73 +969,77 @@ static const yytype_uint16 yytranslate[] = 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419 + 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 357, 357, 363, 366, 371, 374, 377, 381, 385, - 388, 392, 396, 400, 404, 408, 412, 418, 426, 429, - 432, 435, 438, 443, 451, 458, 465, 471, 475, 482, - 485, 491, 498, 508, 516, 521, 549, 558, 564, 568, - 572, 592, 593, 594, 595, 601, 602, 607, 612, 621, - 622, 627, 635, 636, 642, 651, 652, 657, 662, 667, - 675, 676, 685, 697, 698, 707, 708, 717, 718, 727, - 728, 736, 737, 745, 746, 754, 755, 755, 773, 774, - 790, 794, 798, 802, 807, 811, 815, 819, 823, 827, - 831, 838, 841, 852, 859, 864, 869, 876, 880, 884, - 888, 893, 898, 907, 907, 918, 922, 929, 936, 939, - 946, 954, 974, 997, 1012, 1037, 1048, 1058, 1068, 1078, - 1087, 1090, 1094, 1098, 1103, 1111, 1118, 1123, 1128, 1133, - 1142, 1152, 1179, 1188, 1195, 1203, 1210, 1217, 1225, 1235, - 1242, 1253, 1259, 1262, 1269, 1273, 1277, 1286, 1296, 1299, - 1310, 1313, 1316, 1320, 1324, 1329, 1333, 1340, 1344, 1349, - 1355, 1361, 1368, 1373, 1381, 1387, 1399, 1413, 1419, 1424, - 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488, 1495, 1502, - 1506, 1511, 1516, 1521, 1526, 1531, 1536, 1540, 1544, 1548, - 1552, 1558, 1569, 1576, 1579, 1588, 1593, 1603, 1608, 1616, - 1620, 1630, 1633, 1639, 1645, 1652, 1662, 1666, 1670, 1674, - 1679, 1683, 1688, 1693, 1698, 1703, 1708, 1713, 1718, 1723, - 1728, 1734, 1740, 1746, 1751, 1756, 1761, 1766, 1771, 1776, - 1781, 1786, 1791, 1796, 1801, 1807, 1814, 1819, 1824, 1829, - 1834, 1839, 1844, 1849, 1854, 1859, 1864, 1869, 1877, 1885, - 1893, 1899, 1905, 1911, 1917, 1923, 1929, 1935, 1941, 1947, - 1953, 1959, 1965, 1971, 1977, 1983, 1989, 1995, 2001, 2007, - 2013, 2019, 2025, 2031, 2037, 2043, 2049, 2055, 2061, 2067, - 2073, 2079, 2085, 2091, 2099, 2107, 2115, 2123, 2131, 2139, - 2147, 2155, 2163, 2171, 2179, 2187, 2193, 2199, 2205, 2211, - 2217, 2223, 2229, 2235, 2241, 2247, 2253, 2259, 2265, 2271, - 2277, 2283, 2289, 2295, 2301, 2307, 2313, 2319, 2325, 2331, - 2337, 2343, 2349, 2355, 2361, 2367, 2373, 2379, 2385, 2391, - 2397, 2403, 2407, 2411, 2415, 2420, 2426, 2431, 2436, 2441, - 2446, 2451, 2456, 2462, 2467, 2472, 2477, 2482, 2487, 2493, - 2499, 2505, 2511, 2517, 2523, 2529, 2535, 2541, 2547, 2553, - 2559, 2565, 2571, 2576, 2581, 2586, 2591, 2596, 2601, 2607, - 2612, 2617, 2622, 2627, 2632, 2637, 2642, 2648, 2653, 2658, - 2663, 2668, 2673, 2678, 2683, 2688, 2693, 2698, 2703, 2708, - 2713, 2718, 2724, 2729, 2734, 2740, 2746, 2751, 2756, 2761, - 2767, 2772, 2777, 2782, 2788, 2793, 2798, 2803, 2809, 2814, - 2819, 2824, 2830, 2836, 2842, 2848, 2853, 2859, 2865, 2871, - 2876, 2881, 2886, 2891, 2896, 2902, 2907, 2912, 2917, 2923, - 2928, 2933, 2938, 2944, 2949, 2954, 2959, 2965, 2970, 2975, - 2980, 2986, 2991, 2996, 3001, 3007, 3012, 3017, 3022, 3028, - 3033, 3038, 3043, 3049, 3054, 3059, 3064, 3070, 3075, 3080, - 3085, 3091, 3096, 3101, 3106, 3112, 3117, 3122, 3127, 3133, - 3138, 3143, 3148, 3154, 3159, 3164, 3169, 3175, 3180, 3185, - 3190, 3196, 3201, 3206, 3212, 3218, 3224, 3230, 3237, 3244, - 3250, 3256, 3262, 3268, 3274, 3280, 3287, 3292, 3308, 3313, - 3318, 3326, 3326, 3337, 3337, 3347, 3350, 3363, 3385, 3412, - 3416, 3422, 3427, 3438, 3442, 3448, 3459, 3462, 3469, 3473, - 3474, 3480, 3481, 3482, 3483, 3484, 3485, 3486, 3488, 3494, - 3503, 3504, 3508, 3504, 3520, 3521, 3525, 3525, 3532, 3532, - 3546, 3549, 3557, 3565, 3576, 3577, 3581, 3585, 3592, 3599, - 3603, 3611, 3615, 3628, 3632, 3639, 3639, 3659, 3662, 3668, - 3680, 3692, 3696, 3703, 3703, 3718, 3718, 3734, 3734, 3755, - 3758, 3764, 3767, 3773, 3777, 3784, 3789, 3794, 3801, 3804, - 3813, 3817, 3826, 3829, 3833, 3842, 3842, 3884, 3890, 3893, - 3898, 3901 + 0, 369, 369, 375, 378, 383, 386, 389, 393, 397, + 400, 404, 408, 412, 416, 420, 424, 430, 438, 441, + 444, 447, 450, 455, 463, 470, 477, 483, 487, 494, + 497, 503, 510, 520, 528, 533, 561, 570, 576, 580, + 584, 604, 605, 606, 607, 613, 614, 619, 624, 633, + 634, 639, 647, 648, 654, 663, 664, 669, 674, 679, + 687, 688, 697, 709, 710, 719, 720, 729, 730, 739, + 740, 748, 749, 757, 758, 766, 767, 767, 785, 786, + 802, 806, 810, 814, 819, 823, 827, 831, 835, 839, + 843, 850, 853, 864, 871, 876, 881, 888, 892, 896, + 900, 905, 910, 919, 919, 930, 934, 941, 948, 951, + 958, 966, 986, 1009, 1024, 1049, 1060, 1070, 1080, 1090, + 1099, 1102, 1106, 1110, 1115, 1123, 1130, 1135, 1140, 1145, + 1154, 1164, 1191, 1200, 1207, 1215, 1222, 1229, 1237, 1247, + 1254, 1265, 1271, 1274, 1281, 1285, 1289, 1298, 1308, 1311, + 1322, 1325, 1328, 1332, 1336, 1341, 1345, 1352, 1356, 1361, + 1367, 1373, 1380, 1385, 1393, 1399, 1411, 1425, 1431, 1436, + 1444, 1452, 1460, 1468, 1476, 1484, 1492, 1500, 1507, 1514, + 1518, 1523, 1528, 1533, 1538, 1543, 1548, 1552, 1556, 1560, + 1564, 1570, 1581, 1588, 1591, 1600, 1605, 1615, 1620, 1628, + 1632, 1642, 1645, 1651, 1657, 1664, 1674, 1678, 1682, 1686, + 1691, 1695, 1700, 1705, 1710, 1715, 1720, 1725, 1730, 1735, + 1740, 1746, 1752, 1758, 1763, 1768, 1773, 1778, 1783, 1788, + 1793, 1798, 1803, 1808, 1813, 1819, 1826, 1831, 1836, 1841, + 1846, 1851, 1856, 1861, 1866, 1871, 1876, 1881, 1889, 1897, + 1905, 1911, 1917, 1923, 1929, 1935, 1941, 1947, 1953, 1959, + 1965, 1971, 1977, 1983, 1989, 1995, 2001, 2007, 2013, 2019, + 2025, 2031, 2037, 2043, 2049, 2055, 2061, 2067, 2073, 2079, + 2085, 2091, 2097, 2103, 2111, 2119, 2127, 2135, 2143, 2151, + 2159, 2167, 2175, 2183, 2191, 2199, 2205, 2211, 2217, 2223, + 2229, 2235, 2241, 2247, 2253, 2259, 2265, 2271, 2277, 2283, + 2289, 2295, 2301, 2307, 2313, 2319, 2325, 2331, 2337, 2343, + 2349, 2355, 2361, 2367, 2373, 2379, 2385, 2391, 2397, 2403, + 2409, 2415, 2419, 2423, 2427, 2432, 2438, 2443, 2448, 2453, + 2458, 2463, 2468, 2474, 2479, 2484, 2489, 2494, 2499, 2505, + 2511, 2517, 2523, 2529, 2535, 2541, 2547, 2553, 2559, 2565, + 2571, 2577, 2583, 2588, 2593, 2598, 2603, 2608, 2613, 2619, + 2624, 2629, 2634, 2639, 2644, 2649, 2654, 2660, 2665, 2670, + 2675, 2680, 2685, 2690, 2695, 2700, 2705, 2710, 2715, 2720, + 2725, 2730, 2736, 2741, 2746, 2752, 2758, 2763, 2768, 2773, + 2779, 2784, 2789, 2794, 2800, 2805, 2810, 2815, 2821, 2826, + 2831, 2836, 2842, 2848, 2854, 2860, 2865, 2871, 2877, 2883, + 2888, 2893, 2898, 2903, 2908, 2914, 2919, 2924, 2929, 2935, + 2940, 2945, 2950, 2956, 2961, 2966, 2971, 2977, 2982, 2987, + 2992, 2998, 3003, 3008, 3013, 3019, 3024, 3029, 3034, 3040, + 3045, 3050, 3055, 3061, 3066, 3071, 3076, 3082, 3087, 3092, + 3097, 3103, 3108, 3113, 3118, 3124, 3129, 3134, 3139, 3145, + 3150, 3155, 3160, 3166, 3171, 3176, 3181, 3187, 3192, 3197, + 3202, 3208, 3213, 3218, 3223, 3228, 3233, 3238, 3243, 3248, + 3253, 3258, 3263, 3268, 3273, 3278, 3283, 3288, 3293, 3298, + 3303, 3308, 3313, 3318, 3323, 3328, 3334, 3340, 3346, 3352, + 3359, 3366, 3372, 3378, 3384, 3390, 3396, 3402, 3409, 3414, + 3430, 3435, 3440, 3448, 3448, 3459, 3459, 3469, 3472, 3485, + 3507, 3534, 3538, 3544, 3549, 3560, 3564, 3570, 3581, 3584, + 3591, 3595, 3596, 3602, 3603, 3604, 3605, 3606, 3607, 3608, + 3610, 3616, 3625, 3626, 3630, 3626, 3642, 3643, 3647, 3647, + 3654, 3654, 3668, 3671, 3679, 3687, 3698, 3699, 3703, 3707, + 3714, 3721, 3725, 3733, 3737, 3750, 3754, 3761, 3761, 3781, + 3784, 3790, 3802, 3814, 3818, 3825, 3825, 3840, 3840, 3856, + 3856, 3877, 3880, 3886, 3889, 3895, 3899, 3906, 3911, 3916, + 3923, 3926, 3935, 3939, 3948, 3951, 3955, 3964, 3964, 4006, + 4012, 4015, 4020, 4023 }; #endif @@ -1076,7 +1102,13 @@ static const char *const yytname[] = "F16IMAGE1D", "F16IMAGE2D", "F16IMAGE3D", "F16IMAGE2DRECT", "F16IMAGECUBE", "F16IMAGE1DARRAY", "F16IMAGE2DARRAY", "F16IMAGECUBEARRAY", "F16IMAGEBUFFER", "F16IMAGE2DMS", - "F16IMAGE2DMSARRAY", "TEXTURECUBEARRAY", "ITEXTURECUBEARRAY", + "F16IMAGE2DMSARRAY", "I64IMAGE1D", "U64IMAGE1D", "I64IMAGE2D", + "U64IMAGE2D", "I64IMAGE3D", "U64IMAGE3D", "I64IMAGE2DRECT", + "U64IMAGE2DRECT", "I64IMAGECUBE", "U64IMAGECUBE", "I64IMAGEBUFFER", + "U64IMAGEBUFFER", "I64IMAGE1DARRAY", "U64IMAGE1DARRAY", + "I64IMAGE2DARRAY", "U64IMAGE2DARRAY", "I64IMAGECUBEARRAY", + "U64IMAGECUBEARRAY", "I64IMAGE2DMS", "U64IMAGE2DMS", "I64IMAGE2DMSARRAY", + "U64IMAGE2DMSARRAY", "TEXTURECUBEARRAY", "ITEXTURECUBEARRAY", "UTEXTURECUBEARRAY", "TEXTURE1D", "ITEXTURE1D", "UTEXTURE1D", "TEXTURE1DARRAY", "ITEXTURE1DARRAY", "UTEXTURE1DARRAY", "TEXTURE2DRECT", "ITEXTURE2DRECT", "UTEXTURE2DRECT", "TEXTUREBUFFER", "ITEXTUREBUFFER", @@ -1199,16 +1231,19 @@ static const yytype_uint16 yytoknum[] = 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, - 665, 666, 667, 668, 669, 670, 671, 672, 673, 674 + 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, + 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, + 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, + 695, 696 }; # endif -#define YYPACT_NINF -457 +#define YYPACT_NINF -479 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-457))) + (!!((Yystate) == (-479))) -#define YYTABLE_NINF -537 +#define YYTABLE_NINF -559 #define yytable_value_is_error(Yytable_value) \ 0 @@ -1217,80 +1252,82 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - 4075, -457, -457, -457, -457, -457, -457, -457, -457, -457, - -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, - -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, - -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, - -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, - -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, - -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, - -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, - -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, - -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, - -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, - -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, - -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, - -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, - -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, - -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, - -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, - -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, - -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, - -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, - -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, - -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, - -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, - -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, - -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, - -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, - -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, - -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, - -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, - -457, -457, -457, -457, -457, -457, -457, -457, 132, -457, - -457, -457, -457, -457, -1, -457, -457, -457, -457, -457, - -457, -301, -298, -457, -457, -457, -457, -457, -457, -457, - -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, - -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, - -457, -457, -457, -457, -457, 11, -249, 17, 30, 6160, - 20, -457, 28, -457, -457, -457, -457, 4492, -457, -457, - -457, -457, 50, -457, -457, 739, -457, -457, 16, -457, - 81, -29, 69, -457, -313, -457, 111, -457, 6160, -457, - -457, -457, 6160, 103, 106, -457, -314, -457, 72, -457, - -457, 8566, 142, -457, -457, -457, 136, 6160, -457, 144, - -457, 53, -457, -457, 76, 6974, -457, -312, 1156, -457, - -457, -457, -457, 142, -309, -457, 7372, -308, -457, 119, - -457, 65, 8566, 8566, -457, 8566, -457, -457, -457, -457, - -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, - -457, -457, -457, -457, -457, 36, -457, -457, -457, 171, - 85, 8964, 173, -457, 8566, -457, -457, -323, 174, -457, - 6160, 139, 4909, -457, 6160, 8566, -457, -29, -457, 141, - -457, -457, 145, 99, 35, 26, 71, 156, 159, 161, - 196, 195, 23, 181, 7770, -457, 183, 182, -457, -457, - 186, 179, 180, -457, 191, 192, 187, 8168, 193, 8566, - 188, 189, 127, -457, -457, 96, -457, -249, 200, 201, - -457, -457, -457, -457, -457, 1573, -457, -457, -457, -457, - -457, -457, -457, -457, -457, -24, 174, 7372, 13, 7372, - -457, -457, 7372, 6160, -457, 166, -457, -457, -457, 86, - -457, -457, 8566, 168, -457, -457, 8566, 205, -457, -457, - -457, 8566, -457, 139, 142, 124, -457, -457, -457, 5326, - -457, -457, -457, -457, 8566, 8566, 8566, 8566, 8566, 8566, - 8566, 8566, 8566, 8566, 8566, 8566, 8566, 8566, 8566, 8566, - 8566, 8566, 8566, -457, -457, -457, 206, 172, -457, 1990, - -457, -457, -457, 1990, -457, 8566, -457, -457, 130, 8566, - 125, -457, -457, -457, -457, -457, -457, -457, -457, -457, - -457, -457, -457, -457, 8566, 8566, -457, -457, -457, -457, - -457, -457, -457, 7372, -457, 94, -457, 5743, -457, -457, - 207, 204, -457, -457, -457, 131, 174, 139, -457, -457, - -457, -457, -457, 145, 145, 99, 99, 35, 35, 35, - 35, 26, 26, 71, 156, 159, 161, 196, 195, 8566, - -457, 212, 60, -457, 1990, 3658, 169, 3241, 87, -457, - 89, -457, -457, -457, -457, -457, 6576, -457, -457, -457, - -457, 143, 8566, 211, 172, 210, 204, 184, 6160, 217, - 219, -457, -457, 3658, 218, -457, -457, -457, 8566, 220, - -457, -457, -457, 214, 2407, 8566, -457, 216, 223, 185, - 224, 2824, -457, 225, -457, -457, 7372, -457, -457, -457, - 97, 8566, 2407, 218, -457, -457, 1990, -457, 222, 204, - -457, -457, 1990, 229, -457, -457 + 4273, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + 132, -479, -479, -479, -479, -479, -1, -479, -479, -479, + -479, -479, -479, -323, -320, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, 11, -271, 17, + 30, 6468, 20, -479, 28, -479, -479, -479, -479, 4712, + -479, -479, -479, -479, 50, -479, -479, 761, -479, -479, + 16, -479, 81, -29, 69, -479, -335, -479, 111, -479, + 6468, -479, -479, -479, 6468, 103, 106, -479, -336, -479, + 72, -479, -479, 9006, 142, -479, -479, -479, 136, 6468, + -479, 144, -479, 53, -479, -479, 76, 7326, -479, -334, + 1200, -479, -479, -479, -479, 142, -331, -479, 7746, -330, + -479, 119, -479, 65, 9006, 9006, -479, 9006, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, -479, 36, -479, -479, + -479, 171, 85, 9426, 173, -479, 9006, -479, -479, -345, + 174, -479, 6468, 139, 5151, -479, 6468, 9006, -479, -29, + -479, 141, -479, -479, 145, 99, 35, 26, 71, 156, + 159, 161, 196, 195, 23, 181, 8166, -479, 183, 182, + -479, -479, 186, 179, 180, -479, 191, 192, 187, 8586, + 193, 9006, 188, 189, 127, -479, -479, 96, -479, -271, + 200, 201, -479, -479, -479, -479, -479, 1639, -479, -479, + -479, -479, -479, -479, -479, -479, -479, -24, 174, 7746, + 13, 7746, -479, -479, 7746, 6468, -479, 166, -479, -479, + -479, 86, -479, -479, 9006, 168, -479, -479, 9006, 205, + -479, -479, -479, 9006, -479, 139, 142, 124, -479, -479, + -479, 5590, -479, -479, -479, -479, 9006, 9006, 9006, 9006, + 9006, 9006, 9006, 9006, 9006, 9006, 9006, 9006, 9006, 9006, + 9006, 9006, 9006, 9006, 9006, -479, -479, -479, 206, 172, + -479, 2078, -479, -479, -479, 2078, -479, 9006, -479, -479, + 130, 9006, 125, -479, -479, -479, -479, -479, -479, -479, + -479, -479, -479, -479, -479, -479, 9006, 9006, -479, -479, + -479, -479, -479, -479, -479, 7746, -479, 94, -479, 6029, + -479, -479, 207, 204, -479, -479, -479, 131, 174, 139, + -479, -479, -479, -479, -479, 145, 145, 99, 99, 35, + 35, 35, 35, 26, 26, 71, 156, 159, 161, 196, + 195, 9006, -479, 212, 60, -479, 2078, 3834, 169, 3395, + 87, -479, 89, -479, -479, -479, -479, -479, 6906, -479, + -479, -479, -479, 143, 9006, 211, 172, 210, 204, 184, + 6468, 217, 219, -479, -479, 3834, 218, -479, -479, -479, + 9006, 220, -479, -479, -479, 214, 2517, 9006, -479, 216, + 223, 185, 224, 2956, -479, 225, -479, -479, 7746, -479, + -479, -479, 97, 9006, 2517, 218, -479, -479, 2078, -479, + 222, 204, -479, -479, 2078, 229, -479, -479 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1314,98 +1351,100 @@ static const yytype_uint16 yydefact[] = 298, 299, 300, 301, 302, 303, 304, 305, 306, 310, 311, 312, 313, 314, 315, 316, 317, 318, 322, 323, 324, 325, 326, 327, 328, 329, 330, 334, 331, 332, - 333, 493, 494, 495, 346, 347, 370, 373, 335, 344, + 333, 515, 516, 517, 346, 347, 370, 373, 335, 344, 345, 361, 343, 392, 393, 396, 397, 398, 400, 401, - 402, 404, 405, 406, 408, 409, 483, 484, 369, 371, + 402, 404, 405, 406, 408, 409, 505, 506, 369, 371, 372, 348, 349, 350, 394, 351, 355, 356, 359, 399, 403, 407, 352, 353, 357, 358, 395, 354, 360, 439, 441, 442, 443, 445, 446, 447, 449, 450, 451, 453, 454, 455, 457, 458, 459, 461, 462, 463, 465, 466, 467, 469, 470, 471, 473, 474, 475, 477, 478, 479, 481, 482, 440, 444, 448, 452, 456, 464, 468, 472, - 460, 476, 480, 374, 375, 376, 410, 419, 421, 415, - 420, 422, 423, 425, 426, 427, 429, 430, 431, 433, - 434, 435, 437, 438, 411, 412, 413, 424, 414, 416, - 417, 418, 428, 432, 436, 485, 486, 489, 490, 491, - 492, 487, 488, 584, 132, 498, 499, 500, 0, 497, - 161, 159, 160, 158, 0, 206, 162, 163, 164, 134, - 133, 0, 190, 171, 173, 169, 175, 177, 172, 174, - 170, 176, 178, 167, 168, 192, 179, 186, 187, 188, - 189, 180, 181, 182, 183, 184, 185, 135, 136, 137, - 138, 139, 140, 147, 583, 0, 585, 0, 109, 108, - 0, 120, 125, 154, 153, 151, 155, 0, 148, 150, - 156, 130, 202, 152, 496, 0, 580, 582, 0, 503, - 0, 0, 0, 97, 0, 94, 0, 107, 0, 116, - 110, 118, 0, 119, 0, 95, 126, 100, 0, 149, - 131, 0, 195, 201, 1, 581, 0, 0, 501, 144, - 146, 0, 142, 193, 0, 0, 98, 0, 0, 586, - 111, 115, 117, 113, 121, 112, 0, 127, 103, 0, - 101, 0, 0, 0, 9, 0, 43, 42, 44, 41, - 5, 6, 7, 8, 2, 16, 14, 15, 17, 10, - 11, 12, 13, 3, 18, 37, 20, 25, 26, 0, - 0, 30, 0, 204, 0, 36, 34, 0, 196, 96, - 0, 0, 0, 505, 0, 0, 141, 0, 191, 0, - 197, 45, 49, 52, 55, 60, 63, 65, 67, 69, - 71, 73, 75, 0, 0, 99, 0, 531, 540, 544, - 0, 0, 0, 565, 0, 0, 0, 0, 0, 0, - 0, 0, 45, 78, 91, 0, 518, 0, 156, 130, - 521, 542, 520, 528, 519, 0, 522, 523, 546, 524, - 553, 525, 526, 561, 527, 0, 114, 0, 122, 0, - 513, 129, 0, 0, 105, 0, 102, 38, 39, 0, - 22, 23, 0, 0, 28, 27, 0, 206, 31, 33, - 40, 0, 203, 0, 511, 0, 509, 504, 506, 0, - 93, 145, 143, 194, 0, 0, 0, 0, 0, 0, + 460, 476, 480, 483, 484, 485, 486, 487, 488, 489, + 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, + 500, 501, 502, 503, 504, 374, 375, 376, 410, 419, + 421, 415, 420, 422, 423, 425, 426, 427, 429, 430, + 431, 433, 434, 435, 437, 438, 411, 412, 413, 424, + 414, 416, 417, 418, 428, 432, 436, 507, 508, 511, + 512, 513, 514, 509, 510, 606, 132, 520, 521, 522, + 0, 519, 161, 159, 160, 158, 0, 206, 162, 163, + 164, 134, 133, 0, 190, 171, 173, 169, 175, 177, + 172, 174, 170, 176, 178, 167, 168, 192, 179, 186, + 187, 188, 189, 180, 181, 182, 183, 184, 185, 135, + 136, 137, 138, 139, 140, 147, 605, 0, 607, 0, + 109, 108, 0, 120, 125, 154, 153, 151, 155, 0, + 148, 150, 156, 130, 202, 152, 518, 0, 602, 604, + 0, 525, 0, 0, 0, 97, 0, 94, 0, 107, + 0, 116, 110, 118, 0, 119, 0, 95, 126, 100, + 0, 149, 131, 0, 195, 201, 1, 603, 0, 0, + 523, 144, 146, 0, 142, 193, 0, 0, 98, 0, + 0, 608, 111, 115, 117, 113, 121, 112, 0, 127, + 103, 0, 101, 0, 0, 0, 9, 0, 43, 42, + 44, 41, 5, 6, 7, 8, 2, 16, 14, 15, + 17, 10, 11, 12, 13, 3, 18, 37, 20, 25, + 26, 0, 0, 30, 0, 204, 0, 36, 34, 0, + 196, 96, 0, 0, 0, 527, 0, 0, 141, 0, + 191, 0, 197, 45, 49, 52, 55, 60, 63, 65, + 67, 69, 71, 73, 75, 0, 0, 99, 0, 553, + 562, 566, 0, 0, 0, 587, 0, 0, 0, 0, + 0, 0, 0, 0, 45, 78, 91, 0, 540, 0, + 156, 130, 543, 564, 542, 550, 541, 0, 544, 545, + 568, 546, 575, 547, 548, 583, 549, 0, 114, 0, + 122, 0, 535, 129, 0, 0, 105, 0, 102, 38, + 39, 0, 22, 23, 0, 0, 28, 27, 0, 206, + 31, 33, 40, 0, 203, 0, 533, 0, 531, 526, + 528, 0, 93, 145, 143, 194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 76, 198, 199, 0, 0, 530, 0, - 563, 576, 575, 0, 567, 0, 579, 577, 0, 0, - 0, 560, 529, 81, 82, 84, 83, 86, 87, 88, - 89, 90, 85, 80, 0, 0, 545, 541, 543, 547, - 554, 562, 124, 0, 516, 0, 128, 0, 106, 4, - 0, 24, 21, 32, 205, 0, 512, 0, 507, 502, - 46, 47, 48, 51, 50, 53, 54, 58, 59, 56, - 57, 61, 62, 64, 66, 68, 70, 72, 74, 0, - 200, 590, 0, 588, 532, 0, 0, 0, 0, 578, - 0, 559, 79, 92, 123, 514, 0, 104, 19, 508, - 510, 0, 0, 0, 0, 0, 551, 0, 0, 0, - 0, 570, 569, 572, 538, 555, 515, 517, 0, 0, - 587, 589, 533, 0, 0, 0, 571, 0, 0, 550, - 0, 0, 548, 0, 77, 591, 0, 535, 564, 534, - 0, 573, 0, 538, 537, 539, 557, 552, 0, 574, - 568, 549, 558, 0, 566, 556 + 0, 0, 0, 0, 0, 76, 198, 199, 0, 0, + 552, 0, 585, 598, 597, 0, 589, 0, 601, 599, + 0, 0, 0, 582, 551, 81, 82, 84, 83, 86, + 87, 88, 89, 90, 85, 80, 0, 0, 567, 563, + 565, 569, 576, 584, 124, 0, 538, 0, 128, 0, + 106, 4, 0, 24, 21, 32, 205, 0, 534, 0, + 529, 524, 46, 47, 48, 51, 50, 53, 54, 58, + 59, 56, 57, 61, 62, 64, 66, 68, 70, 72, + 74, 0, 200, 612, 0, 610, 554, 0, 0, 0, + 0, 600, 0, 581, 79, 92, 123, 536, 0, 104, + 19, 530, 532, 0, 0, 0, 0, 0, 573, 0, + 0, 0, 0, 592, 591, 594, 560, 577, 537, 539, + 0, 0, 609, 611, 555, 0, 0, 0, 593, 0, + 0, 572, 0, 0, 570, 0, 77, 613, 0, 557, + 586, 556, 0, 595, 0, 560, 559, 561, 579, 574, + 0, 596, 590, 571, 580, 0, 588, 578 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -457, -457, -457, -457, -457, -457, -457, -457, -457, -457, - -457, -457, 8868, -457, -87, -84, -127, -93, -33, -31, - -27, -25, -28, -26, -457, -86, -457, -103, -457, -111, - -125, 2, -457, -457, -457, 4, -457, -457, -457, 176, - 194, 178, -457, -457, -337, -457, -457, -457, -457, 95, - -457, -37, -46, -457, 9, -457, 0, -63, -457, -457, - -457, -457, 263, -457, -457, -457, -456, -140, 10, -73, - -211, -457, -102, -198, -321, -457, -144, -457, -457, -155, - -154, -457, -457, 198, -274, -97, -457, 46, -457, -118, - -457, 51, -457, -457, -457, -457, 52, -457, -457, -457, - -457, -457, -457, -457, -457, 213, -457, -457, -457, -457, + -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, + -479, -479, 9330, -479, -87, -84, -127, -93, -33, -31, + -27, -25, -28, -26, -479, -86, -479, -103, -479, -111, + -125, 2, -479, -479, -479, 4, -479, -479, -479, 176, + 194, 178, -479, -479, -337, -479, -479, -479, -479, 95, + -479, -37, -46, -479, 9, -479, 0, -63, -479, -479, + -479, -479, 263, -479, -479, -479, -478, -140, 10, -73, + -211, -479, -102, -198, -321, -479, -144, -479, -479, -155, + -154, -479, -479, 198, -274, -97, -479, 46, -479, -118, + -479, 51, -479, -479, -479, -479, 52, -479, -479, -479, + -479, -479, -479, -479, -479, 213, -479, -479, -479, -479, -105 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 443, 444, 445, 630, 446, 447, 448, 449, 450, - 451, 452, 502, 454, 472, 473, 474, 475, 476, 477, - 478, 479, 480, 481, 482, 503, 659, 504, 614, 505, - 561, 506, 345, 533, 421, 507, 347, 348, 349, 379, - 380, 381, 350, 351, 352, 353, 354, 355, 401, 402, - 356, 357, 358, 359, 455, 404, 456, 407, 392, 393, - 457, 362, 363, 364, 464, 397, 462, 463, 555, 556, - 531, 625, 510, 511, 512, 513, 514, 589, 685, 718, - 709, 710, 711, 719, 515, 516, 517, 518, 712, 689, - 519, 520, 713, 733, 521, 522, 523, 665, 593, 667, - 693, 707, 708, 524, 365, 366, 367, 376, 525, 662, - 663 + -1, 465, 466, 467, 652, 468, 469, 470, 471, 472, + 473, 474, 524, 476, 494, 495, 496, 497, 498, 499, + 500, 501, 502, 503, 504, 525, 681, 526, 636, 527, + 583, 528, 367, 555, 443, 529, 369, 370, 371, 401, + 402, 403, 372, 373, 374, 375, 376, 377, 423, 424, + 378, 379, 380, 381, 477, 426, 478, 429, 414, 415, + 479, 384, 385, 386, 486, 419, 484, 485, 577, 578, + 553, 647, 532, 533, 534, 535, 536, 611, 707, 740, + 731, 732, 733, 741, 537, 538, 539, 540, 734, 711, + 541, 542, 735, 755, 543, 544, 545, 687, 615, 689, + 715, 729, 730, 546, 387, 388, 389, 398, 547, 684, + 685 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1413,14 +1452,14 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 361, 551, 344, 415, 346, 405, 405, 484, 559, 360, - 405, 484, 416, 552, 406, 485, 371, 527, 532, 372, + 383, 573, 366, 437, 368, 427, 427, 506, 581, 382, + 427, 506, 438, 574, 428, 507, 393, 549, 554, 394, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 627, 375, 61, + 52, 53, 54, 55, 56, 57, 58, 649, 397, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, @@ -1444,175 +1483,96 @@ static const yytype_int16 yytable[] = 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 389, 382, 530, 539, 664, 622, 618, 624, 483, - 369, 626, 558, 417, 399, 571, 572, 582, 687, 458, - 569, 570, 484, 540, 541, 377, 389, 490, 373, 623, - 493, 382, 494, 495, 384, 400, 498, 385, 548, 383, - 526, 528, 370, -35, 378, 542, 687, 390, 360, 543, - 460, 573, 574, 583, 374, 361, 360, 344, 396, 346, - 299, 466, 575, 576, 360, 304, 305, 467, 383, 560, - 683, 386, 383, 717, 684, 391, 598, 360, 600, 535, - 725, 360, 536, 418, 468, 666, 419, 461, 586, 420, - 469, 717, 398, 545, 629, 694, 360, 695, 509, 546, - 615, 615, 674, 615, 389, 728, 675, 508, 676, 558, - 615, 615, 403, 616, 530, 460, 530, 460, 567, 530, - 568, 631, 408, 603, 604, 605, 606, 607, 608, 609, - 610, 611, 612, 633, 647, 648, 649, 650, 637, 615, - 671, 638, 732, 613, 615, 637, 413, 669, 679, 414, - 553, 405, 461, 459, 461, 697, 618, 615, 698, 360, - 465, 360, 534, 360, 295, 296, 297, 564, 565, 566, - 643, 644, 651, 652, 668, 645, 646, 558, 670, 544, - 549, 636, 554, 484, 563, 577, 460, 578, 579, 580, - 581, 584, 587, 590, 588, 727, 591, 592, 594, 595, - 599, 672, 673, 601, 596, 509, 602, -36, -34, 628, - 530, 632, 460, -29, 508, 661, 660, 678, 615, 682, - 690, 700, 702, 461, 618, 704, 705, 703, 715, -536, - 716, 722, 360, 721, 653, 487, 726, 654, 681, 734, - 723, 735, 655, 657, 686, 656, 658, 699, 411, 461, - 412, 368, 562, 635, 680, 691, 724, 730, 360, 731, - 692, 619, 410, 530, 409, 706, 620, 621, 395, 701, - 0, 0, 686, 0, 0, 0, 0, 0, 0, 509, - 460, 0, 0, 509, 720, 714, 560, 0, 508, 0, - 0, 0, 508, 0, 0, 0, 0, 0, 0, 0, - 729, 0, 0, 530, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 461, 688, 0, - 0, 0, 0, 0, 0, 0, 360, 0, 0, 0, - 0, 0, 389, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 688, 0, 0, 0, - 0, 0, 0, 0, 509, 509, 0, 509, 0, 0, - 0, 0, 0, 508, 508, 0, 508, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 390, 0, - 0, 0, 0, 509, 0, 0, 0, 360, 0, 0, - 0, 0, 508, 0, 509, 0, 0, 0, 0, 0, - 0, 509, 0, 508, 0, 0, 0, 0, 0, 0, - 508, 0, 509, 0, 0, 0, 509, 0, 0, 0, - 0, 508, 509, 0, 0, 508, 0, 0, 0, 394, - 0, 508, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 0, 0, 0, 0, 0, 0, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 411, 404, 552, 561, 686, 644, 640, + 646, 505, 391, 648, 580, 439, 421, 593, 594, 604, + 709, 480, 591, 592, 506, 562, 563, 399, 411, 512, + 395, 645, 515, 404, 516, 517, 406, 422, 520, 407, + 570, 405, 548, 550, 392, -35, 400, 564, 709, 412, + 382, 565, 482, 595, 596, 605, 396, 383, 382, 366, + 418, 368, 321, 488, 597, 598, 382, 326, 327, 489, + 405, 582, 705, 408, 405, 739, 706, 413, 620, 382, + 622, 557, 747, 382, 558, 440, 490, 688, 441, 483, + 608, 442, 491, 739, 420, 567, 651, 716, 382, 717, + 531, 568, 637, 637, 696, 637, 411, 750, 697, 530, + 698, 580, 637, 637, 425, 638, 552, 482, 552, 482, + 589, 552, 590, 653, 430, 625, 626, 627, 628, 629, + 630, 631, 632, 633, 634, 655, 669, 670, 671, 672, + 659, 637, 693, 660, 754, 635, 637, 659, 435, 691, + 701, 436, 575, 427, 483, 481, 483, 719, 640, 637, + 720, 382, 487, 382, 556, 382, 317, 318, 319, 586, + 587, 588, 665, 666, 673, 674, 690, 667, 668, 580, + 692, 566, 571, 658, 576, 506, 585, 599, 482, 600, + 601, 602, 603, 606, 609, 612, 610, 749, 613, 614, + 616, 617, 621, 694, 695, 623, 618, 531, 624, -36, + -34, 650, 552, 654, 482, -29, 530, 683, 682, 700, + 637, 704, 712, 722, 724, 483, 640, 726, 727, 725, + 737, -558, 738, 744, 382, 743, 675, 509, 748, 676, + 703, 756, 745, 757, 677, 679, 708, 678, 680, 721, + 433, 483, 434, 390, 584, 657, 702, 713, 746, 752, + 382, 753, 714, 641, 432, 552, 431, 728, 642, 643, + 417, 723, 0, 0, 708, 0, 0, 0, 0, 0, + 0, 531, 482, 0, 0, 531, 742, 736, 582, 0, + 530, 0, 0, 0, 530, 0, 0, 0, 0, 0, + 0, 0, 751, 0, 0, 552, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 483, + 710, 0, 0, 0, 0, 0, 0, 0, 382, 0, + 0, 0, 0, 0, 411, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 710, 0, + 0, 0, 0, 0, 0, 0, 531, 531, 0, 531, + 0, 0, 0, 0, 0, 530, 530, 0, 530, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 412, 0, 0, 0, 0, 531, 0, 0, 0, 382, + 0, 0, 0, 0, 530, 0, 531, 0, 0, 0, + 0, 0, 0, 531, 0, 530, 0, 0, 0, 0, + 0, 0, 530, 0, 531, 0, 0, 0, 531, 0, + 0, 0, 0, 530, 531, 0, 0, 530, 0, 0, + 0, 416, 0, 530, 1, 2, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 293, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 294, 295, 296, 297, 298, 0, 0, 0, 0, 0, - 0, 0, 0, 299, 300, 301, 302, 303, 304, 305, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 306, 307, 308, 309, 310, 311, 0, 0, - 0, 0, 0, 0, 0, 0, 312, 0, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, 343, 1, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 0, 0, 422, 423, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 424, 425, 0, 486, 0, 487, 488, 0, - 0, 0, 0, 489, 426, 427, 428, 429, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 294, 295, 296, - 297, 298, 0, 0, 0, 430, 431, 432, 433, 434, - 299, 300, 301, 302, 303, 304, 305, 490, 491, 492, - 493, 0, 494, 495, 496, 497, 498, 499, 500, 306, - 307, 308, 309, 310, 311, 435, 436, 437, 438, 439, - 440, 441, 442, 312, 501, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 0, 0, - 422, 423, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 424, - 425, 0, 486, 0, 487, 617, 0, 0, 0, 0, - 489, 426, 427, 428, 429, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 294, 295, 296, 297, 298, 0, - 0, 0, 430, 431, 432, 433, 434, 299, 300, 301, - 302, 303, 304, 305, 490, 491, 492, 493, 0, 494, - 495, 496, 497, 498, 499, 500, 306, 307, 308, 309, - 310, 311, 435, 436, 437, 438, 439, 440, 441, 442, - 312, 501, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, 343, 1, 2, 3, 4, 5, 6, 7, + 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 316, 317, 318, 319, 320, 0, + 0, 0, 0, 0, 0, 0, 0, 321, 322, 323, + 324, 325, 326, 327, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 328, 329, 330, 331, + 332, 333, 0, 0, 0, 0, 0, 0, 0, 0, + 334, 0, 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, 361, 362, + 363, 364, 365, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, @@ -1641,19 +1601,109 @@ static const yytype_int16 yytable[] = 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 0, 0, 422, 423, 0, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 0, 0, 444, + 445, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 446, 447, + 0, 508, 0, 509, 510, 0, 0, 0, 0, 511, + 448, 449, 450, 451, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 316, 317, 318, 319, 320, 0, 0, + 0, 452, 453, 454, 455, 456, 321, 322, 323, 324, + 325, 326, 327, 512, 513, 514, 515, 0, 516, 517, + 518, 519, 520, 521, 522, 328, 329, 330, 331, 332, + 333, 457, 458, 459, 460, 461, 462, 463, 464, 334, + 523, 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, 361, 362, 363, + 364, 365, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 0, 0, 444, 445, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 424, 425, 0, 486, - 0, 487, 0, 0, 0, 0, 0, 489, 426, 427, - 428, 429, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 294, 295, 296, 297, 298, 0, 0, 0, 430, - 431, 432, 433, 434, 299, 300, 301, 302, 303, 304, - 305, 490, 491, 492, 493, 0, 494, 495, 496, 497, - 498, 499, 500, 306, 307, 308, 309, 310, 311, 435, - 436, 437, 438, 439, 440, 441, 442, 312, 501, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, - 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, + 0, 0, 0, 0, 0, 0, 0, 446, 447, 0, + 508, 0, 509, 639, 0, 0, 0, 0, 511, 448, + 449, 450, 451, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 316, 317, 318, 319, 320, 0, 0, 0, + 452, 453, 454, 455, 456, 321, 322, 323, 324, 325, + 326, 327, 512, 513, 514, 515, 0, 516, 517, 518, + 519, 520, 521, 522, 328, 329, 330, 331, 332, 333, + 457, 458, 459, 460, 461, 462, 463, 464, 334, 523, + 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, 361, 362, 363, 364, + 365, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 0, 0, 444, 445, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 446, 447, 0, 508, + 0, 509, 0, 0, 0, 0, 0, 511, 448, 449, + 450, 451, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 316, 317, 318, 319, 320, 0, 0, 0, 452, + 453, 454, 455, 456, 321, 322, 323, 324, 325, 326, + 327, 512, 513, 514, 515, 0, 516, 517, 518, 519, + 520, 521, 522, 328, 329, 330, 331, 332, 333, 457, + 458, 459, 460, 461, 462, 463, 464, 334, 523, 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, 361, 362, 363, 364, 365, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, @@ -1683,269 +1733,21 @@ static const yytype_int16 yytable[] = 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 0, 0, 422, 423, 0, 0, 0, 0, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 0, 0, 444, 445, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 424, 425, 0, 486, 0, 408, 0, - 0, 0, 0, 0, 489, 426, 427, 428, 429, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 294, 295, - 296, 297, 298, 0, 0, 0, 430, 431, 432, 433, - 434, 299, 300, 301, 302, 303, 304, 305, 490, 491, - 492, 493, 0, 494, 495, 496, 497, 498, 499, 500, - 306, 307, 308, 309, 310, 311, 435, 436, 437, 438, - 439, 440, 441, 442, 312, 501, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, 343, 1, 2, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 0, - 0, 422, 423, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 424, 425, 0, 486, 0, 0, 0, 0, 0, 0, - 0, 489, 426, 427, 428, 429, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 294, 295, 296, 297, 298, - 0, 0, 0, 430, 431, 432, 433, 434, 299, 300, - 301, 302, 303, 304, 305, 490, 491, 492, 493, 0, - 494, 495, 496, 497, 498, 499, 500, 306, 307, 308, - 309, 310, 311, 435, 436, 437, 438, 439, 440, 441, - 442, 312, 501, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - 340, 341, 342, 343, 1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 0, 0, 422, 423, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 424, 425, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 489, 426, - 427, 428, 429, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 294, 295, 296, 297, 298, 0, 0, 0, - 430, 431, 432, 433, 434, 299, 300, 301, 302, 303, - 304, 305, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 306, 307, 308, 309, 310, 311, - 435, 436, 437, 438, 439, 440, 441, 442, 312, 0, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 1, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 0, 0, 422, 423, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 424, 425, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 426, 427, 428, 429, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 294, - 295, 296, 297, 0, 0, 0, 0, 430, 431, 432, - 433, 434, 299, 300, 301, 302, 303, 304, 305, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 306, 307, 308, 309, 310, 311, 435, 436, 437, - 438, 439, 440, 441, 442, 312, 0, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, - 336, 337, 338, 339, 340, 341, 342, 343, 1, 2, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 293, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 294, 295, 296, 297, - 298, 0, 0, 0, 0, 0, 0, 0, 0, 299, - 300, 301, 302, 303, 304, 305, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 306, 307, - 308, 309, 310, 311, 0, 0, 0, 0, 0, 0, - 0, 0, 312, 0, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, 343, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 387, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 294, 295, 296, 297, 0, 0, 0, - 0, 0, 0, 0, 0, 388, 299, 300, 301, 302, - 303, 304, 305, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 306, 307, 308, 309, 310, - 311, 0, 0, 0, 0, 0, 0, 0, 0, 312, - 0, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 343, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 294, 295, 296, 297, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 299, 300, 301, 302, 303, 304, 305, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 306, 307, 308, 309, 310, 311, 0, 0, - 0, 0, 0, 0, 0, 0, 312, 0, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, 343, 1, + 0, 0, 0, 0, 0, 446, 447, 0, 508, 0, + 430, 0, 0, 0, 0, 0, 511, 448, 449, 450, + 451, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 316, 317, 318, 319, 320, 0, 0, 0, 452, 453, + 454, 455, 456, 321, 322, 323, 324, 325, 326, 327, + 512, 513, 514, 515, 0, 516, 517, 518, 519, 520, + 521, 522, 328, 329, 330, 331, 332, 333, 457, 458, + 459, 460, 461, 462, 463, 464, 334, 523, 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, 361, 362, 363, 364, 365, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, @@ -1975,645 +1777,21 @@ static const yytype_int16 yytable[] = 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 0, 0, 444, 445, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 639, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 294, 295, 296, - 297, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 299, 300, 301, 302, 303, 304, 305, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 306, - 307, 308, 309, 310, 311, 0, 0, 0, 0, 0, - 0, 0, 0, 312, 0, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 677, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 294, 295, 296, 297, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 299, 300, 301, - 302, 303, 304, 305, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 306, 307, 308, 309, - 310, 311, 0, 0, 0, 0, 0, 0, 0, 0, - 312, 0, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, 343, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 294, 295, 296, 297, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 299, 300, 301, 302, 303, 304, - 305, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 306, 307, 308, 309, 310, 311, 0, - 0, 0, 0, 0, 0, 0, 0, 312, 0, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, - 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 0, 0, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 0, 0, 422, 423, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 424, 425, 0, 0, 0, 529, 696, 0, - 0, 0, 0, 0, 426, 427, 428, 429, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 430, 431, 432, 433, 434, - 299, 0, 0, 0, 0, 304, 305, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 435, 436, 437, 438, 439, - 440, 441, 442, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 325, 2, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 0, 0, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 0, - 0, 422, 423, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 424, 425, 0, 0, 470, 0, 0, 0, 0, 0, - 0, 0, 426, 427, 428, 429, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 430, 431, 432, 433, 434, 299, 0, - 0, 0, 0, 304, 305, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 325, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 0, 0, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 0, 0, 422, - 423, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 424, 425, - 0, 0, 0, 529, 0, 0, 0, 0, 0, 0, - 426, 427, 428, 429, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 430, 431, 432, 433, 434, 299, 0, 0, 0, - 0, 304, 305, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 435, 436, 437, 438, 439, 440, 441, 442, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 325, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 0, 0, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 0, 0, 422, 423, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 424, 425, 0, 0, - 585, 0, 0, 0, 0, 0, 0, 0, 426, 427, - 428, 429, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 430, - 431, 432, 433, 434, 299, 0, 0, 0, 0, 304, - 305, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 435, - 436, 437, 438, 439, 440, 441, 442, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 325, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, - 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 0, 0, 422, 423, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 424, 425, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 597, 426, 427, 428, 429, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 430, 431, 432, - 433, 434, 299, 0, 0, 0, 0, 304, 305, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 435, 436, 437, - 438, 439, 440, 441, 442, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 325, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 0, 0, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 0, 0, 422, 423, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 424, 425, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 426, 427, 428, 429, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 430, 431, 432, 433, 434, - 299, 0, 0, 0, 0, 304, 305, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 435, 436, 437, 438, 439, - 440, 441, 442, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 325, 2, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 0, 0, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 453, - 0, 422, 423, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 471, 0, 0, 0, 0, 0, 0, - 424, 425, 0, 0, 0, 0, 0, 0, 0, 0, - 537, 538, 426, 427, 428, 429, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 430, 431, 432, 433, 434, 299, 0, - 0, 0, 550, 304, 547, 0, 0, 0, 0, 0, - 0, 0, 0, 471, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 435, 436, 437, 438, 439, 440, 441, - 442, 0, 471, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 325, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 634, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 640, 641, 642, 471, 471, 471, 471, 471, - 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, - 471, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 471 -}; - -static const yytype_int16 yycheck[] = -{ - 0, 324, 0, 317, 0, 319, 319, 319, 464, 0, - 319, 319, 326, 336, 327, 327, 317, 326, 326, 317, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 533, 327, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 357, 349, 416, 425, 589, 527, 515, 529, 405, - 321, 532, 462, 386, 353, 299, 300, 304, 665, 392, - 295, 296, 319, 297, 298, 318, 382, 361, 327, 326, - 364, 378, 366, 367, 324, 374, 370, 327, 451, 349, - 413, 414, 353, 317, 324, 319, 693, 357, 349, 323, - 397, 335, 336, 340, 353, 365, 357, 365, 368, 365, - 354, 318, 301, 302, 365, 359, 360, 324, 378, 465, - 320, 353, 382, 704, 324, 335, 497, 378, 499, 324, - 711, 382, 327, 321, 318, 593, 324, 397, 484, 327, - 324, 722, 321, 318, 318, 318, 397, 318, 408, 324, - 324, 324, 623, 324, 460, 318, 322, 408, 324, 559, - 324, 324, 353, 327, 527, 462, 529, 464, 329, 532, - 331, 542, 321, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 546, 571, 572, 573, 574, 324, 324, - 325, 327, 726, 326, 324, 324, 353, 327, 327, 353, - 460, 319, 462, 327, 464, 676, 664, 324, 325, 460, - 326, 462, 353, 464, 342, 343, 344, 332, 333, 334, - 567, 568, 575, 576, 595, 569, 570, 627, 599, 318, - 317, 554, 353, 319, 353, 339, 533, 338, 337, 303, - 305, 320, 319, 317, 322, 716, 327, 327, 317, 317, - 317, 614, 615, 325, 327, 515, 327, 317, 317, 353, - 623, 353, 559, 318, 515, 353, 320, 320, 324, 317, - 361, 320, 322, 533, 732, 318, 317, 353, 318, 321, - 326, 318, 533, 327, 577, 321, 321, 578, 659, 327, - 365, 322, 579, 581, 665, 580, 582, 682, 382, 559, - 382, 298, 467, 553, 637, 667, 710, 722, 559, 723, - 667, 525, 378, 676, 376, 693, 525, 525, 365, 684, - -1, -1, 693, -1, -1, -1, -1, -1, -1, 589, - 627, -1, -1, 593, 705, 698, 682, -1, 589, -1, - -1, -1, 593, -1, -1, -1, -1, -1, -1, -1, - 721, -1, -1, 716, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 627, 665, -1, - -1, -1, -1, -1, -1, -1, 627, -1, -1, -1, - -1, -1, 688, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 693, -1, -1, -1, - -1, -1, -1, -1, 664, 665, -1, 667, -1, -1, - -1, -1, -1, 664, 665, -1, 667, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 688, -1, - -1, -1, -1, 693, -1, -1, -1, 688, -1, -1, - -1, -1, 693, -1, 704, -1, -1, -1, -1, -1, - -1, 711, -1, 704, -1, -1, -1, -1, -1, -1, - 711, -1, 722, -1, -1, -1, 726, -1, -1, -1, - -1, 722, 732, -1, -1, 726, -1, -1, -1, 0, - -1, 732, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 327, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 341, 342, 343, 344, 345, -1, -1, -1, -1, -1, - -1, -1, -1, 354, 355, 356, 357, 358, 359, 360, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 373, 374, 375, 376, 377, 378, -1, -1, - -1, -1, -1, -1, -1, -1, 387, -1, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, -1, -1, 297, 298, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 316, 317, -1, 319, -1, 321, 322, -1, - -1, -1, -1, 327, 328, 329, 330, 331, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 341, 342, 343, - 344, 345, -1, -1, -1, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, -1, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, - 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, -1, -1, - 297, 298, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 316, - 317, -1, 319, -1, 321, 322, -1, -1, -1, -1, - 327, 328, 329, 330, 331, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 341, 342, 343, 344, 345, -1, - -1, -1, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, -1, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, -1, -1, 297, 298, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 316, 317, -1, 319, - -1, 321, -1, -1, -1, -1, -1, 327, 328, 329, - 330, 331, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 341, 342, 343, 344, 345, -1, -1, -1, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, -1, 366, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 0, 0, 0, 0, 446, 447, 0, 508, 0, 0, + 0, 0, 0, 0, 0, 511, 448, 449, 450, 451, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 316, + 317, 318, 319, 320, 0, 0, 0, 452, 453, 454, + 455, 456, 321, 322, 323, 324, 325, 326, 327, 512, + 513, 514, 515, 0, 516, 517, 518, 519, 520, 521, + 522, 328, 329, 330, 331, 332, 333, 457, 458, 459, + 460, 461, 462, 463, 464, 334, 523, 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, 361, 362, 363, 364, 365, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, @@ -2643,144 +1821,65 @@ static const yytype_int16 yycheck[] = 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, -1, -1, 297, 298, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 316, 317, -1, 319, -1, 321, -1, - -1, -1, -1, -1, 327, 328, 329, 330, 331, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, - 343, 344, 345, -1, -1, -1, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 363, 364, -1, 366, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, -1, - -1, 297, 298, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 316, 317, -1, 319, -1, -1, -1, -1, -1, -1, - -1, 327, 328, 329, 330, 331, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 341, 342, 343, 344, 345, - -1, -1, -1, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, -1, - 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, -1, -1, 297, 298, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 316, 317, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 327, 328, - 329, 330, 331, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 341, 342, 343, 344, 345, -1, -1, -1, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 0, 0, 444, 445, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 446, 447, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 511, 448, 449, 450, 451, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 316, 317, + 318, 319, 320, 0, 0, 0, 452, 453, 454, 455, + 456, 321, 322, 323, 324, 325, 326, 327, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 328, 329, 330, 331, 332, 333, 457, 458, 459, 460, + 461, 462, 463, 464, 334, 0, 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, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, -1, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, -1, -1, 297, 298, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 316, 317, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 328, 329, 330, 331, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, - 342, 343, 344, -1, -1, -1, -1, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, 359, 360, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, -1, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 3, 4, + 359, 360, 361, 362, 363, 364, 365, 1, 2, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 0, 0, 444, 445, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 446, 447, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 448, 449, 450, 451, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 316, 317, 318, + 319, 0, 0, 0, 0, 452, 453, 454, 455, 456, + 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, + 329, 330, 331, 332, 333, 457, 458, 459, 460, 461, + 462, 463, 464, 334, 0, 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, 361, 362, 363, 364, 365, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, @@ -2810,19 +1909,109 @@ static const yytype_int16 yycheck[] = 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 327, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 341, 342, 343, 344, - 345, -1, -1, -1, -1, -1, -1, -1, -1, 354, - 355, 356, 357, 358, 359, 360, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 373, 374, - 375, 376, 377, 378, -1, -1, -1, -1, -1, -1, - -1, -1, 387, -1, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 3, 4, 5, 6, 7, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 315, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 316, 317, 318, 319, + 320, 0, 0, 0, 0, 0, 0, 0, 0, 321, + 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 328, 329, + 330, 331, 332, 333, 0, 0, 0, 0, 0, 0, + 0, 0, 334, 0, 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, + 361, 362, 363, 364, 365, 1, 2, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 409, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 316, 317, 318, 319, 0, + 0, 0, 0, 0, 0, 0, 0, 410, 321, 322, + 323, 324, 325, 326, 327, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 328, 329, 330, + 331, 332, 333, 0, 0, 0, 0, 0, 0, 0, + 0, 334, 0, 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, 361, + 362, 363, 364, 365, 1, 2, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 579, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 316, 317, 318, 319, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 321, 322, 323, + 324, 325, 326, 327, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 328, 329, 330, 331, + 332, 333, 0, 0, 0, 0, 0, 0, 0, 0, + 334, 0, 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, 361, 362, + 363, 364, 365, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, @@ -2851,20 +2040,591 @@ static const yytype_int16 yycheck[] = 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, -1, -1, -1, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 661, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 316, 317, 318, 319, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 321, 322, 323, 324, + 325, 326, 327, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 328, 329, 330, 331, 332, + 333, 0, 0, 0, 0, 0, 0, 0, 0, 334, + 0, 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, 361, 362, 363, + 364, 365, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 699, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 316, 317, 318, 319, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 321, 322, 323, 324, 325, + 326, 327, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 328, 329, 330, 331, 332, 333, + 0, 0, 0, 0, 0, 0, 0, 0, 334, 0, + 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, 361, 362, 363, 364, + 365, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 316, 317, 318, 319, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 321, 322, 323, 324, 325, 326, + 327, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 328, 329, 330, 331, 332, 333, 0, + 0, 0, 0, 0, 0, 0, 0, 334, 0, 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, 361, 362, 363, 364, 365, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 0, 0, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 0, 0, 444, 445, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 446, 447, 0, 0, 0, 551, + 718, 0, 0, 0, 0, 0, 448, 449, 450, 451, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 452, 453, 454, + 455, 456, 321, 0, 0, 0, 0, 326, 327, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 457, 458, 459, + 460, 461, 462, 463, 464, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 347, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 0, 0, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 0, 0, 444, 445, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 446, 447, 0, 0, 492, 0, + 0, 0, 0, 0, 0, 0, 448, 449, 450, 451, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 452, 453, 454, + 455, 456, 321, 0, 0, 0, 0, 326, 327, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 457, 458, 459, + 460, 461, 462, 463, 464, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 347, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 0, 0, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 0, 0, 444, 445, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 446, 447, 0, 0, 0, 551, + 0, 0, 0, 0, 0, 0, 448, 449, 450, 451, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 452, 453, 454, + 455, 456, 321, 0, 0, 0, 0, 326, 327, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 457, 458, 459, + 460, 461, 462, 463, 464, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 347, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 0, 0, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 0, 0, 444, 445, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 446, 447, 0, 0, 607, 0, + 0, 0, 0, 0, 0, 0, 448, 449, 450, 451, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 452, 453, 454, + 455, 456, 321, 0, 0, 0, 0, 326, 327, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 457, 458, 459, + 460, 461, 462, 463, 464, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 347, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 0, 0, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 0, 0, 444, 445, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 446, 447, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 619, 448, 449, 450, 451, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 452, 453, 454, + 455, 456, 321, 0, 0, 0, 0, 326, 327, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 457, 458, 459, + 460, 461, 462, 463, 464, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 347, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 0, 0, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 0, 0, 444, 445, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 446, 447, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 448, 449, 450, 451, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 452, 453, 454, + 455, 456, 321, 0, 0, 0, 0, 326, 327, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 457, 458, 459, + 460, 461, 462, 463, 464, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 347, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 0, 0, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 475, 0, 444, 445, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 493, 0, 0, + 0, 0, 0, 0, 446, 447, 0, 0, 0, 0, + 0, 0, 0, 0, 559, 560, 448, 449, 450, 451, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 452, 453, 454, + 455, 456, 321, 0, 0, 0, 572, 326, 569, 0, + 0, 0, 0, 0, 0, 0, 0, 493, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 457, 458, 459, + 460, 461, 462, 463, 464, 0, 493, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 347, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 656, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 662, 663, 664, 493, + 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, + 493, 493, 493, 493, 493, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 493 +}; + +static const yytype_int16 yycheck[] = +{ + 0, 346, 0, 339, 0, 341, 341, 341, 486, 0, + 341, 341, 348, 358, 349, 349, 339, 348, 348, 339, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 555, 349, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 379, 371, 438, 447, 611, 549, 537, + 551, 427, 343, 554, 484, 408, 375, 321, 322, 326, + 687, 414, 317, 318, 341, 319, 320, 340, 404, 383, + 349, 348, 386, 400, 388, 389, 346, 396, 392, 349, + 473, 371, 435, 436, 375, 339, 346, 341, 715, 379, + 371, 345, 419, 357, 358, 362, 375, 387, 379, 387, + 390, 387, 376, 340, 323, 324, 387, 381, 382, 346, + 400, 487, 342, 375, 404, 726, 346, 357, 519, 400, + 521, 346, 733, 404, 349, 343, 340, 615, 346, 419, + 506, 349, 346, 744, 343, 340, 340, 340, 419, 340, + 430, 346, 346, 346, 645, 346, 482, 340, 344, 430, + 346, 581, 346, 346, 375, 349, 549, 484, 551, 486, + 351, 554, 353, 564, 343, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 568, 593, 594, 595, 596, + 346, 346, 347, 349, 748, 348, 346, 346, 375, 349, + 349, 375, 482, 341, 484, 349, 486, 698, 686, 346, + 347, 482, 348, 484, 375, 486, 364, 365, 366, 354, + 355, 356, 589, 590, 597, 598, 617, 591, 592, 649, + 621, 340, 339, 576, 375, 341, 375, 361, 555, 360, + 359, 325, 327, 342, 341, 339, 344, 738, 349, 349, + 339, 339, 339, 636, 637, 347, 349, 537, 349, 339, + 339, 375, 645, 375, 581, 340, 537, 375, 342, 342, + 346, 339, 383, 342, 344, 555, 754, 340, 339, 375, + 340, 343, 348, 340, 555, 349, 599, 343, 343, 600, + 681, 349, 387, 344, 601, 603, 687, 602, 604, 704, + 404, 581, 404, 320, 489, 575, 659, 689, 732, 744, + 581, 745, 689, 547, 400, 698, 398, 715, 547, 547, + 387, 706, -1, -1, 715, -1, -1, -1, -1, -1, + -1, 611, 649, -1, -1, 615, 727, 720, 704, -1, + 611, -1, -1, -1, 615, -1, -1, -1, -1, -1, + -1, -1, 743, -1, -1, 738, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 649, + 687, -1, -1, -1, -1, -1, -1, -1, 649, -1, + -1, -1, -1, -1, 710, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 715, -1, + -1, -1, -1, -1, -1, -1, 686, 687, -1, 689, + -1, -1, -1, -1, -1, 686, 687, -1, 689, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 710, -1, -1, -1, -1, 715, -1, -1, -1, 710, + -1, -1, -1, -1, 715, -1, 726, -1, -1, -1, + -1, -1, -1, 733, -1, 726, -1, -1, -1, -1, + -1, -1, 733, -1, 744, -1, -1, -1, 748, -1, + -1, -1, -1, 744, 754, -1, -1, 748, -1, -1, + -1, 0, -1, 754, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 327, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 341, 342, 343, 344, -1, -1, -1, - -1, -1, -1, -1, -1, 353, 354, 355, 356, 357, - 358, 359, 360, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 373, 374, 375, 376, 377, - 378, -1, -1, -1, -1, -1, -1, -1, -1, 387, - -1, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 3, 4, 5, 6, 7, 8, 9, 10, + 349, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 363, 364, 365, 366, 367, -1, + -1, -1, -1, -1, -1, -1, -1, 376, 377, 378, + 379, 380, 381, 382, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 395, 396, 397, 398, + 399, 400, -1, -1, -1, -1, -1, -1, -1, -1, + 409, -1, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, + 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, -1, -1, 319, + 320, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 338, 339, + -1, 341, -1, 343, 344, -1, -1, -1, -1, 349, + 350, 351, 352, 353, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 363, 364, 365, 366, 367, -1, -1, + -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, @@ -2893,19 +2653,109 @@ static const yytype_int16 yycheck[] = 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, -1, -1, -1, -1, -1, -1, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, -1, -1, 319, 320, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 322, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 341, 342, 343, 344, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 354, 355, 356, 357, 358, 359, 360, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 373, 374, 375, 376, 377, 378, -1, -1, - -1, -1, -1, -1, -1, -1, 387, -1, 389, 390, + -1, -1, -1, -1, -1, -1, -1, 338, 339, -1, + 341, -1, 343, 344, -1, -1, -1, -1, 349, 350, + 351, 352, 353, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 363, 364, 365, 366, 367, -1, -1, -1, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 3, + 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, -1, -1, 319, 320, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 338, 339, -1, 341, + -1, 343, -1, -1, -1, -1, -1, 349, 350, 351, + 352, 353, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 363, 364, 365, 366, 367, -1, -1, -1, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, -1, -1, 319, 320, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 338, 339, -1, 341, -1, + 343, -1, -1, -1, -1, -1, 349, 350, 351, 352, + 353, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 363, 364, 365, 366, 367, -1, -1, -1, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, @@ -2935,19 +2785,109 @@ static const yytype_int16 yycheck[] = 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, -1, -1, 319, 320, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 322, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 341, 342, 343, - 344, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 354, 355, 356, 357, 358, 359, 360, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 373, - 374, 375, 376, 377, 378, -1, -1, -1, -1, -1, - -1, -1, -1, 387, -1, 389, 390, 391, 392, 393, + -1, -1, -1, -1, 338, 339, -1, 341, -1, -1, + -1, -1, -1, -1, -1, 349, 350, 351, 352, 353, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 363, + 364, 365, 366, 367, -1, -1, -1, 371, 372, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 3, 4, 5, 6, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, -1, -1, 319, 320, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 338, 339, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 349, 350, 351, 352, 353, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 363, 364, + 365, 366, 367, -1, -1, -1, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, -1, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, -1, -1, 319, 320, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 338, 339, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 350, 351, 352, 353, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 363, 364, 365, + 366, -1, -1, -1, -1, 371, 372, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, -1, 411, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, + 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, @@ -2976,20 +2916,110 @@ static const yytype_int16 yycheck[] = 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, -1, -1, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 322, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 341, 342, 343, 344, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 354, 355, 356, - 357, 358, 359, 360, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 373, 374, 375, 376, - 377, 378, -1, -1, -1, -1, -1, -1, -1, -1, - 387, -1, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 3, 4, 5, 6, 7, 8, 9, + -1, -1, 349, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 363, 364, 365, 366, + 367, -1, -1, -1, -1, -1, -1, -1, -1, 376, + 377, 378, 379, 380, 381, 382, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 395, 396, + 397, 398, 399, 400, -1, -1, -1, -1, -1, -1, + -1, -1, 409, -1, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, + 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 349, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 363, 364, 365, 366, -1, + -1, -1, -1, -1, -1, -1, -1, 375, 376, 377, + 378, 379, 380, 381, 382, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 395, 396, 397, + 398, 399, 400, -1, -1, -1, -1, -1, -1, -1, + -1, 409, -1, 411, 412, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, + 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 344, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 363, 364, 365, 366, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 376, 377, 378, + 379, 380, 381, 382, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 395, 396, 397, 398, + 399, 400, -1, -1, -1, -1, -1, -1, -1, -1, + 409, -1, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, + 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, @@ -3018,185 +3048,72 @@ static const yytype_int16 yycheck[] = 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, -1, -1, -1, -1, -1, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 344, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 363, 364, 365, 366, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 376, 377, 378, 379, + 380, 381, 382, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 395, 396, 397, 398, 399, + 400, -1, -1, -1, -1, -1, -1, -1, -1, 409, + -1, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 341, 342, 343, 344, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 354, 355, 356, 357, 358, 359, - 360, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 373, 374, 375, 376, 377, 378, -1, - -1, -1, -1, -1, -1, -1, -1, 387, -1, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, -1, -1, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, -1, -1, 297, 298, -1, -1, -1, -1, -1, + -1, -1, -1, 344, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 316, 317, -1, -1, -1, 321, 322, -1, - -1, -1, -1, -1, 328, 329, 330, 331, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 349, 350, 351, 352, 353, - 354, -1, -1, -1, -1, 359, 360, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 379, 380, 381, 382, 383, - 384, 385, 386, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 401, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, -1, -1, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, -1, - -1, 297, 298, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 316, 317, -1, -1, 320, -1, -1, -1, -1, -1, - -1, -1, 328, 329, 330, 331, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 349, 350, 351, 352, 353, 354, -1, - -1, -1, -1, 359, 360, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 379, 380, 381, 382, 383, 384, 385, - 386, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 401, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, -1, -1, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, -1, -1, 297, - 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 316, 317, - -1, -1, -1, 321, -1, -1, -1, -1, -1, -1, - 328, 329, 330, 331, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 349, 350, 351, 352, 353, 354, -1, -1, -1, - -1, 359, 360, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 379, 380, 381, 382, 383, 384, 385, 386, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 401, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, -1, -1, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, -1, -1, 297, 298, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 316, 317, -1, -1, - 320, -1, -1, -1, -1, -1, -1, -1, 328, 329, - 330, 331, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 349, - 350, 351, 352, 353, 354, -1, -1, -1, -1, 359, - 360, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 379, - 380, 381, 382, 383, 384, 385, 386, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 401, 4, 5, 6, 7, 8, 9, 10, 11, + -1, -1, 363, 364, 365, 366, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 376, 377, 378, 379, 380, + 381, 382, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 395, 396, 397, 398, 399, 400, + -1, -1, -1, -1, -1, -1, -1, -1, 409, -1, + 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, -1, - -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 52, 53, 54, 55, 56, 57, 58, 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, @@ -3219,17 +3136,21 @@ static const yytype_int16 yycheck[] = 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, -1, -1, 297, 298, -1, -1, -1, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 316, 317, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 327, 328, 329, 330, 331, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 349, 350, 351, - 352, 353, 354, -1, -1, -1, -1, 359, 360, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 379, 380, 381, - 382, 383, 384, 385, 386, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 401, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 363, 364, 365, 366, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 376, 377, 378, 379, 380, 381, + 382, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 395, 396, 397, 398, 399, 400, -1, + -1, -1, -1, -1, -1, -1, -1, 409, -1, 411, + 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, @@ -3259,66 +3180,280 @@ static const yytype_int16 yycheck[] = 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, -1, -1, 297, 298, -1, -1, -1, -1, -1, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, -1, -1, 319, 320, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 316, 317, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 328, 329, 330, 331, -1, -1, + -1, -1, -1, -1, 338, 339, -1, -1, -1, 343, + 344, -1, -1, -1, -1, -1, 350, 351, 352, 353, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 371, 372, 373, + 374, 375, 376, -1, -1, -1, -1, 381, 382, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 401, 402, 403, + 404, 405, 406, 407, 408, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 423, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, -1, -1, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, -1, -1, 319, 320, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 338, 339, -1, -1, 342, -1, + -1, -1, -1, -1, -1, -1, 350, 351, 352, 353, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 371, 372, 373, + 374, 375, 376, -1, -1, -1, -1, 381, 382, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 401, 402, 403, + 404, 405, 406, 407, 408, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 423, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, -1, -1, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, -1, -1, 319, 320, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 338, 339, -1, -1, -1, 343, + -1, -1, -1, -1, -1, -1, 350, 351, 352, 353, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 371, 372, 373, + 374, 375, 376, -1, -1, -1, -1, 381, 382, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 401, 402, 403, + 404, 405, 406, 407, 408, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 423, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, -1, -1, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, -1, -1, 319, 320, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 338, 339, -1, -1, 342, -1, + -1, -1, -1, -1, -1, -1, 350, 351, 352, 353, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 371, 372, 373, + 374, 375, 376, -1, -1, -1, -1, 381, 382, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 401, 402, 403, + 404, 405, 406, 407, 408, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 423, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, -1, -1, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, -1, -1, 319, 320, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 338, 339, -1, -1, -1, -1, -1, -1, -1, -1, -1, 349, 350, 351, 352, 353, - 354, -1, -1, -1, -1, 359, 360, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 379, 380, 381, 382, 383, - 384, 385, 386, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 401, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, -1, -1, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 391, - -1, 297, 298, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 405, -1, -1, -1, -1, -1, -1, - 316, 317, -1, -1, -1, -1, -1, -1, -1, -1, - 422, 423, 328, 329, 330, 331, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 371, 372, 373, + 374, 375, 376, -1, -1, -1, -1, 381, 382, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 349, 350, 351, 352, 353, 354, -1, - -1, -1, 454, 359, 360, -1, -1, -1, -1, -1, - -1, -1, -1, 465, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 379, 380, 381, 382, 383, 384, 385, - 386, -1, 484, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 401, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 401, 402, 403, + 404, 405, 406, 407, 408, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 423, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, -1, -1, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, -1, -1, 319, 320, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 338, 339, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 350, 351, 352, 353, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 371, 372, 373, + 374, 375, 376, -1, -1, -1, -1, 381, 382, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 401, 402, 403, + 404, 405, 406, 407, 408, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 423, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, -1, -1, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 413, -1, 319, 320, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 427, -1, -1, + -1, -1, -1, -1, 338, 339, -1, -1, -1, -1, + -1, -1, -1, -1, 444, 445, 350, 351, 352, 353, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 371, 372, 373, + 374, 375, 376, -1, -1, -1, 476, 381, 382, -1, + -1, -1, -1, -1, -1, -1, -1, 487, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 401, 402, 403, + 404, 405, 406, 407, 408, -1, 506, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 423, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 551, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 564, 565, 566, 567, 568, 569, 570, 571, - 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, - 582, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 573, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 586, 587, 588, 589, + 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, + 600, 601, 602, 603, 604, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -3328,7 +3463,7 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 682 + -1, -1, -1, -1, 704 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -3364,116 +3499,120 @@ static const yytype_uint16 yystos[] = 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 327, 341, 342, 343, 344, 345, 354, - 355, 356, 357, 358, 359, 360, 373, 374, 375, 376, - 377, 378, 387, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 451, 452, 455, 456, 457, 458, - 462, 463, 464, 465, 466, 467, 470, 471, 472, 473, - 474, 476, 481, 482, 483, 524, 525, 526, 482, 321, - 353, 317, 317, 327, 353, 327, 527, 318, 324, 459, - 460, 461, 471, 476, 324, 327, 353, 327, 353, 472, - 476, 335, 478, 479, 0, 525, 476, 485, 321, 353, - 374, 468, 469, 353, 475, 319, 327, 477, 321, 503, - 460, 459, 461, 353, 353, 317, 326, 477, 321, 324, - 327, 454, 297, 298, 316, 317, 328, 329, 330, 331, - 349, 350, 351, 352, 353, 379, 380, 381, 382, 383, - 384, 385, 386, 421, 422, 423, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 474, 476, 480, 477, 327, - 471, 476, 486, 487, 484, 326, 318, 324, 318, 324, - 320, 432, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 319, 327, 319, 321, 322, 327, - 361, 362, 363, 364, 366, 367, 368, 369, 370, 371, - 372, 388, 432, 445, 447, 449, 451, 455, 474, 476, - 492, 493, 494, 495, 496, 504, 505, 506, 507, 510, - 511, 514, 515, 516, 523, 528, 477, 326, 477, 321, - 447, 490, 326, 453, 353, 324, 327, 432, 432, 449, - 297, 298, 319, 323, 318, 318, 324, 360, 447, 317, - 432, 324, 336, 476, 353, 488, 489, 322, 487, 486, - 445, 450, 469, 353, 332, 333, 334, 329, 331, 295, - 296, 299, 300, 335, 336, 301, 302, 339, 338, 337, - 303, 305, 304, 340, 320, 320, 445, 319, 322, 497, - 317, 327, 327, 518, 317, 317, 327, 327, 449, 317, - 449, 325, 327, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 326, 448, 324, 327, 322, 493, 507, - 511, 516, 490, 326, 490, 491, 490, 486, 353, 318, - 424, 449, 353, 447, 432, 488, 477, 324, 327, 322, - 432, 432, 432, 434, 434, 435, 435, 436, 436, 436, - 436, 437, 437, 438, 439, 440, 441, 442, 443, 446, - 320, 353, 529, 530, 504, 517, 493, 519, 449, 327, - 449, 325, 447, 447, 490, 322, 324, 322, 320, 327, - 489, 449, 317, 320, 324, 498, 449, 464, 471, 509, - 361, 492, 505, 520, 318, 318, 322, 490, 325, 450, - 320, 530, 322, 353, 318, 317, 509, 521, 522, 500, - 501, 502, 508, 512, 447, 318, 326, 494, 499, 503, - 449, 327, 318, 365, 496, 494, 321, 490, 318, 449, - 499, 500, 504, 513, 327, 322 + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 349, 363, 364, 365, 366, + 367, 376, 377, 378, 379, 380, 381, 382, 395, 396, + 397, 398, 399, 400, 409, 411, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, + 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 473, 474, 477, 478, + 479, 480, 484, 485, 486, 487, 488, 489, 492, 493, + 494, 495, 496, 498, 503, 504, 505, 546, 547, 548, + 504, 343, 375, 339, 339, 349, 375, 349, 549, 340, + 346, 481, 482, 483, 493, 498, 346, 349, 375, 349, + 375, 494, 498, 357, 500, 501, 0, 547, 498, 507, + 343, 375, 396, 490, 491, 375, 497, 341, 349, 499, + 343, 525, 482, 481, 483, 375, 375, 339, 348, 499, + 343, 346, 349, 476, 319, 320, 338, 339, 350, 351, + 352, 353, 371, 372, 373, 374, 375, 401, 402, 403, + 404, 405, 406, 407, 408, 443, 444, 445, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 496, 498, 502, + 499, 349, 493, 498, 508, 509, 506, 348, 340, 346, + 340, 346, 342, 454, 456, 457, 458, 459, 460, 461, + 462, 463, 464, 465, 466, 467, 341, 349, 341, 343, + 344, 349, 383, 384, 385, 386, 388, 389, 390, 391, + 392, 393, 394, 410, 454, 467, 469, 471, 473, 477, + 496, 498, 514, 515, 516, 517, 518, 526, 527, 528, + 529, 532, 533, 536, 537, 538, 545, 550, 499, 348, + 499, 343, 469, 512, 348, 475, 375, 346, 349, 454, + 454, 471, 319, 320, 341, 345, 340, 340, 346, 382, + 469, 339, 454, 346, 358, 498, 375, 510, 511, 344, + 509, 508, 467, 472, 491, 375, 354, 355, 356, 351, + 353, 317, 318, 321, 322, 357, 358, 323, 324, 361, + 360, 359, 325, 327, 326, 362, 342, 342, 467, 341, + 344, 519, 339, 349, 349, 540, 339, 339, 349, 349, + 471, 339, 471, 347, 349, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 348, 470, 346, 349, 344, + 515, 529, 533, 538, 512, 348, 512, 513, 512, 508, + 375, 340, 446, 471, 375, 469, 454, 510, 499, 346, + 349, 344, 454, 454, 454, 456, 456, 457, 457, 458, + 458, 458, 458, 459, 459, 460, 461, 462, 463, 464, + 465, 468, 342, 375, 551, 552, 526, 539, 515, 541, + 471, 349, 471, 347, 469, 469, 512, 344, 346, 344, + 342, 349, 511, 471, 339, 342, 346, 520, 471, 486, + 493, 531, 383, 514, 527, 542, 340, 340, 344, 512, + 347, 472, 342, 552, 344, 375, 340, 339, 531, 543, + 544, 522, 523, 524, 530, 534, 469, 340, 348, 516, + 521, 525, 471, 349, 340, 387, 518, 516, 343, 512, + 340, 471, 521, 522, 526, 535, 349, 344 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { - 0, 420, 421, 422, 422, 422, 422, 422, 422, 422, - 422, 422, 422, 422, 422, 422, 422, 422, 423, 423, - 423, 423, 423, 423, 424, 425, 426, 427, 427, 428, - 428, 429, 429, 430, 431, 431, 431, 432, 432, 432, - 432, 433, 433, 433, 433, 434, 434, 434, 434, 435, - 435, 435, 436, 436, 436, 437, 437, 437, 437, 437, - 438, 438, 438, 439, 439, 440, 440, 441, 441, 442, - 442, 443, 443, 444, 444, 445, 446, 445, 447, 447, - 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, - 448, 449, 449, 450, 451, 451, 451, 451, 451, 451, - 451, 451, 451, 453, 452, 454, 454, 455, 456, 456, - 457, 457, 458, 459, 459, 460, 460, 460, 460, 461, - 462, 462, 462, 462, 462, 463, 463, 463, 463, 463, - 464, 464, 465, 466, 466, 466, 466, 466, 466, 466, - 466, 467, 468, 468, 469, 469, 469, 470, 471, 471, - 472, 472, 472, 472, 472, 472, 472, 473, 473, 473, - 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, - 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, - 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, - 473, 473, 474, 475, 475, 476, 476, 477, 477, 477, - 477, 478, 478, 479, 480, 480, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 482, 482, - 482, 484, 483, 485, 483, 486, 486, 487, 487, 488, - 488, 489, 489, 490, 490, 490, 491, 491, 492, 493, - 493, 494, 494, 494, 494, 494, 494, 494, 494, 495, - 496, 497, 498, 496, 499, 499, 501, 500, 502, 500, - 503, 503, 504, 504, 505, 505, 506, 506, 507, 508, - 508, 509, 509, 510, 510, 512, 511, 513, 513, 514, - 514, 515, 515, 517, 516, 518, 516, 519, 516, 520, - 520, 521, 521, 522, 522, 523, 523, 523, 523, 523, - 524, 524, 525, 525, 525, 527, 526, 528, 529, 529, - 530, 530 + 0, 442, 443, 444, 444, 444, 444, 444, 444, 444, + 444, 444, 444, 444, 444, 444, 444, 444, 445, 445, + 445, 445, 445, 445, 446, 447, 448, 449, 449, 450, + 450, 451, 451, 452, 453, 453, 453, 454, 454, 454, + 454, 455, 455, 455, 455, 456, 456, 456, 456, 457, + 457, 457, 458, 458, 458, 459, 459, 459, 459, 459, + 460, 460, 460, 461, 461, 462, 462, 463, 463, 464, + 464, 465, 465, 466, 466, 467, 468, 467, 469, 469, + 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, + 470, 471, 471, 472, 473, 473, 473, 473, 473, 473, + 473, 473, 473, 475, 474, 476, 476, 477, 478, 478, + 479, 479, 480, 481, 481, 482, 482, 482, 482, 483, + 484, 484, 484, 484, 484, 485, 485, 485, 485, 485, + 486, 486, 487, 488, 488, 488, 488, 488, 488, 488, + 488, 489, 490, 490, 491, 491, 491, 492, 493, 493, + 494, 494, 494, 494, 494, 494, 494, 495, 495, 495, + 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, + 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, + 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, + 495, 495, 496, 497, 497, 498, 498, 499, 499, 499, + 499, 500, 500, 501, 502, 502, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, + 504, 504, 504, 506, 505, 507, 505, 508, 508, 509, + 509, 510, 510, 511, 511, 512, 512, 512, 513, 513, + 514, 515, 515, 516, 516, 516, 516, 516, 516, 516, + 516, 517, 518, 519, 520, 518, 521, 521, 523, 522, + 524, 522, 525, 525, 526, 526, 527, 527, 528, 528, + 529, 530, 530, 531, 531, 532, 532, 534, 533, 535, + 535, 536, 536, 537, 537, 539, 538, 540, 538, 541, + 538, 542, 542, 543, 543, 544, 544, 545, 545, 545, + 545, 545, 546, 546, 547, 547, 547, 549, 548, 550, + 551, 551, 552, 552 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -3529,16 +3668,18 @@ static const yytype_uint8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 0, 6, 0, 5, 1, 2, 3, 4, 1, - 3, 1, 2, 1, 3, 4, 1, 3, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 2, 0, 0, 5, 1, 1, 0, 2, 0, 2, - 2, 3, 1, 2, 1, 2, 1, 2, 5, 3, - 1, 1, 4, 1, 2, 0, 8, 0, 1, 3, - 2, 1, 2, 0, 6, 0, 8, 0, 7, 1, - 1, 1, 0, 2, 3, 2, 2, 2, 3, 2, - 1, 2, 1, 1, 1, 0, 3, 5, 1, 3, - 1, 4 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 0, 6, 0, 5, 1, 2, 3, + 4, 1, 3, 1, 2, 1, 3, 4, 1, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 2, 0, 0, 5, 1, 1, 0, 2, + 0, 2, 2, 3, 1, 2, 1, 2, 1, 2, + 5, 3, 1, 1, 4, 1, 2, 0, 8, 0, + 1, 3, 2, 1, 2, 0, 6, 0, 8, 0, + 7, 1, 1, 1, 0, 2, 3, 2, 2, 2, + 3, 2, 1, 2, 1, 1, 1, 0, 3, 5, + 1, 3, 1, 4 }; @@ -4221,260 +4362,260 @@ yyreduce: switch (yyn) { case 2: -#line 357 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 369 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string); } -#line 4229 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4370 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 3: -#line 363 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 375 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4237 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4378 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 4: -#line 366 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 378 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } -#line 4247 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4388 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 5: -#line 371 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 383 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 4255 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4396 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 6: -#line 374 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 386 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 4263 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4404 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 7: -#line 377 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 389 "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 4272 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4413 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 8: -#line 381 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 393 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 4280 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4421 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 9: -#line 385 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 397 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); } -#line 4288 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4429 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 10: -#line 388 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 400 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 4297 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4438 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 11: -#line 392 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 404 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 4306 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4447 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 12: -#line 396 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 408 "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 4315 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4456 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 13: -#line 400 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 412 "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 4324 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4465 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 14: -#line 404 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 416 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((short)(yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 4333 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4474 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 15: -#line 408 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 420 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit unsigned integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((unsigned short)(yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 4342 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4483 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 16: -#line 412 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 424 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double literal"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtDouble, (yyvsp[0].lex).loc, true); } -#line 4353 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4494 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 17: -#line 418 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 430 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16Check((yyvsp[0].lex).loc, "half float literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat16, (yyvsp[0].lex).loc, true); } -#line 4362 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4503 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 18: -#line 426 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 438 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4370 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4511 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 19: -#line 429 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 441 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode)); } -#line 4378 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4519 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 20: -#line 432 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 444 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4386 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4527 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 21: -#line 435 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 447 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string); } -#line 4394 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4535 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 22: -#line 438 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 450 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode)); parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "++", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "++", EOpPostIncrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 4404 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4545 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 23: -#line 443 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 455 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode)); parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "--", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "--", EOpPostDecrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 4414 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4555 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 24: -#line 451 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 463 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]"); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4423 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4564 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 25: -#line 458 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 470 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode); delete (yyvsp[0].interm).function; } -#line 4432 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4573 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 26: -#line 465 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 477 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); } -#line 4440 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4581 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 27: -#line 471 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 483 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 4449 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4590 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 28: -#line 475 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 487 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 4458 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4599 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 29: -#line 482 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 494 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-1].interm); } -#line 4466 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4607 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 30: -#line 485 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 497 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); } -#line 4474 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4615 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 31: -#line 491 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 503 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { TParameter param = { 0, new TType }; param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); @@ -4482,11 +4623,11 @@ yyreduce: (yyval.interm).function = (yyvsp[-1].interm).function; (yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode); } -#line 4486 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4627 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 32: -#line 498 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 510 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { TParameter param = { 0, new TType }; param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); @@ -4494,29 +4635,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 4498 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4639 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 33: -#line 508 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 520 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-1].interm); } -#line 4506 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4647 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 34: -#line 516 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 528 "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 4516 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4657 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 35: -#line 521 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 533 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // // Should be a method or subroutine call, but we haven't recognized the arguments yet. @@ -4544,50 +4685,50 @@ yyreduce: (yyval.interm).function = new TFunction(empty, TType(EbtVoid), EOpNull); } } -#line 4548 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4689 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 36: -#line 549 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 561 "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 4558 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4699 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 37: -#line 558 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 570 "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 4569 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4710 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 38: -#line 564 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 576 "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 4578 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4719 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 39: -#line 568 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 580 "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 4587 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4728 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 40: -#line 572 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 584 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-1].interm).op != EOpNull) { char errorOp[2] = {0, 0}; @@ -4604,179 +4745,179 @@ yyreduce: (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } } -#line 4608 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4749 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 41: -#line 592 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 604 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; } -#line 4614 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4755 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 42: -#line 593 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 605 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; } -#line 4620 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4761 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 43: -#line 594 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 606 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; } -#line 4626 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4767 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 44: -#line 595 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 607 "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 4633 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4774 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 45: -#line 601 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 613 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4639 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4780 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 46: -#line 602 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 614 "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 4649 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4790 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 47: -#line 607 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 619 "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 4659 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4800 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 48: -#line 612 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 624 "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 4670 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4811 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 49: -#line 621 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 633 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4676 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4817 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 50: -#line 622 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 634 "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 4686 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4827 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 51: -#line 627 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 639 "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 4696 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4837 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 52: -#line 635 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 647 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4702 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4843 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 53: -#line 636 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 648 "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 4713 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4854 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 54: -#line 642 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 654 "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 4724 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4865 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 55: -#line 651 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 663 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4730 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4871 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 56: -#line 652 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 664 "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 4740 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4881 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 57: -#line 657 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 669 "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 4750 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4891 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 58: -#line 662 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 674 "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 4760 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4901 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 59: -#line 667 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 679 "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 4770 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4911 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 60: -#line 675 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 687 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4776 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4917 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 61: -#line 676 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 688 "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(), "=="); @@ -4786,11 +4927,11 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 4790 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4931 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 62: -#line 685 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 697 "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(), "!="); @@ -4800,124 +4941,124 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 4804 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4945 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 63: -#line 697 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 709 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4810 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4951 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 64: -#line 698 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 710 "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 4821 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4962 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 65: -#line 707 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 719 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4827 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4968 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 66: -#line 708 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 720 "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 4838 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4979 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 67: -#line 717 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 729 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4844 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4985 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 68: -#line 718 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 730 "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 4855 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4996 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 69: -#line 727 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 739 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4861 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5002 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 70: -#line 728 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 740 "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 4871 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5012 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 71: -#line 736 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 748 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4877 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5018 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 72: -#line 737 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 749 "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 4887 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5028 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 73: -#line 745 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 757 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4893 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5034 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 74: -#line 746 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 758 "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 4903 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5044 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 75: -#line 754 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 766 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4909 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5050 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 76: -#line 755 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 767 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { ++parseContext.controlFlowNestingLevel; } -#line 4917 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5058 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 77: -#line 758 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 770 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { --parseContext.controlFlowNestingLevel; parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-5].interm.intermTypedNode)); @@ -4930,17 +5071,17 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 4934 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5075 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 78: -#line 773 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 785 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4940 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5081 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 79: -#line 774 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 786 "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(), "="); @@ -4954,119 +5095,119 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } } -#line 4958 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5099 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 80: -#line 790 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 802 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAssign; } -#line 4967 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5108 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 81: -#line 794 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 806 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpMulAssign; } -#line 4976 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5117 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 82: -#line 798 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 810 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpDivAssign; } -#line 4985 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5126 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 83: -#line 802 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 814 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "%="); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpModAssign; } -#line 4995 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5136 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 84: -#line 807 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 819 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAddAssign; } -#line 5004 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5145 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 85: -#line 811 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 823 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpSubAssign; } -#line 5013 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5154 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 86: -#line 815 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 827 "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 5022 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5163 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 87: -#line 819 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 831 "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 5031 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5172 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 88: -#line 823 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 835 "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 5040 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5181 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 89: -#line 827 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 839 "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 5049 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5190 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 90: -#line 831 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 843 "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 5058 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5199 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 91: -#line 838 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 850 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5066 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5207 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 92: -#line 841 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 853 "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); @@ -5075,40 +5216,40 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 5079 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5220 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 93: -#line 852 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 864 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), ""); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5088 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5229 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 94: -#line 859 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 871 "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 5098 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5239 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 95: -#line 864 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 876 "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 5108 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5249 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 96: -#line 869 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 881 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.profileRequires((yyvsp[-3].lex).loc, ENoProfile, 130, 0, "precision statement"); // lazy setting of the previous scope's defaults, has effect only the first time it is called in a particular scope @@ -5116,75 +5257,75 @@ yyreduce: parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision); (yyval.interm.intermNode) = 0; } -#line 5120 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5261 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 97: -#line 876 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 888 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList); (yyval.interm.intermNode) = 0; } -#line 5129 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5270 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 98: -#line 880 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 892 "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 5138 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5279 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 99: -#line 884 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 896 "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 5147 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5288 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 100: -#line 888 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 900 "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 5157 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5298 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 101: -#line 893 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 905 "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 5167 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5308 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 102: -#line 898 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 910 "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 5178 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5319 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 103: -#line 907 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 919 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); } -#line 5184 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5325 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 104: -#line 907 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 919 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { --parseContext.blockNestingLevel; parseContext.blockName = (yyvsp[-4].lex).string; @@ -5194,54 +5335,54 @@ yyreduce: (yyval.interm).loc = (yyvsp[-5].interm.type).loc; (yyval.interm).typeList = (yyvsp[-1].interm.typeList); } -#line 5198 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5339 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 105: -#line 918 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 930 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.identifierList) = new TIdentifierList; (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 5207 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5348 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 106: -#line 922 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 934 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList); (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 5216 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5357 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 107: -#line 929 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 941 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).function = (yyvsp[-1].interm.function); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 5225 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5366 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 108: -#line 936 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 948 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 5233 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5374 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 109: -#line 939 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 951 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 5241 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5382 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 110: -#line 946 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 958 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // Add the parameter (yyval.interm.function) = (yyvsp[-1].interm.function); @@ -5250,11 +5391,11 @@ yyreduce: else delete (yyvsp[0].interm).param.type; } -#line 5254 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5395 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 111: -#line 954 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 966 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // // Only first parameter of one-parameter functions can be void @@ -5272,11 +5413,11 @@ yyreduce: (yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param); } } -#line 5276 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5417 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 112: -#line 974 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 986 "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", @@ -5296,11 +5437,11 @@ yyreduce: function = new TFunction((yyvsp[-1].lex).string, type); (yyval.interm.function) = function; } -#line 5300 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 113: -#line 997 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1009 "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"); @@ -5316,11 +5457,11 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).param = param; } -#line 5320 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5461 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 114: -#line 1012 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1024 "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"); @@ -5340,11 +5481,11 @@ yyreduce: (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).param = param; } -#line 5344 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5485 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 115: -#line 1037 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1049 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) @@ -5356,11 +5497,11 @@ yyreduce: parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 5360 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5501 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 116: -#line 1048 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1060 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); @@ -5368,11 +5509,11 @@ yyreduce: parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); } -#line 5372 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5513 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 117: -#line 1058 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1070 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) @@ -5383,11 +5524,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 5387 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5528 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 118: -#line 1068 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1080 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); @@ -5395,68 +5536,68 @@ yyreduce: parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); } -#line 5399 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5540 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 119: -#line 1078 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1090 "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 5410 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5551 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 120: -#line 1087 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1099 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); } -#line 5418 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5559 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 121: -#line 1090 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1102 "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 5427 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5568 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 122: -#line 1094 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1106 "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 5436 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5577 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 123: -#line 1098 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1110 "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 5446 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5587 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 124: -#line 1103 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1115 "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 5456 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5597 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 125: -#line 1111 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1123 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).type = (yyvsp[0].interm.type); (yyval.interm).intermNode = 0; @@ -5464,51 +5605,51 @@ yyreduce: parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type); } -#line 5468 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5609 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 126: -#line 1118 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1130 "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 5478 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5619 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 127: -#line 1123 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1135 "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 5488 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5629 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 128: -#line 1128 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1140 "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 5498 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5639 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 129: -#line 1133 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1145 "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 5508 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5649 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 130: -#line 1142 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1154 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); @@ -5519,11 +5660,11 @@ yyreduce: } parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier); } -#line 5523 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5664 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 131: -#line 1152 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1164 "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)); @@ -5548,22 +5689,22 @@ yyreduce: (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn))) (yyval.interm.type).qualifier.smooth = true; } -#line 5552 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5693 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 132: -#line 1179 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1191 "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 5563 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5704 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 133: -#line 1188 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1200 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "smooth"); parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "smooth"); @@ -5571,11 +5712,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.smooth = true; } -#line 5575 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5716 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 134: -#line 1195 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1207 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "flat"); parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "flat"); @@ -5583,11 +5724,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.flat = true; } -#line 5587 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5728 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 135: -#line 1203 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1215 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "noperspective"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 0, E_GL_NV_shader_noperspective_interpolation, "noperspective"); @@ -5595,11 +5736,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nopersp = true; } -#line 5599 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5740 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 136: -#line 1210 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1222 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "__explicitInterpAMD"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); @@ -5607,11 +5748,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.explicitInterp = true; } -#line 5611 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5752 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 137: -#line 1217 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1229 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "pervertexNV"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); @@ -5620,11 +5761,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.pervertexNV = true; } -#line 5624 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5765 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 138: -#line 1225 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1237 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveNV"); @@ -5635,11 +5776,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perPrimitiveNV = true; } -#line 5639 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5780 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 139: -#line 1235 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1247 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perviewNV"); @@ -5647,11 +5788,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perViewNV = true; } -#line 5651 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5792 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 140: -#line 1242 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1254 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "taskNV"); @@ -5659,84 +5800,84 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perTaskNV = true; } -#line 5663 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5804 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 141: -#line 1253 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1265 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[-1].interm.type); } -#line 5671 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5812 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 142: -#line 1259 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1271 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5679 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5820 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 143: -#line 1262 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1274 "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 5689 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5830 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 144: -#line 1269 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1281 "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 5698 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5839 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 145: -#line 1273 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1285 "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 5707 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5848 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 146: -#line 1277 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1289 "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 5717 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5858 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 147: -#line 1286 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1298 "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 5728 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5869 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 148: -#line 1296 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1308 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5736 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5877 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 149: -#line 1299 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1311 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[-1].interm.type); if ((yyval.interm.type).basicType == EbtVoid) @@ -5745,112 +5886,112 @@ 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 5749 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5890 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 150: -#line 1310 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1322 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5757 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5898 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 151: -#line 1313 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1325 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5765 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5906 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 152: -#line 1316 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1328 "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 5774 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5915 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 153: -#line 1320 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1332 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5783 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5924 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 154: -#line 1324 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1336 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5792 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5933 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 155: -#line 1329 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1341 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5801 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5942 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 156: -#line 1333 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1345 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5809 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5950 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 157: -#line 1340 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1352 "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 5818 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5959 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 158: -#line 1344 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1356 "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 5828 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5969 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 159: -#line 1349 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1361 "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 5839 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5980 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 160: -#line 1355 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1367 "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 5850 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5991 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 161: -#line 1361 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1373 "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"); @@ -5858,21 +5999,21 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.centroid = true; } -#line 5862 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6003 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 162: -#line 1368 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1380 "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 5872 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6013 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 163: -#line 1373 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1385 "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"); @@ -5881,21 +6022,21 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqShared; } -#line 5885 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6026 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 164: -#line 1381 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1393 "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 5895 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6036 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 165: -#line 1387 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1399 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireStage((yyvsp[0].lex).loc, EShLangVertex, "attribute"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "attribute"); @@ -5908,11 +6049,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 5912 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6053 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 166: -#line 1399 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1411 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "varying"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "varying"); @@ -5927,32 +6068,32 @@ yyreduce: else (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 5931 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6072 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 167: -#line 1413 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1425 "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 5942 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6083 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 168: -#line 1419 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1431 "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 5952 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6093 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 169: -#line 1424 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1436 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask @@ -5961,11 +6102,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 5965 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6106 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 170: -#line 1432 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1444 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask @@ -5974,11 +6115,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 5978 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6119 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 171: -#line 1440 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1452 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | @@ -5987,11 +6128,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 5991 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6132 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 172: -#line 1448 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1460 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | @@ -6000,11 +6141,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 6004 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6145 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 173: -#line 1456 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1468 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask | @@ -6013,11 +6154,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 6017 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6158 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 174: -#line 1464 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1476 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask | @@ -6026,11 +6167,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 6030 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6171 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 175: -#line 1472 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1484 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | @@ -6039,11 +6180,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 6043 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6184 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 176: -#line 1480 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1492 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | @@ -6052,11 +6193,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 6056 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6197 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 177: -#line 1488 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1500 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInNV"); @@ -6064,11 +6205,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 6068 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6209 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 178: -#line 1495 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1507 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInEXT"); @@ -6076,175 +6217,175 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 6080 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6221 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 179: -#line 1502 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1514 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.coherent = true; } -#line 6089 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6230 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 180: -#line 1506 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1518 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "devicecoherent"); (yyval.interm.type).qualifier.devicecoherent = true; } -#line 6099 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6240 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 181: -#line 1511 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1523 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "queuefamilycoherent"); (yyval.interm.type).qualifier.queuefamilycoherent = true; } -#line 6109 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6250 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 182: -#line 1516 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1528 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "workgroupcoherent"); (yyval.interm.type).qualifier.workgroupcoherent = true; } -#line 6119 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6260 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 183: -#line 1521 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1533 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "subgroupcoherent"); (yyval.interm.type).qualifier.subgroupcoherent = true; } -#line 6129 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6270 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 184: -#line 1526 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1538 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "nonprivate"); (yyval.interm.type).qualifier.nonprivate = true; } -#line 6139 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6280 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 185: -#line 1531 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1543 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_ray_tracing, "shadercallcoherent"); (yyval.interm.type).qualifier.shadercallcoherent = true; } -#line 6149 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6290 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 186: -#line 1536 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1548 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.volatil = true; } -#line 6158 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6299 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 187: -#line 1540 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1552 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.restrict = true; } -#line 6167 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6308 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 188: -#line 1544 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1556 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.readonly = true; } -#line 6176 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6317 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 189: -#line 1548 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1560 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.writeonly = true; } -#line 6185 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6326 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 190: -#line 1552 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1564 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.spvRemoved((yyvsp[0].lex).loc, "subroutine"); parseContext.globalCheck((yyvsp[0].lex).loc, "subroutine"); parseContext.unimplemented((yyvsp[0].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[0].lex).loc); } -#line 6196 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6337 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 191: -#line 1558 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1570 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.spvRemoved((yyvsp[-3].lex).loc, "subroutine"); parseContext.globalCheck((yyvsp[-3].lex).loc, "subroutine"); parseContext.unimplemented((yyvsp[-3].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[-3].lex).loc); } -#line 6207 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6348 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 192: -#line 1569 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1581 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nonUniform = true; } -#line 6216 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6357 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 193: -#line 1576 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1588 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // TODO } -#line 6224 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6365 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 194: -#line 1579 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1591 "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 6234 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6375 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 195: -#line 1588 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1600 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[-1].interm.type); (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); (yyval.interm.type).typeParameters = (yyvsp[0].interm.typeParameters); } -#line 6244 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6385 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 196: -#line 1593 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1605 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.arrayOfArrayVersionCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes); (yyval.interm.type) = (yyvsp[-2].interm.type); @@ -6252,21 +6393,21 @@ yyreduce: (yyval.interm.type).typeParameters = (yyvsp[-1].interm.typeParameters); (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes; } -#line 6256 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6397 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 197: -#line 1603 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1615 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).arraySizes = new TArraySizes; (yyval.interm).arraySizes->addInnerSize(); } -#line 6266 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6407 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 198: -#line 1608 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1620 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[-2].lex).loc; (yyval.interm).arraySizes = new TArraySizes; @@ -6275,20 +6416,20 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 6279 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6420 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 199: -#line 1616 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1628 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-2].interm); (yyval.interm).arraySizes->addInnerSize(); } -#line 6288 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6429 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 200: -#line 1620 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1632 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-3].interm); @@ -6296,35 +6437,35 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 6300 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 201: -#line 1630 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1642 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeParameters) = (yyvsp[0].interm.typeParameters); } -#line 6308 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6449 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 202: -#line 1633 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1645 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeParameters) = 0; } -#line 6316 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6457 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 203: -#line 1639 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1651 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeParameters) = (yyvsp[-1].interm.typeParameters); } -#line 6324 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6465 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 204: -#line 1645 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1657 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeParameters) = new TArraySizes; @@ -6332,11 +6473,11 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); (yyval.interm.typeParameters)->addInnerSize(size); } -#line 6336 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6477 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 205: -#line 1652 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1664 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeParameters) = (yyvsp[-2].interm.typeParameters); @@ -6344,300 +6485,300 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); (yyval.interm.typeParameters)->addInnerSize(size); } -#line 6348 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6489 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 206: -#line 1662 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1674 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtVoid; } -#line 6357 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6498 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 207: -#line 1666 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1678 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 6366 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6507 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 208: -#line 1670 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1682 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 6375 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6516 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 209: -#line 1674 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1686 "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 6385 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6526 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 210: -#line 1679 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1691 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; } -#line 6394 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6535 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 211: -#line 1683 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1695 "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 6404 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6545 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 212: -#line 1688 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1700 "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 6414 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6555 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 213: -#line 1693 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1705 "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 6424 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6565 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 214: -#line 1698 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1710 "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 6434 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6575 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 215: -#line 1703 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1715 "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 6444 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6585 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 216: -#line 1708 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1720 "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 6454 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6595 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 217: -#line 1713 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1725 "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 6464 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6605 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 218: -#line 1718 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1730 "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 6474 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6615 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 219: -#line 1723 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1735 "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 6484 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6625 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 220: -#line 1728 "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 6495 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 221: -#line 1734 "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 6506 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 222: #line 1740 "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 6636 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 221: +#line 1746 "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 6647 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 222: +#line 1752 "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 6517 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6658 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 223: -#line 1746 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1758 "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 6527 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6668 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 224: -#line 1751 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1763 "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 6537 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6678 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 225: -#line 1756 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1768 "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 6547 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6688 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 226: -#line 1761 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1773 "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 6557 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6698 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 227: -#line 1766 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1778 "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 6567 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6708 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 228: -#line 1771 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1783 "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 6577 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6718 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 229: -#line 1776 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1788 "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 6587 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6728 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 230: -#line 1781 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1793 "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 6597 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6738 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 231: -#line 1786 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1798 "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 6607 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6748 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 232: -#line 1791 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1803 "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 6617 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6758 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 233: -#line 1796 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1808 "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 6627 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6768 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 234: -#line 1801 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1813 "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 6637 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6778 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 235: -#line 1807 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1819 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -6645,121 +6786,121 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 6649 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6790 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 236: -#line 1814 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1826 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "float16_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; } -#line 6659 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6800 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 237: -#line 1819 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1831 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 6669 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6810 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 238: -#line 1824 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1836 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 6679 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6820 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 239: -#line 1829 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1841 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; } -#line 6689 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6830 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 240: -#line 1834 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1846 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; } -#line 6699 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6840 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 241: -#line 1839 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1851 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; } -#line 6709 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6850 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 242: -#line 1844 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1856 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; } -#line 6719 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6860 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 243: -#line 1849 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1861 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 6729 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6870 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 244: -#line 1854 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1866 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 6739 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6880 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 245: -#line 1859 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1871 "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 6749 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6890 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 246: -#line 1864 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1876 "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 6759 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6900 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 247: -#line 1869 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1881 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -6768,11 +6909,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 6772 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6913 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 248: -#line 1877 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1889 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -6781,11 +6922,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 6785 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6926 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 249: -#line 1885 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1897 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -6794,374 +6935,374 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 6798 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6939 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 250: -#line 1893 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setVector(2); - } -#line 6809 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 251: -#line 1899 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setVector(3); - } -#line 6820 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 252: #line 1905 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setVector(2); + } +#line 6950 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 251: +#line 1911 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setVector(3); + } +#line 6961 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 252: +#line 1917 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(4); } -#line 6831 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6972 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 253: -#line 1911 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setVector(2); - } -#line 6842 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 254: -#line 1917 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setVector(3); - } -#line 6853 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 255: #line 1923 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setVector(2); + } +#line 6983 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 254: +#line 1929 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setVector(3); + } +#line 6994 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 255: +#line 1935 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 6864 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7005 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 256: -#line 1929 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setVector(2); - } -#line 6875 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 257: -#line 1935 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setVector(3); - } -#line 6886 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 258: #line 1941 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setVector(2); + } +#line 7016 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 257: +#line 1947 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setVector(3); + } +#line 7027 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 258: +#line 1953 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 6897 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7038 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 259: -#line 1947 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt8; - (yyval.interm.type).setVector(2); - } -#line 6908 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 260: -#line 1953 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt8; - (yyval.interm.type).setVector(3); - } -#line 6919 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 261: #line 1959 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt8; + (yyval.interm.type).setVector(2); + } +#line 7049 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 260: +#line 1965 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt8; + (yyval.interm.type).setVector(3); + } +#line 7060 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 261: +#line 1971 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(4); } -#line 6930 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7071 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 262: -#line 1965 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt16; - (yyval.interm.type).setVector(2); - } -#line 6941 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 263: -#line 1971 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt16; - (yyval.interm.type).setVector(3); - } -#line 6952 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 264: #line 1977 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt16; + (yyval.interm.type).setVector(2); + } +#line 7082 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 263: +#line 1983 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt16; + (yyval.interm.type).setVector(3); + } +#line 7093 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 264: +#line 1989 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(4); } -#line 6963 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7104 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 265: -#line 1983 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt; - (yyval.interm.type).setVector(2); - } -#line 6974 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 266: -#line 1989 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt; - (yyval.interm.type).setVector(3); - } -#line 6985 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 267: #line 1995 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).setVector(2); + } +#line 7115 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 266: +#line 2001 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).setVector(3); + } +#line 7126 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 267: +#line 2007 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 6996 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7137 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 268: -#line 2001 "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 7007 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 269: -#line 2007 "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 7018 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 270: #line 2013 "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 7148 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 269: +#line 2019 "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 7159 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 270: +#line 2025 "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 7029 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7170 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 271: -#line 2019 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint8; - (yyval.interm.type).setVector(2); - } -#line 7040 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 272: -#line 2025 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint8; - (yyval.interm.type).setVector(3); - } -#line 7051 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 273: #line 2031 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint8; + (yyval.interm.type).setVector(2); + } +#line 7181 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 272: +#line 2037 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint8; + (yyval.interm.type).setVector(3); + } +#line 7192 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 273: +#line 2043 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(4); } -#line 7062 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7203 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 274: -#line 2037 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint16; - (yyval.interm.type).setVector(2); - } -#line 7073 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 275: -#line 2043 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint16; - (yyval.interm.type).setVector(3); - } -#line 7084 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 276: #line 2049 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint16; + (yyval.interm.type).setVector(2); + } +#line 7214 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 275: +#line 2055 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint16; + (yyval.interm.type).setVector(3); + } +#line 7225 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 276: +#line 2061 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(4); } -#line 7095 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7236 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 277: -#line 2055 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint; - (yyval.interm.type).setVector(2); - } -#line 7106 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 278: -#line 2061 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint; - (yyval.interm.type).setVector(3); - } -#line 7117 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 279: #line 2067 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).setVector(2); + } +#line 7247 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 278: +#line 2073 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).setVector(3); + } +#line 7258 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 279: +#line 2079 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 7128 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7269 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 280: -#line 2073 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2085 "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 7139 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7280 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 281: -#line 2079 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2091 "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 7150 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7291 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 282: -#line 2085 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2097 "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 7161 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7302 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 283: -#line 2091 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2103 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7170,11 +7311,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 7174 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7315 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 284: -#line 2099 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2111 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7183,11 +7324,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 7187 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7328 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 285: -#line 2107 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2119 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7196,11 +7337,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 7200 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7341 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 286: -#line 2115 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2127 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7209,11 +7350,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 7213 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7354 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 287: -#line 2123 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2135 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7222,11 +7363,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 7226 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7367 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 288: -#line 2131 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2143 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7235,11 +7376,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 7239 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7380 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 289: -#line 2139 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2151 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7248,11 +7389,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 7252 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7393 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 290: -#line 2147 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2159 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7261,11 +7402,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 7265 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7406 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 291: -#line 2155 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2167 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7274,11 +7415,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 7278 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7419 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 292: -#line 2163 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2175 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7287,11 +7428,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 7291 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7432 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 293: -#line 2171 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2183 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7300,11 +7441,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 7304 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7445 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 294: -#line 2179 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2191 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7313,2008 +7454,2228 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 7317 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7458 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 295: -#line 2187 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(2, 2); - } -#line 7328 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 296: -#line 2193 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(3, 3); - } -#line 7339 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 297: #line 2199 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(4, 4); + (yyval.interm.type).setMatrix(2, 2); } -#line 7350 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7469 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 298: + case 296: #line 2205 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(2, 2); + (yyval.interm.type).setMatrix(3, 3); } -#line 7361 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7480 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 299: + case 297: #line 2211 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(2, 3); + (yyval.interm.type).setMatrix(4, 4); } -#line 7372 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7491 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 300: + case 298: #line 2217 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(2, 4); + (yyval.interm.type).setMatrix(2, 2); } -#line 7383 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7502 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 301: + case 299: #line 2223 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(3, 2); + (yyval.interm.type).setMatrix(2, 3); } -#line 7394 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7513 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 302: + case 300: #line 2229 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(3, 3); + (yyval.interm.type).setMatrix(2, 4); } -#line 7405 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7524 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 303: + case 301: #line 2235 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(3, 4); + (yyval.interm.type).setMatrix(3, 2); } -#line 7416 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7535 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 304: + case 302: #line 2241 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(4, 2); + (yyval.interm.type).setMatrix(3, 3); } -#line 7427 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7546 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 305: + case 303: #line 2247 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(3, 4); + } +#line 7557 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 304: +#line 2253 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(4, 2); + } +#line 7568 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 305: +#line 2259 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 3); } -#line 7438 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7579 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 306: -#line 2253 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2265 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 7449 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7590 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 307: -#line 2259 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 2); - } -#line 7460 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 308: -#line 2265 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(3, 3); - } -#line 7471 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 309: #line 2271 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(4, 4); + (yyval.interm.type).setMatrix(2, 2); } -#line 7482 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7601 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 310: + case 308: #line 2277 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 2); + (yyval.interm.type).setMatrix(3, 3); } -#line 7493 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7612 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 311: + case 309: #line 2283 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 3); + (yyval.interm.type).setMatrix(4, 4); } -#line 7504 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7623 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 312: + case 310: #line 2289 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(2, 2); + } +#line 7634 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 311: +#line 2295 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(2, 3); + } +#line 7645 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 312: +#line 2301 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 7515 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7656 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 313: -#line 2295 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2307 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 7526 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7667 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 314: -#line 2301 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2313 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 7537 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7678 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 315: -#line 2307 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2319 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 7548 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7689 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 316: -#line 2313 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2325 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 7559 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7700 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 317: -#line 2319 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2331 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 7570 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7711 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 318: -#line 2325 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2337 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7581 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7722 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 319: -#line 2331 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2343 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 7592 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7733 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 320: -#line 2337 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2349 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 7603 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7744 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 321: -#line 2343 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2355 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 7614 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7755 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 322: -#line 2349 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2361 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 7625 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7766 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 323: -#line 2355 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2367 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 7636 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7777 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 324: -#line 2361 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2373 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 7647 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7788 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 325: -#line 2367 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2379 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 7658 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7799 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 326: -#line 2373 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2385 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 7669 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7810 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 327: -#line 2379 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2391 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 7680 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7821 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 328: -#line 2385 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2397 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 7691 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7832 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 329: -#line 2391 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2403 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 7702 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7843 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 330: -#line 2397 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2409 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 7713 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7854 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 331: -#line 2403 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2415 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 7722 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7863 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 332: -#line 2407 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2419 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 7731 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7872 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 333: -#line 2411 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2423 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtRayQuery; } -#line 7740 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7881 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 334: -#line 2415 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2427 "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 7750 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7891 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 335: -#line 2420 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2432 "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 7760 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7901 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 336: -#line 2426 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2438 "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 7770 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7911 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 337: -#line 2431 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2443 "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 7780 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7921 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 338: -#line 2436 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2448 "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 7790 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7931 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 339: -#line 2441 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2453 "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 7800 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7941 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 340: -#line 2446 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2458 "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 7810 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7951 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 341: -#line 2451 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2463 "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 7820 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7961 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 342: -#line 2456 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2468 "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 7830 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7971 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 343: -#line 2462 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2474 "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 7840 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7981 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 344: -#line 2467 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2479 "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 7850 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7991 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 345: -#line 2472 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2484 "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 7860 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8001 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 346: -#line 2477 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2489 "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 7870 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8011 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 347: -#line 2482 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2494 "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 7880 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8021 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 348: -#line 2487 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2499 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D); } -#line 7891 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8032 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 349: -#line 2493 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2505 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D); } -#line 7902 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8043 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 350: -#line 2499 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2511 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd3D); } -#line 7913 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8054 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 351: -#line 2505 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2517 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube); } -#line 7924 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8065 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 352: -#line 2511 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2523 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, false, true); } -#line 7935 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8076 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 353: -#line 2517 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2529 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, true); } -#line 7946 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8087 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 354: -#line 2523 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2535 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, false, true); } -#line 7957 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8098 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 355: -#line 2529 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2541 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true); } -#line 7968 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8109 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 356: -#line 2535 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2547 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true); } -#line 7979 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8120 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 357: -#line 2541 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2553 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true, true); } -#line 7990 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8131 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 358: -#line 2547 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2559 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, true); } -#line 8001 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8142 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 359: -#line 2553 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2565 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true); } -#line 8012 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8153 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 360: -#line 2559 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2571 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true, true); } -#line 8023 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8164 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 361: -#line 2565 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2577 "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 8033 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8174 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 362: -#line 2571 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2583 "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 8043 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8184 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 363: -#line 2576 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2588 "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 8053 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8194 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 364: -#line 2581 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2593 "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 8063 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8204 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 365: -#line 2586 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2598 "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 8073 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8214 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 366: -#line 2591 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2603 "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 8083 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8224 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 367: -#line 2596 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2608 "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 8093 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8234 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 368: -#line 2601 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2613 "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 8103 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8244 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 369: -#line 2607 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2619 "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 8113 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8254 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 370: -#line 2612 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2624 "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 8123 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8264 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 371: -#line 2617 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2629 "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 8133 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8274 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 372: -#line 2622 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2634 "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 8143 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8284 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 373: -#line 2627 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2639 "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 8153 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8294 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 374: -#line 2632 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2644 "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 8163 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8304 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 375: -#line 2637 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2649 "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 8173 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8314 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 376: -#line 2642 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2654 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true); } -#line 8183 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8324 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 377: -#line 2648 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2660 "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 8193 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8334 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 378: -#line 2653 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2665 "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 8203 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8344 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 379: -#line 2658 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2670 "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 8213 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8354 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 380: -#line 2663 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2675 "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 8223 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8364 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 381: -#line 2668 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2680 "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 8233 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8374 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 382: -#line 2673 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2685 "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 8243 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8384 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 383: -#line 2678 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2690 "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 8253 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8394 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 384: -#line 2683 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2695 "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 8263 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8404 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 385: -#line 2688 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2700 "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 8273 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8414 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 386: -#line 2693 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2705 "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 8283 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8424 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 387: -#line 2698 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2710 "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 8293 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8434 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 388: -#line 2703 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2715 "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 8303 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8444 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 389: -#line 2708 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2720 "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 8313 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8454 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 390: -#line 2713 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2725 "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 8323 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8464 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 391: -#line 2718 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2730 "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 8333 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8474 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 392: -#line 2724 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2736 "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 8343 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8484 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 393: -#line 2729 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2741 "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 8353 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8494 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 394: -#line 2734 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2746 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdRect); } -#line 8364 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8505 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 395: -#line 2740 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2752 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdRect, false, true); } -#line 8375 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8516 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 396: -#line 2746 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2758 "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 8385 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8526 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 397: -#line 2751 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2763 "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 8395 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8536 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 398: -#line 2756 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2768 "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 8405 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8546 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 399: -#line 2761 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2773 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdBuffer); } -#line 8416 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8557 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 400: -#line 2767 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2779 "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 8426 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8567 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 401: -#line 2772 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2784 "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 8436 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8577 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 402: -#line 2777 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2789 "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 8446 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8587 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 403: -#line 2782 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2794 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, false, true); } -#line 8457 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8598 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 404: -#line 2788 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2800 "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 8467 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8608 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 405: -#line 2793 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2805 "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 8477 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8618 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 406: -#line 2798 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2810 "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 8487 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8628 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 407: -#line 2803 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2815 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, false, true); } -#line 8498 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8639 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 408: -#line 2809 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2821 "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 8508 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8649 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 409: -#line 2814 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2826 "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 8518 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8659 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 410: -#line 2819 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2831 "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 8528 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8669 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 411: -#line 2824 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2836 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D); } -#line 8539 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8680 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 412: -#line 2830 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2842 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D); } -#line 8550 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8691 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 413: -#line 2836 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2848 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd3D); } -#line 8561 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8702 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 414: -#line 2842 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2854 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube); } -#line 8572 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8713 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 415: -#line 2848 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2860 "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 8582 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8723 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 416: -#line 2853 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2865 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D, true); } -#line 8593 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8734 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 417: -#line 2859 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2871 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true); } -#line 8604 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8745 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 418: -#line 2865 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2877 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube, true); } -#line 8615 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8756 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 419: -#line 2871 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2883 "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 8625 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8766 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 420: -#line 2876 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2888 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true); } -#line 8635 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8776 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 421: -#line 2881 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2893 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D); } -#line 8645 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8786 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 422: -#line 2886 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2898 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true); } -#line 8655 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8796 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 423: -#line 2891 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2903 "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 8665 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8806 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 424: -#line 2896 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2908 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdRect); } -#line 8676 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8817 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 425: -#line 2902 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2914 "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 8686 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8827 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 426: -#line 2907 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2919 "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 8696 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8837 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 427: -#line 2912 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2924 "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 8706 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8847 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 428: -#line 2917 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2929 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdBuffer); } -#line 8717 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8858 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 429: -#line 2923 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2935 "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 8727 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8868 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 430: -#line 2928 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2940 "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 8737 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8878 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 431: -#line 2933 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2945 "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 8747 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8888 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 432: -#line 2938 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2950 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, false, false, true); } -#line 8758 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8899 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 433: -#line 2944 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2956 "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 8768 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8909 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 434: -#line 2949 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2961 "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 8778 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8919 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 435: -#line 2954 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2966 "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 8788 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8929 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 436: -#line 2959 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2971 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true, false, true); } -#line 8799 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8940 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 437: -#line 2965 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2977 "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 8809 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8950 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 438: -#line 2970 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2982 "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 8819 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8960 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 439: -#line 2975 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2987 "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 8829 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8970 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 440: -#line 2980 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2992 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D); } -#line 8840 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8981 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 441: -#line 2986 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2998 "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 8850 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8991 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 442: -#line 2991 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3003 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D); } -#line 8860 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9001 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 443: -#line 2996 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3008 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D); } -#line 8870 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9011 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 444: -#line 3001 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3013 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D); } -#line 8881 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9022 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 445: -#line 3007 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3019 "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 8891 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9032 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 446: -#line 3012 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3024 "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 8901 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9042 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 447: -#line 3017 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3029 "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 8911 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9052 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 448: -#line 3022 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3034 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd3D); } -#line 8922 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9063 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 449: -#line 3028 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3040 "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 8932 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9073 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 450: -#line 3033 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3045 "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 8942 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9083 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 451: -#line 3038 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3050 "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 8952 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9093 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 452: -#line 3043 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3055 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdRect); } -#line 8963 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9104 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 453: -#line 3049 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3061 "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 8973 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9114 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 454: -#line 3054 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3066 "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 8983 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9124 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 455: -#line 3059 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3071 "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 8993 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9134 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 456: -#line 3064 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3076 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube); } -#line 9004 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9145 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 457: -#line 3070 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3082 "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 9014 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9155 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 458: -#line 3075 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3087 "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 9024 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9165 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 459: -#line 3080 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3092 "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 9034 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9175 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 460: -#line 3085 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3097 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdBuffer); } -#line 9045 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9186 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 461: -#line 3091 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3103 "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 9055 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9196 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 462: -#line 3096 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3108 "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 9065 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9206 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 463: -#line 3101 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3113 "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 9075 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9216 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 464: -#line 3106 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3118 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D, true); } -#line 9086 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9227 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 465: -#line 3112 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3124 "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 9096 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9237 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 466: -#line 3117 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3129 "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 9106 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9247 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 467: -#line 3122 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3134 "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 9116 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9257 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 468: -#line 3127 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3139 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true); } -#line 9127 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9268 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 469: -#line 3133 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3145 "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 9137 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9278 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 470: -#line 3138 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3150 "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 9147 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9288 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 471: -#line 3143 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3155 "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 9157 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9298 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 472: -#line 3148 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3160 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube, true); } -#line 9168 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9309 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 473: -#line 3154 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3166 "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 9178 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9319 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 474: -#line 3159 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3171 "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 9188 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9329 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 475: -#line 3164 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3176 "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 9198 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9339 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 476: -#line 3169 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3181 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, false, false, true); } -#line 9209 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9350 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 477: -#line 3175 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3187 "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 9219 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9360 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 478: -#line 3180 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3192 "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 9229 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9370 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 479: -#line 3185 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3197 "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 9239 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9380 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 480: -#line 3190 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3202 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true, false, true); } -#line 9250 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9391 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 481: -#line 3196 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3208 "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 9260 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9401 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 482: -#line 3201 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3213 "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 9270 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9411 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 483: -#line 3206 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 3218 "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(EbtInt64, Esd1D); + } +#line 9421 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 484: +#line 3223 "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(EbtUint64, Esd1D); + } +#line 9431 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 485: +#line 3228 "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(EbtInt64, Esd2D); + } +#line 9441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 486: +#line 3233 "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(EbtUint64, Esd2D); + } +#line 9451 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 487: +#line 3238 "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(EbtInt64, Esd3D); + } +#line 9461 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 488: +#line 3243 "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(EbtUint64, Esd3D); + } +#line 9471 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 489: +#line 3248 "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(EbtInt64, EsdRect); + } +#line 9481 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 490: +#line 3253 "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(EbtUint64, EsdRect); + } +#line 9491 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 491: +#line 3258 "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(EbtInt64, EsdCube); + } +#line 9501 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 492: +#line 3263 "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(EbtUint64, EsdCube); + } +#line 9511 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 493: +#line 3268 "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(EbtInt64, EsdBuffer); + } +#line 9521 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 494: +#line 3273 "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(EbtUint64, EsdBuffer); + } +#line 9531 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 495: +#line 3278 "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(EbtInt64, Esd1D, true); + } +#line 9541 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 496: +#line 3283 "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(EbtUint64, Esd1D, true); + } +#line 9551 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 497: +#line 3288 "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(EbtInt64, Esd2D, true); + } +#line 9561 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 498: +#line 3293 "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(EbtUint64, Esd2D, true); + } +#line 9571 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 499: +#line 3298 "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(EbtInt64, EsdCube, true); + } +#line 9581 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 500: +#line 3303 "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(EbtUint64, EsdCube, true); + } +#line 9591 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 501: +#line 3308 "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(EbtInt64, Esd2D, false, false, true); + } +#line 9601 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 502: +#line 3313 "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(EbtUint64, Esd2D, false, false, true); + } +#line 9611 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 503: +#line 3318 "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(EbtInt64, Esd2D, true, false, true); + } +#line 9621 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 504: +#line 3323 "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(EbtUint64, Esd2D, true, false, true); + } +#line 9631 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 505: +#line 3328 "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 9281 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9642 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 484: -#line 3212 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 506: +#line 3334 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // GL_EXT_YUV_target (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.yuv = true; } -#line 9292 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9653 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 485: -#line 3218 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 507: +#line 3340 "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 9303 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9664 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 486: -#line 3224 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 508: +#line 3346 "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 9314 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9675 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 487: -#line 3230 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 509: +#line 3352 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); @@ -9322,11 +9683,11 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16); } -#line 9326 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9687 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 488: -#line 3237 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 510: +#line 3359 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); @@ -9334,98 +9695,98 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16, true); } -#line 9338 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9699 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 489: -#line 3244 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 511: +#line 3366 "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 9349 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9710 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 490: -#line 3250 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 512: +#line 3372 "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 9360 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9721 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 491: -#line 3256 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 513: +#line 3378 "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 9371 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9732 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 492: -#line 3262 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 514: +#line 3384 "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 9382 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9743 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 493: -#line 3268 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 515: +#line 3390 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fcoopmatCheck((yyvsp[0].lex).loc, "fcoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).coopmat = true; } -#line 9393 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9754 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 494: -#line 3274 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 516: +#line 3396 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.intcoopmatCheck((yyvsp[0].lex).loc, "icoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).coopmat = true; } -#line 9404 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9765 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 495: -#line 3280 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 517: +#line 3402 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.intcoopmatCheck((yyvsp[0].lex).loc, "ucoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).coopmat = true; } -#line 9415 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9776 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 496: -#line 3287 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 518: +#line 3409 "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 9425 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9786 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 497: -#line 3292 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 519: +#line 3414 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // // This is for user defined type names. The lexical phase looked up the @@ -9439,47 +9800,47 @@ yyreduce: } else parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), ""); } -#line 9443 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9804 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 498: -#line 3308 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 520: +#line 3430 "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 9453 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9814 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 499: -#line 3313 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 521: +#line 3435 "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 9463 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9824 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 500: -#line 3318 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 522: +#line 3440 "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 9473 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9834 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 501: -#line 3326 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 523: +#line 3448 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); } -#line 9479 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9840 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 502: -#line 3326 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 524: +#line 3448 "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); @@ -9491,17 +9852,17 @@ yyreduce: (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 9495 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9856 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 503: -#line 3337 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 525: +#line 3459 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); } -#line 9501 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9862 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 504: -#line 3337 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 526: +#line 3459 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { TType* structure = new TType((yyvsp[-1].interm.typeList), TString("")); (yyval.interm.type).init((yyvsp[-4].lex).loc); @@ -9509,19 +9870,19 @@ yyreduce: (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 9513 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9874 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 505: -#line 3347 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 527: +#line 3469 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeList) = (yyvsp[0].interm.typeList); } -#line 9521 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9882 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 506: -#line 3350 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 528: +#line 3472 "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) { @@ -9532,11 +9893,11 @@ yyreduce: (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]); } } -#line 9536 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9897 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 507: -#line 3363 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 529: +#line 3485 "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"); @@ -9559,11 +9920,11 @@ yyreduce: (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 9563 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9924 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 508: -#line 3385 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 530: +#line 3507 "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"); @@ -9588,38 +9949,38 @@ yyreduce: (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 9592 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9953 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 509: -#line 3412 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 531: +#line 3534 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeList) = new TTypeList; (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 9601 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9962 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 510: -#line 3416 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 532: +#line 3538 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 9609 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9970 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 511: -#line 3422 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 533: +#line 3544 "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 9619 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9980 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 512: -#line 3427 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 534: +#line 3549 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes); @@ -9628,235 +9989,235 @@ yyreduce: (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string); (yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes); } -#line 9632 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9993 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 513: -#line 3438 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 535: +#line 3560 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 9640 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10001 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 514: -#line 3442 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 536: +#line 3564 "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 9651 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10012 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 515: -#line 3448 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 537: +#line 3570 "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 9662 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10023 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 516: -#line 3459 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 538: +#line 3581 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc()); } -#line 9670 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10031 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 517: -#line 3462 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 539: +#line 3584 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); } -#line 9678 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10039 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 518: -#line 3469 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 540: +#line 3591 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9684 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10045 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 519: -#line 3473 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 541: +#line 3595 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9690 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10051 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 520: -#line 3474 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 542: +#line 3596 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9696 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10057 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 521: -#line 3480 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 543: +#line 3602 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9702 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10063 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 522: -#line 3481 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 544: +#line 3603 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9708 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10069 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 523: -#line 3482 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 545: +#line 3604 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9714 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10075 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 524: -#line 3483 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 546: +#line 3605 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9720 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10081 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 525: -#line 3484 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 547: +#line 3606 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9726 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10087 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 526: -#line 3485 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 548: +#line 3607 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9732 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10093 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 527: -#line 3486 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 549: +#line 3608 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9738 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10099 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 528: -#line 3488 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 550: +#line 3610 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9744 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10105 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 529: -#line 3494 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 551: +#line 3616 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "demote"); parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_demote_to_helper_invocation, "demote"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDemote, (yyvsp[-1].lex).loc); } -#line 9754 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10115 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 530: -#line 3503 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 552: +#line 3625 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; } -#line 9760 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10121 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 531: -#line 3504 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 553: +#line 3626 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; } -#line 9769 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10130 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 532: -#line 3508 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 554: +#line 3630 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; } -#line 9778 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10139 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 533: -#line 3512 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 555: +#line 3634 "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 9788 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10149 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 534: -#line 3520 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 556: +#line 3642 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9794 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10155 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 535: -#line 3521 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 557: +#line 3643 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9800 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10161 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 536: -#line 3525 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 558: +#line 3647 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { ++parseContext.controlFlowNestingLevel; } -#line 9808 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10169 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 537: -#line 3528 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 559: +#line 3650 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9817 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10178 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 538: -#line 3532 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 560: +#line 3654 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 9827 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10188 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 539: -#line 3537 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 561: +#line 3659 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9838 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10199 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 540: -#line 3546 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 562: +#line 3668 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; } -#line 9846 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10207 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 541: -#line 3549 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 563: +#line 3671 "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 9856 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10217 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 542: -#line 3557 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 564: +#line 3679 "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 || @@ -9865,11 +10226,11 @@ yyreduce: (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case } } -#line 9869 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10230 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 543: -#line 3565 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 565: +#line 3687 "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)) { @@ -9878,76 +10239,76 @@ yyreduce: } else (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 9882 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10243 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 544: -#line 3576 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 566: +#line 3698 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; } -#line 9888 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10249 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 545: -#line 3577 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 567: +#line 3699 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = static_cast((yyvsp[-1].interm.intermTypedNode)); } -#line 9894 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10255 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 546: -#line 3581 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 568: +#line 3703 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9902 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10263 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 547: -#line 3585 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 569: +#line 3707 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9911 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10272 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 548: -#line 3592 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 570: +#line 3714 "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 9920 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10281 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 549: -#line 3599 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 571: +#line 3721 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode); } -#line 9929 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10290 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 550: -#line 3603 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 572: +#line 3725 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode); (yyval.interm.nodePair).node2 = 0; } -#line 9938 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10299 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 551: -#line 3611 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 573: +#line 3733 "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 9947 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10308 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 552: -#line 3615 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 574: +#line 3737 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type)); @@ -9958,28 +10319,28 @@ yyreduce: else (yyval.interm.intermTypedNode) = 0; } -#line 9962 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10323 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 553: -#line 3628 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 575: +#line 3750 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9970 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10331 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 554: -#line 3632 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 576: +#line 3754 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9979 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10340 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 555: -#line 3639 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 577: +#line 3761 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // start new switch sequence on the switch stack ++parseContext.controlFlowNestingLevel; @@ -9988,11 +10349,11 @@ yyreduce: parseContext.switchLevel.push_back(parseContext.statementNestingLevel); parseContext.symbolTable.push(); } -#line 9992 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10353 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 556: -#line 3647 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 578: +#line 3769 "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(); @@ -10002,27 +10363,27 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 10006 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10367 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 557: -#line 3659 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 579: +#line 3781 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; } -#line 10014 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10375 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 558: -#line 3662 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 580: +#line 3784 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10022 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10383 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 559: -#line 3668 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 581: +#line 3790 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -10035,11 +10396,11 @@ yyreduce: (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc); } } -#line 10039 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10400 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 560: -#line 3680 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 582: +#line 3802 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -10049,28 +10410,28 @@ yyreduce: else (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc); } -#line 10053 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10414 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 561: -#line 3692 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 583: +#line 3814 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10061 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10422 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 562: -#line 3696 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 584: +#line 3818 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10070 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10431 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 563: -#line 3703 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 585: +#line 3825 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", ""); @@ -10079,11 +10440,11 @@ yyreduce: ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 10083 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10444 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 564: -#line 3711 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 586: +#line 3833 "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); @@ -10091,21 +10452,21 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 10095 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10456 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 565: -#line 3718 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 587: +#line 3840 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 10105 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10466 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 566: -#line 3723 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 588: +#line 3845 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", ""); @@ -10117,22 +10478,22 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 10121 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10482 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 567: -#line 3734 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 589: +#line 3856 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 10132 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10493 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 568: -#line 3740 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 590: +#line 3862 "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); @@ -10145,81 +10506,81 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 10149 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10510 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 569: -#line 3755 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 591: +#line 3877 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10157 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10518 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 570: -#line 3758 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 592: +#line 3880 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10165 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10526 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 571: -#line 3764 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 593: +#line 3886 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 10173 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10534 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 572: -#line 3767 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 594: +#line 3889 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = 0; } -#line 10181 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10542 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 573: -#line 3773 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 595: +#line 3895 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); (yyval.interm.nodePair).node2 = 0; } -#line 10190 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10551 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 574: -#line 3777 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 596: +#line 3899 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode); } -#line 10199 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10560 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 575: -#line 3784 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 597: +#line 3906 "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 10209 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10570 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 576: -#line 3789 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 598: +#line 3911 "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 10219 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10580 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 577: -#line 3794 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 599: +#line 3916 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc); if (parseContext.currentFunctionType->getBasicType() != EbtVoid) @@ -10227,74 +10588,74 @@ yyreduce: if (parseContext.inMain) parseContext.postEntryPointReturn = true; } -#line 10231 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10592 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 578: -#line 3801 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 600: +#line 3923 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); } -#line 10239 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10600 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 579: -#line 3804 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 601: +#line 3926 "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 10248 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10609 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 580: -#line 3813 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 602: +#line 3935 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } -#line 10257 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10618 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 581: -#line 3817 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 603: +#line 3939 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[0].interm.intermNode) != nullptr) { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } } -#line 10268 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10629 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 582: -#line 3826 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 604: +#line 3948 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10276 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10637 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 583: -#line 3829 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 605: +#line 3951 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10284 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10645 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 584: -#line 3833 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 606: +#line 3955 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "extraneous semicolon"); parseContext.profileRequires((yyvsp[0].lex).loc, ~EEsProfile, 460, nullptr, "extraneous semicolon"); (yyval.interm.intermNode) = nullptr; } -#line 10294 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10655 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 585: -#line 3842 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 607: +#line 3964 "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); @@ -10307,11 +10668,11 @@ yyreduce: ++parseContext.statementNestingLevel; } } -#line 10311 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10672 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 586: -#line 3854 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 608: +#line 3976 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // May be best done as post process phase on intermediate code if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) @@ -10338,52 +10699,52 @@ yyreduce: --parseContext.statementNestingLevel; } } -#line 10342 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10703 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 587: -#line 3884 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 609: +#line 4006 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.attributes) = (yyvsp[-2].interm.attributes); parseContext.requireExtensions((yyvsp[-4].lex).loc, 1, &E_GL_EXT_control_flow_attributes, "attribute"); } -#line 10351 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10712 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 588: -#line 3890 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 610: +#line 4012 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.attributes) = (yyvsp[0].interm.attributes); } -#line 10359 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10720 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 589: -#line 3893 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 611: +#line 4015 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes)); } -#line 10367 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10728 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 590: -#line 3898 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 612: +#line 4020 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string); } -#line 10375 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10736 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 591: -#line 3901 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 613: +#line 4023 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode)); } -#line 10383 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10744 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; -#line 10387 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10748 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -10611,5 +10972,5 @@ yyreturn: #endif return yyresult; } -#line 3906 "MachineIndependent/glslang.y" /* yacc.c:1906 */ +#line 4028 "MachineIndependent/glslang.y" /* yacc.c:1906 */ diff --git a/glslang/MachineIndependent/glslang_tab.cpp.h b/glslang/MachineIndependent/glslang_tab.cpp.h index 78b72a24..58fc9fbe 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp.h +++ b/glslang/MachineIndependent/glslang_tab.cpp.h @@ -297,171 +297,193 @@ extern int yydebug; F16IMAGEBUFFER = 507, F16IMAGE2DMS = 508, F16IMAGE2DMSARRAY = 509, - TEXTURECUBEARRAY = 510, - ITEXTURECUBEARRAY = 511, - UTEXTURECUBEARRAY = 512, - TEXTURE1D = 513, - ITEXTURE1D = 514, - UTEXTURE1D = 515, - TEXTURE1DARRAY = 516, - ITEXTURE1DARRAY = 517, - UTEXTURE1DARRAY = 518, - TEXTURE2DRECT = 519, - ITEXTURE2DRECT = 520, - UTEXTURE2DRECT = 521, - TEXTUREBUFFER = 522, - ITEXTUREBUFFER = 523, - UTEXTUREBUFFER = 524, - TEXTURE2DMS = 525, - ITEXTURE2DMS = 526, - UTEXTURE2DMS = 527, - TEXTURE2DMSARRAY = 528, - ITEXTURE2DMSARRAY = 529, - UTEXTURE2DMSARRAY = 530, - F16TEXTURE1D = 531, - F16TEXTURE2D = 532, - F16TEXTURE3D = 533, - F16TEXTURE2DRECT = 534, - F16TEXTURECUBE = 535, - F16TEXTURE1DARRAY = 536, - F16TEXTURE2DARRAY = 537, - F16TEXTURECUBEARRAY = 538, - F16TEXTUREBUFFER = 539, - F16TEXTURE2DMS = 540, - F16TEXTURE2DMSARRAY = 541, - SUBPASSINPUT = 542, - SUBPASSINPUTMS = 543, - ISUBPASSINPUT = 544, - ISUBPASSINPUTMS = 545, - USUBPASSINPUT = 546, - USUBPASSINPUTMS = 547, - F16SUBPASSINPUT = 548, - F16SUBPASSINPUTMS = 549, - LEFT_OP = 550, - RIGHT_OP = 551, - INC_OP = 552, - DEC_OP = 553, - LE_OP = 554, - GE_OP = 555, - EQ_OP = 556, - NE_OP = 557, - AND_OP = 558, - OR_OP = 559, - XOR_OP = 560, - MUL_ASSIGN = 561, - DIV_ASSIGN = 562, - ADD_ASSIGN = 563, - MOD_ASSIGN = 564, - LEFT_ASSIGN = 565, - RIGHT_ASSIGN = 566, - AND_ASSIGN = 567, - XOR_ASSIGN = 568, - OR_ASSIGN = 569, - SUB_ASSIGN = 570, - STRING_LITERAL = 571, - LEFT_PAREN = 572, - RIGHT_PAREN = 573, - LEFT_BRACKET = 574, - RIGHT_BRACKET = 575, - LEFT_BRACE = 576, - RIGHT_BRACE = 577, - DOT = 578, - COMMA = 579, - COLON = 580, - EQUAL = 581, - SEMICOLON = 582, - BANG = 583, - DASH = 584, - TILDE = 585, - PLUS = 586, - STAR = 587, - SLASH = 588, - PERCENT = 589, - LEFT_ANGLE = 590, - RIGHT_ANGLE = 591, - VERTICAL_BAR = 592, - CARET = 593, - AMPERSAND = 594, - QUESTION = 595, - INVARIANT = 596, - HIGH_PRECISION = 597, - MEDIUM_PRECISION = 598, - LOW_PRECISION = 599, - PRECISION = 600, - PACKED = 601, - RESOURCE = 602, - SUPERP = 603, - FLOATCONSTANT = 604, - INTCONSTANT = 605, - UINTCONSTANT = 606, - BOOLCONSTANT = 607, - IDENTIFIER = 608, - TYPE_NAME = 609, - CENTROID = 610, - IN = 611, - OUT = 612, - INOUT = 613, - STRUCT = 614, - VOID = 615, - WHILE = 616, - BREAK = 617, - CONTINUE = 618, - DO = 619, - ELSE = 620, - FOR = 621, - IF = 622, - DISCARD = 623, - RETURN = 624, - SWITCH = 625, - CASE = 626, - DEFAULT = 627, - UNIFORM = 628, - SHARED = 629, - BUFFER = 630, - FLAT = 631, - SMOOTH = 632, - LAYOUT = 633, - DOUBLECONSTANT = 634, - INT16CONSTANT = 635, - UINT16CONSTANT = 636, - FLOAT16CONSTANT = 637, - INT32CONSTANT = 638, - UINT32CONSTANT = 639, - INT64CONSTANT = 640, - UINT64CONSTANT = 641, - SUBROUTINE = 642, - DEMOTE = 643, - PAYLOADNV = 644, - PAYLOADINNV = 645, - HITATTRNV = 646, - CALLDATANV = 647, - CALLDATAINNV = 648, - PAYLOADEXT = 649, - PAYLOADINEXT = 650, - HITATTREXT = 651, - CALLDATAEXT = 652, - CALLDATAINEXT = 653, - PATCH = 654, - SAMPLE = 655, - NONUNIFORM = 656, - COHERENT = 657, - VOLATILE = 658, - RESTRICT = 659, - READONLY = 660, - WRITEONLY = 661, - DEVICECOHERENT = 662, - QUEUEFAMILYCOHERENT = 663, - WORKGROUPCOHERENT = 664, - SUBGROUPCOHERENT = 665, - NONPRIVATE = 666, - SHADERCALLCOHERENT = 667, - NOPERSPECTIVE = 668, - EXPLICITINTERPAMD = 669, - PERVERTEXNV = 670, - PERPRIMITIVENV = 671, - PERVIEWNV = 672, - PERTASKNV = 673, - PRECISE = 674 + I64IMAGE1D = 510, + U64IMAGE1D = 511, + I64IMAGE2D = 512, + U64IMAGE2D = 513, + I64IMAGE3D = 514, + U64IMAGE3D = 515, + I64IMAGE2DRECT = 516, + U64IMAGE2DRECT = 517, + I64IMAGECUBE = 518, + U64IMAGECUBE = 519, + I64IMAGEBUFFER = 520, + U64IMAGEBUFFER = 521, + I64IMAGE1DARRAY = 522, + U64IMAGE1DARRAY = 523, + I64IMAGE2DARRAY = 524, + U64IMAGE2DARRAY = 525, + I64IMAGECUBEARRAY = 526, + U64IMAGECUBEARRAY = 527, + I64IMAGE2DMS = 528, + U64IMAGE2DMS = 529, + I64IMAGE2DMSARRAY = 530, + U64IMAGE2DMSARRAY = 531, + TEXTURECUBEARRAY = 532, + ITEXTURECUBEARRAY = 533, + UTEXTURECUBEARRAY = 534, + TEXTURE1D = 535, + ITEXTURE1D = 536, + UTEXTURE1D = 537, + TEXTURE1DARRAY = 538, + ITEXTURE1DARRAY = 539, + UTEXTURE1DARRAY = 540, + TEXTURE2DRECT = 541, + ITEXTURE2DRECT = 542, + UTEXTURE2DRECT = 543, + TEXTUREBUFFER = 544, + ITEXTUREBUFFER = 545, + UTEXTUREBUFFER = 546, + TEXTURE2DMS = 547, + ITEXTURE2DMS = 548, + UTEXTURE2DMS = 549, + TEXTURE2DMSARRAY = 550, + ITEXTURE2DMSARRAY = 551, + UTEXTURE2DMSARRAY = 552, + F16TEXTURE1D = 553, + F16TEXTURE2D = 554, + F16TEXTURE3D = 555, + F16TEXTURE2DRECT = 556, + F16TEXTURECUBE = 557, + F16TEXTURE1DARRAY = 558, + F16TEXTURE2DARRAY = 559, + F16TEXTURECUBEARRAY = 560, + F16TEXTUREBUFFER = 561, + F16TEXTURE2DMS = 562, + F16TEXTURE2DMSARRAY = 563, + SUBPASSINPUT = 564, + SUBPASSINPUTMS = 565, + ISUBPASSINPUT = 566, + ISUBPASSINPUTMS = 567, + USUBPASSINPUT = 568, + USUBPASSINPUTMS = 569, + F16SUBPASSINPUT = 570, + F16SUBPASSINPUTMS = 571, + LEFT_OP = 572, + RIGHT_OP = 573, + INC_OP = 574, + DEC_OP = 575, + LE_OP = 576, + GE_OP = 577, + EQ_OP = 578, + NE_OP = 579, + AND_OP = 580, + OR_OP = 581, + XOR_OP = 582, + MUL_ASSIGN = 583, + DIV_ASSIGN = 584, + ADD_ASSIGN = 585, + MOD_ASSIGN = 586, + LEFT_ASSIGN = 587, + RIGHT_ASSIGN = 588, + AND_ASSIGN = 589, + XOR_ASSIGN = 590, + OR_ASSIGN = 591, + SUB_ASSIGN = 592, + STRING_LITERAL = 593, + LEFT_PAREN = 594, + RIGHT_PAREN = 595, + LEFT_BRACKET = 596, + RIGHT_BRACKET = 597, + LEFT_BRACE = 598, + RIGHT_BRACE = 599, + DOT = 600, + COMMA = 601, + COLON = 602, + EQUAL = 603, + SEMICOLON = 604, + BANG = 605, + DASH = 606, + TILDE = 607, + PLUS = 608, + STAR = 609, + SLASH = 610, + PERCENT = 611, + LEFT_ANGLE = 612, + RIGHT_ANGLE = 613, + VERTICAL_BAR = 614, + CARET = 615, + AMPERSAND = 616, + QUESTION = 617, + INVARIANT = 618, + HIGH_PRECISION = 619, + MEDIUM_PRECISION = 620, + LOW_PRECISION = 621, + PRECISION = 622, + PACKED = 623, + RESOURCE = 624, + SUPERP = 625, + FLOATCONSTANT = 626, + INTCONSTANT = 627, + UINTCONSTANT = 628, + BOOLCONSTANT = 629, + IDENTIFIER = 630, + TYPE_NAME = 631, + CENTROID = 632, + IN = 633, + OUT = 634, + INOUT = 635, + STRUCT = 636, + VOID = 637, + WHILE = 638, + BREAK = 639, + CONTINUE = 640, + DO = 641, + ELSE = 642, + FOR = 643, + IF = 644, + DISCARD = 645, + RETURN = 646, + SWITCH = 647, + CASE = 648, + DEFAULT = 649, + UNIFORM = 650, + SHARED = 651, + BUFFER = 652, + FLAT = 653, + SMOOTH = 654, + LAYOUT = 655, + DOUBLECONSTANT = 656, + INT16CONSTANT = 657, + UINT16CONSTANT = 658, + FLOAT16CONSTANT = 659, + INT32CONSTANT = 660, + UINT32CONSTANT = 661, + INT64CONSTANT = 662, + UINT64CONSTANT = 663, + SUBROUTINE = 664, + DEMOTE = 665, + PAYLOADNV = 666, + PAYLOADINNV = 667, + HITATTRNV = 668, + CALLDATANV = 669, + CALLDATAINNV = 670, + PAYLOADEXT = 671, + PAYLOADINEXT = 672, + HITATTREXT = 673, + CALLDATAEXT = 674, + CALLDATAINEXT = 675, + PATCH = 676, + SAMPLE = 677, + NONUNIFORM = 678, + COHERENT = 679, + VOLATILE = 680, + RESTRICT = 681, + READONLY = 682, + WRITEONLY = 683, + DEVICECOHERENT = 684, + QUEUEFAMILYCOHERENT = 685, + WORKGROUPCOHERENT = 686, + SUBGROUPCOHERENT = 687, + NONPRIVATE = 688, + SHADERCALLCOHERENT = 689, + NOPERSPECTIVE = 690, + EXPLICITINTERPAMD = 691, + PERVERTEXNV = 692, + PERPRIMITIVENV = 693, + PERVIEWNV = 694, + PERTASKNV = 695, + PRECISE = 696 }; #endif @@ -506,7 +528,7 @@ union YYSTYPE glslang::TArraySizes* typeParameters; } interm; -#line 510 "MachineIndependent/glslang_tab.cpp.h" /* yacc.c:1909 */ +#line 532 "MachineIndependent/glslang_tab.cpp.h" /* yacc.c:1909 */ }; typedef union YYSTYPE YYSTYPE; diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index c0781567..fb3e28c6 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -411,6 +411,7 @@ INSTANTIATE_TEST_SUITE_P( "spv.texture.vert", "spv.textureBuffer.vert", "spv.image.frag", + "spv.imageAtomic64.frag", "spv.types.frag", "spv.uint.frag", "spv.uniformArray.frag", From 3d7984dd1e602da17910db8b5dbe171abf510d7a Mon Sep 17 00:00:00 2001 From: Chow Date: Fri, 6 Nov 2020 01:33:45 +0800 Subject: [PATCH 38/57] Fix warning in iomapper. (#2449) ATT. --- glslang/MachineIndependent/iomapper.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/glslang/MachineIndependent/iomapper.cpp b/glslang/MachineIndependent/iomapper.cpp index 0e9e717a..c42e74fa 100644 --- a/glslang/MachineIndependent/iomapper.cpp +++ b/glslang/MachineIndependent/iomapper.cpp @@ -371,13 +371,13 @@ struct TSymbolValidater } else if (overlapLocation >= 0) { if (diffLocation == true) { - TString err = "Uniform location should be equal for same uniforms: " + overlapLocation; + TString err = ("Uniform location should be equal for same uniforms: " +std::to_string(overlapLocation)).c_str(); infoSink.info.message(EPrefixInternalError, err.c_str()); hadError = true; break; } else { - TString err = "Uniform location overlaps across stages: " + overlapLocation; + TString err = ("Uniform location overlaps across stages: " + std::to_string(overlapLocation)).c_str(); infoSink.info.message(EPrefixInternalError, err.c_str()); hadError = true; break; @@ -626,8 +626,8 @@ private: const TQualifier& qualifier1 = type1->getQualifier(); const TQualifier& qualifier2 = type2->getQualifier(); - if (isBlock == false && - (type1->getQualifier().storage == EvqUniform && type2->getQualifier().storage == EvqUniform) || + if (((isBlock == false) && + (type1->getQualifier().storage == EvqUniform && type2->getQualifier().storage == EvqUniform)) || (type1->getQualifier().storage == EvqGlobal && type2->getQualifier().storage == EvqGlobal)) { if (qualifier1.precision != qualifier2.precision) { hasError = true; From 383eaf3293fa898622ad210ce49d11924e0d6aa1 Mon Sep 17 00:00:00 2001 From: rdb Date: Fri, 6 Nov 2020 18:51:07 +0100 Subject: [PATCH 39/57] Fix token-pasting macros not working in preprocessor directives. (#2453) Fixes #2443 --- Test/baseResults/tokenPaste.vert.out | 92 ++++++++++--------- Test/tokenPaste.vert | 12 +++ .../MachineIndependent/preprocessor/Pp.cpp | 1 + 3 files changed, 61 insertions(+), 44 deletions(-) diff --git a/Test/baseResults/tokenPaste.vert.out b/Test/baseResults/tokenPaste.vert.out index b5ba9a5f..5ae1f751 100644 --- a/Test/baseResults/tokenPaste.vert.out +++ b/Test/baseResults/tokenPaste.vert.out @@ -3,11 +3,11 @@ ERROR: 0:38: '##' : unexpected location ERROR: 0:40: '##' : unexpected location; end of replacement list ERROR: 0:49: '##' : combined tokens are too long ERROR: 0:52: '##' : not supported for these tokens -ERROR: 0:69: '##' : combined token is invalid -ERROR: 0:82: 'macro expansion' : Too few args in Macro rec -ERROR: 0:82: '##' : unexpected location -ERROR: 0:82: '##' : unexpected location -ERROR: 0:86: '##' : unexpected location; end of argument +ERROR: 0:81: '##' : combined token is invalid +ERROR: 0:94: 'macro expansion' : Too few args in Macro rec +ERROR: 0:94: '##' : unexpected location +ERROR: 0:94: '##' : unexpected location +ERROR: 0:98: '##' : unexpected location; end of argument ERROR: 9 compilation errors. No code generated. @@ -18,35 +18,35 @@ ERROR: node is still EOpNull! 0:52 'a' ( global int) 0:52 Constant: 0:52 11 (const int) -0:58 Sequence -0:58 move second child to first child ( temp int) -0:58 'cop' ( global int) -0:58 Constant: -0:58 160 (const int) -0:59 Sequence -0:59 move second child to first child ( temp bool) -0:59 'dop' ( global bool) -0:59 Constant: -0:59 true (const bool) -0:63 Function Definition: ShouldntExpandToThis( ( global void) -0:63 Function Parameters: -0:65 Sequence -0:65 Sequence -0:65 move second child to first child ( temp int) -0:65 'e' ( temp int) -0:65 Constant: -0:65 16 (const int) -0:66 right shift second child into first child ( temp int) -0:66 'e' ( temp int) -0:66 Constant: -0:66 2 (const int) -0:69 Sequence -0:69 move second child to first child ( temp bool) -0:69 'f' ( temp bool) -0:69 Compare Greater Than ( temp bool) -0:69 'e' ( temp int) -0:69 Constant: -0:69 5 (const int) +0:70 Sequence +0:70 move second child to first child ( temp int) +0:70 'cop' ( global int) +0:70 Constant: +0:70 160 (const int) +0:71 Sequence +0:71 move second child to first child ( temp bool) +0:71 'dop' ( global bool) +0:71 Constant: +0:71 true (const bool) +0:75 Function Definition: ShouldntExpandToThis( ( global void) +0:75 Function Parameters: +0:77 Sequence +0:77 Sequence +0:77 move second child to first child ( temp int) +0:77 'e' ( temp int) +0:77 Constant: +0:77 16 (const int) +0:78 right shift second child into first child ( temp int) +0:78 'e' ( temp int) +0:78 Constant: +0:78 2 (const int) +0:81 Sequence +0:81 move second child to first child ( temp bool) +0:81 'f' ( temp bool) +0:81 Compare Greater Than ( temp bool) +0:81 'e' ( temp int) +0:81 Constant: +0:81 5 (const int) 0:? Linker Objects 0:? 'SecondExpansion' ( global int) 0:? 'PostPasteExpansion' ( global int) @@ -60,6 +60,8 @@ ERROR: node is still EOpNull! 0:? 'foo875' ( uniform float) 0:? 'ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF012345' ( global float) 0:? 'a' ( global int) +0:? 'seahorse_var' ( uniform float) +0:? 'sealion_var' ( uniform float) 0:? 'aop' ( const int) 0:? 10 (const int) 0:? 'bop' ( const int) @@ -83,16 +85,16 @@ ERROR: node is still EOpNull! 0:52 'a' ( global int) 0:52 Constant: 0:52 11 (const int) -0:58 Sequence -0:58 move second child to first child ( temp int) -0:58 'cop' ( global int) -0:58 Constant: -0:58 160 (const int) -0:59 Sequence -0:59 move second child to first child ( temp bool) -0:59 'dop' ( global bool) -0:59 Constant: -0:59 true (const bool) +0:70 Sequence +0:70 move second child to first child ( temp int) +0:70 'cop' ( global int) +0:70 Constant: +0:70 160 (const int) +0:71 Sequence +0:71 move second child to first child ( temp bool) +0:71 'dop' ( global bool) +0:71 Constant: +0:71 true (const bool) 0:? Linker Objects 0:? 'SecondExpansion' ( global int) 0:? 'PostPasteExpansion' ( global int) @@ -106,6 +108,8 @@ ERROR: node is still EOpNull! 0:? 'foo875' ( uniform float) 0:? 'ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF012345' ( global float) 0:? 'a' ( global int) +0:? 'seahorse_var' ( uniform float) +0:? 'sealion_var' ( uniform float) 0:? 'aop' ( const int) 0:? 10 (const int) 0:? 'bop' ( const int) diff --git a/Test/tokenPaste.vert b/Test/tokenPaste.vert index 40de6f92..c4515d46 100644 --- a/Test/tokenPaste.vert +++ b/Test/tokenPaste.vert @@ -51,6 +51,18 @@ float simplePaste(ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF01234567 // non-identifiers int a = simplePaste(11,12); +// should work in #if as well +#define seahorse 1 +#define sealion 0 +#define marine_animal(suffix) (sea ## suffix) + +#if marine_animal(horse) // should pass +uniform float seahorse_var; +#endif +#if !marine_animal(lion) // should pass +uniform float sealion_var; +#endif + // operators #define MAKE_OP(L, R) L ## R const int aop = 10; diff --git a/glslang/MachineIndependent/preprocessor/Pp.cpp b/glslang/MachineIndependent/preprocessor/Pp.cpp index a0a626f9..aa1e0d74 100644 --- a/glslang/MachineIndependent/preprocessor/Pp.cpp +++ b/glslang/MachineIndependent/preprocessor/Pp.cpp @@ -455,6 +455,7 @@ int TPpContext::eval(int token, int precedence, bool shortCircuit, int& res, boo token = scanToken(ppToken); } } else { + token = tokenPaste(token, *ppToken); token = evalToToken(token, shortCircuit, res, err, ppToken); return eval(token, precedence, shortCircuit, res, err, ppToken); } From 74e8f05b9fc7229a7c42015889aba12c7f9554b1 Mon Sep 17 00:00:00 2001 From: Jesse Hall Date: Mon, 9 Nov 2020 08:30:01 -0800 Subject: [PATCH 40/57] Implement GL_EXT_terminate_invocation (#2454) * Implement GL_EXT_terminate_invocation. * terminateInvocation: declare the SPV extension * Update test results for spirv-tools and bison version bumps Co-authored-by: John Kessenich --- SPIRV/GLSL.ext.KHR.h | 2 + SPIRV/GlslangToSpv.cpp | 4 + SPIRV/SpvBuilder.cpp | 7 + SPIRV/SpvBuilder.h | 3 +- SPIRV/doc.cpp | 3 + SPIRV/spirv.hpp | 1 + SPIRV/spvIR.h | 1 + Test/baseResults/cppDeepNest.frag.out | 2 +- Test/baseResults/numeral.frag.out | 2 +- Test/baseResults/spv.terminate.frag.out | 20 + Test/baseResults/terminate.frag.out | 24 + Test/baseResults/terminate.vert.out | 36 + Test/spv.terminate.frag | 8 + Test/terminate.frag | 10 + Test/terminate.vert | 10 + glslang/Include/intermediate.h | 5 +- glslang/MachineIndependent/Scan.cpp | 6 + glslang/MachineIndependent/Versions.cpp | 8 +- glslang/MachineIndependent/Versions.h | 1 + glslang/MachineIndependent/glslang.m4 | 5 + glslang/MachineIndependent/glslang.y | 5 + glslang/MachineIndependent/glslang_tab.cpp | 10978 +++++++++-------- glslang/MachineIndependent/glslang_tab.cpp.h | 908 +- glslang/MachineIndependent/intermOut.cpp | 17 +- gtests/AST.FromFile.cpp | 2 + gtests/Spv.FromFile.cpp | 1 + 26 files changed, 6223 insertions(+), 5846 deletions(-) create mode 100755 Test/baseResults/spv.terminate.frag.out create mode 100755 Test/baseResults/terminate.frag.out create mode 100755 Test/baseResults/terminate.vert.out create mode 100644 Test/spv.terminate.frag create mode 100644 Test/terminate.frag create mode 100644 Test/terminate.vert diff --git a/SPIRV/GLSL.ext.KHR.h b/SPIRV/GLSL.ext.KHR.h index 2be968e1..9610c6ee 100644 --- a/SPIRV/GLSL.ext.KHR.h +++ b/SPIRV/GLSL.ext.KHR.h @@ -49,4 +49,6 @@ static const char* const E_SPV_KHR_non_semantic_info = "SPV_KHR_non_s static const char* const E_SPV_KHR_ray_tracing = "SPV_KHR_ray_tracing"; static const char* const E_SPV_KHR_ray_query = "SPV_KHR_ray_query"; static const char* const E_SPV_KHR_fragment_shading_rate = "SPV_KHR_fragment_shading_rate"; +static const char* const E_SPV_KHR_terminate_invocation = "SPV_KHR_terminate_invocation"; + #endif // #ifndef GLSLextKHR_H diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index ddc63783..e9c14df3 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -3458,6 +3458,10 @@ bool TGlslangToSpvTraverser::visitBranch(glslang::TVisit /* visit */, glslang::T case glslang::EOpKill: builder.makeDiscard(); break; + case glslang::EOpTerminateInvocation: + builder.addExtension(spv::E_SPV_KHR_terminate_invocation); + builder.makeTerminateInvocation(); + break; case glslang::EOpBreak: if (breakForLoop.top()) builder.createLoopExit(); diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index 42896cee..85ffe90a 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -1453,6 +1453,13 @@ void Builder::makeDiscard() createAndSetNoPredecessorBlock("post-discard"); } +// Comments in header +void Builder::makeTerminateInvocation() +{ + buildPoint->addInstruction(std::unique_ptr(new Instruction(OpTerminateInvocation))); + createAndSetNoPredecessorBlock("post-terminate-invocation"); +} + // Comments in header Id Builder::createVariable(Decoration precision, StorageClass storageClass, Id type, const char* name, Id initializer) { diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index f93e1823..873c0cd7 100644 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -357,8 +357,9 @@ public: // Generate all the code needed to finish up a function. void leaveFunction(); - // Create a discard. + // Create a discard or terminate-invocation. void makeDiscard(); + void makeTerminateInvocation(); // Create a global or function local or IO variable. Id createVariable(Decoration precision, StorageClass, Id type, const char* name = nullptr, diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index 09e035ae..3d08204f 100644 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -1336,6 +1336,8 @@ const char* OpcodeString(int op) case 365: return "OpGroupNonUniformQuadBroadcast"; case 366: return "OpGroupNonUniformQuadSwap"; + case OpTerminateInvocation: return "OpTerminateInvocation"; + case 4421: return "OpSubgroupBallotKHR"; case 4422: return "OpSubgroupFirstInvocationKHR"; case 4428: return "OpSubgroupAllKHR"; @@ -1504,6 +1506,7 @@ void Parameterize() InstructionDesc[OpBranchConditional].setResultAndType(false, false); InstructionDesc[OpSwitch].setResultAndType(false, false); InstructionDesc[OpKill].setResultAndType(false, false); + InstructionDesc[OpTerminateInvocation].setResultAndType(false, false); InstructionDesc[OpReturn].setResultAndType(false, false); InstructionDesc[OpReturnValue].setResultAndType(false, false); InstructionDesc[OpUnreachable].setResultAndType(false, false); diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp index 26b35bb4..ef5670e3 100644 --- a/SPIRV/spirv.hpp +++ b/SPIRV/spirv.hpp @@ -1849,6 +1849,7 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case OpBranchConditional: *hasResult = false; *hasResultType = false; break; case OpSwitch: *hasResult = false; *hasResultType = false; break; case OpKill: *hasResult = false; *hasResultType = false; break; + case OpTerminateInvocation: *hasResult = false; *hasResultType = false; break; case OpReturn: *hasResult = false; *hasResultType = false; break; case OpReturnValue: *hasResult = false; *hasResultType = false; break; case OpUnreachable: *hasResult = false; *hasResultType = false; break; diff --git a/SPIRV/spvIR.h b/SPIRV/spvIR.h index 868b9bf8..486e80d0 100644 --- a/SPIRV/spvIR.h +++ b/SPIRV/spvIR.h @@ -263,6 +263,7 @@ public: case OpBranchConditional: case OpSwitch: case OpKill: + case OpTerminateInvocation: case OpReturn: case OpReturnValue: case OpUnreachable: diff --git a/Test/baseResults/cppDeepNest.frag.out b/Test/baseResults/cppDeepNest.frag.out index 969a256d..49b9aa3c 100644 --- a/Test/baseResults/cppDeepNest.frag.out +++ b/Test/baseResults/cppDeepNest.frag.out @@ -1,7 +1,7 @@ cppDeepNest.frag ERROR: 0:66: '#if/#ifdef/#ifndef' : maximum nesting depth exceeded ERROR: 0:66: '' : missing #endif -ERROR: 0:66: '' : syntax error, unexpected $end +ERROR: 0:66: '' : syntax error, unexpected end of file ERROR: 3 compilation errors. No code generated. diff --git a/Test/baseResults/numeral.frag.out b/Test/baseResults/numeral.frag.out index b7c0a78b..e2a7c64c 100644 --- a/Test/baseResults/numeral.frag.out +++ b/Test/baseResults/numeral.frag.out @@ -12,7 +12,7 @@ ERROR: 0:88: '' : float literal needs a decimal point or exponent ERROR: 0:98: '' : numeric literal too big ERROR: 0:101: '' : numeric literal too big ERROR: 0:104: '#' : preprocessor directive cannot be preceded by another token -ERROR: 0:104: '' : syntax error, unexpected $end, expecting COMMA or SEMICOLON +ERROR: 0:104: '' : syntax error, unexpected end of file, expecting COMMA or SEMICOLON ERROR: 14 compilation errors. No code generated. diff --git a/Test/baseResults/spv.terminate.frag.out b/Test/baseResults/spv.terminate.frag.out new file mode 100755 index 00000000..39cb151f --- /dev/null +++ b/Test/baseResults/spv.terminate.frag.out @@ -0,0 +1,20 @@ +spv.terminate.frag +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 7 + + Capability Shader + Extension "SPV_KHR_terminate_invocation" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginUpperLeft + Source GLSL 400 + SourceExtension "GL_EXT_terminate_invocation" + Name 4 "main" + 2: TypeVoid + 3: TypeFunction 2 + 4(main): 2 Function None 3 + 5: Label + TerminateInvocation + FunctionEnd diff --git a/Test/baseResults/terminate.frag.out b/Test/baseResults/terminate.frag.out new file mode 100755 index 00000000..4f72c9b3 --- /dev/null +++ b/Test/baseResults/terminate.frag.out @@ -0,0 +1,24 @@ +terminate.frag +ERROR: 0:3: 'terminateInvocation' : undeclared identifier +ERROR: 0:9: '' : syntax error, unexpected TERMINATE_INVOCATION, expecting COMMA or SEMICOLON +ERROR: 2 compilation errors. No code generated. + + +Shader version: 400 +Requested GL_EXT_terminate_invocation +ERROR: node is still EOpNull! +0:3 Function Definition: foo( ( global void) +0:3 Function Parameters: +0:3 Sequence +0:3 'terminateInvocation' ( temp float) +0:? Linker Objects + + +Linked fragment stage: + + +Shader version: 400 +Requested GL_EXT_terminate_invocation +ERROR: node is still EOpNull! +0:? Linker Objects + diff --git a/Test/baseResults/terminate.vert.out b/Test/baseResults/terminate.vert.out new file mode 100755 index 00000000..cd984afb --- /dev/null +++ b/Test/baseResults/terminate.vert.out @@ -0,0 +1,36 @@ +terminate.vert +ERROR: 0:3: 'terminateInvocation' : undeclared identifier +ERROR: 0:9: 'terminateInvocation' : not supported in this stage: vertex +ERROR: 2 compilation errors. No code generated. + + +Shader version: 400 +Requested GL_EXT_terminate_invocation +ERROR: node is still EOpNull! +0:3 Function Definition: foo( ( global void) +0:3 Function Parameters: +0:3 Sequence +0:3 'terminateInvocation' ( temp float) +0:7 Function Definition: main( ( global void) +0:7 Function Parameters: +0:9 Sequence +0:9 Branch: TerminateInvocation +0:? Linker Objects +0:? 'gl_VertexID' ( gl_VertexId int VertexId) +0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) + + +Linked vertex stage: + + +Shader version: 400 +Requested GL_EXT_terminate_invocation +ERROR: node is still EOpNull! +0:7 Function Definition: main( ( global void) +0:7 Function Parameters: +0:9 Sequence +0:9 Branch: TerminateInvocation +0:? Linker Objects +0:? 'gl_VertexID' ( gl_VertexId int VertexId) +0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) + diff --git a/Test/spv.terminate.frag b/Test/spv.terminate.frag new file mode 100644 index 00000000..2555877b --- /dev/null +++ b/Test/spv.terminate.frag @@ -0,0 +1,8 @@ +#version 400 + +#extension GL_EXT_terminate_invocation : enable + +void main() +{ + terminateInvocation; +} diff --git a/Test/terminate.frag b/Test/terminate.frag new file mode 100644 index 00000000..32f1495f --- /dev/null +++ b/Test/terminate.frag @@ -0,0 +1,10 @@ +#version 400 + +void foo() { terminateInvocation; } // ERROR: identifier undeclared + +#extension GL_EXT_terminate_invocation : enable + +void main() +{ + int terminateInvocation; // syntax ERROR +} diff --git a/Test/terminate.vert b/Test/terminate.vert new file mode 100644 index 00000000..1d4eea9c --- /dev/null +++ b/Test/terminate.vert @@ -0,0 +1,10 @@ +#version 400 + +void foo() { terminateInvocation; } // ERROR: identifier undeclared + +#extension GL_EXT_terminate_invocation : enable + +void main() +{ + terminateInvocation; // ERROR: wrong stage +} diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index 9e41a997..f0411ebb 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -628,13 +628,14 @@ enum TOperator { // Branch // - EOpKill, // Fragment only + EOpKill, // Fragment only + EOpTerminateInvocation, // Fragment only + EOpDemote, // Fragment only EOpReturn, EOpBreak, EOpContinue, EOpCase, EOpDefault, - EOpDemote, // Fragment only // // Constructors diff --git a/glslang/MachineIndependent/Scan.cpp b/glslang/MachineIndependent/Scan.cpp index 1124b943..bcf4047e 100644 --- a/glslang/MachineIndependent/Scan.cpp +++ b/glslang/MachineIndependent/Scan.cpp @@ -365,6 +365,7 @@ void TScanContext::fillInKeywordMap() (*KeywordMap)["if"] = IF; (*KeywordMap)["else"] = ELSE; (*KeywordMap)["discard"] = DISCARD; + (*KeywordMap)["terminateInvocation"] = TERMINATE_INVOCATION; (*KeywordMap)["return"] = RETURN; (*KeywordMap)["void"] = VOID; (*KeywordMap)["bool"] = BOOL; @@ -936,6 +937,11 @@ int TScanContext::tokenizeIdentifier() case CASE: return keyword; + case TERMINATE_INVOCATION: + if (!parseContext.extensionTurnedOn(E_GL_EXT_terminate_invocation)) + return identifierOrType(); + return keyword; + case BUFFER: afterBuffer = true; if ((parseContext.isEsProfile() && parseContext.version < 310) || diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index 48d93cfc..69b8863c 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -329,6 +329,7 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_EXT_shader_implicit_conversions] = EBhDisable; extensionBehavior[E_GL_EXT_fragment_shading_rate] = EBhDisable; extensionBehavior[E_GL_EXT_shader_image_int64] = EBhDisable; + extensionBehavior[E_GL_EXT_terminate_invocation] = EBhDisable; // OVR extensions extensionBehavior[E_GL_OVR_multiview] = EBhDisable; @@ -411,7 +412,7 @@ void TParseVersions::getPreamble(std::string& preamble) preamble += "#define GL_NV_shader_noperspective_interpolation 1\n"; } - } else { + } else { // !isEsProfile() preamble = "#define GL_FRAGMENT_PRECISION_HIGH 1\n" "#define GL_ARB_texture_rectangle 1\n" @@ -563,6 +564,11 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_GOOGLE_include_directive 1\n" "#define GL_KHR_blend_equation_advanced 1\n" ; + + // other general extensions + preamble += + "#define GL_EXT_terminate_invocation 1\n" + ; #endif // #define VULKAN XXXX diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index e484f556..eb17c52e 100644 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -299,6 +299,7 @@ const char* const E_GL_EXT_shader_subgroup_extended_types_int8 = "GL_EXT_shad const char* const E_GL_EXT_shader_subgroup_extended_types_int16 = "GL_EXT_shader_subgroup_extended_types_int16"; const char* const E_GL_EXT_shader_subgroup_extended_types_int64 = "GL_EXT_shader_subgroup_extended_types_int64"; const char* const E_GL_EXT_shader_subgroup_extended_types_float16 = "GL_EXT_shader_subgroup_extended_types_float16"; +const char* const E_GL_EXT_terminate_invocation = "GL_EXT_terminate_invocation"; const char* const E_GL_EXT_shader_atomic_float = "GL_EXT_shader_atomic_float"; diff --git a/glslang/MachineIndependent/glslang.m4 b/glslang/MachineIndependent/glslang.m4 index f71d4b9c..5b0adb0f 100644 --- a/glslang/MachineIndependent/glslang.m4 +++ b/glslang/MachineIndependent/glslang.m4 @@ -293,6 +293,7 @@ GLSLANG_WEB_EXCLUDE_OFF %token CENTROID IN OUT INOUT %token STRUCT VOID WHILE %token BREAK CONTINUE DO ELSE FOR IF DISCARD RETURN SWITCH CASE DEFAULT +%token TERMINATE_INVOCATION %token UNIFORM SHARED BUFFER %token FLAT SMOOTH LAYOUT @@ -3927,6 +3928,10 @@ jump_statement parseContext.requireStage($1.loc, EShLangFragment, "discard"); $$ = parseContext.intermediate.addBranch(EOpKill, $1.loc); } + | TERMINATE_INVOCATION SEMICOLON { + parseContext.requireStage($1.loc, EShLangFragment, "terminateInvocation"); + $$ = parseContext.intermediate.addBranch(EOpTerminateInvocation, $1.loc); + } ; // Grammar Note: No 'goto'. Gotos are not supported. diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index d7eb3587..4093b7d8 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -293,6 +293,7 @@ extern int yylex(YYSTYPE*, TParseContext&); %token CENTROID IN OUT INOUT %token STRUCT VOID WHILE %token BREAK CONTINUE DO ELSE FOR IF DISCARD RETURN SWITCH CASE DEFAULT +%token TERMINATE_INVOCATION %token UNIFORM SHARED BUFFER %token FLAT SMOOTH LAYOUT @@ -3927,6 +3928,10 @@ jump_statement parseContext.requireStage($1.loc, EShLangFragment, "discard"); $$ = parseContext.intermediate.addBranch(EOpKill, $1.loc); } + | TERMINATE_INVOCATION SEMICOLON { + parseContext.requireStage($1.loc, EShLangFragment, "terminateInvocation"); + $$ = parseContext.intermediate.addBranch(EOpTerminateInvocation, $1.loc); + } ; // Grammar Note: No 'goto'. Gotos are not supported. diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp index 22af333c..ad7deb30 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -1,8 +1,9 @@ -/* A Bison parser, made by GNU Bison 3.0.4. */ +/* A Bison parser, made by GNU Bison 3.7.2. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, + Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -33,6 +34,10 @@ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ +/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, + especially those whose name start with YY_ or yy_. They are + private implementation details that can be changed or removed. */ + /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. @@ -44,7 +49,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.0.4" +#define YYBISON_VERSION "3.7.2" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -61,8 +66,8 @@ -/* Copy the first part of user declarations. */ -#line 69 "MachineIndependent/glslang.y" /* yacc.c:339 */ +/* First part of user prologue. */ +#line 69 "glslang/MachineIndependent/glslang.y" /* Based on: @@ -88,540 +93,594 @@ Jutta Degener, 1995 using namespace glslang; -#line 92 "MachineIndependent/glslang_tab.cpp" /* yacc.c:339 */ +#line 97 "glslang/MachineIndependent/glslang_tab.cpp" -# ifndef YY_NULLPTR -# if defined __cplusplus && 201103L <= __cplusplus -# define YY_NULLPTR nullptr +# ifndef YY_CAST +# ifdef __cplusplus +# define YY_CAST(Type, Val) static_cast (Val) +# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) # else -# define YY_NULLPTR 0 +# define YY_CAST(Type, Val) ((Type) (Val)) +# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) +# endif +# endif +# ifndef YY_NULLPTR +# if defined __cplusplus +# if 201103L <= __cplusplus +# define YY_NULLPTR nullptr +# else +# define YY_NULLPTR 0 +# endif +# else +# define YY_NULLPTR ((void*)0) # endif # endif -/* Enabling verbose error messages. */ -#ifdef YYERROR_VERBOSE -# undef YYERROR_VERBOSE -# define YYERROR_VERBOSE 1 -#else -# define YYERROR_VERBOSE 1 -#endif - -/* In a future release of Bison, this section will be replaced - by #include "glslang_tab.cpp.h". */ -#ifndef YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED -# define YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED -/* Debug traces. */ -#ifndef YYDEBUG -# define YYDEBUG 1 -#endif -#if YYDEBUG -extern int yydebug; -#endif - -/* Token type. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - enum yytokentype - { - CONST = 258, - BOOL = 259, - INT = 260, - UINT = 261, - FLOAT = 262, - BVEC2 = 263, - BVEC3 = 264, - BVEC4 = 265, - IVEC2 = 266, - IVEC3 = 267, - IVEC4 = 268, - UVEC2 = 269, - UVEC3 = 270, - UVEC4 = 271, - VEC2 = 272, - VEC3 = 273, - VEC4 = 274, - MAT2 = 275, - MAT3 = 276, - MAT4 = 277, - MAT2X2 = 278, - MAT2X3 = 279, - MAT2X4 = 280, - MAT3X2 = 281, - MAT3X3 = 282, - MAT3X4 = 283, - MAT4X2 = 284, - MAT4X3 = 285, - MAT4X4 = 286, - SAMPLER2D = 287, - SAMPLER3D = 288, - SAMPLERCUBE = 289, - SAMPLER2DSHADOW = 290, - SAMPLERCUBESHADOW = 291, - SAMPLER2DARRAY = 292, - SAMPLER2DARRAYSHADOW = 293, - ISAMPLER2D = 294, - ISAMPLER3D = 295, - ISAMPLERCUBE = 296, - ISAMPLER2DARRAY = 297, - USAMPLER2D = 298, - USAMPLER3D = 299, - USAMPLERCUBE = 300, - USAMPLER2DARRAY = 301, - SAMPLER = 302, - SAMPLERSHADOW = 303, - TEXTURE2D = 304, - TEXTURE3D = 305, - TEXTURECUBE = 306, - TEXTURE2DARRAY = 307, - ITEXTURE2D = 308, - ITEXTURE3D = 309, - ITEXTURECUBE = 310, - ITEXTURE2DARRAY = 311, - UTEXTURE2D = 312, - UTEXTURE3D = 313, - UTEXTURECUBE = 314, - UTEXTURE2DARRAY = 315, - ATTRIBUTE = 316, - VARYING = 317, - FLOAT16_T = 318, - FLOAT32_T = 319, - DOUBLE = 320, - FLOAT64_T = 321, - INT64_T = 322, - UINT64_T = 323, - INT32_T = 324, - UINT32_T = 325, - INT16_T = 326, - UINT16_T = 327, - INT8_T = 328, - UINT8_T = 329, - I64VEC2 = 330, - I64VEC3 = 331, - I64VEC4 = 332, - U64VEC2 = 333, - U64VEC3 = 334, - U64VEC4 = 335, - I32VEC2 = 336, - I32VEC3 = 337, - I32VEC4 = 338, - U32VEC2 = 339, - U32VEC3 = 340, - U32VEC4 = 341, - I16VEC2 = 342, - I16VEC3 = 343, - I16VEC4 = 344, - U16VEC2 = 345, - U16VEC3 = 346, - U16VEC4 = 347, - I8VEC2 = 348, - I8VEC3 = 349, - I8VEC4 = 350, - U8VEC2 = 351, - U8VEC3 = 352, - U8VEC4 = 353, - DVEC2 = 354, - DVEC3 = 355, - DVEC4 = 356, - DMAT2 = 357, - DMAT3 = 358, - DMAT4 = 359, - F16VEC2 = 360, - F16VEC3 = 361, - F16VEC4 = 362, - F16MAT2 = 363, - F16MAT3 = 364, - F16MAT4 = 365, - F32VEC2 = 366, - F32VEC3 = 367, - F32VEC4 = 368, - F32MAT2 = 369, - F32MAT3 = 370, - F32MAT4 = 371, - F64VEC2 = 372, - F64VEC3 = 373, - F64VEC4 = 374, - F64MAT2 = 375, - F64MAT3 = 376, - F64MAT4 = 377, - DMAT2X2 = 378, - DMAT2X3 = 379, - DMAT2X4 = 380, - DMAT3X2 = 381, - DMAT3X3 = 382, - DMAT3X4 = 383, - DMAT4X2 = 384, - DMAT4X3 = 385, - DMAT4X4 = 386, - F16MAT2X2 = 387, - F16MAT2X3 = 388, - F16MAT2X4 = 389, - F16MAT3X2 = 390, - F16MAT3X3 = 391, - F16MAT3X4 = 392, - F16MAT4X2 = 393, - F16MAT4X3 = 394, - F16MAT4X4 = 395, - F32MAT2X2 = 396, - F32MAT2X3 = 397, - F32MAT2X4 = 398, - F32MAT3X2 = 399, - F32MAT3X3 = 400, - F32MAT3X4 = 401, - F32MAT4X2 = 402, - F32MAT4X3 = 403, - F32MAT4X4 = 404, - F64MAT2X2 = 405, - F64MAT2X3 = 406, - F64MAT2X4 = 407, - F64MAT3X2 = 408, - F64MAT3X3 = 409, - F64MAT3X4 = 410, - F64MAT4X2 = 411, - F64MAT4X3 = 412, - F64MAT4X4 = 413, - ATOMIC_UINT = 414, - ACCSTRUCTNV = 415, - ACCSTRUCTEXT = 416, - RAYQUERYEXT = 417, - FCOOPMATNV = 418, - ICOOPMATNV = 419, - UCOOPMATNV = 420, - SAMPLERCUBEARRAY = 421, - SAMPLERCUBEARRAYSHADOW = 422, - ISAMPLERCUBEARRAY = 423, - USAMPLERCUBEARRAY = 424, - SAMPLER1D = 425, - SAMPLER1DARRAY = 426, - SAMPLER1DARRAYSHADOW = 427, - ISAMPLER1D = 428, - SAMPLER1DSHADOW = 429, - SAMPLER2DRECT = 430, - SAMPLER2DRECTSHADOW = 431, - ISAMPLER2DRECT = 432, - USAMPLER2DRECT = 433, - SAMPLERBUFFER = 434, - ISAMPLERBUFFER = 435, - USAMPLERBUFFER = 436, - SAMPLER2DMS = 437, - ISAMPLER2DMS = 438, - USAMPLER2DMS = 439, - SAMPLER2DMSARRAY = 440, - ISAMPLER2DMSARRAY = 441, - USAMPLER2DMSARRAY = 442, - SAMPLEREXTERNALOES = 443, - SAMPLEREXTERNAL2DY2YEXT = 444, - ISAMPLER1DARRAY = 445, - USAMPLER1D = 446, - USAMPLER1DARRAY = 447, - F16SAMPLER1D = 448, - F16SAMPLER2D = 449, - F16SAMPLER3D = 450, - F16SAMPLER2DRECT = 451, - F16SAMPLERCUBE = 452, - F16SAMPLER1DARRAY = 453, - F16SAMPLER2DARRAY = 454, - F16SAMPLERCUBEARRAY = 455, - F16SAMPLERBUFFER = 456, - F16SAMPLER2DMS = 457, - F16SAMPLER2DMSARRAY = 458, - F16SAMPLER1DSHADOW = 459, - F16SAMPLER2DSHADOW = 460, - F16SAMPLER1DARRAYSHADOW = 461, - F16SAMPLER2DARRAYSHADOW = 462, - F16SAMPLER2DRECTSHADOW = 463, - F16SAMPLERCUBESHADOW = 464, - F16SAMPLERCUBEARRAYSHADOW = 465, - IMAGE1D = 466, - IIMAGE1D = 467, - UIMAGE1D = 468, - IMAGE2D = 469, - IIMAGE2D = 470, - UIMAGE2D = 471, - IMAGE3D = 472, - IIMAGE3D = 473, - UIMAGE3D = 474, - IMAGE2DRECT = 475, - IIMAGE2DRECT = 476, - UIMAGE2DRECT = 477, - IMAGECUBE = 478, - IIMAGECUBE = 479, - UIMAGECUBE = 480, - IMAGEBUFFER = 481, - IIMAGEBUFFER = 482, - UIMAGEBUFFER = 483, - IMAGE1DARRAY = 484, - IIMAGE1DARRAY = 485, - UIMAGE1DARRAY = 486, - IMAGE2DARRAY = 487, - IIMAGE2DARRAY = 488, - UIMAGE2DARRAY = 489, - IMAGECUBEARRAY = 490, - IIMAGECUBEARRAY = 491, - UIMAGECUBEARRAY = 492, - IMAGE2DMS = 493, - IIMAGE2DMS = 494, - UIMAGE2DMS = 495, - IMAGE2DMSARRAY = 496, - IIMAGE2DMSARRAY = 497, - UIMAGE2DMSARRAY = 498, - F16IMAGE1D = 499, - F16IMAGE2D = 500, - F16IMAGE3D = 501, - F16IMAGE2DRECT = 502, - F16IMAGECUBE = 503, - F16IMAGE1DARRAY = 504, - F16IMAGE2DARRAY = 505, - F16IMAGECUBEARRAY = 506, - F16IMAGEBUFFER = 507, - F16IMAGE2DMS = 508, - F16IMAGE2DMSARRAY = 509, - I64IMAGE1D = 510, - U64IMAGE1D = 511, - I64IMAGE2D = 512, - U64IMAGE2D = 513, - I64IMAGE3D = 514, - U64IMAGE3D = 515, - I64IMAGE2DRECT = 516, - U64IMAGE2DRECT = 517, - I64IMAGECUBE = 518, - U64IMAGECUBE = 519, - I64IMAGEBUFFER = 520, - U64IMAGEBUFFER = 521, - I64IMAGE1DARRAY = 522, - U64IMAGE1DARRAY = 523, - I64IMAGE2DARRAY = 524, - U64IMAGE2DARRAY = 525, - I64IMAGECUBEARRAY = 526, - U64IMAGECUBEARRAY = 527, - I64IMAGE2DMS = 528, - U64IMAGE2DMS = 529, - I64IMAGE2DMSARRAY = 530, - U64IMAGE2DMSARRAY = 531, - TEXTURECUBEARRAY = 532, - ITEXTURECUBEARRAY = 533, - UTEXTURECUBEARRAY = 534, - TEXTURE1D = 535, - ITEXTURE1D = 536, - UTEXTURE1D = 537, - TEXTURE1DARRAY = 538, - ITEXTURE1DARRAY = 539, - UTEXTURE1DARRAY = 540, - TEXTURE2DRECT = 541, - ITEXTURE2DRECT = 542, - UTEXTURE2DRECT = 543, - TEXTUREBUFFER = 544, - ITEXTUREBUFFER = 545, - UTEXTUREBUFFER = 546, - TEXTURE2DMS = 547, - ITEXTURE2DMS = 548, - UTEXTURE2DMS = 549, - TEXTURE2DMSARRAY = 550, - ITEXTURE2DMSARRAY = 551, - UTEXTURE2DMSARRAY = 552, - F16TEXTURE1D = 553, - F16TEXTURE2D = 554, - F16TEXTURE3D = 555, - F16TEXTURE2DRECT = 556, - F16TEXTURECUBE = 557, - F16TEXTURE1DARRAY = 558, - F16TEXTURE2DARRAY = 559, - F16TEXTURECUBEARRAY = 560, - F16TEXTUREBUFFER = 561, - F16TEXTURE2DMS = 562, - F16TEXTURE2DMSARRAY = 563, - SUBPASSINPUT = 564, - SUBPASSINPUTMS = 565, - ISUBPASSINPUT = 566, - ISUBPASSINPUTMS = 567, - USUBPASSINPUT = 568, - USUBPASSINPUTMS = 569, - F16SUBPASSINPUT = 570, - F16SUBPASSINPUTMS = 571, - LEFT_OP = 572, - RIGHT_OP = 573, - INC_OP = 574, - DEC_OP = 575, - LE_OP = 576, - GE_OP = 577, - EQ_OP = 578, - NE_OP = 579, - AND_OP = 580, - OR_OP = 581, - XOR_OP = 582, - MUL_ASSIGN = 583, - DIV_ASSIGN = 584, - ADD_ASSIGN = 585, - MOD_ASSIGN = 586, - LEFT_ASSIGN = 587, - RIGHT_ASSIGN = 588, - AND_ASSIGN = 589, - XOR_ASSIGN = 590, - OR_ASSIGN = 591, - SUB_ASSIGN = 592, - STRING_LITERAL = 593, - LEFT_PAREN = 594, - RIGHT_PAREN = 595, - LEFT_BRACKET = 596, - RIGHT_BRACKET = 597, - LEFT_BRACE = 598, - RIGHT_BRACE = 599, - DOT = 600, - COMMA = 601, - COLON = 602, - EQUAL = 603, - SEMICOLON = 604, - BANG = 605, - DASH = 606, - TILDE = 607, - PLUS = 608, - STAR = 609, - SLASH = 610, - PERCENT = 611, - LEFT_ANGLE = 612, - RIGHT_ANGLE = 613, - VERTICAL_BAR = 614, - CARET = 615, - AMPERSAND = 616, - QUESTION = 617, - INVARIANT = 618, - HIGH_PRECISION = 619, - MEDIUM_PRECISION = 620, - LOW_PRECISION = 621, - PRECISION = 622, - PACKED = 623, - RESOURCE = 624, - SUPERP = 625, - FLOATCONSTANT = 626, - INTCONSTANT = 627, - UINTCONSTANT = 628, - BOOLCONSTANT = 629, - IDENTIFIER = 630, - TYPE_NAME = 631, - CENTROID = 632, - IN = 633, - OUT = 634, - INOUT = 635, - STRUCT = 636, - VOID = 637, - WHILE = 638, - BREAK = 639, - CONTINUE = 640, - DO = 641, - ELSE = 642, - FOR = 643, - IF = 644, - DISCARD = 645, - RETURN = 646, - SWITCH = 647, - CASE = 648, - DEFAULT = 649, - UNIFORM = 650, - SHARED = 651, - BUFFER = 652, - FLAT = 653, - SMOOTH = 654, - LAYOUT = 655, - DOUBLECONSTANT = 656, - INT16CONSTANT = 657, - UINT16CONSTANT = 658, - FLOAT16CONSTANT = 659, - INT32CONSTANT = 660, - UINT32CONSTANT = 661, - INT64CONSTANT = 662, - UINT64CONSTANT = 663, - SUBROUTINE = 664, - DEMOTE = 665, - PAYLOADNV = 666, - PAYLOADINNV = 667, - HITATTRNV = 668, - CALLDATANV = 669, - CALLDATAINNV = 670, - PAYLOADEXT = 671, - PAYLOADINEXT = 672, - HITATTREXT = 673, - CALLDATAEXT = 674, - CALLDATAINEXT = 675, - PATCH = 676, - SAMPLE = 677, - NONUNIFORM = 678, - COHERENT = 679, - VOLATILE = 680, - RESTRICT = 681, - READONLY = 682, - WRITEONLY = 683, - DEVICECOHERENT = 684, - QUEUEFAMILYCOHERENT = 685, - WORKGROUPCOHERENT = 686, - SUBGROUPCOHERENT = 687, - NONPRIVATE = 688, - SHADERCALLCOHERENT = 689, - NOPERSPECTIVE = 690, - EXPLICITINTERPAMD = 691, - PERVERTEXNV = 692, - PERPRIMITIVENV = 693, - PERVIEWNV = 694, - PERTASKNV = 695, - PRECISE = 696 - }; -#endif - -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED - -union YYSTYPE +#include "glslang_tab.cpp.h" +/* Symbol kind. */ +enum yysymbol_kind_t { -#line 97 "MachineIndependent/glslang.y" /* yacc.c:355 */ - - struct { - glslang::TSourceLoc loc; - union { - glslang::TString *string; - int i; - unsigned int u; - long long i64; - unsigned long long u64; - bool b; - double d; - }; - glslang::TSymbol* symbol; - } lex; - struct { - glslang::TSourceLoc loc; - glslang::TOperator op; - union { - TIntermNode* intermNode; - glslang::TIntermNodePair nodePair; - glslang::TIntermTyped* intermTypedNode; - glslang::TAttributes* attributes; - }; - union { - glslang::TPublicType type; - glslang::TFunction* function; - glslang::TParameter param; - glslang::TTypeLoc typeLine; - glslang::TTypeList* typeList; - glslang::TArraySizes* arraySizes; - glslang::TIdentifierList* identifierList; - }; - glslang::TArraySizes* typeParameters; - } interm; - -#line 610 "MachineIndependent/glslang_tab.cpp" /* yacc.c:355 */ + YYSYMBOL_YYEMPTY = -2, + YYSYMBOL_YYEOF = 0, /* "end of file" */ + YYSYMBOL_YYerror = 1, /* error */ + YYSYMBOL_YYUNDEF = 2, /* "invalid token" */ + YYSYMBOL_CONST = 3, /* CONST */ + YYSYMBOL_BOOL = 4, /* BOOL */ + YYSYMBOL_INT = 5, /* INT */ + YYSYMBOL_UINT = 6, /* UINT */ + YYSYMBOL_FLOAT = 7, /* FLOAT */ + YYSYMBOL_BVEC2 = 8, /* BVEC2 */ + YYSYMBOL_BVEC3 = 9, /* BVEC3 */ + YYSYMBOL_BVEC4 = 10, /* BVEC4 */ + YYSYMBOL_IVEC2 = 11, /* IVEC2 */ + YYSYMBOL_IVEC3 = 12, /* IVEC3 */ + YYSYMBOL_IVEC4 = 13, /* IVEC4 */ + YYSYMBOL_UVEC2 = 14, /* UVEC2 */ + YYSYMBOL_UVEC3 = 15, /* UVEC3 */ + YYSYMBOL_UVEC4 = 16, /* UVEC4 */ + YYSYMBOL_VEC2 = 17, /* VEC2 */ + YYSYMBOL_VEC3 = 18, /* VEC3 */ + YYSYMBOL_VEC4 = 19, /* VEC4 */ + YYSYMBOL_MAT2 = 20, /* MAT2 */ + YYSYMBOL_MAT3 = 21, /* MAT3 */ + YYSYMBOL_MAT4 = 22, /* MAT4 */ + YYSYMBOL_MAT2X2 = 23, /* MAT2X2 */ + YYSYMBOL_MAT2X3 = 24, /* MAT2X3 */ + YYSYMBOL_MAT2X4 = 25, /* MAT2X4 */ + YYSYMBOL_MAT3X2 = 26, /* MAT3X2 */ + YYSYMBOL_MAT3X3 = 27, /* MAT3X3 */ + YYSYMBOL_MAT3X4 = 28, /* MAT3X4 */ + YYSYMBOL_MAT4X2 = 29, /* MAT4X2 */ + YYSYMBOL_MAT4X3 = 30, /* MAT4X3 */ + YYSYMBOL_MAT4X4 = 31, /* MAT4X4 */ + YYSYMBOL_SAMPLER2D = 32, /* SAMPLER2D */ + YYSYMBOL_SAMPLER3D = 33, /* SAMPLER3D */ + YYSYMBOL_SAMPLERCUBE = 34, /* SAMPLERCUBE */ + YYSYMBOL_SAMPLER2DSHADOW = 35, /* SAMPLER2DSHADOW */ + YYSYMBOL_SAMPLERCUBESHADOW = 36, /* SAMPLERCUBESHADOW */ + YYSYMBOL_SAMPLER2DARRAY = 37, /* SAMPLER2DARRAY */ + YYSYMBOL_SAMPLER2DARRAYSHADOW = 38, /* SAMPLER2DARRAYSHADOW */ + YYSYMBOL_ISAMPLER2D = 39, /* ISAMPLER2D */ + YYSYMBOL_ISAMPLER3D = 40, /* ISAMPLER3D */ + YYSYMBOL_ISAMPLERCUBE = 41, /* ISAMPLERCUBE */ + YYSYMBOL_ISAMPLER2DARRAY = 42, /* ISAMPLER2DARRAY */ + YYSYMBOL_USAMPLER2D = 43, /* USAMPLER2D */ + YYSYMBOL_USAMPLER3D = 44, /* USAMPLER3D */ + YYSYMBOL_USAMPLERCUBE = 45, /* USAMPLERCUBE */ + YYSYMBOL_USAMPLER2DARRAY = 46, /* USAMPLER2DARRAY */ + YYSYMBOL_SAMPLER = 47, /* SAMPLER */ + YYSYMBOL_SAMPLERSHADOW = 48, /* SAMPLERSHADOW */ + YYSYMBOL_TEXTURE2D = 49, /* TEXTURE2D */ + YYSYMBOL_TEXTURE3D = 50, /* TEXTURE3D */ + YYSYMBOL_TEXTURECUBE = 51, /* TEXTURECUBE */ + YYSYMBOL_TEXTURE2DARRAY = 52, /* TEXTURE2DARRAY */ + YYSYMBOL_ITEXTURE2D = 53, /* ITEXTURE2D */ + YYSYMBOL_ITEXTURE3D = 54, /* ITEXTURE3D */ + YYSYMBOL_ITEXTURECUBE = 55, /* ITEXTURECUBE */ + YYSYMBOL_ITEXTURE2DARRAY = 56, /* ITEXTURE2DARRAY */ + YYSYMBOL_UTEXTURE2D = 57, /* UTEXTURE2D */ + YYSYMBOL_UTEXTURE3D = 58, /* UTEXTURE3D */ + YYSYMBOL_UTEXTURECUBE = 59, /* UTEXTURECUBE */ + YYSYMBOL_UTEXTURE2DARRAY = 60, /* UTEXTURE2DARRAY */ + YYSYMBOL_ATTRIBUTE = 61, /* ATTRIBUTE */ + YYSYMBOL_VARYING = 62, /* VARYING */ + YYSYMBOL_FLOAT16_T = 63, /* FLOAT16_T */ + YYSYMBOL_FLOAT32_T = 64, /* FLOAT32_T */ + YYSYMBOL_DOUBLE = 65, /* DOUBLE */ + YYSYMBOL_FLOAT64_T = 66, /* FLOAT64_T */ + YYSYMBOL_INT64_T = 67, /* INT64_T */ + YYSYMBOL_UINT64_T = 68, /* UINT64_T */ + YYSYMBOL_INT32_T = 69, /* INT32_T */ + YYSYMBOL_UINT32_T = 70, /* UINT32_T */ + YYSYMBOL_INT16_T = 71, /* INT16_T */ + YYSYMBOL_UINT16_T = 72, /* UINT16_T */ + YYSYMBOL_INT8_T = 73, /* INT8_T */ + YYSYMBOL_UINT8_T = 74, /* UINT8_T */ + YYSYMBOL_I64VEC2 = 75, /* I64VEC2 */ + YYSYMBOL_I64VEC3 = 76, /* I64VEC3 */ + YYSYMBOL_I64VEC4 = 77, /* I64VEC4 */ + YYSYMBOL_U64VEC2 = 78, /* U64VEC2 */ + YYSYMBOL_U64VEC3 = 79, /* U64VEC3 */ + YYSYMBOL_U64VEC4 = 80, /* U64VEC4 */ + YYSYMBOL_I32VEC2 = 81, /* I32VEC2 */ + YYSYMBOL_I32VEC3 = 82, /* I32VEC3 */ + YYSYMBOL_I32VEC4 = 83, /* I32VEC4 */ + YYSYMBOL_U32VEC2 = 84, /* U32VEC2 */ + YYSYMBOL_U32VEC3 = 85, /* U32VEC3 */ + YYSYMBOL_U32VEC4 = 86, /* U32VEC4 */ + YYSYMBOL_I16VEC2 = 87, /* I16VEC2 */ + YYSYMBOL_I16VEC3 = 88, /* I16VEC3 */ + YYSYMBOL_I16VEC4 = 89, /* I16VEC4 */ + YYSYMBOL_U16VEC2 = 90, /* U16VEC2 */ + YYSYMBOL_U16VEC3 = 91, /* U16VEC3 */ + YYSYMBOL_U16VEC4 = 92, /* U16VEC4 */ + YYSYMBOL_I8VEC2 = 93, /* I8VEC2 */ + YYSYMBOL_I8VEC3 = 94, /* I8VEC3 */ + YYSYMBOL_I8VEC4 = 95, /* I8VEC4 */ + YYSYMBOL_U8VEC2 = 96, /* U8VEC2 */ + YYSYMBOL_U8VEC3 = 97, /* U8VEC3 */ + YYSYMBOL_U8VEC4 = 98, /* U8VEC4 */ + YYSYMBOL_DVEC2 = 99, /* DVEC2 */ + YYSYMBOL_DVEC3 = 100, /* DVEC3 */ + YYSYMBOL_DVEC4 = 101, /* DVEC4 */ + YYSYMBOL_DMAT2 = 102, /* DMAT2 */ + YYSYMBOL_DMAT3 = 103, /* DMAT3 */ + YYSYMBOL_DMAT4 = 104, /* DMAT4 */ + YYSYMBOL_F16VEC2 = 105, /* F16VEC2 */ + YYSYMBOL_F16VEC3 = 106, /* F16VEC3 */ + YYSYMBOL_F16VEC4 = 107, /* F16VEC4 */ + YYSYMBOL_F16MAT2 = 108, /* F16MAT2 */ + YYSYMBOL_F16MAT3 = 109, /* F16MAT3 */ + YYSYMBOL_F16MAT4 = 110, /* F16MAT4 */ + YYSYMBOL_F32VEC2 = 111, /* F32VEC2 */ + YYSYMBOL_F32VEC3 = 112, /* F32VEC3 */ + YYSYMBOL_F32VEC4 = 113, /* F32VEC4 */ + YYSYMBOL_F32MAT2 = 114, /* F32MAT2 */ + YYSYMBOL_F32MAT3 = 115, /* F32MAT3 */ + YYSYMBOL_F32MAT4 = 116, /* F32MAT4 */ + YYSYMBOL_F64VEC2 = 117, /* F64VEC2 */ + YYSYMBOL_F64VEC3 = 118, /* F64VEC3 */ + YYSYMBOL_F64VEC4 = 119, /* F64VEC4 */ + YYSYMBOL_F64MAT2 = 120, /* F64MAT2 */ + YYSYMBOL_F64MAT3 = 121, /* F64MAT3 */ + YYSYMBOL_F64MAT4 = 122, /* F64MAT4 */ + YYSYMBOL_DMAT2X2 = 123, /* DMAT2X2 */ + YYSYMBOL_DMAT2X3 = 124, /* DMAT2X3 */ + YYSYMBOL_DMAT2X4 = 125, /* DMAT2X4 */ + YYSYMBOL_DMAT3X2 = 126, /* DMAT3X2 */ + YYSYMBOL_DMAT3X3 = 127, /* DMAT3X3 */ + YYSYMBOL_DMAT3X4 = 128, /* DMAT3X4 */ + YYSYMBOL_DMAT4X2 = 129, /* DMAT4X2 */ + YYSYMBOL_DMAT4X3 = 130, /* DMAT4X3 */ + YYSYMBOL_DMAT4X4 = 131, /* DMAT4X4 */ + YYSYMBOL_F16MAT2X2 = 132, /* F16MAT2X2 */ + YYSYMBOL_F16MAT2X3 = 133, /* F16MAT2X3 */ + YYSYMBOL_F16MAT2X4 = 134, /* F16MAT2X4 */ + YYSYMBOL_F16MAT3X2 = 135, /* F16MAT3X2 */ + YYSYMBOL_F16MAT3X3 = 136, /* F16MAT3X3 */ + YYSYMBOL_F16MAT3X4 = 137, /* F16MAT3X4 */ + YYSYMBOL_F16MAT4X2 = 138, /* F16MAT4X2 */ + YYSYMBOL_F16MAT4X3 = 139, /* F16MAT4X3 */ + YYSYMBOL_F16MAT4X4 = 140, /* F16MAT4X4 */ + YYSYMBOL_F32MAT2X2 = 141, /* F32MAT2X2 */ + YYSYMBOL_F32MAT2X3 = 142, /* F32MAT2X3 */ + YYSYMBOL_F32MAT2X4 = 143, /* F32MAT2X4 */ + YYSYMBOL_F32MAT3X2 = 144, /* F32MAT3X2 */ + YYSYMBOL_F32MAT3X3 = 145, /* F32MAT3X3 */ + YYSYMBOL_F32MAT3X4 = 146, /* F32MAT3X4 */ + YYSYMBOL_F32MAT4X2 = 147, /* F32MAT4X2 */ + YYSYMBOL_F32MAT4X3 = 148, /* F32MAT4X3 */ + YYSYMBOL_F32MAT4X4 = 149, /* F32MAT4X4 */ + YYSYMBOL_F64MAT2X2 = 150, /* F64MAT2X2 */ + YYSYMBOL_F64MAT2X3 = 151, /* F64MAT2X3 */ + YYSYMBOL_F64MAT2X4 = 152, /* F64MAT2X4 */ + YYSYMBOL_F64MAT3X2 = 153, /* F64MAT3X2 */ + YYSYMBOL_F64MAT3X3 = 154, /* F64MAT3X3 */ + YYSYMBOL_F64MAT3X4 = 155, /* F64MAT3X4 */ + YYSYMBOL_F64MAT4X2 = 156, /* F64MAT4X2 */ + YYSYMBOL_F64MAT4X3 = 157, /* F64MAT4X3 */ + YYSYMBOL_F64MAT4X4 = 158, /* F64MAT4X4 */ + YYSYMBOL_ATOMIC_UINT = 159, /* ATOMIC_UINT */ + YYSYMBOL_ACCSTRUCTNV = 160, /* ACCSTRUCTNV */ + YYSYMBOL_ACCSTRUCTEXT = 161, /* ACCSTRUCTEXT */ + YYSYMBOL_RAYQUERYEXT = 162, /* RAYQUERYEXT */ + YYSYMBOL_FCOOPMATNV = 163, /* FCOOPMATNV */ + YYSYMBOL_ICOOPMATNV = 164, /* ICOOPMATNV */ + YYSYMBOL_UCOOPMATNV = 165, /* UCOOPMATNV */ + YYSYMBOL_SAMPLERCUBEARRAY = 166, /* SAMPLERCUBEARRAY */ + YYSYMBOL_SAMPLERCUBEARRAYSHADOW = 167, /* SAMPLERCUBEARRAYSHADOW */ + YYSYMBOL_ISAMPLERCUBEARRAY = 168, /* ISAMPLERCUBEARRAY */ + YYSYMBOL_USAMPLERCUBEARRAY = 169, /* USAMPLERCUBEARRAY */ + YYSYMBOL_SAMPLER1D = 170, /* SAMPLER1D */ + YYSYMBOL_SAMPLER1DARRAY = 171, /* SAMPLER1DARRAY */ + YYSYMBOL_SAMPLER1DARRAYSHADOW = 172, /* SAMPLER1DARRAYSHADOW */ + YYSYMBOL_ISAMPLER1D = 173, /* ISAMPLER1D */ + YYSYMBOL_SAMPLER1DSHADOW = 174, /* SAMPLER1DSHADOW */ + YYSYMBOL_SAMPLER2DRECT = 175, /* SAMPLER2DRECT */ + YYSYMBOL_SAMPLER2DRECTSHADOW = 176, /* SAMPLER2DRECTSHADOW */ + YYSYMBOL_ISAMPLER2DRECT = 177, /* ISAMPLER2DRECT */ + YYSYMBOL_USAMPLER2DRECT = 178, /* USAMPLER2DRECT */ + YYSYMBOL_SAMPLERBUFFER = 179, /* SAMPLERBUFFER */ + YYSYMBOL_ISAMPLERBUFFER = 180, /* ISAMPLERBUFFER */ + YYSYMBOL_USAMPLERBUFFER = 181, /* USAMPLERBUFFER */ + YYSYMBOL_SAMPLER2DMS = 182, /* SAMPLER2DMS */ + YYSYMBOL_ISAMPLER2DMS = 183, /* ISAMPLER2DMS */ + YYSYMBOL_USAMPLER2DMS = 184, /* USAMPLER2DMS */ + YYSYMBOL_SAMPLER2DMSARRAY = 185, /* SAMPLER2DMSARRAY */ + YYSYMBOL_ISAMPLER2DMSARRAY = 186, /* ISAMPLER2DMSARRAY */ + YYSYMBOL_USAMPLER2DMSARRAY = 187, /* USAMPLER2DMSARRAY */ + YYSYMBOL_SAMPLEREXTERNALOES = 188, /* SAMPLEREXTERNALOES */ + YYSYMBOL_SAMPLEREXTERNAL2DY2YEXT = 189, /* SAMPLEREXTERNAL2DY2YEXT */ + YYSYMBOL_ISAMPLER1DARRAY = 190, /* ISAMPLER1DARRAY */ + YYSYMBOL_USAMPLER1D = 191, /* USAMPLER1D */ + YYSYMBOL_USAMPLER1DARRAY = 192, /* USAMPLER1DARRAY */ + YYSYMBOL_F16SAMPLER1D = 193, /* F16SAMPLER1D */ + YYSYMBOL_F16SAMPLER2D = 194, /* F16SAMPLER2D */ + YYSYMBOL_F16SAMPLER3D = 195, /* F16SAMPLER3D */ + YYSYMBOL_F16SAMPLER2DRECT = 196, /* F16SAMPLER2DRECT */ + YYSYMBOL_F16SAMPLERCUBE = 197, /* F16SAMPLERCUBE */ + YYSYMBOL_F16SAMPLER1DARRAY = 198, /* F16SAMPLER1DARRAY */ + YYSYMBOL_F16SAMPLER2DARRAY = 199, /* F16SAMPLER2DARRAY */ + YYSYMBOL_F16SAMPLERCUBEARRAY = 200, /* F16SAMPLERCUBEARRAY */ + YYSYMBOL_F16SAMPLERBUFFER = 201, /* F16SAMPLERBUFFER */ + YYSYMBOL_F16SAMPLER2DMS = 202, /* F16SAMPLER2DMS */ + YYSYMBOL_F16SAMPLER2DMSARRAY = 203, /* F16SAMPLER2DMSARRAY */ + YYSYMBOL_F16SAMPLER1DSHADOW = 204, /* F16SAMPLER1DSHADOW */ + YYSYMBOL_F16SAMPLER2DSHADOW = 205, /* F16SAMPLER2DSHADOW */ + YYSYMBOL_F16SAMPLER1DARRAYSHADOW = 206, /* F16SAMPLER1DARRAYSHADOW */ + YYSYMBOL_F16SAMPLER2DARRAYSHADOW = 207, /* F16SAMPLER2DARRAYSHADOW */ + YYSYMBOL_F16SAMPLER2DRECTSHADOW = 208, /* F16SAMPLER2DRECTSHADOW */ + YYSYMBOL_F16SAMPLERCUBESHADOW = 209, /* F16SAMPLERCUBESHADOW */ + YYSYMBOL_F16SAMPLERCUBEARRAYSHADOW = 210, /* F16SAMPLERCUBEARRAYSHADOW */ + YYSYMBOL_IMAGE1D = 211, /* IMAGE1D */ + YYSYMBOL_IIMAGE1D = 212, /* IIMAGE1D */ + YYSYMBOL_UIMAGE1D = 213, /* UIMAGE1D */ + YYSYMBOL_IMAGE2D = 214, /* IMAGE2D */ + YYSYMBOL_IIMAGE2D = 215, /* IIMAGE2D */ + YYSYMBOL_UIMAGE2D = 216, /* UIMAGE2D */ + YYSYMBOL_IMAGE3D = 217, /* IMAGE3D */ + YYSYMBOL_IIMAGE3D = 218, /* IIMAGE3D */ + YYSYMBOL_UIMAGE3D = 219, /* UIMAGE3D */ + YYSYMBOL_IMAGE2DRECT = 220, /* IMAGE2DRECT */ + YYSYMBOL_IIMAGE2DRECT = 221, /* IIMAGE2DRECT */ + YYSYMBOL_UIMAGE2DRECT = 222, /* UIMAGE2DRECT */ + YYSYMBOL_IMAGECUBE = 223, /* IMAGECUBE */ + YYSYMBOL_IIMAGECUBE = 224, /* IIMAGECUBE */ + YYSYMBOL_UIMAGECUBE = 225, /* UIMAGECUBE */ + YYSYMBOL_IMAGEBUFFER = 226, /* IMAGEBUFFER */ + YYSYMBOL_IIMAGEBUFFER = 227, /* IIMAGEBUFFER */ + YYSYMBOL_UIMAGEBUFFER = 228, /* UIMAGEBUFFER */ + YYSYMBOL_IMAGE1DARRAY = 229, /* IMAGE1DARRAY */ + YYSYMBOL_IIMAGE1DARRAY = 230, /* IIMAGE1DARRAY */ + YYSYMBOL_UIMAGE1DARRAY = 231, /* UIMAGE1DARRAY */ + YYSYMBOL_IMAGE2DARRAY = 232, /* IMAGE2DARRAY */ + YYSYMBOL_IIMAGE2DARRAY = 233, /* IIMAGE2DARRAY */ + YYSYMBOL_UIMAGE2DARRAY = 234, /* UIMAGE2DARRAY */ + YYSYMBOL_IMAGECUBEARRAY = 235, /* IMAGECUBEARRAY */ + YYSYMBOL_IIMAGECUBEARRAY = 236, /* IIMAGECUBEARRAY */ + YYSYMBOL_UIMAGECUBEARRAY = 237, /* UIMAGECUBEARRAY */ + YYSYMBOL_IMAGE2DMS = 238, /* IMAGE2DMS */ + YYSYMBOL_IIMAGE2DMS = 239, /* IIMAGE2DMS */ + YYSYMBOL_UIMAGE2DMS = 240, /* UIMAGE2DMS */ + YYSYMBOL_IMAGE2DMSARRAY = 241, /* IMAGE2DMSARRAY */ + YYSYMBOL_IIMAGE2DMSARRAY = 242, /* IIMAGE2DMSARRAY */ + YYSYMBOL_UIMAGE2DMSARRAY = 243, /* UIMAGE2DMSARRAY */ + YYSYMBOL_F16IMAGE1D = 244, /* F16IMAGE1D */ + YYSYMBOL_F16IMAGE2D = 245, /* F16IMAGE2D */ + YYSYMBOL_F16IMAGE3D = 246, /* F16IMAGE3D */ + YYSYMBOL_F16IMAGE2DRECT = 247, /* F16IMAGE2DRECT */ + YYSYMBOL_F16IMAGECUBE = 248, /* F16IMAGECUBE */ + YYSYMBOL_F16IMAGE1DARRAY = 249, /* F16IMAGE1DARRAY */ + YYSYMBOL_F16IMAGE2DARRAY = 250, /* F16IMAGE2DARRAY */ + YYSYMBOL_F16IMAGECUBEARRAY = 251, /* F16IMAGECUBEARRAY */ + YYSYMBOL_F16IMAGEBUFFER = 252, /* F16IMAGEBUFFER */ + YYSYMBOL_F16IMAGE2DMS = 253, /* F16IMAGE2DMS */ + YYSYMBOL_F16IMAGE2DMSARRAY = 254, /* F16IMAGE2DMSARRAY */ + YYSYMBOL_I64IMAGE1D = 255, /* I64IMAGE1D */ + YYSYMBOL_U64IMAGE1D = 256, /* U64IMAGE1D */ + YYSYMBOL_I64IMAGE2D = 257, /* I64IMAGE2D */ + YYSYMBOL_U64IMAGE2D = 258, /* U64IMAGE2D */ + YYSYMBOL_I64IMAGE3D = 259, /* I64IMAGE3D */ + YYSYMBOL_U64IMAGE3D = 260, /* U64IMAGE3D */ + YYSYMBOL_I64IMAGE2DRECT = 261, /* I64IMAGE2DRECT */ + YYSYMBOL_U64IMAGE2DRECT = 262, /* U64IMAGE2DRECT */ + YYSYMBOL_I64IMAGECUBE = 263, /* I64IMAGECUBE */ + YYSYMBOL_U64IMAGECUBE = 264, /* U64IMAGECUBE */ + YYSYMBOL_I64IMAGEBUFFER = 265, /* I64IMAGEBUFFER */ + YYSYMBOL_U64IMAGEBUFFER = 266, /* U64IMAGEBUFFER */ + YYSYMBOL_I64IMAGE1DARRAY = 267, /* I64IMAGE1DARRAY */ + YYSYMBOL_U64IMAGE1DARRAY = 268, /* U64IMAGE1DARRAY */ + YYSYMBOL_I64IMAGE2DARRAY = 269, /* I64IMAGE2DARRAY */ + YYSYMBOL_U64IMAGE2DARRAY = 270, /* U64IMAGE2DARRAY */ + YYSYMBOL_I64IMAGECUBEARRAY = 271, /* I64IMAGECUBEARRAY */ + YYSYMBOL_U64IMAGECUBEARRAY = 272, /* U64IMAGECUBEARRAY */ + YYSYMBOL_I64IMAGE2DMS = 273, /* I64IMAGE2DMS */ + YYSYMBOL_U64IMAGE2DMS = 274, /* U64IMAGE2DMS */ + YYSYMBOL_I64IMAGE2DMSARRAY = 275, /* I64IMAGE2DMSARRAY */ + YYSYMBOL_U64IMAGE2DMSARRAY = 276, /* U64IMAGE2DMSARRAY */ + YYSYMBOL_TEXTURECUBEARRAY = 277, /* TEXTURECUBEARRAY */ + YYSYMBOL_ITEXTURECUBEARRAY = 278, /* ITEXTURECUBEARRAY */ + YYSYMBOL_UTEXTURECUBEARRAY = 279, /* UTEXTURECUBEARRAY */ + YYSYMBOL_TEXTURE1D = 280, /* TEXTURE1D */ + YYSYMBOL_ITEXTURE1D = 281, /* ITEXTURE1D */ + YYSYMBOL_UTEXTURE1D = 282, /* UTEXTURE1D */ + YYSYMBOL_TEXTURE1DARRAY = 283, /* TEXTURE1DARRAY */ + YYSYMBOL_ITEXTURE1DARRAY = 284, /* ITEXTURE1DARRAY */ + YYSYMBOL_UTEXTURE1DARRAY = 285, /* UTEXTURE1DARRAY */ + YYSYMBOL_TEXTURE2DRECT = 286, /* TEXTURE2DRECT */ + YYSYMBOL_ITEXTURE2DRECT = 287, /* ITEXTURE2DRECT */ + YYSYMBOL_UTEXTURE2DRECT = 288, /* UTEXTURE2DRECT */ + YYSYMBOL_TEXTUREBUFFER = 289, /* TEXTUREBUFFER */ + YYSYMBOL_ITEXTUREBUFFER = 290, /* ITEXTUREBUFFER */ + YYSYMBOL_UTEXTUREBUFFER = 291, /* UTEXTUREBUFFER */ + YYSYMBOL_TEXTURE2DMS = 292, /* TEXTURE2DMS */ + YYSYMBOL_ITEXTURE2DMS = 293, /* ITEXTURE2DMS */ + YYSYMBOL_UTEXTURE2DMS = 294, /* UTEXTURE2DMS */ + YYSYMBOL_TEXTURE2DMSARRAY = 295, /* TEXTURE2DMSARRAY */ + YYSYMBOL_ITEXTURE2DMSARRAY = 296, /* ITEXTURE2DMSARRAY */ + YYSYMBOL_UTEXTURE2DMSARRAY = 297, /* UTEXTURE2DMSARRAY */ + YYSYMBOL_F16TEXTURE1D = 298, /* F16TEXTURE1D */ + YYSYMBOL_F16TEXTURE2D = 299, /* F16TEXTURE2D */ + YYSYMBOL_F16TEXTURE3D = 300, /* F16TEXTURE3D */ + YYSYMBOL_F16TEXTURE2DRECT = 301, /* F16TEXTURE2DRECT */ + YYSYMBOL_F16TEXTURECUBE = 302, /* F16TEXTURECUBE */ + YYSYMBOL_F16TEXTURE1DARRAY = 303, /* F16TEXTURE1DARRAY */ + YYSYMBOL_F16TEXTURE2DARRAY = 304, /* F16TEXTURE2DARRAY */ + YYSYMBOL_F16TEXTURECUBEARRAY = 305, /* F16TEXTURECUBEARRAY */ + YYSYMBOL_F16TEXTUREBUFFER = 306, /* F16TEXTUREBUFFER */ + YYSYMBOL_F16TEXTURE2DMS = 307, /* F16TEXTURE2DMS */ + YYSYMBOL_F16TEXTURE2DMSARRAY = 308, /* F16TEXTURE2DMSARRAY */ + YYSYMBOL_SUBPASSINPUT = 309, /* SUBPASSINPUT */ + YYSYMBOL_SUBPASSINPUTMS = 310, /* SUBPASSINPUTMS */ + YYSYMBOL_ISUBPASSINPUT = 311, /* ISUBPASSINPUT */ + YYSYMBOL_ISUBPASSINPUTMS = 312, /* ISUBPASSINPUTMS */ + YYSYMBOL_USUBPASSINPUT = 313, /* USUBPASSINPUT */ + YYSYMBOL_USUBPASSINPUTMS = 314, /* USUBPASSINPUTMS */ + YYSYMBOL_F16SUBPASSINPUT = 315, /* F16SUBPASSINPUT */ + YYSYMBOL_F16SUBPASSINPUTMS = 316, /* F16SUBPASSINPUTMS */ + YYSYMBOL_LEFT_OP = 317, /* LEFT_OP */ + YYSYMBOL_RIGHT_OP = 318, /* RIGHT_OP */ + YYSYMBOL_INC_OP = 319, /* INC_OP */ + YYSYMBOL_DEC_OP = 320, /* DEC_OP */ + YYSYMBOL_LE_OP = 321, /* LE_OP */ + YYSYMBOL_GE_OP = 322, /* GE_OP */ + YYSYMBOL_EQ_OP = 323, /* EQ_OP */ + YYSYMBOL_NE_OP = 324, /* NE_OP */ + YYSYMBOL_AND_OP = 325, /* AND_OP */ + YYSYMBOL_OR_OP = 326, /* OR_OP */ + YYSYMBOL_XOR_OP = 327, /* XOR_OP */ + YYSYMBOL_MUL_ASSIGN = 328, /* MUL_ASSIGN */ + YYSYMBOL_DIV_ASSIGN = 329, /* DIV_ASSIGN */ + YYSYMBOL_ADD_ASSIGN = 330, /* ADD_ASSIGN */ + YYSYMBOL_MOD_ASSIGN = 331, /* MOD_ASSIGN */ + YYSYMBOL_LEFT_ASSIGN = 332, /* LEFT_ASSIGN */ + YYSYMBOL_RIGHT_ASSIGN = 333, /* RIGHT_ASSIGN */ + YYSYMBOL_AND_ASSIGN = 334, /* AND_ASSIGN */ + YYSYMBOL_XOR_ASSIGN = 335, /* XOR_ASSIGN */ + YYSYMBOL_OR_ASSIGN = 336, /* OR_ASSIGN */ + YYSYMBOL_SUB_ASSIGN = 337, /* SUB_ASSIGN */ + YYSYMBOL_STRING_LITERAL = 338, /* STRING_LITERAL */ + YYSYMBOL_LEFT_PAREN = 339, /* LEFT_PAREN */ + YYSYMBOL_RIGHT_PAREN = 340, /* RIGHT_PAREN */ + YYSYMBOL_LEFT_BRACKET = 341, /* LEFT_BRACKET */ + YYSYMBOL_RIGHT_BRACKET = 342, /* RIGHT_BRACKET */ + YYSYMBOL_LEFT_BRACE = 343, /* LEFT_BRACE */ + YYSYMBOL_RIGHT_BRACE = 344, /* RIGHT_BRACE */ + YYSYMBOL_DOT = 345, /* DOT */ + YYSYMBOL_COMMA = 346, /* COMMA */ + YYSYMBOL_COLON = 347, /* COLON */ + YYSYMBOL_EQUAL = 348, /* EQUAL */ + YYSYMBOL_SEMICOLON = 349, /* SEMICOLON */ + YYSYMBOL_BANG = 350, /* BANG */ + YYSYMBOL_DASH = 351, /* DASH */ + YYSYMBOL_TILDE = 352, /* TILDE */ + YYSYMBOL_PLUS = 353, /* PLUS */ + YYSYMBOL_STAR = 354, /* STAR */ + YYSYMBOL_SLASH = 355, /* SLASH */ + YYSYMBOL_PERCENT = 356, /* PERCENT */ + YYSYMBOL_LEFT_ANGLE = 357, /* LEFT_ANGLE */ + YYSYMBOL_RIGHT_ANGLE = 358, /* RIGHT_ANGLE */ + YYSYMBOL_VERTICAL_BAR = 359, /* VERTICAL_BAR */ + YYSYMBOL_CARET = 360, /* CARET */ + YYSYMBOL_AMPERSAND = 361, /* AMPERSAND */ + YYSYMBOL_QUESTION = 362, /* QUESTION */ + YYSYMBOL_INVARIANT = 363, /* INVARIANT */ + YYSYMBOL_HIGH_PRECISION = 364, /* HIGH_PRECISION */ + YYSYMBOL_MEDIUM_PRECISION = 365, /* MEDIUM_PRECISION */ + YYSYMBOL_LOW_PRECISION = 366, /* LOW_PRECISION */ + YYSYMBOL_PRECISION = 367, /* PRECISION */ + YYSYMBOL_PACKED = 368, /* PACKED */ + YYSYMBOL_RESOURCE = 369, /* RESOURCE */ + YYSYMBOL_SUPERP = 370, /* SUPERP */ + YYSYMBOL_FLOATCONSTANT = 371, /* FLOATCONSTANT */ + YYSYMBOL_INTCONSTANT = 372, /* INTCONSTANT */ + YYSYMBOL_UINTCONSTANT = 373, /* UINTCONSTANT */ + YYSYMBOL_BOOLCONSTANT = 374, /* BOOLCONSTANT */ + YYSYMBOL_IDENTIFIER = 375, /* IDENTIFIER */ + YYSYMBOL_TYPE_NAME = 376, /* TYPE_NAME */ + YYSYMBOL_CENTROID = 377, /* CENTROID */ + YYSYMBOL_IN = 378, /* IN */ + YYSYMBOL_OUT = 379, /* OUT */ + YYSYMBOL_INOUT = 380, /* INOUT */ + YYSYMBOL_STRUCT = 381, /* STRUCT */ + YYSYMBOL_VOID = 382, /* VOID */ + YYSYMBOL_WHILE = 383, /* WHILE */ + YYSYMBOL_BREAK = 384, /* BREAK */ + YYSYMBOL_CONTINUE = 385, /* CONTINUE */ + YYSYMBOL_DO = 386, /* DO */ + YYSYMBOL_ELSE = 387, /* ELSE */ + YYSYMBOL_FOR = 388, /* FOR */ + YYSYMBOL_IF = 389, /* IF */ + YYSYMBOL_DISCARD = 390, /* DISCARD */ + YYSYMBOL_RETURN = 391, /* RETURN */ + YYSYMBOL_SWITCH = 392, /* SWITCH */ + YYSYMBOL_CASE = 393, /* CASE */ + YYSYMBOL_DEFAULT = 394, /* DEFAULT */ + YYSYMBOL_TERMINATE_INVOCATION = 395, /* TERMINATE_INVOCATION */ + YYSYMBOL_UNIFORM = 396, /* UNIFORM */ + YYSYMBOL_SHARED = 397, /* SHARED */ + YYSYMBOL_BUFFER = 398, /* BUFFER */ + YYSYMBOL_FLAT = 399, /* FLAT */ + YYSYMBOL_SMOOTH = 400, /* SMOOTH */ + YYSYMBOL_LAYOUT = 401, /* LAYOUT */ + YYSYMBOL_DOUBLECONSTANT = 402, /* DOUBLECONSTANT */ + YYSYMBOL_INT16CONSTANT = 403, /* INT16CONSTANT */ + YYSYMBOL_UINT16CONSTANT = 404, /* UINT16CONSTANT */ + YYSYMBOL_FLOAT16CONSTANT = 405, /* FLOAT16CONSTANT */ + YYSYMBOL_INT32CONSTANT = 406, /* INT32CONSTANT */ + YYSYMBOL_UINT32CONSTANT = 407, /* UINT32CONSTANT */ + YYSYMBOL_INT64CONSTANT = 408, /* INT64CONSTANT */ + YYSYMBOL_UINT64CONSTANT = 409, /* UINT64CONSTANT */ + YYSYMBOL_SUBROUTINE = 410, /* SUBROUTINE */ + YYSYMBOL_DEMOTE = 411, /* DEMOTE */ + YYSYMBOL_PAYLOADNV = 412, /* PAYLOADNV */ + YYSYMBOL_PAYLOADINNV = 413, /* PAYLOADINNV */ + YYSYMBOL_HITATTRNV = 414, /* HITATTRNV */ + YYSYMBOL_CALLDATANV = 415, /* CALLDATANV */ + YYSYMBOL_CALLDATAINNV = 416, /* CALLDATAINNV */ + YYSYMBOL_PAYLOADEXT = 417, /* PAYLOADEXT */ + YYSYMBOL_PAYLOADINEXT = 418, /* PAYLOADINEXT */ + YYSYMBOL_HITATTREXT = 419, /* HITATTREXT */ + YYSYMBOL_CALLDATAEXT = 420, /* CALLDATAEXT */ + YYSYMBOL_CALLDATAINEXT = 421, /* CALLDATAINEXT */ + YYSYMBOL_PATCH = 422, /* PATCH */ + YYSYMBOL_SAMPLE = 423, /* SAMPLE */ + YYSYMBOL_NONUNIFORM = 424, /* NONUNIFORM */ + YYSYMBOL_COHERENT = 425, /* COHERENT */ + YYSYMBOL_VOLATILE = 426, /* VOLATILE */ + YYSYMBOL_RESTRICT = 427, /* RESTRICT */ + YYSYMBOL_READONLY = 428, /* READONLY */ + YYSYMBOL_WRITEONLY = 429, /* WRITEONLY */ + YYSYMBOL_DEVICECOHERENT = 430, /* DEVICECOHERENT */ + YYSYMBOL_QUEUEFAMILYCOHERENT = 431, /* QUEUEFAMILYCOHERENT */ + YYSYMBOL_WORKGROUPCOHERENT = 432, /* WORKGROUPCOHERENT */ + YYSYMBOL_SUBGROUPCOHERENT = 433, /* SUBGROUPCOHERENT */ + YYSYMBOL_NONPRIVATE = 434, /* NONPRIVATE */ + YYSYMBOL_SHADERCALLCOHERENT = 435, /* SHADERCALLCOHERENT */ + YYSYMBOL_NOPERSPECTIVE = 436, /* NOPERSPECTIVE */ + YYSYMBOL_EXPLICITINTERPAMD = 437, /* EXPLICITINTERPAMD */ + YYSYMBOL_PERVERTEXNV = 438, /* PERVERTEXNV */ + YYSYMBOL_PERPRIMITIVENV = 439, /* PERPRIMITIVENV */ + YYSYMBOL_PERVIEWNV = 440, /* PERVIEWNV */ + YYSYMBOL_PERTASKNV = 441, /* PERTASKNV */ + YYSYMBOL_PRECISE = 442, /* PRECISE */ + YYSYMBOL_YYACCEPT = 443, /* $accept */ + YYSYMBOL_variable_identifier = 444, /* variable_identifier */ + YYSYMBOL_primary_expression = 445, /* primary_expression */ + YYSYMBOL_postfix_expression = 446, /* postfix_expression */ + YYSYMBOL_integer_expression = 447, /* integer_expression */ + YYSYMBOL_function_call = 448, /* function_call */ + YYSYMBOL_function_call_or_method = 449, /* function_call_or_method */ + YYSYMBOL_function_call_generic = 450, /* function_call_generic */ + YYSYMBOL_function_call_header_no_parameters = 451, /* function_call_header_no_parameters */ + YYSYMBOL_function_call_header_with_parameters = 452, /* function_call_header_with_parameters */ + YYSYMBOL_function_call_header = 453, /* function_call_header */ + YYSYMBOL_function_identifier = 454, /* function_identifier */ + YYSYMBOL_unary_expression = 455, /* unary_expression */ + YYSYMBOL_unary_operator = 456, /* unary_operator */ + YYSYMBOL_multiplicative_expression = 457, /* multiplicative_expression */ + YYSYMBOL_additive_expression = 458, /* additive_expression */ + YYSYMBOL_shift_expression = 459, /* shift_expression */ + YYSYMBOL_relational_expression = 460, /* relational_expression */ + YYSYMBOL_equality_expression = 461, /* equality_expression */ + YYSYMBOL_and_expression = 462, /* and_expression */ + YYSYMBOL_exclusive_or_expression = 463, /* exclusive_or_expression */ + YYSYMBOL_inclusive_or_expression = 464, /* inclusive_or_expression */ + YYSYMBOL_logical_and_expression = 465, /* logical_and_expression */ + YYSYMBOL_logical_xor_expression = 466, /* logical_xor_expression */ + YYSYMBOL_logical_or_expression = 467, /* logical_or_expression */ + YYSYMBOL_conditional_expression = 468, /* conditional_expression */ + YYSYMBOL_469_1 = 469, /* $@1 */ + YYSYMBOL_assignment_expression = 470, /* assignment_expression */ + YYSYMBOL_assignment_operator = 471, /* assignment_operator */ + YYSYMBOL_expression = 472, /* expression */ + YYSYMBOL_constant_expression = 473, /* constant_expression */ + YYSYMBOL_declaration = 474, /* declaration */ + YYSYMBOL_block_structure = 475, /* block_structure */ + YYSYMBOL_476_2 = 476, /* $@2 */ + YYSYMBOL_identifier_list = 477, /* identifier_list */ + YYSYMBOL_function_prototype = 478, /* function_prototype */ + YYSYMBOL_function_declarator = 479, /* function_declarator */ + YYSYMBOL_function_header_with_parameters = 480, /* function_header_with_parameters */ + YYSYMBOL_function_header = 481, /* function_header */ + YYSYMBOL_parameter_declarator = 482, /* parameter_declarator */ + YYSYMBOL_parameter_declaration = 483, /* parameter_declaration */ + YYSYMBOL_parameter_type_specifier = 484, /* parameter_type_specifier */ + YYSYMBOL_init_declarator_list = 485, /* init_declarator_list */ + YYSYMBOL_single_declaration = 486, /* single_declaration */ + YYSYMBOL_fully_specified_type = 487, /* fully_specified_type */ + YYSYMBOL_invariant_qualifier = 488, /* invariant_qualifier */ + YYSYMBOL_interpolation_qualifier = 489, /* interpolation_qualifier */ + YYSYMBOL_layout_qualifier = 490, /* layout_qualifier */ + YYSYMBOL_layout_qualifier_id_list = 491, /* layout_qualifier_id_list */ + YYSYMBOL_layout_qualifier_id = 492, /* layout_qualifier_id */ + YYSYMBOL_precise_qualifier = 493, /* precise_qualifier */ + YYSYMBOL_type_qualifier = 494, /* type_qualifier */ + YYSYMBOL_single_type_qualifier = 495, /* single_type_qualifier */ + YYSYMBOL_storage_qualifier = 496, /* storage_qualifier */ + YYSYMBOL_non_uniform_qualifier = 497, /* non_uniform_qualifier */ + YYSYMBOL_type_name_list = 498, /* type_name_list */ + YYSYMBOL_type_specifier = 499, /* type_specifier */ + YYSYMBOL_array_specifier = 500, /* array_specifier */ + YYSYMBOL_type_parameter_specifier_opt = 501, /* type_parameter_specifier_opt */ + YYSYMBOL_type_parameter_specifier = 502, /* type_parameter_specifier */ + YYSYMBOL_type_parameter_specifier_list = 503, /* type_parameter_specifier_list */ + YYSYMBOL_type_specifier_nonarray = 504, /* type_specifier_nonarray */ + YYSYMBOL_precision_qualifier = 505, /* precision_qualifier */ + YYSYMBOL_struct_specifier = 506, /* struct_specifier */ + YYSYMBOL_507_3 = 507, /* $@3 */ + YYSYMBOL_508_4 = 508, /* $@4 */ + YYSYMBOL_struct_declaration_list = 509, /* struct_declaration_list */ + YYSYMBOL_struct_declaration = 510, /* struct_declaration */ + YYSYMBOL_struct_declarator_list = 511, /* struct_declarator_list */ + YYSYMBOL_struct_declarator = 512, /* struct_declarator */ + YYSYMBOL_initializer = 513, /* initializer */ + YYSYMBOL_initializer_list = 514, /* initializer_list */ + YYSYMBOL_declaration_statement = 515, /* declaration_statement */ + YYSYMBOL_statement = 516, /* statement */ + YYSYMBOL_simple_statement = 517, /* simple_statement */ + YYSYMBOL_demote_statement = 518, /* demote_statement */ + YYSYMBOL_compound_statement = 519, /* compound_statement */ + YYSYMBOL_520_5 = 520, /* $@5 */ + YYSYMBOL_521_6 = 521, /* $@6 */ + YYSYMBOL_statement_no_new_scope = 522, /* statement_no_new_scope */ + YYSYMBOL_statement_scoped = 523, /* statement_scoped */ + YYSYMBOL_524_7 = 524, /* $@7 */ + YYSYMBOL_525_8 = 525, /* $@8 */ + YYSYMBOL_compound_statement_no_new_scope = 526, /* compound_statement_no_new_scope */ + YYSYMBOL_statement_list = 527, /* statement_list */ + YYSYMBOL_expression_statement = 528, /* expression_statement */ + YYSYMBOL_selection_statement = 529, /* selection_statement */ + YYSYMBOL_selection_statement_nonattributed = 530, /* selection_statement_nonattributed */ + YYSYMBOL_selection_rest_statement = 531, /* selection_rest_statement */ + YYSYMBOL_condition = 532, /* condition */ + YYSYMBOL_switch_statement = 533, /* switch_statement */ + YYSYMBOL_switch_statement_nonattributed = 534, /* switch_statement_nonattributed */ + YYSYMBOL_535_9 = 535, /* $@9 */ + YYSYMBOL_switch_statement_list = 536, /* switch_statement_list */ + YYSYMBOL_case_label = 537, /* case_label */ + YYSYMBOL_iteration_statement = 538, /* iteration_statement */ + YYSYMBOL_iteration_statement_nonattributed = 539, /* iteration_statement_nonattributed */ + YYSYMBOL_540_10 = 540, /* $@10 */ + YYSYMBOL_541_11 = 541, /* $@11 */ + YYSYMBOL_542_12 = 542, /* $@12 */ + YYSYMBOL_for_init_statement = 543, /* for_init_statement */ + YYSYMBOL_conditionopt = 544, /* conditionopt */ + YYSYMBOL_for_rest_statement = 545, /* for_rest_statement */ + YYSYMBOL_jump_statement = 546, /* jump_statement */ + YYSYMBOL_translation_unit = 547, /* translation_unit */ + YYSYMBOL_external_declaration = 548, /* external_declaration */ + YYSYMBOL_function_definition = 549, /* function_definition */ + YYSYMBOL_550_13 = 550, /* $@13 */ + YYSYMBOL_attribute = 551, /* attribute */ + YYSYMBOL_attribute_list = 552, /* attribute_list */ + YYSYMBOL_single_attribute = 553 /* single_attribute */ }; - -typedef union YYSTYPE YYSTYPE; -# define YYSTYPE_IS_TRIVIAL 1 -# define YYSTYPE_IS_DECLARED 1 -#endif +typedef enum yysymbol_kind_t yysymbol_kind_t; - -int yyparse (glslang::TParseContext* pParseContext); - -#endif /* !YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED */ - -/* Copy the second part of user declarations. */ -#line 133 "MachineIndependent/glslang.y" /* yacc.c:358 */ +/* Second part of user prologue. */ +#line 133 "glslang/MachineIndependent/glslang.y" /* windows only pragma */ @@ -637,34 +696,82 @@ int yyparse (glslang::TParseContext* pParseContext); extern int yylex(YYSTYPE*, TParseContext&); -#line 641 "MachineIndependent/glslang_tab.cpp" /* yacc.c:358 */ +#line 700 "glslang/MachineIndependent/glslang_tab.cpp" + #ifdef short # undef short #endif -#ifdef YYTYPE_UINT8 -typedef YYTYPE_UINT8 yytype_uint8; -#else -typedef unsigned char yytype_uint8; +/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure + and (if available) are included + so that the code can choose integer types of a good width. */ + +#ifndef __PTRDIFF_MAX__ +# include /* INFRINGES ON USER NAME SPACE */ +# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_STDINT_H +# endif #endif -#ifdef YYTYPE_INT8 -typedef YYTYPE_INT8 yytype_int8; +/* Narrow types that promote to a signed type and that can represent a + signed or unsigned integer of at least N bits. In tables they can + save space and decrease cache pressure. Promoting to a signed type + helps avoid bugs in integer arithmetic. */ + +#ifdef __INT_LEAST8_MAX__ +typedef __INT_LEAST8_TYPE__ yytype_int8; +#elif defined YY_STDINT_H +typedef int_least8_t yytype_int8; #else typedef signed char yytype_int8; #endif -#ifdef YYTYPE_UINT16 -typedef YYTYPE_UINT16 yytype_uint16; +#ifdef __INT_LEAST16_MAX__ +typedef __INT_LEAST16_TYPE__ yytype_int16; +#elif defined YY_STDINT_H +typedef int_least16_t yytype_int16; #else -typedef unsigned short int yytype_uint16; +typedef short yytype_int16; #endif -#ifdef YYTYPE_INT16 -typedef YYTYPE_INT16 yytype_int16; +#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST8_TYPE__ yytype_uint8; +#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ + && UINT_LEAST8_MAX <= INT_MAX) +typedef uint_least8_t yytype_uint8; +#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX +typedef unsigned char yytype_uint8; #else -typedef short int yytype_int16; +typedef short yytype_uint8; +#endif + +#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST16_TYPE__ yytype_uint16; +#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ + && UINT_LEAST16_MAX <= INT_MAX) +typedef uint_least16_t yytype_uint16; +#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX +typedef unsigned short yytype_uint16; +#else +typedef int yytype_uint16; +#endif + +#ifndef YYPTRDIFF_T +# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ +# define YYPTRDIFF_T __PTRDIFF_TYPE__ +# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ +# elif defined PTRDIFF_MAX +# ifndef ptrdiff_t +# include /* INFRINGES ON USER NAME SPACE */ +# endif +# define YYPTRDIFF_T ptrdiff_t +# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX +# else +# define YYPTRDIFF_T long +# define YYPTRDIFF_MAXIMUM LONG_MAX +# endif #endif #ifndef YYSIZE_T @@ -672,15 +779,28 @@ typedef short int yytype_int16; # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t -# elif ! defined YYSIZE_T +# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else -# define YYSIZE_T unsigned int +# define YYSIZE_T unsigned # endif #endif -#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) +#define YYSIZE_MAXIMUM \ + YY_CAST (YYPTRDIFF_T, \ + (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ + ? YYPTRDIFF_MAXIMUM \ + : YY_CAST (YYSIZE_T, -1))) + +#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) + + +/* Stored state numbers (used for stacks). */ +typedef yytype_int16 yy_state_t; + +/* State numbers in computations. */ +typedef int yy_state_fast_t; #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS @@ -694,30 +814,20 @@ typedef short int yytype_int16; # endif #endif -#ifndef YY_ATTRIBUTE -# if (defined __GNUC__ \ - && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ - || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C -# define YY_ATTRIBUTE(Spec) __attribute__(Spec) + +#ifndef YY_ATTRIBUTE_PURE +# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) # else -# define YY_ATTRIBUTE(Spec) /* empty */ +# define YY_ATTRIBUTE_PURE # endif #endif -#ifndef YY_ATTRIBUTE_PURE -# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) -#endif - #ifndef YY_ATTRIBUTE_UNUSED -# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) -#endif - -#if !defined _Noreturn \ - && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) -# if defined _MSC_VER && 1200 <= _MSC_VER -# define _Noreturn __declspec (noreturn) +# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) # else -# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) +# define YY_ATTRIBUTE_UNUSED # endif #endif @@ -728,13 +838,13 @@ typedef short int yytype_int16; # define YYUSE(E) /* empty */ #endif -#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else # define YY_INITIAL_VALUE(Value) Value @@ -747,8 +857,22 @@ typedef short int yytype_int16; # define YY_INITIAL_VALUE(Value) /* Nothing. */ #endif +#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ +# define YY_IGNORE_USELESS_CAST_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") +# define YY_IGNORE_USELESS_CAST_END \ + _Pragma ("GCC diagnostic pop") +#endif +#ifndef YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_END +#endif -#if ! defined yyoverflow || YYERROR_VERBOSE + +#define YY_ASSERT(E) ((void) (0 && (E))) + +#if 1 /* The parser invokes alloca or malloc; define the necessary symbols. */ @@ -813,8 +937,7 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif -#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ - +#endif /* 1 */ #if (! defined yyoverflow \ && (! defined __cplusplus \ @@ -823,17 +946,17 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ /* A type that is properly aligned for any stack member. */ union yyalloc { - yytype_int16 yyss_alloc; + yy_state_t yyss_alloc; YYSTYPE yyvs_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) +# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ - ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) # define YYCOPY_NEEDED 1 @@ -846,11 +969,11 @@ union yyalloc # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ - YYSIZE_T yynewbytes; \ + YYPTRDIFF_T yynewbytes; \ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ + yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / YYSIZEOF (*yyptr); \ } \ while (0) @@ -862,12 +985,12 @@ union yyalloc # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(Dst, Src, Count) \ - __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) + __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) # else # define YYCOPY(Dst, Src, Count) \ do \ { \ - YYSIZE_T yyi; \ + YYPTRDIFF_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ @@ -879,28 +1002,31 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 416 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 10034 +#define YYLAST 10058 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 442 +#define YYNTOKENS 443 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 111 /* YYNRULES -- Number of rules. */ -#define YYNRULES 613 +#define YYNRULES 614 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 758 +#define YYNSTATES 760 -/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned - by yylex, with out-of-bounds checking. */ -#define YYUNDEFTOK 2 -#define YYMAXUTOK 696 +/* YYMAXUTOK -- Last valid token kind. */ +#define YYMAXUTOK 697 -#define YYTRANSLATE(YYX) \ - ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM + as returned by yylex, with out-of-bounds checking. */ +#define YYTRANSLATE(YYX) \ + (0 <= (YYX) && (YYX) <= YYMAXUTOK \ + ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \ + : YYSYMBOL_YYUNDEF) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM - as returned by yylex, without out-of-bounds checking. */ -static const yytype_uint16 yytranslate[] = + as returned by yylex. */ +static const yytype_int16 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -971,122 +1097,129 @@ static const yytype_uint16 yytranslate[] = 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441 + 435, 436, 437, 438, 439, 440, 441, 442 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ -static const yytype_uint16 yyrline[] = +static const yytype_int16 yyrline[] = { - 0, 369, 369, 375, 378, 383, 386, 389, 393, 397, - 400, 404, 408, 412, 416, 420, 424, 430, 438, 441, - 444, 447, 450, 455, 463, 470, 477, 483, 487, 494, - 497, 503, 510, 520, 528, 533, 561, 570, 576, 580, - 584, 604, 605, 606, 607, 613, 614, 619, 624, 633, - 634, 639, 647, 648, 654, 663, 664, 669, 674, 679, - 687, 688, 697, 709, 710, 719, 720, 729, 730, 739, - 740, 748, 749, 757, 758, 766, 767, 767, 785, 786, - 802, 806, 810, 814, 819, 823, 827, 831, 835, 839, - 843, 850, 853, 864, 871, 876, 881, 888, 892, 896, - 900, 905, 910, 919, 919, 930, 934, 941, 948, 951, - 958, 966, 986, 1009, 1024, 1049, 1060, 1070, 1080, 1090, - 1099, 1102, 1106, 1110, 1115, 1123, 1130, 1135, 1140, 1145, - 1154, 1164, 1191, 1200, 1207, 1215, 1222, 1229, 1237, 1247, - 1254, 1265, 1271, 1274, 1281, 1285, 1289, 1298, 1308, 1311, - 1322, 1325, 1328, 1332, 1336, 1341, 1345, 1352, 1356, 1361, - 1367, 1373, 1380, 1385, 1393, 1399, 1411, 1425, 1431, 1436, - 1444, 1452, 1460, 1468, 1476, 1484, 1492, 1500, 1507, 1514, - 1518, 1523, 1528, 1533, 1538, 1543, 1548, 1552, 1556, 1560, - 1564, 1570, 1581, 1588, 1591, 1600, 1605, 1615, 1620, 1628, - 1632, 1642, 1645, 1651, 1657, 1664, 1674, 1678, 1682, 1686, - 1691, 1695, 1700, 1705, 1710, 1715, 1720, 1725, 1730, 1735, - 1740, 1746, 1752, 1758, 1763, 1768, 1773, 1778, 1783, 1788, - 1793, 1798, 1803, 1808, 1813, 1819, 1826, 1831, 1836, 1841, - 1846, 1851, 1856, 1861, 1866, 1871, 1876, 1881, 1889, 1897, - 1905, 1911, 1917, 1923, 1929, 1935, 1941, 1947, 1953, 1959, - 1965, 1971, 1977, 1983, 1989, 1995, 2001, 2007, 2013, 2019, - 2025, 2031, 2037, 2043, 2049, 2055, 2061, 2067, 2073, 2079, - 2085, 2091, 2097, 2103, 2111, 2119, 2127, 2135, 2143, 2151, - 2159, 2167, 2175, 2183, 2191, 2199, 2205, 2211, 2217, 2223, - 2229, 2235, 2241, 2247, 2253, 2259, 2265, 2271, 2277, 2283, - 2289, 2295, 2301, 2307, 2313, 2319, 2325, 2331, 2337, 2343, - 2349, 2355, 2361, 2367, 2373, 2379, 2385, 2391, 2397, 2403, - 2409, 2415, 2419, 2423, 2427, 2432, 2438, 2443, 2448, 2453, - 2458, 2463, 2468, 2474, 2479, 2484, 2489, 2494, 2499, 2505, - 2511, 2517, 2523, 2529, 2535, 2541, 2547, 2553, 2559, 2565, - 2571, 2577, 2583, 2588, 2593, 2598, 2603, 2608, 2613, 2619, - 2624, 2629, 2634, 2639, 2644, 2649, 2654, 2660, 2665, 2670, - 2675, 2680, 2685, 2690, 2695, 2700, 2705, 2710, 2715, 2720, - 2725, 2730, 2736, 2741, 2746, 2752, 2758, 2763, 2768, 2773, - 2779, 2784, 2789, 2794, 2800, 2805, 2810, 2815, 2821, 2826, - 2831, 2836, 2842, 2848, 2854, 2860, 2865, 2871, 2877, 2883, - 2888, 2893, 2898, 2903, 2908, 2914, 2919, 2924, 2929, 2935, - 2940, 2945, 2950, 2956, 2961, 2966, 2971, 2977, 2982, 2987, - 2992, 2998, 3003, 3008, 3013, 3019, 3024, 3029, 3034, 3040, - 3045, 3050, 3055, 3061, 3066, 3071, 3076, 3082, 3087, 3092, - 3097, 3103, 3108, 3113, 3118, 3124, 3129, 3134, 3139, 3145, - 3150, 3155, 3160, 3166, 3171, 3176, 3181, 3187, 3192, 3197, - 3202, 3208, 3213, 3218, 3223, 3228, 3233, 3238, 3243, 3248, - 3253, 3258, 3263, 3268, 3273, 3278, 3283, 3288, 3293, 3298, - 3303, 3308, 3313, 3318, 3323, 3328, 3334, 3340, 3346, 3352, - 3359, 3366, 3372, 3378, 3384, 3390, 3396, 3402, 3409, 3414, - 3430, 3435, 3440, 3448, 3448, 3459, 3459, 3469, 3472, 3485, - 3507, 3534, 3538, 3544, 3549, 3560, 3564, 3570, 3581, 3584, - 3591, 3595, 3596, 3602, 3603, 3604, 3605, 3606, 3607, 3608, - 3610, 3616, 3625, 3626, 3630, 3626, 3642, 3643, 3647, 3647, - 3654, 3654, 3668, 3671, 3679, 3687, 3698, 3699, 3703, 3707, - 3714, 3721, 3725, 3733, 3737, 3750, 3754, 3761, 3761, 3781, - 3784, 3790, 3802, 3814, 3818, 3825, 3825, 3840, 3840, 3856, - 3856, 3877, 3880, 3886, 3889, 3895, 3899, 3906, 3911, 3916, - 3923, 3926, 3935, 3939, 3948, 3951, 3955, 3964, 3964, 4006, - 4012, 4015, 4020, 4023 + 0, 370, 370, 376, 379, 384, 387, 390, 394, 398, + 401, 405, 409, 413, 417, 421, 425, 431, 439, 442, + 445, 448, 451, 456, 464, 471, 478, 484, 488, 495, + 498, 504, 511, 521, 529, 534, 562, 571, 577, 581, + 585, 605, 606, 607, 608, 614, 615, 620, 625, 634, + 635, 640, 648, 649, 655, 664, 665, 670, 675, 680, + 688, 689, 698, 710, 711, 720, 721, 730, 731, 740, + 741, 749, 750, 758, 759, 767, 768, 768, 786, 787, + 803, 807, 811, 815, 820, 824, 828, 832, 836, 840, + 844, 851, 854, 865, 872, 877, 882, 889, 893, 897, + 901, 906, 911, 920, 920, 931, 935, 942, 949, 952, + 959, 967, 987, 1010, 1025, 1050, 1061, 1071, 1081, 1091, + 1100, 1103, 1107, 1111, 1116, 1124, 1131, 1136, 1141, 1146, + 1155, 1165, 1192, 1201, 1208, 1216, 1223, 1230, 1238, 1248, + 1255, 1266, 1272, 1275, 1282, 1286, 1290, 1299, 1309, 1312, + 1323, 1326, 1329, 1333, 1337, 1342, 1346, 1353, 1357, 1362, + 1368, 1374, 1381, 1386, 1394, 1400, 1412, 1426, 1432, 1437, + 1445, 1453, 1461, 1469, 1477, 1485, 1493, 1501, 1508, 1515, + 1519, 1524, 1529, 1534, 1539, 1544, 1549, 1553, 1557, 1561, + 1565, 1571, 1582, 1589, 1592, 1601, 1606, 1616, 1621, 1629, + 1633, 1643, 1646, 1652, 1658, 1665, 1675, 1679, 1683, 1687, + 1692, 1696, 1701, 1706, 1711, 1716, 1721, 1726, 1731, 1736, + 1741, 1747, 1753, 1759, 1764, 1769, 1774, 1779, 1784, 1789, + 1794, 1799, 1804, 1809, 1814, 1820, 1827, 1832, 1837, 1842, + 1847, 1852, 1857, 1862, 1867, 1872, 1877, 1882, 1890, 1898, + 1906, 1912, 1918, 1924, 1930, 1936, 1942, 1948, 1954, 1960, + 1966, 1972, 1978, 1984, 1990, 1996, 2002, 2008, 2014, 2020, + 2026, 2032, 2038, 2044, 2050, 2056, 2062, 2068, 2074, 2080, + 2086, 2092, 2098, 2104, 2112, 2120, 2128, 2136, 2144, 2152, + 2160, 2168, 2176, 2184, 2192, 2200, 2206, 2212, 2218, 2224, + 2230, 2236, 2242, 2248, 2254, 2260, 2266, 2272, 2278, 2284, + 2290, 2296, 2302, 2308, 2314, 2320, 2326, 2332, 2338, 2344, + 2350, 2356, 2362, 2368, 2374, 2380, 2386, 2392, 2398, 2404, + 2410, 2416, 2420, 2424, 2428, 2433, 2439, 2444, 2449, 2454, + 2459, 2464, 2469, 2475, 2480, 2485, 2490, 2495, 2500, 2506, + 2512, 2518, 2524, 2530, 2536, 2542, 2548, 2554, 2560, 2566, + 2572, 2578, 2584, 2589, 2594, 2599, 2604, 2609, 2614, 2620, + 2625, 2630, 2635, 2640, 2645, 2650, 2655, 2661, 2666, 2671, + 2676, 2681, 2686, 2691, 2696, 2701, 2706, 2711, 2716, 2721, + 2726, 2731, 2737, 2742, 2747, 2753, 2759, 2764, 2769, 2774, + 2780, 2785, 2790, 2795, 2801, 2806, 2811, 2816, 2822, 2827, + 2832, 2837, 2843, 2849, 2855, 2861, 2866, 2872, 2878, 2884, + 2889, 2894, 2899, 2904, 2909, 2915, 2920, 2925, 2930, 2936, + 2941, 2946, 2951, 2957, 2962, 2967, 2972, 2978, 2983, 2988, + 2993, 2999, 3004, 3009, 3014, 3020, 3025, 3030, 3035, 3041, + 3046, 3051, 3056, 3062, 3067, 3072, 3077, 3083, 3088, 3093, + 3098, 3104, 3109, 3114, 3119, 3125, 3130, 3135, 3140, 3146, + 3151, 3156, 3161, 3167, 3172, 3177, 3182, 3188, 3193, 3198, + 3203, 3209, 3214, 3219, 3224, 3229, 3234, 3239, 3244, 3249, + 3254, 3259, 3264, 3269, 3274, 3279, 3284, 3289, 3294, 3299, + 3304, 3309, 3314, 3319, 3324, 3329, 3335, 3341, 3347, 3353, + 3360, 3367, 3373, 3379, 3385, 3391, 3397, 3403, 3410, 3415, + 3431, 3436, 3441, 3449, 3449, 3460, 3460, 3470, 3473, 3486, + 3508, 3535, 3539, 3545, 3550, 3561, 3565, 3571, 3582, 3585, + 3592, 3596, 3597, 3603, 3604, 3605, 3606, 3607, 3608, 3609, + 3611, 3617, 3626, 3627, 3631, 3627, 3643, 3644, 3648, 3648, + 3655, 3655, 3669, 3672, 3680, 3688, 3699, 3700, 3704, 3708, + 3715, 3722, 3726, 3734, 3738, 3751, 3755, 3762, 3762, 3782, + 3785, 3791, 3803, 3815, 3819, 3826, 3826, 3841, 3841, 3857, + 3857, 3878, 3881, 3887, 3890, 3896, 3900, 3907, 3912, 3917, + 3924, 3927, 3931, 3940, 3944, 3953, 3956, 3960, 3969, 3969, + 4011, 4017, 4020, 4025, 4028 }; #endif -#if YYDEBUG || YYERROR_VERBOSE || 1 +/** Accessing symbol of state STATE. */ +#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State]) + +#if 1 +/* The user-facing name of the symbol whose (internal) number is + YYSYMBOL. No bounds checking. */ +static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED; + /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { - "$end", "error", "$undefined", "CONST", "BOOL", "INT", "UINT", "FLOAT", - "BVEC2", "BVEC3", "BVEC4", "IVEC2", "IVEC3", "IVEC4", "UVEC2", "UVEC3", - "UVEC4", "VEC2", "VEC3", "VEC4", "MAT2", "MAT3", "MAT4", "MAT2X2", - "MAT2X3", "MAT2X4", "MAT3X2", "MAT3X3", "MAT3X4", "MAT4X2", "MAT4X3", - "MAT4X4", "SAMPLER2D", "SAMPLER3D", "SAMPLERCUBE", "SAMPLER2DSHADOW", - "SAMPLERCUBESHADOW", "SAMPLER2DARRAY", "SAMPLER2DARRAYSHADOW", - "ISAMPLER2D", "ISAMPLER3D", "ISAMPLERCUBE", "ISAMPLER2DARRAY", - "USAMPLER2D", "USAMPLER3D", "USAMPLERCUBE", "USAMPLER2DARRAY", "SAMPLER", - "SAMPLERSHADOW", "TEXTURE2D", "TEXTURE3D", "TEXTURECUBE", - "TEXTURE2DARRAY", "ITEXTURE2D", "ITEXTURE3D", "ITEXTURECUBE", - "ITEXTURE2DARRAY", "UTEXTURE2D", "UTEXTURE3D", "UTEXTURECUBE", - "UTEXTURE2DARRAY", "ATTRIBUTE", "VARYING", "FLOAT16_T", "FLOAT32_T", - "DOUBLE", "FLOAT64_T", "INT64_T", "UINT64_T", "INT32_T", "UINT32_T", - "INT16_T", "UINT16_T", "INT8_T", "UINT8_T", "I64VEC2", "I64VEC3", - "I64VEC4", "U64VEC2", "U64VEC3", "U64VEC4", "I32VEC2", "I32VEC3", - "I32VEC4", "U32VEC2", "U32VEC3", "U32VEC4", "I16VEC2", "I16VEC3", - "I16VEC4", "U16VEC2", "U16VEC3", "U16VEC4", "I8VEC2", "I8VEC3", "I8VEC4", - "U8VEC2", "U8VEC3", "U8VEC4", "DVEC2", "DVEC3", "DVEC4", "DMAT2", - "DMAT3", "DMAT4", "F16VEC2", "F16VEC3", "F16VEC4", "F16MAT2", "F16MAT3", - "F16MAT4", "F32VEC2", "F32VEC3", "F32VEC4", "F32MAT2", "F32MAT3", - "F32MAT4", "F64VEC2", "F64VEC3", "F64VEC4", "F64MAT2", "F64MAT3", - "F64MAT4", "DMAT2X2", "DMAT2X3", "DMAT2X4", "DMAT3X2", "DMAT3X3", - "DMAT3X4", "DMAT4X2", "DMAT4X3", "DMAT4X4", "F16MAT2X2", "F16MAT2X3", - "F16MAT2X4", "F16MAT3X2", "F16MAT3X3", "F16MAT3X4", "F16MAT4X2", - "F16MAT4X3", "F16MAT4X4", "F32MAT2X2", "F32MAT2X3", "F32MAT2X4", - "F32MAT3X2", "F32MAT3X3", "F32MAT3X4", "F32MAT4X2", "F32MAT4X3", - "F32MAT4X4", "F64MAT2X2", "F64MAT2X3", "F64MAT2X4", "F64MAT3X2", - "F64MAT3X3", "F64MAT3X4", "F64MAT4X2", "F64MAT4X3", "F64MAT4X4", - "ATOMIC_UINT", "ACCSTRUCTNV", "ACCSTRUCTEXT", "RAYQUERYEXT", - "FCOOPMATNV", "ICOOPMATNV", "UCOOPMATNV", "SAMPLERCUBEARRAY", - "SAMPLERCUBEARRAYSHADOW", "ISAMPLERCUBEARRAY", "USAMPLERCUBEARRAY", - "SAMPLER1D", "SAMPLER1DARRAY", "SAMPLER1DARRAYSHADOW", "ISAMPLER1D", - "SAMPLER1DSHADOW", "SAMPLER2DRECT", "SAMPLER2DRECTSHADOW", - "ISAMPLER2DRECT", "USAMPLER2DRECT", "SAMPLERBUFFER", "ISAMPLERBUFFER", - "USAMPLERBUFFER", "SAMPLER2DMS", "ISAMPLER2DMS", "USAMPLER2DMS", - "SAMPLER2DMSARRAY", "ISAMPLER2DMSARRAY", "USAMPLER2DMSARRAY", - "SAMPLEREXTERNALOES", "SAMPLEREXTERNAL2DY2YEXT", "ISAMPLER1DARRAY", - "USAMPLER1D", "USAMPLER1DARRAY", "F16SAMPLER1D", "F16SAMPLER2D", - "F16SAMPLER3D", "F16SAMPLER2DRECT", "F16SAMPLERCUBE", + "\"end of file\"", "error", "\"invalid token\"", "CONST", "BOOL", "INT", + "UINT", "FLOAT", "BVEC2", "BVEC3", "BVEC4", "IVEC2", "IVEC3", "IVEC4", + "UVEC2", "UVEC3", "UVEC4", "VEC2", "VEC3", "VEC4", "MAT2", "MAT3", + "MAT4", "MAT2X2", "MAT2X3", "MAT2X4", "MAT3X2", "MAT3X3", "MAT3X4", + "MAT4X2", "MAT4X3", "MAT4X4", "SAMPLER2D", "SAMPLER3D", "SAMPLERCUBE", + "SAMPLER2DSHADOW", "SAMPLERCUBESHADOW", "SAMPLER2DARRAY", + "SAMPLER2DARRAYSHADOW", "ISAMPLER2D", "ISAMPLER3D", "ISAMPLERCUBE", + "ISAMPLER2DARRAY", "USAMPLER2D", "USAMPLER3D", "USAMPLERCUBE", + "USAMPLER2DARRAY", "SAMPLER", "SAMPLERSHADOW", "TEXTURE2D", "TEXTURE3D", + "TEXTURECUBE", "TEXTURE2DARRAY", "ITEXTURE2D", "ITEXTURE3D", + "ITEXTURECUBE", "ITEXTURE2DARRAY", "UTEXTURE2D", "UTEXTURE3D", + "UTEXTURECUBE", "UTEXTURE2DARRAY", "ATTRIBUTE", "VARYING", "FLOAT16_T", + "FLOAT32_T", "DOUBLE", "FLOAT64_T", "INT64_T", "UINT64_T", "INT32_T", + "UINT32_T", "INT16_T", "UINT16_T", "INT8_T", "UINT8_T", "I64VEC2", + "I64VEC3", "I64VEC4", "U64VEC2", "U64VEC3", "U64VEC4", "I32VEC2", + "I32VEC3", "I32VEC4", "U32VEC2", "U32VEC3", "U32VEC4", "I16VEC2", + "I16VEC3", "I16VEC4", "U16VEC2", "U16VEC3", "U16VEC4", "I8VEC2", + "I8VEC3", "I8VEC4", "U8VEC2", "U8VEC3", "U8VEC4", "DVEC2", "DVEC3", + "DVEC4", "DMAT2", "DMAT3", "DMAT4", "F16VEC2", "F16VEC3", "F16VEC4", + "F16MAT2", "F16MAT3", "F16MAT4", "F32VEC2", "F32VEC3", "F32VEC4", + "F32MAT2", "F32MAT3", "F32MAT4", "F64VEC2", "F64VEC3", "F64VEC4", + "F64MAT2", "F64MAT3", "F64MAT4", "DMAT2X2", "DMAT2X3", "DMAT2X4", + "DMAT3X2", "DMAT3X3", "DMAT3X4", "DMAT4X2", "DMAT4X3", "DMAT4X4", + "F16MAT2X2", "F16MAT2X3", "F16MAT2X4", "F16MAT3X2", "F16MAT3X3", + "F16MAT3X4", "F16MAT4X2", "F16MAT4X3", "F16MAT4X4", "F32MAT2X2", + "F32MAT2X3", "F32MAT2X4", "F32MAT3X2", "F32MAT3X3", "F32MAT3X4", + "F32MAT4X2", "F32MAT4X3", "F32MAT4X4", "F64MAT2X2", "F64MAT2X3", + "F64MAT2X4", "F64MAT3X2", "F64MAT3X3", "F64MAT3X4", "F64MAT4X2", + "F64MAT4X3", "F64MAT4X4", "ATOMIC_UINT", "ACCSTRUCTNV", "ACCSTRUCTEXT", + "RAYQUERYEXT", "FCOOPMATNV", "ICOOPMATNV", "UCOOPMATNV", + "SAMPLERCUBEARRAY", "SAMPLERCUBEARRAYSHADOW", "ISAMPLERCUBEARRAY", + "USAMPLERCUBEARRAY", "SAMPLER1D", "SAMPLER1DARRAY", + "SAMPLER1DARRAYSHADOW", "ISAMPLER1D", "SAMPLER1DSHADOW", "SAMPLER2DRECT", + "SAMPLER2DRECTSHADOW", "ISAMPLER2DRECT", "USAMPLER2DRECT", + "SAMPLERBUFFER", "ISAMPLERBUFFER", "USAMPLERBUFFER", "SAMPLER2DMS", + "ISAMPLER2DMS", "USAMPLER2DMS", "SAMPLER2DMSARRAY", "ISAMPLER2DMSARRAY", + "USAMPLER2DMSARRAY", "SAMPLEREXTERNALOES", "SAMPLEREXTERNAL2DY2YEXT", + "ISAMPLER1DARRAY", "USAMPLER1D", "USAMPLER1DARRAY", "F16SAMPLER1D", + "F16SAMPLER2D", "F16SAMPLER3D", "F16SAMPLER2DRECT", "F16SAMPLERCUBE", "F16SAMPLER1DARRAY", "F16SAMPLER2DARRAY", "F16SAMPLERCUBEARRAY", "F16SAMPLERBUFFER", "F16SAMPLER2DMS", "F16SAMPLER2DMSARRAY", "F16SAMPLER1DSHADOW", "F16SAMPLER2DSHADOW", "F16SAMPLER1DARRAYSHADOW", @@ -1132,20 +1265,20 @@ static const char *const yytname[] = "FLOATCONSTANT", "INTCONSTANT", "UINTCONSTANT", "BOOLCONSTANT", "IDENTIFIER", "TYPE_NAME", "CENTROID", "IN", "OUT", "INOUT", "STRUCT", "VOID", "WHILE", "BREAK", "CONTINUE", "DO", "ELSE", "FOR", "IF", - "DISCARD", "RETURN", "SWITCH", "CASE", "DEFAULT", "UNIFORM", "SHARED", - "BUFFER", "FLAT", "SMOOTH", "LAYOUT", "DOUBLECONSTANT", "INT16CONSTANT", - "UINT16CONSTANT", "FLOAT16CONSTANT", "INT32CONSTANT", "UINT32CONSTANT", - "INT64CONSTANT", "UINT64CONSTANT", "SUBROUTINE", "DEMOTE", "PAYLOADNV", - "PAYLOADINNV", "HITATTRNV", "CALLDATANV", "CALLDATAINNV", "PAYLOADEXT", - "PAYLOADINEXT", "HITATTREXT", "CALLDATAEXT", "CALLDATAINEXT", "PATCH", - "SAMPLE", "NONUNIFORM", "COHERENT", "VOLATILE", "RESTRICT", "READONLY", - "WRITEONLY", "DEVICECOHERENT", "QUEUEFAMILYCOHERENT", - "WORKGROUPCOHERENT", "SUBGROUPCOHERENT", "NONPRIVATE", - "SHADERCALLCOHERENT", "NOPERSPECTIVE", "EXPLICITINTERPAMD", - "PERVERTEXNV", "PERPRIMITIVENV", "PERVIEWNV", "PERTASKNV", "PRECISE", - "$accept", "variable_identifier", "primary_expression", - "postfix_expression", "integer_expression", "function_call", - "function_call_or_method", "function_call_generic", + "DISCARD", "RETURN", "SWITCH", "CASE", "DEFAULT", "TERMINATE_INVOCATION", + "UNIFORM", "SHARED", "BUFFER", "FLAT", "SMOOTH", "LAYOUT", + "DOUBLECONSTANT", "INT16CONSTANT", "UINT16CONSTANT", "FLOAT16CONSTANT", + "INT32CONSTANT", "UINT32CONSTANT", "INT64CONSTANT", "UINT64CONSTANT", + "SUBROUTINE", "DEMOTE", "PAYLOADNV", "PAYLOADINNV", "HITATTRNV", + "CALLDATANV", "CALLDATAINNV", "PAYLOADEXT", "PAYLOADINEXT", "HITATTREXT", + "CALLDATAEXT", "CALLDATAINEXT", "PATCH", "SAMPLE", "NONUNIFORM", + "COHERENT", "VOLATILE", "RESTRICT", "READONLY", "WRITEONLY", + "DEVICECOHERENT", "QUEUEFAMILYCOHERENT", "WORKGROUPCOHERENT", + "SUBGROUPCOHERENT", "NONPRIVATE", "SHADERCALLCOHERENT", "NOPERSPECTIVE", + "EXPLICITINTERPAMD", "PERVERTEXNV", "PERPRIMITIVENV", "PERVIEWNV", + "PERTASKNV", "PRECISE", "$accept", "variable_identifier", + "primary_expression", "postfix_expression", "integer_expression", + "function_call", "function_call_or_method", "function_call_generic", "function_call_header_no_parameters", "function_call_header_with_parameters", "function_call_header", "function_identifier", "unary_expression", "unary_operator", @@ -1183,12 +1316,18 @@ static const char *const yytname[] = "function_definition", "$@13", "attribute", "attribute_list", "single_attribute", YY_NULLPTR }; + +static const char * +yysymbol_name (yysymbol_kind_t yysymbol) +{ + return yytname[yysymbol]; +} #endif -# ifdef YYPRINT +#ifdef YYPRINT /* YYTOKNUM[NUM] -- (External) token number corresponding to the (internal) symbol number NUM (which must be that of a token). */ -static const yytype_uint16 yytoknum[] = +static const yytype_int16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, @@ -1234,106 +1373,106 @@ static const yytype_uint16 yytoknum[] = 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, - 695, 696 + 695, 696, 697 }; -# endif +#endif -#define YYPACT_NINF -479 +#define YYPACT_NINF (-728) -#define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-479))) +#define yypact_value_is_default(Yyn) \ + ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF -559 +#define YYTABLE_NINF (-559) -#define yytable_value_is_error(Yytable_value) \ +#define yytable_value_is_error(Yyn) \ 0 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const yytype_int16 yypact[] = { - 4273, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, - 132, -479, -479, -479, -479, -479, -1, -479, -479, -479, - -479, -479, -479, -323, -320, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, -479, 11, -271, 17, - 30, 6468, 20, -479, 28, -479, -479, -479, -479, 4712, - -479, -479, -479, -479, 50, -479, -479, 761, -479, -479, - 16, -479, 81, -29, 69, -479, -335, -479, 111, -479, - 6468, -479, -479, -479, 6468, 103, 106, -479, -336, -479, - 72, -479, -479, 9006, 142, -479, -479, -479, 136, 6468, - -479, 144, -479, 53, -479, -479, 76, 7326, -479, -334, - 1200, -479, -479, -479, -479, 142, -331, -479, 7746, -330, - -479, 119, -479, 65, 9006, 9006, -479, 9006, -479, -479, - -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, -479, 36, -479, -479, - -479, 171, 85, 9426, 173, -479, 9006, -479, -479, -345, - 174, -479, 6468, 139, 5151, -479, 6468, 9006, -479, -29, - -479, 141, -479, -479, 145, 99, 35, 26, 71, 156, - 159, 161, 196, 195, 23, 181, 8166, -479, 183, 182, - -479, -479, 186, 179, 180, -479, 191, 192, 187, 8586, - 193, 9006, 188, 189, 127, -479, -479, 96, -479, -271, - 200, 201, -479, -479, -479, -479, -479, 1639, -479, -479, - -479, -479, -479, -479, -479, -479, -479, -24, 174, 7746, - 13, 7746, -479, -479, 7746, 6468, -479, 166, -479, -479, - -479, 86, -479, -479, 9006, 168, -479, -479, 9006, 205, - -479, -479, -479, 9006, -479, 139, 142, 124, -479, -479, - -479, 5590, -479, -479, -479, -479, 9006, 9006, 9006, 9006, - 9006, 9006, 9006, 9006, 9006, 9006, 9006, 9006, 9006, 9006, - 9006, 9006, 9006, 9006, 9006, -479, -479, -479, 206, 172, - -479, 2078, -479, -479, -479, 2078, -479, 9006, -479, -479, - 130, 9006, 125, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, 9006, 9006, -479, -479, - -479, -479, -479, -479, -479, 7746, -479, 94, -479, 6029, - -479, -479, 207, 204, -479, -479, -479, 131, 174, 139, - -479, -479, -479, -479, -479, 145, 145, 99, 99, 35, - 35, 35, 35, 26, 26, 71, 156, 159, 161, 196, - 195, 9006, -479, 212, 60, -479, 2078, 3834, 169, 3395, - 87, -479, 89, -479, -479, -479, -479, -479, 6906, -479, - -479, -479, -479, 143, 9006, 211, 172, 210, 204, 184, - 6468, 217, 219, -479, -479, 3834, 218, -479, -479, -479, - 9006, 220, -479, -479, -479, 214, 2517, 9006, -479, 216, - 223, 185, 224, 2956, -479, 225, -479, -479, 7746, -479, - -479, -479, 97, 9006, 2517, 218, -479, -479, 2078, -479, - 222, 204, -479, -479, 2078, 229, -479, -479 + 4283, -728, -728, -728, -728, -728, -728, -728, -728, -728, + -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, + -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, + -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, + -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, + -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, + -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, + -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, + -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, + -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, + -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, + -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, + -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, + -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, + -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, + -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, + -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, + -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, + -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, + -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, + -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, + -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, + -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, + -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, + -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, + -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, + -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, + -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, + -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, + -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, + -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, + -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, + 109, -728, -728, -728, -728, -728, 1, -728, -728, -728, + -728, -728, -728, -327, -323, -728, -728, -728, -728, -728, + -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, + -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, + -728, -728, -728, -728, -728, -728, -728, 11, -271, 12, + 19, 6483, 8, -728, 57, -728, -728, -728, -728, 4723, + -728, -728, -728, -728, 37, -728, -728, 763, -728, -728, + 16, -728, 107, -29, 92, -728, -336, -728, 136, -728, + 6483, -728, -728, -728, 6483, 110, 117, -728, 54, -728, + 68, -728, -728, 9027, 140, -728, -728, -728, 134, 6483, + -728, 146, -728, 13, -728, -728, 59, 7343, -728, -335, + 1203, -728, -728, -728, -728, 140, -331, -728, 7764, -330, + -728, 126, -728, 85, 9027, 9027, -728, 9027, -728, -728, + -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, + -728, -728, -728, -728, -728, -728, -728, 36, -728, -728, + -728, 170, 66, 9448, 173, -728, 9027, -728, -728, -343, + 172, -728, 6483, 141, 5163, -728, 6483, 9027, -728, -29, + -728, 145, -728, -728, 142, 93, 108, 26, 114, 154, + 157, 159, 196, 195, 23, 181, 8185, -728, 183, 182, + -728, -728, 186, 178, 180, -728, 191, 192, 184, 8606, + 193, 9027, 187, 188, 194, 129, -728, -728, 99, -728, + -271, 197, 202, -728, -728, -728, -728, -728, 1643, -728, + -728, -728, -728, -728, -728, -728, -728, -728, -22, 172, + 7764, 21, 7764, -728, -728, 7764, 6483, -728, 160, -728, + -728, -728, 76, -728, -728, 9027, 167, -728, -728, 9027, + 204, -728, -728, -728, 9027, -728, 141, 140, 106, -728, + -728, -728, 5603, -728, -728, -728, -728, 9027, 9027, 9027, + 9027, 9027, 9027, 9027, 9027, 9027, 9027, 9027, 9027, 9027, + 9027, 9027, 9027, 9027, 9027, 9027, -728, -728, -728, 207, + 171, -728, 2083, -728, -728, -728, 2083, -728, 9027, -728, + -728, 122, 9027, 143, -728, -728, -728, -728, -728, -728, + -728, -728, -728, -728, -728, -728, -728, -728, 9027, 9027, + -728, -728, -728, -728, -728, -728, -728, 7764, -728, 132, + -728, 6043, -728, -728, 208, 205, -728, -728, -728, 123, + 172, 141, -728, -728, -728, -728, -728, 142, 142, 93, + 93, 108, 108, 108, 108, 26, 26, 114, 154, 157, + 159, 196, 195, 9027, -728, 213, 61, -728, 2083, 3843, + 174, 3403, 78, -728, 81, -728, -728, -728, -728, -728, + 6922, -728, -728, -728, -728, 153, 9027, 211, 171, 210, + 205, 185, 6483, 218, 220, -728, -728, 3843, 219, -728, + -728, -728, 9027, 221, -728, -728, -728, 215, 2523, 9027, + -728, 217, 224, 189, 225, 2963, -728, 226, -728, -728, + 7764, -728, -728, -728, 83, 9027, 2523, 219, -728, -728, + 2083, -728, 222, 205, -728, -728, 2083, 223, -728, -728 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. Performed when YYTABLE does not specify something else to do. Zero means the default is an error. */ -static const yytype_uint16 yydefact[] = +static const yytype_int16 yydefact[] = { 0, 157, 210, 208, 209, 207, 214, 215, 216, 217, 218, 219, 220, 221, 222, 211, 212, 213, 223, 224, @@ -1366,19 +1505,19 @@ static const yytype_uint16 yydefact[] = 421, 415, 420, 422, 423, 425, 426, 427, 429, 430, 431, 433, 434, 435, 437, 438, 411, 412, 413, 424, 414, 416, 417, 418, 428, 432, 436, 507, 508, 511, - 512, 513, 514, 509, 510, 606, 132, 520, 521, 522, + 512, 513, 514, 509, 510, 607, 132, 520, 521, 522, 0, 519, 161, 159, 160, 158, 0, 206, 162, 163, 164, 134, 133, 0, 190, 171, 173, 169, 175, 177, 172, 174, 170, 176, 178, 167, 168, 192, 179, 186, 187, 188, 189, 180, 181, 182, 183, 184, 185, 135, - 136, 137, 138, 139, 140, 147, 605, 0, 607, 0, + 136, 137, 138, 139, 140, 147, 606, 0, 608, 0, 109, 108, 0, 120, 125, 154, 153, 151, 155, 0, - 148, 150, 156, 130, 202, 152, 518, 0, 602, 604, + 148, 150, 156, 130, 202, 152, 518, 0, 603, 605, 0, 525, 0, 0, 0, 97, 0, 94, 0, 107, 0, 116, 110, 118, 0, 119, 0, 95, 126, 100, - 0, 149, 131, 0, 195, 201, 1, 603, 0, 0, + 0, 149, 131, 0, 195, 201, 1, 604, 0, 0, 523, 144, 146, 0, 142, 193, 0, 0, 98, 0, - 0, 608, 111, 115, 117, 113, 121, 112, 0, 127, + 0, 609, 111, 115, 117, 113, 121, 112, 0, 127, 103, 0, 101, 0, 0, 0, 9, 0, 43, 42, 44, 41, 5, 6, 7, 8, 2, 16, 14, 15, 17, 10, 11, 12, 13, 3, 18, 37, 20, 25, @@ -1387,64 +1526,64 @@ static const yytype_uint16 yydefact[] = 191, 0, 197, 45, 49, 52, 55, 60, 63, 65, 67, 69, 71, 73, 75, 0, 0, 99, 0, 553, 562, 566, 0, 0, 0, 587, 0, 0, 0, 0, - 0, 0, 0, 0, 45, 78, 91, 0, 540, 0, - 156, 130, 543, 564, 542, 550, 541, 0, 544, 545, - 568, 546, 575, 547, 548, 583, 549, 0, 114, 0, - 122, 0, 535, 129, 0, 0, 105, 0, 102, 38, - 39, 0, 22, 23, 0, 0, 28, 27, 0, 206, - 31, 33, 40, 0, 203, 0, 533, 0, 531, 526, - 528, 0, 93, 145, 143, 194, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 45, 78, 91, 0, 540, + 0, 156, 130, 543, 564, 542, 550, 541, 0, 544, + 545, 568, 546, 575, 547, 548, 583, 549, 0, 114, + 0, 122, 0, 535, 129, 0, 0, 105, 0, 102, + 38, 39, 0, 22, 23, 0, 0, 28, 27, 0, + 206, 31, 33, 40, 0, 203, 0, 533, 0, 531, + 526, 528, 0, 93, 145, 143, 194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 76, 198, 199, 0, 0, - 552, 0, 585, 598, 597, 0, 589, 0, 601, 599, - 0, 0, 0, 582, 551, 81, 82, 84, 83, 86, - 87, 88, 89, 90, 85, 80, 0, 0, 567, 563, - 565, 569, 576, 584, 124, 0, 538, 0, 128, 0, - 106, 4, 0, 24, 21, 32, 205, 0, 534, 0, - 529, 524, 46, 47, 48, 51, 50, 53, 54, 58, - 59, 56, 57, 61, 62, 64, 66, 68, 70, 72, - 74, 0, 200, 612, 0, 610, 554, 0, 0, 0, - 0, 600, 0, 581, 79, 92, 123, 536, 0, 104, - 19, 530, 532, 0, 0, 0, 0, 0, 573, 0, - 0, 0, 0, 592, 591, 594, 560, 577, 537, 539, - 0, 0, 609, 611, 555, 0, 0, 0, 593, 0, - 0, 572, 0, 0, 570, 0, 77, 613, 0, 557, - 586, 556, 0, 595, 0, 560, 559, 561, 579, 574, - 0, 596, 590, 571, 580, 0, 588, 578 + 0, 0, 0, 0, 0, 0, 76, 198, 199, 0, + 0, 552, 0, 585, 598, 597, 0, 589, 0, 601, + 599, 0, 0, 0, 582, 602, 551, 81, 82, 84, + 83, 86, 87, 88, 89, 90, 85, 80, 0, 0, + 567, 563, 565, 569, 576, 584, 124, 0, 538, 0, + 128, 0, 106, 4, 0, 24, 21, 32, 205, 0, + 534, 0, 529, 524, 46, 47, 48, 51, 50, 53, + 54, 58, 59, 56, 57, 61, 62, 64, 66, 68, + 70, 72, 74, 0, 200, 613, 0, 611, 554, 0, + 0, 0, 0, 600, 0, 581, 79, 92, 123, 536, + 0, 104, 19, 530, 532, 0, 0, 0, 0, 0, + 573, 0, 0, 0, 0, 592, 591, 594, 560, 577, + 537, 539, 0, 0, 610, 612, 555, 0, 0, 0, + 593, 0, 0, 572, 0, 0, 570, 0, 77, 614, + 0, 557, 586, 556, 0, 595, 0, 560, 559, 561, + 579, 574, 0, 596, 590, 571, 580, 0, 588, 578 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, 9330, -479, -87, -84, -127, -93, -33, -31, - -27, -25, -28, -26, -479, -86, -479, -103, -479, -111, - -125, 2, -479, -479, -479, 4, -479, -479, -479, 176, - 194, 178, -479, -479, -337, -479, -479, -479, -479, 95, - -479, -37, -46, -479, 9, -479, 0, -63, -479, -479, - -479, -479, 263, -479, -479, -479, -478, -140, 10, -73, - -211, -479, -102, -198, -321, -479, -144, -479, -479, -155, - -154, -479, -479, 198, -274, -97, -479, 46, -479, -118, - -479, 51, -479, -479, -479, -479, 52, -479, -479, -479, - -479, -479, -479, -479, -479, 213, -479, -479, -479, -479, - -105 + -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, + -728, -728, 9352, -728, -87, -84, -154, -93, -30, -28, + -27, -26, -25, -31, -728, -86, -728, -99, -728, -111, + -126, 2, -728, -728, -728, 4, -728, -728, -728, 177, + 190, 179, -728, -728, -339, -728, -728, -728, -728, 95, + -728, -37, -46, -728, 9, -728, 0, -63, -728, -728, + -728, -728, 265, -728, -728, -728, -479, -149, 10, -74, + -212, -728, -103, -201, -727, -728, -145, -728, -728, -153, + -155, -728, -728, 198, -270, -97, -728, 47, -728, -120, + -728, 50, -728, -728, -728, -728, 51, -728, -728, -728, + -728, -728, -728, -728, -728, 216, -728, -728, -728, -728, + -108 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 465, 466, 467, 652, 468, 469, 470, 471, 472, - 473, 474, 524, 476, 494, 495, 496, 497, 498, 499, - 500, 501, 502, 503, 504, 525, 681, 526, 636, 527, - 583, 528, 367, 555, 443, 529, 369, 370, 371, 401, + -1, 465, 466, 467, 654, 468, 469, 470, 471, 472, + 473, 474, 525, 476, 494, 495, 496, 497, 498, 499, + 500, 501, 502, 503, 504, 526, 683, 527, 638, 528, + 584, 529, 367, 556, 443, 530, 369, 370, 371, 401, 402, 403, 372, 373, 374, 375, 376, 377, 423, 424, 378, 379, 380, 381, 477, 426, 478, 429, 414, 415, - 479, 384, 385, 386, 486, 419, 484, 485, 577, 578, - 553, 647, 532, 533, 534, 535, 536, 611, 707, 740, - 731, 732, 733, 741, 537, 538, 539, 540, 734, 711, - 541, 542, 735, 755, 543, 544, 545, 687, 615, 689, - 715, 729, 730, 546, 387, 388, 389, 398, 547, 684, - 685 + 479, 384, 385, 386, 486, 419, 484, 485, 578, 579, + 554, 649, 533, 534, 535, 536, 537, 612, 709, 742, + 733, 734, 735, 743, 538, 539, 540, 541, 736, 713, + 542, 543, 737, 757, 544, 545, 546, 689, 616, 691, + 717, 731, 732, 547, 387, 388, 389, 398, 548, 686, + 687 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1452,14 +1591,14 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 383, 573, 366, 437, 368, 427, 427, 506, 581, 382, - 427, 506, 438, 574, 428, 507, 393, 549, 554, 394, + 383, 741, 366, 574, 368, 427, 506, 582, 749, 382, + 427, 506, 393, 428, 507, 575, 394, 550, 555, 741, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 649, 397, 61, + 52, 53, 54, 55, 56, 57, 58, 651, 397, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, @@ -1485,395 +1624,396 @@ static const yytype_int16 yytable[] = 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 411, 404, 552, 561, 686, 644, 640, - 646, 505, 391, 648, 580, 439, 421, 593, 594, 604, - 709, 480, 591, 592, 506, 562, 563, 399, 411, 512, - 395, 645, 515, 404, 516, 517, 406, 422, 520, 407, - 570, 405, 548, 550, 392, -35, 400, 564, 709, 412, - 382, 565, 482, 595, 596, 605, 396, 383, 382, 366, - 418, 368, 321, 488, 597, 598, 382, 326, 327, 489, - 405, 582, 705, 408, 405, 739, 706, 413, 620, 382, - 622, 557, 747, 382, 558, 440, 490, 688, 441, 483, - 608, 442, 491, 739, 420, 567, 651, 716, 382, 717, - 531, 568, 637, 637, 696, 637, 411, 750, 697, 530, - 698, 580, 637, 637, 425, 638, 552, 482, 552, 482, - 589, 552, 590, 653, 430, 625, 626, 627, 628, 629, - 630, 631, 632, 633, 634, 655, 669, 670, 671, 672, - 659, 637, 693, 660, 754, 635, 637, 659, 435, 691, - 701, 436, 575, 427, 483, 481, 483, 719, 640, 637, - 720, 382, 487, 382, 556, 382, 317, 318, 319, 586, - 587, 588, 665, 666, 673, 674, 690, 667, 668, 580, - 692, 566, 571, 658, 576, 506, 585, 599, 482, 600, - 601, 602, 603, 606, 609, 612, 610, 749, 613, 614, - 616, 617, 621, 694, 695, 623, 618, 531, 624, -36, - -34, 650, 552, 654, 482, -29, 530, 683, 682, 700, - 637, 704, 712, 722, 724, 483, 640, 726, 727, 725, - 737, -558, 738, 744, 382, 743, 675, 509, 748, 676, - 703, 756, 745, 757, 677, 679, 708, 678, 680, 721, - 433, 483, 434, 390, 584, 657, 702, 713, 746, 752, - 382, 753, 714, 641, 432, 552, 431, 728, 642, 643, - 417, 723, 0, 0, 708, 0, 0, 0, 0, 0, - 0, 531, 482, 0, 0, 531, 742, 736, 582, 0, - 530, 0, 0, 0, 530, 0, 0, 0, 0, 0, - 0, 0, 751, 0, 0, 552, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 483, - 710, 0, 0, 0, 0, 0, 0, 0, 382, 0, - 0, 0, 0, 0, 411, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 710, 0, - 0, 0, 0, 0, 0, 0, 531, 531, 0, 531, - 0, 0, 0, 0, 0, 530, 530, 0, 530, 0, + 312, 313, 314, 411, 404, 581, 562, 642, 646, 553, + 648, 505, 688, 650, 391, 439, 421, 594, 595, 605, + 711, 480, 399, 488, 406, 563, 564, 407, 411, 489, + 395, 512, 506, 404, 515, 400, 516, 517, 422, 647, + 520, 405, 549, 551, 571, -35, 392, 565, 711, 412, + 382, 566, 482, 596, 597, 606, 396, 383, 382, 366, + 418, 368, 321, 437, 413, 427, 382, 326, 327, 490, + 405, 583, 438, 707, 405, 491, 568, 708, 621, 382, + 623, 440, 569, 382, 441, 690, 653, 442, 718, 483, + 609, 719, 639, 752, 639, 592, 593, 639, 382, 639, + 532, 558, 408, 581, 559, 698, 411, 598, 599, 531, + 671, 672, 673, 674, 590, 639, 591, 482, 640, 482, + 420, 553, 661, 553, 655, 662, 553, 627, 628, 629, + 630, 631, 632, 633, 634, 635, 636, 425, 639, 661, + 657, 693, 703, 317, 318, 319, 699, 637, 700, 430, + 756, 427, 576, 481, 483, 435, 483, 642, 721, 639, + 695, 382, 436, 382, 487, 382, 587, 588, 589, 639, + 722, 557, 581, 667, 668, 675, 676, 692, 669, 670, + 567, 694, 572, 506, 660, 600, 577, 601, 602, 482, + 586, 603, 604, 607, 610, 613, 611, 614, 751, 615, + 617, 618, 622, 619, 624, 652, -36, 625, 532, 696, + 697, -34, 656, 626, -29, 482, 685, 531, 553, 684, + 702, 639, 706, 724, 726, 642, 483, 714, 728, 729, + 727, 739, -558, 740, 746, 382, 745, 759, 509, 750, + 677, 758, 705, 678, 682, 679, 747, 680, 710, 681, + 723, 433, 483, 434, 585, 390, 659, 704, 715, 748, + 432, 382, 755, 754, 716, 643, 431, 730, 644, 645, + 725, 553, 0, 417, 0, 0, 710, 0, 0, 0, + 0, 0, 532, 0, 482, 0, 532, 0, 744, 0, + 583, 531, 0, 738, 0, 531, 0, 0, 0, 0, + 0, 0, 0, 0, 753, 0, 0, 0, 0, 0, + 0, 553, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 483, 712, 0, 0, 0, 0, 0, 0, 0, + 382, 0, 0, 0, 0, 0, 411, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 412, 0, 0, 0, 0, 531, 0, 0, 0, 382, - 0, 0, 0, 0, 530, 0, 531, 0, 0, 0, - 0, 0, 0, 531, 0, 530, 0, 0, 0, 0, - 0, 0, 530, 0, 531, 0, 0, 0, 531, 0, - 0, 0, 0, 530, 531, 0, 0, 530, 0, 0, - 0, 416, 0, 530, 1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 0, 0, + 712, 0, 0, 0, 0, 0, 0, 0, 532, 532, + 0, 532, 0, 0, 0, 0, 0, 531, 531, 0, + 531, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 412, 0, 0, 0, 0, 532, 0, 0, + 0, 382, 0, 0, 0, 0, 531, 0, 532, 0, + 0, 0, 0, 0, 0, 532, 0, 531, 0, 0, + 0, 0, 0, 0, 531, 0, 532, 0, 0, 0, + 532, 0, 0, 0, 0, 531, 532, 0, 0, 531, + 0, 0, 0, 416, 0, 531, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 316, 317, 318, 319, 320, 0, - 0, 0, 0, 0, 0, 0, 0, 321, 322, 323, - 324, 325, 326, 327, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 328, 329, 330, 331, - 332, 333, 0, 0, 0, 0, 0, 0, 0, 0, - 334, 0, 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, 361, 362, - 363, 364, 365, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 0, 0, 444, - 445, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 446, 447, - 0, 508, 0, 509, 510, 0, 0, 0, 0, 511, - 448, 449, 450, 451, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 316, 317, 318, 319, 320, 0, 0, - 0, 452, 453, 454, 455, 456, 321, 322, 323, 324, - 325, 326, 327, 512, 513, 514, 515, 0, 516, 517, - 518, 519, 520, 521, 522, 328, 329, 330, 331, 332, - 333, 457, 458, 459, 460, 461, 462, 463, 464, 334, - 523, 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, 361, 362, 363, - 364, 365, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 0, 0, 444, 445, + 0, 0, 315, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 316, 317, 318, 319, + 320, 0, 0, 0, 0, 0, 0, 0, 0, 321, + 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, + 329, 330, 331, 332, 333, 0, 0, 0, 0, 0, + 0, 0, 0, 334, 0, 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, 361, 362, 363, 364, 365, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 0, 0, 444, 445, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 446, 447, 0, - 508, 0, 509, 639, 0, 0, 0, 0, 511, 448, - 449, 450, 451, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 316, 317, 318, 319, 320, 0, 0, 0, - 452, 453, 454, 455, 456, 321, 322, 323, 324, 325, - 326, 327, 512, 513, 514, 515, 0, 516, 517, 518, - 519, 520, 521, 522, 328, 329, 330, 331, 332, 333, - 457, 458, 459, 460, 461, 462, 463, 464, 334, 523, - 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, 361, 362, 363, 364, - 365, 1, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 0, 0, 444, 445, 0, + 0, 446, 447, 0, 508, 0, 509, 510, 0, 0, + 0, 0, 511, 448, 449, 450, 451, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 316, 317, 318, 319, + 320, 0, 0, 0, 452, 453, 454, 455, 456, 321, + 322, 323, 324, 325, 326, 327, 512, 513, 514, 515, + 0, 516, 517, 518, 519, 520, 521, 522, 523, 328, + 329, 330, 331, 332, 333, 457, 458, 459, 460, 461, + 462, 463, 464, 334, 524, 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, 361, 362, 363, 364, 365, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 0, 0, 444, 445, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 446, 447, 0, 508, - 0, 509, 0, 0, 0, 0, 0, 511, 448, 449, - 450, 451, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 316, 317, 318, 319, 320, 0, 0, 0, 452, - 453, 454, 455, 456, 321, 322, 323, 324, 325, 326, - 327, 512, 513, 514, 515, 0, 516, 517, 518, 519, - 520, 521, 522, 328, 329, 330, 331, 332, 333, 457, - 458, 459, 460, 461, 462, 463, 464, 334, 523, 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, 361, 362, 363, 364, 365, - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 0, 0, 444, 445, 0, 0, + 0, 446, 447, 0, 508, 0, 509, 641, 0, 0, + 0, 0, 511, 448, 449, 450, 451, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 316, 317, 318, 319, + 320, 0, 0, 0, 452, 453, 454, 455, 456, 321, + 322, 323, 324, 325, 326, 327, 512, 513, 514, 515, + 0, 516, 517, 518, 519, 520, 521, 522, 523, 328, + 329, 330, 331, 332, 333, 457, 458, 459, 460, 461, + 462, 463, 464, 334, 524, 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, 361, 362, 363, 364, 365, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 0, 0, 444, 445, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 446, 447, 0, 508, 0, - 430, 0, 0, 0, 0, 0, 511, 448, 449, 450, - 451, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 316, 317, 318, 319, 320, 0, 0, 0, 452, 453, - 454, 455, 456, 321, 322, 323, 324, 325, 326, 327, - 512, 513, 514, 515, 0, 516, 517, 518, 519, 520, - 521, 522, 328, 329, 330, 331, 332, 333, 457, 458, - 459, 460, 461, 462, 463, 464, 334, 523, 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, 361, 362, 363, 364, 365, 1, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 0, 0, 444, 445, 0, 0, 0, + 0, 446, 447, 0, 508, 0, 509, 0, 0, 0, + 0, 0, 511, 448, 449, 450, 451, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 316, 317, 318, 319, + 320, 0, 0, 0, 452, 453, 454, 455, 456, 321, + 322, 323, 324, 325, 326, 327, 512, 513, 514, 515, + 0, 516, 517, 518, 519, 520, 521, 522, 523, 328, + 329, 330, 331, 332, 333, 457, 458, 459, 460, 461, + 462, 463, 464, 334, 524, 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, 361, 362, 363, 364, 365, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 0, 0, 444, 445, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 446, 447, 0, 508, 0, 0, - 0, 0, 0, 0, 0, 511, 448, 449, 450, 451, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 316, - 317, 318, 319, 320, 0, 0, 0, 452, 453, 454, - 455, 456, 321, 322, 323, 324, 325, 326, 327, 512, - 513, 514, 515, 0, 516, 517, 518, 519, 520, 521, - 522, 328, 329, 330, 331, 332, 333, 457, 458, 459, - 460, 461, 462, 463, 464, 334, 523, 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, 361, 362, 363, 364, 365, 1, 2, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 0, 0, 444, 445, 0, 0, 0, 0, + 0, 446, 447, 0, 508, 0, 430, 0, 0, 0, + 0, 0, 511, 448, 449, 450, 451, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 316, 317, 318, 319, + 320, 0, 0, 0, 452, 453, 454, 455, 456, 321, + 322, 323, 324, 325, 326, 327, 512, 513, 514, 515, + 0, 516, 517, 518, 519, 520, 521, 522, 523, 328, + 329, 330, 331, 332, 333, 457, 458, 459, 460, 461, + 462, 463, 464, 334, 524, 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, 361, 362, 363, 364, 365, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 0, 0, 444, 445, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 446, 447, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 511, 448, 449, 450, 451, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 316, 317, - 318, 319, 320, 0, 0, 0, 452, 453, 454, 455, - 456, 321, 322, 323, 324, 325, 326, 327, 0, 0, + 0, 446, 447, 0, 508, 0, 0, 0, 0, 0, + 0, 0, 511, 448, 449, 450, 451, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 316, 317, 318, 319, + 320, 0, 0, 0, 452, 453, 454, 455, 456, 321, + 322, 323, 324, 325, 326, 327, 512, 513, 514, 515, + 0, 516, 517, 518, 519, 520, 521, 522, 523, 328, + 329, 330, 331, 332, 333, 457, 458, 459, 460, 461, + 462, 463, 464, 334, 524, 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, 361, 362, 363, 364, 365, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 0, 0, 444, 445, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 328, 329, 330, 331, 332, 333, 457, 458, 459, 460, - 461, 462, 463, 464, 334, 0, 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, 361, 362, 363, 364, 365, 1, 2, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 0, 0, 444, 445, 0, 0, 0, 0, 0, + 0, 446, 447, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 511, 448, 449, 450, 451, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 316, 317, 318, 319, + 320, 0, 0, 0, 452, 453, 454, 455, 456, 321, + 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, + 329, 330, 331, 332, 333, 457, 458, 459, 460, 461, + 462, 463, 464, 334, 0, 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, 361, 362, 363, 364, 365, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 0, 0, 444, 445, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 446, 447, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 448, 449, 450, 451, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 316, 317, 318, - 319, 0, 0, 0, 0, 452, 453, 454, 455, 456, - 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, + 0, 446, 447, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 448, 449, 450, 451, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 316, 317, 318, 319, + 0, 0, 0, 0, 452, 453, 454, 455, 456, 321, + 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, 329, 330, 331, 332, 333, 457, 458, 459, 460, 461, 462, 463, 464, 334, 0, 335, 336, 337, 338, 339, @@ -1918,888 +2058,12 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 316, 317, 318, 319, 320, 0, 0, 0, 0, 0, 0, 0, 0, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 328, 329, - 330, 331, 332, 333, 0, 0, 0, 0, 0, 0, - 0, 0, 334, 0, 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, - 361, 362, 363, 364, 365, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 409, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 316, 317, 318, 319, 0, - 0, 0, 0, 0, 0, 0, 0, 410, 321, 322, - 323, 324, 325, 326, 327, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 328, 329, 330, - 331, 332, 333, 0, 0, 0, 0, 0, 0, 0, - 0, 334, 0, 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, 361, - 362, 363, 364, 365, 1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 579, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 316, 317, 318, 319, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 321, 322, 323, - 324, 325, 326, 327, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 328, 329, 330, 331, - 332, 333, 0, 0, 0, 0, 0, 0, 0, 0, - 334, 0, 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, 361, 362, - 363, 364, 365, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 661, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 316, 317, 318, 319, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 321, 322, 323, 324, - 325, 326, 327, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 328, 329, 330, 331, 332, - 333, 0, 0, 0, 0, 0, 0, 0, 0, 334, - 0, 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, 361, 362, 363, - 364, 365, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 699, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 316, 317, 318, 319, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 321, 322, 323, 324, 325, - 326, 327, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 328, 329, 330, 331, 332, 333, - 0, 0, 0, 0, 0, 0, 0, 0, 334, 0, - 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, 361, 362, 363, 364, - 365, 1, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 316, 317, 318, 319, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 321, 322, 323, 324, 325, 326, - 327, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 328, 329, 330, 331, 332, 333, 0, - 0, 0, 0, 0, 0, 0, 0, 334, 0, 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, 361, 362, 363, 364, 365, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 0, 0, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 0, 0, 444, 445, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 446, 447, 0, 0, 0, 551, - 718, 0, 0, 0, 0, 0, 448, 449, 450, 451, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 452, 453, 454, - 455, 456, 321, 0, 0, 0, 0, 326, 327, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 457, 458, 459, - 460, 461, 462, 463, 464, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 347, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 0, 0, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 0, 0, 444, 445, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 446, 447, 0, 0, 492, 0, - 0, 0, 0, 0, 0, 0, 448, 449, 450, 451, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 452, 453, 454, - 455, 456, 321, 0, 0, 0, 0, 326, 327, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 457, 458, 459, - 460, 461, 462, 463, 464, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 347, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 0, 0, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 0, 0, 444, 445, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 446, 447, 0, 0, 0, 551, - 0, 0, 0, 0, 0, 0, 448, 449, 450, 451, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 452, 453, 454, - 455, 456, 321, 0, 0, 0, 0, 326, 327, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 457, 458, 459, - 460, 461, 462, 463, 464, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 347, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 0, 0, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 0, 0, 444, 445, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 446, 447, 0, 0, 607, 0, - 0, 0, 0, 0, 0, 0, 448, 449, 450, 451, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 452, 453, 454, - 455, 456, 321, 0, 0, 0, 0, 326, 327, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 457, 458, 459, - 460, 461, 462, 463, 464, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 347, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 0, 0, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 0, 0, 444, 445, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 446, 447, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 619, 448, 449, 450, 451, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 452, 453, 454, - 455, 456, 321, 0, 0, 0, 0, 326, 327, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 457, 458, 459, - 460, 461, 462, 463, 464, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 347, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 0, 0, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 0, 0, 444, 445, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 446, 447, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 448, 449, 450, 451, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 452, 453, 454, - 455, 456, 321, 0, 0, 0, 0, 326, 327, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 457, 458, 459, - 460, 461, 462, 463, 464, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 347, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 0, 0, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 475, 0, 444, 445, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 493, 0, 0, - 0, 0, 0, 0, 446, 447, 0, 0, 0, 0, - 0, 0, 0, 0, 559, 560, 448, 449, 450, 451, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 452, 453, 454, - 455, 456, 321, 0, 0, 0, 572, 326, 569, 0, - 0, 0, 0, 0, 0, 0, 0, 493, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 457, 458, 459, - 460, 461, 462, 463, 464, 0, 493, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 347, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 656, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 662, 663, 664, 493, - 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, - 493, 493, 493, 493, 493, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 493 -}; - -static const yytype_int16 yycheck[] = -{ - 0, 346, 0, 339, 0, 341, 341, 341, 486, 0, - 341, 341, 348, 358, 349, 349, 339, 348, 348, 339, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 555, 349, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 379, 371, 438, 447, 611, 549, 537, - 551, 427, 343, 554, 484, 408, 375, 321, 322, 326, - 687, 414, 317, 318, 341, 319, 320, 340, 404, 383, - 349, 348, 386, 400, 388, 389, 346, 396, 392, 349, - 473, 371, 435, 436, 375, 339, 346, 341, 715, 379, - 371, 345, 419, 357, 358, 362, 375, 387, 379, 387, - 390, 387, 376, 340, 323, 324, 387, 381, 382, 346, - 400, 487, 342, 375, 404, 726, 346, 357, 519, 400, - 521, 346, 733, 404, 349, 343, 340, 615, 346, 419, - 506, 349, 346, 744, 343, 340, 340, 340, 419, 340, - 430, 346, 346, 346, 645, 346, 482, 340, 344, 430, - 346, 581, 346, 346, 375, 349, 549, 484, 551, 486, - 351, 554, 353, 564, 343, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 568, 593, 594, 595, 596, - 346, 346, 347, 349, 748, 348, 346, 346, 375, 349, - 349, 375, 482, 341, 484, 349, 486, 698, 686, 346, - 347, 482, 348, 484, 375, 486, 364, 365, 366, 354, - 355, 356, 589, 590, 597, 598, 617, 591, 592, 649, - 621, 340, 339, 576, 375, 341, 375, 361, 555, 360, - 359, 325, 327, 342, 341, 339, 344, 738, 349, 349, - 339, 339, 339, 636, 637, 347, 349, 537, 349, 339, - 339, 375, 645, 375, 581, 340, 537, 375, 342, 342, - 346, 339, 383, 342, 344, 555, 754, 340, 339, 375, - 340, 343, 348, 340, 555, 349, 599, 343, 343, 600, - 681, 349, 387, 344, 601, 603, 687, 602, 604, 704, - 404, 581, 404, 320, 489, 575, 659, 689, 732, 744, - 581, 745, 689, 547, 400, 698, 398, 715, 547, 547, - 387, 706, -1, -1, 715, -1, -1, -1, -1, -1, - -1, 611, 649, -1, -1, 615, 727, 720, 704, -1, - 611, -1, -1, -1, 615, -1, -1, -1, -1, -1, - -1, -1, 743, -1, -1, 738, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 649, - 687, -1, -1, -1, -1, -1, -1, -1, 649, -1, - -1, -1, -1, -1, 710, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 715, -1, - -1, -1, -1, -1, -1, -1, 686, 687, -1, 689, - -1, -1, -1, -1, -1, 686, 687, -1, 689, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 710, -1, -1, -1, -1, 715, -1, -1, -1, 710, - -1, -1, -1, -1, 715, -1, 726, -1, -1, -1, - -1, -1, -1, 733, -1, 726, -1, -1, -1, -1, - -1, -1, 733, -1, 744, -1, -1, -1, 748, -1, - -1, -1, -1, 744, 754, -1, -1, 748, -1, -1, - -1, 0, -1, 754, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 349, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 363, 364, 365, 366, 367, -1, - -1, -1, -1, -1, -1, -1, -1, 376, 377, 378, - 379, 380, 381, 382, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 395, 396, 397, 398, - 399, 400, -1, -1, -1, -1, -1, -1, -1, -1, - 409, -1, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, -1, -1, 319, - 320, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 338, 339, - -1, 341, -1, 343, 344, -1, -1, -1, -1, 349, - 350, 351, 352, 353, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 363, 364, 365, 366, 367, -1, -1, - -1, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, -1, 388, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, -1, -1, 319, 320, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 338, 339, -1, - 341, -1, 343, 344, -1, -1, -1, -1, 349, 350, - 351, 352, 353, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 363, 364, 365, 366, 367, -1, -1, -1, - 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, -1, -1, 319, 320, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 338, 339, -1, 341, - -1, 343, -1, -1, -1, -1, -1, 349, 350, 351, - 352, 353, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 363, 364, 365, 366, 367, -1, -1, -1, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, -1, 388, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, -1, 319, 320, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 338, 339, -1, 341, -1, - 343, -1, -1, -1, -1, -1, 349, 350, 351, 352, - 353, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 363, 364, 365, 366, 367, -1, -1, -1, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, -1, -1, 319, 320, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 338, 339, -1, 341, -1, -1, - -1, -1, -1, -1, -1, 349, 350, 351, 352, 353, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 363, - 364, 365, 366, 367, -1, -1, -1, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, -1, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, - 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, - 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 3, 4, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, + 329, 330, 331, 332, 333, 0, 0, 0, 0, 0, + 0, 0, 0, 334, 0, 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, 361, 362, 363, 364, 365, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, @@ -2831,25 +2095,201 @@ static const yytype_int16 yycheck[] = 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, -1, -1, 319, 320, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 338, 339, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 349, 350, 351, 352, 353, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 363, 364, - 365, 366, 367, -1, -1, -1, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, -1, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, - 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 3, 4, 5, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 409, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 316, 317, 318, 319, + 0, 0, 0, 0, 0, 0, 0, 0, 410, 321, + 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, + 329, 330, 331, 332, 333, 0, 0, 0, 0, 0, + 0, 0, 0, 334, 0, 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, 361, 362, 363, 364, 365, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 580, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 316, 317, 318, 319, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, + 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, + 329, 330, 331, 332, 333, 0, 0, 0, 0, 0, + 0, 0, 0, 334, 0, 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, 361, 362, 363, 364, 365, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 663, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 316, 317, 318, 319, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, + 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, + 329, 330, 331, 332, 333, 0, 0, 0, 0, 0, + 0, 0, 0, 334, 0, 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, 361, 362, 363, 364, 365, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 701, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 316, 317, 318, 319, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, + 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, + 329, 330, 331, 332, 333, 0, 0, 0, 0, 0, + 0, 0, 0, 334, 0, 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, 361, 362, 363, 364, 365, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 316, 317, 318, 319, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, + 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, + 329, 330, 331, 332, 333, 0, 0, 0, 0, 0, + 0, 0, 0, 334, 0, 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, 361, 362, 363, 364, 365, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 56, 57, 58, 0, 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, @@ -2874,20 +2314,370 @@ static const yytype_int16 yycheck[] = 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, -1, -1, 319, 320, -1, -1, -1, -1, -1, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 0, + 0, 444, 445, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 446, 447, 0, 0, 0, 552, 720, 0, 0, 0, + 0, 0, 448, 449, 450, 451, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 452, 453, 454, 455, 456, 321, 0, + 0, 0, 0, 326, 327, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 457, 458, 459, 460, 461, 462, + 463, 464, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 347, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 0, 0, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 0, 0, 444, 445, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 446, 447, 0, 0, 492, 0, 0, 0, 0, + 0, 0, 0, 448, 449, 450, 451, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 452, 453, 454, 455, 456, 321, + 0, 0, 0, 0, 326, 327, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 457, 458, 459, 460, 461, + 462, 463, 464, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 347, 2, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 0, 0, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 0, 0, 444, 445, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 446, 447, 0, 0, 0, 552, 0, 0, + 0, 0, 0, 0, 448, 449, 450, 451, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 452, 453, 454, 455, 456, + 321, 0, 0, 0, 0, 326, 327, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 457, 458, 459, 460, + 461, 462, 463, 464, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 347, 2, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 0, 0, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 0, 0, 444, 445, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 446, 447, 0, 0, 608, 0, 0, + 0, 0, 0, 0, 0, 448, 449, 450, 451, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 452, 453, 454, 455, + 456, 321, 0, 0, 0, 0, 326, 327, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 457, 458, 459, + 460, 461, 462, 463, 464, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 347, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 0, 0, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 0, 0, 444, 445, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 446, 447, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 620, 448, 449, 450, 451, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 452, 453, 454, + 455, 456, 321, 0, 0, 0, 0, 326, 327, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 457, 458, + 459, 460, 461, 462, 463, 464, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 347, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 0, 0, 444, 445, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 446, 447, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 448, 449, 450, + 451, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 452, 453, + 454, 455, 456, 321, 0, 0, 0, 0, 326, 327, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 457, + 458, 459, 460, 461, 462, 463, 464, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 347, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, + 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 475, 0, 444, 445, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 493, + 0, 0, 0, 0, 0, 0, 446, 447, 0, 0, + 0, 0, 0, 0, 0, 0, 560, 561, 448, 449, + 450, 451, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 452, + 453, 454, 455, 456, 321, 0, 0, 0, 573, 326, + 570, 0, 0, 0, 0, 0, 0, 0, 0, 493, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 457, 458, 459, 460, 461, 462, 463, 464, 493, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 347, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 658, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 664, + 665, 666, 493, 493, 493, 493, 493, 493, 493, 493, + 493, 493, 493, 493, 493, 493, 493, 493, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 493 +}; + +static const yytype_int16 yycheck[] = +{ + 0, 728, 0, 346, 0, 341, 341, 486, 735, 0, + 341, 341, 339, 349, 349, 358, 339, 348, 348, 746, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 556, 349, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 379, 371, 484, 447, 538, 550, 438, + 552, 427, 612, 555, 343, 408, 375, 321, 322, 326, + 689, 414, 340, 340, 346, 319, 320, 349, 404, 346, + 349, 383, 341, 400, 386, 346, 388, 389, 397, 348, + 392, 371, 435, 436, 473, 339, 375, 341, 717, 379, + 371, 345, 419, 357, 358, 362, 375, 387, 379, 387, + 390, 387, 376, 339, 357, 341, 387, 381, 382, 340, + 400, 487, 348, 342, 404, 346, 340, 346, 519, 400, + 521, 343, 346, 404, 346, 616, 340, 349, 340, 419, + 506, 340, 346, 340, 346, 317, 318, 346, 419, 346, + 430, 346, 375, 582, 349, 647, 482, 323, 324, 430, + 594, 595, 596, 597, 351, 346, 353, 484, 349, 486, + 343, 550, 346, 552, 565, 349, 555, 328, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 375, 346, 346, + 569, 349, 349, 364, 365, 366, 344, 348, 346, 343, + 750, 341, 482, 349, 484, 375, 486, 688, 700, 346, + 347, 482, 375, 484, 348, 486, 354, 355, 356, 346, + 347, 375, 651, 590, 591, 598, 599, 618, 592, 593, + 340, 622, 339, 341, 577, 361, 375, 360, 359, 556, + 375, 325, 327, 342, 341, 339, 344, 349, 740, 349, + 339, 339, 339, 349, 347, 375, 339, 349, 538, 638, + 639, 339, 375, 349, 340, 582, 375, 538, 647, 342, + 342, 346, 339, 342, 344, 756, 556, 383, 340, 339, + 375, 340, 343, 348, 340, 556, 349, 344, 343, 343, + 600, 349, 683, 601, 605, 602, 387, 603, 689, 604, + 706, 404, 582, 404, 489, 320, 576, 661, 691, 734, + 400, 582, 747, 746, 691, 548, 398, 717, 548, 548, + 708, 700, -1, 387, -1, -1, 717, -1, -1, -1, + -1, -1, 612, -1, 651, -1, 616, -1, 729, -1, + 706, 612, -1, 722, -1, 616, -1, -1, -1, -1, + -1, -1, -1, -1, 745, -1, -1, -1, -1, -1, + -1, 740, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 651, 689, -1, -1, -1, -1, -1, -1, -1, + 651, -1, -1, -1, -1, -1, 712, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 338, 339, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 350, 351, 352, 353, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 363, 364, 365, - 366, -1, -1, -1, -1, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 395, - 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, - 406, 407, 408, 409, -1, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 3, 4, 5, 6, + 717, -1, -1, -1, -1, -1, -1, -1, 688, 689, + -1, 691, -1, -1, -1, -1, -1, 688, 689, -1, + 691, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 712, -1, -1, -1, -1, 717, -1, -1, + -1, 712, -1, -1, -1, -1, 717, -1, 728, -1, + -1, -1, -1, -1, -1, 735, -1, 728, -1, -1, + -1, -1, -1, -1, 735, -1, 746, -1, -1, -1, + 750, -1, -1, -1, -1, 746, 756, -1, -1, 750, + -1, -1, -1, 0, -1, 756, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, @@ -2926,18 +2716,590 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, 363, 364, 365, 366, 367, -1, -1, -1, -1, -1, -1, -1, -1, 376, 377, 378, 379, 380, 381, 382, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 395, 396, - 397, 398, 399, 400, -1, -1, -1, -1, -1, -1, - -1, -1, 409, -1, 411, 412, 413, 414, 415, 416, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 396, + 397, 398, 399, 400, 401, -1, -1, -1, -1, -1, + -1, -1, -1, 410, -1, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 3, 4, 5, 6, 7, + 437, 438, 439, 440, 441, 442, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + -1, -1, 319, 320, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 338, 339, -1, 341, -1, 343, 344, -1, -1, + -1, -1, 349, 350, 351, 352, 353, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 363, 364, 365, 366, + 367, -1, -1, -1, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, + 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + -1, -1, 319, 320, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 338, 339, -1, 341, -1, 343, 344, -1, -1, + -1, -1, 349, 350, 351, 352, 353, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 363, 364, 365, 366, + 367, -1, -1, -1, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, + 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + -1, -1, 319, 320, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 338, 339, -1, 341, -1, 343, -1, -1, -1, + -1, -1, 349, 350, 351, 352, 353, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 363, 364, 365, 366, + 367, -1, -1, -1, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, + 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + -1, -1, 319, 320, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 338, 339, -1, 341, -1, 343, -1, -1, -1, + -1, -1, 349, 350, 351, 352, 353, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 363, 364, 365, 366, + 367, -1, -1, -1, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, + 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + -1, -1, 319, 320, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 338, 339, -1, 341, -1, -1, -1, -1, -1, + -1, -1, 349, 350, 351, 352, 353, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 363, 364, 365, 366, + 367, -1, -1, -1, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, + 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + -1, -1, 319, 320, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 338, 339, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 349, 350, 351, 352, 353, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 363, 364, 365, 366, + 367, -1, -1, -1, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 409, 410, -1, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, + 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + -1, -1, 319, 320, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 338, 339, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 350, 351, 352, 353, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 363, 364, 365, 366, + -1, -1, -1, -1, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 409, 410, -1, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, + 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 349, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 363, 364, 365, 366, + 367, -1, -1, -1, -1, -1, -1, -1, -1, 376, + 377, 378, 379, 380, 381, 382, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 396, + 397, 398, 399, 400, 401, -1, -1, -1, -1, -1, + -1, -1, -1, 410, -1, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, + 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 349, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 363, 364, 365, 366, + -1, -1, -1, -1, -1, -1, -1, -1, 375, 376, + 377, 378, 379, 380, 381, 382, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 396, + 397, 398, 399, 400, 401, -1, -1, -1, -1, -1, + -1, -1, -1, 410, -1, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, + 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 344, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 363, 364, 365, 366, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 376, + 377, 378, 379, 380, 381, 382, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 396, + 397, 398, 399, 400, 401, -1, -1, -1, -1, -1, + -1, -1, -1, 410, -1, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, + 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 344, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 363, 364, 365, 366, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 376, + 377, 378, 379, 380, 381, 382, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 396, + 397, 398, 399, 400, 401, -1, -1, -1, -1, -1, + -1, -1, -1, 410, -1, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, + 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 344, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 363, 364, 365, 366, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 376, + 377, 378, 379, 380, 381, 382, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 396, + 397, 398, 399, 400, 401, -1, -1, -1, -1, -1, + -1, -1, -1, 410, -1, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, + 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 363, 364, 365, 366, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 376, + 377, 378, 379, 380, 381, 382, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 396, + 397, 398, 399, 400, 401, -1, -1, -1, -1, -1, + -1, -1, -1, 410, -1, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, + 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 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, + 58, 59, 60, -1, -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, @@ -2963,362 +3325,143 @@ static const yytype_int16 yycheck[] = 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, + -1, 319, 320, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 338, 339, -1, -1, -1, 343, 344, -1, -1, -1, + -1, -1, 350, 351, 352, 353, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 371, 372, 373, 374, 375, 376, -1, + -1, -1, -1, 381, 382, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 349, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 363, 364, 365, 366, -1, - -1, -1, -1, -1, -1, -1, -1, 375, 376, 377, - 378, 379, 380, 381, 382, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 395, 396, 397, - 398, 399, 400, -1, -1, -1, -1, -1, -1, -1, - -1, 409, -1, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, -1, -1, + -1, -1, -1, -1, 402, 403, 404, 405, 406, 407, + 408, 409, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 424, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, -1, -1, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + -1, -1, 319, 320, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 338, 339, -1, -1, 342, -1, -1, -1, -1, + -1, -1, -1, 350, 351, 352, 353, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 344, -1, -1, -1, -1, + -1, -1, -1, -1, 371, 372, 373, 374, 375, 376, + -1, -1, -1, -1, 381, 382, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 363, 364, 365, 366, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 376, 377, 378, - 379, 380, 381, 382, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 395, 396, 397, 398, - 399, 400, -1, -1, -1, -1, -1, -1, -1, -1, - 409, -1, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, -1, -1, -1, + -1, -1, -1, -1, -1, 402, 403, 404, 405, 406, + 407, 408, 409, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 424, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, -1, -1, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, -1, -1, 319, 320, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 338, 339, -1, -1, -1, 343, -1, -1, + -1, -1, -1, -1, 350, 351, 352, 353, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 344, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 371, 372, 373, 374, 375, + 376, -1, -1, -1, -1, 381, 382, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 363, 364, 365, 366, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 376, 377, 378, 379, - 380, 381, 382, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 395, 396, 397, 398, 399, - 400, -1, -1, -1, -1, -1, -1, -1, -1, 409, - -1, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 402, 403, 404, 405, + 406, 407, 408, 409, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 424, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, -1, -1, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, -1, -1, 319, 320, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 338, 339, -1, -1, 342, -1, -1, + -1, -1, -1, -1, -1, 350, 351, 352, 353, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 344, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 371, 372, 373, 374, + 375, 376, -1, -1, -1, -1, 381, 382, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 363, 364, 365, 366, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 376, 377, 378, 379, 380, - 381, 382, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 395, 396, 397, 398, 399, 400, - -1, -1, -1, -1, -1, -1, -1, -1, 409, -1, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 363, 364, 365, 366, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 376, 377, 378, 379, 380, 381, - 382, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 395, 396, 397, 398, 399, 400, -1, - -1, -1, -1, -1, -1, -1, -1, 409, -1, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, -1, -1, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, -1, -1, 319, 320, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 338, 339, -1, -1, -1, 343, - 344, -1, -1, -1, -1, -1, 350, 351, 352, 353, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 371, 372, 373, - 374, 375, 376, -1, -1, -1, -1, 381, 382, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 401, 402, 403, - 404, 405, 406, 407, 408, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 423, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, -1, -1, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, -1, -1, 319, 320, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 338, 339, -1, -1, 342, -1, - -1, -1, -1, -1, -1, -1, 350, 351, 352, 353, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 371, 372, 373, - 374, 375, 376, -1, -1, -1, -1, 381, 382, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 401, 402, 403, - 404, 405, 406, 407, 408, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 423, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, -1, -1, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, -1, -1, 319, 320, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 338, 339, -1, -1, -1, 343, - -1, -1, -1, -1, -1, -1, 350, 351, 352, 353, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 371, 372, 373, - 374, 375, 376, -1, -1, -1, -1, 381, 382, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 401, 402, 403, - 404, 405, 406, 407, 408, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 423, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, -1, -1, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, -1, -1, 319, 320, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 338, 339, -1, -1, 342, -1, - -1, -1, -1, -1, -1, -1, 350, 351, 352, 353, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 371, 372, 373, - 374, 375, 376, -1, -1, -1, -1, 381, 382, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 401, 402, 403, - 404, 405, 406, 407, 408, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 423, + -1, -1, -1, -1, -1, -1, -1, 402, 403, 404, + 405, 406, 407, 408, 409, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 424, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, @@ -3358,102 +3501,102 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, -1, 371, 372, 373, 374, 375, 376, -1, -1, -1, -1, 381, 382, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 401, 402, 403, - 404, 405, 406, 407, 408, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 423, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, -1, -1, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, -1, -1, 319, 320, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 402, 403, + 404, 405, 406, 407, 408, 409, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 338, 339, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 350, 351, 352, 353, + 424, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, -1, -1, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, -1, -1, 319, 320, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 371, 372, 373, - 374, 375, 376, -1, -1, -1, -1, 381, 382, -1, + -1, -1, -1, -1, -1, 338, 339, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 350, 351, 352, + 353, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 371, 372, + 373, 374, 375, 376, -1, -1, -1, -1, 381, 382, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 401, 402, 403, - 404, 405, 406, 407, 408, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 423, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, -1, -1, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 413, -1, 319, 320, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 427, -1, -1, - -1, -1, -1, -1, 338, 339, -1, -1, -1, -1, - -1, -1, -1, -1, 444, 445, 350, 351, 352, 353, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 402, + 403, 404, 405, 406, 407, 408, 409, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 371, 372, 373, - 374, 375, 376, -1, -1, -1, 476, 381, 382, -1, - -1, -1, -1, -1, -1, -1, -1, 487, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 401, 402, 403, - 404, 405, 406, 407, 408, -1, 506, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 423, + -1, 424, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, -1, + -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 413, -1, 319, 320, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 427, + -1, -1, -1, -1, -1, -1, 338, 339, -1, -1, + -1, -1, -1, -1, -1, -1, 444, 445, 350, 351, + 352, 353, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 371, + 372, 373, 374, 375, 376, -1, -1, -1, 476, 381, + 382, -1, -1, -1, -1, -1, -1, -1, -1, 487, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 402, 403, 404, 405, 406, 407, 408, 409, 506, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 424, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 573, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, - 600, 601, 602, 603, 604, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 574, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 587, + 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, + 598, 599, 600, 601, 602, 603, 604, 605, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -3463,12 +3606,12 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 704 + -1, -1, -1, -1, -1, -1, -1, -1, 706 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ -static const yytype_uint16 yystos[] = +static const yytype_int16 yystos[] = { 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, @@ -3502,121 +3645,121 @@ static const yytype_uint16 yystos[] = 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 349, 363, 364, 365, 366, - 367, 376, 377, 378, 379, 380, 381, 382, 395, 396, - 397, 398, 399, 400, 409, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 473, 474, 477, 478, - 479, 480, 484, 485, 486, 487, 488, 489, 492, 493, - 494, 495, 496, 498, 503, 504, 505, 546, 547, 548, - 504, 343, 375, 339, 339, 349, 375, 349, 549, 340, - 346, 481, 482, 483, 493, 498, 346, 349, 375, 349, - 375, 494, 498, 357, 500, 501, 0, 547, 498, 507, - 343, 375, 396, 490, 491, 375, 497, 341, 349, 499, - 343, 525, 482, 481, 483, 375, 375, 339, 348, 499, - 343, 346, 349, 476, 319, 320, 338, 339, 350, 351, - 352, 353, 371, 372, 373, 374, 375, 401, 402, 403, - 404, 405, 406, 407, 408, 443, 444, 445, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 496, 498, 502, - 499, 349, 493, 498, 508, 509, 506, 348, 340, 346, - 340, 346, 342, 454, 456, 457, 458, 459, 460, 461, - 462, 463, 464, 465, 466, 467, 341, 349, 341, 343, + 367, 376, 377, 378, 379, 380, 381, 382, 396, 397, + 398, 399, 400, 401, 410, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, + 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 474, 475, 478, 479, + 480, 481, 485, 486, 487, 488, 489, 490, 493, 494, + 495, 496, 497, 499, 504, 505, 506, 547, 548, 549, + 505, 343, 375, 339, 339, 349, 375, 349, 550, 340, + 346, 482, 483, 484, 494, 499, 346, 349, 375, 349, + 375, 495, 499, 357, 501, 502, 0, 548, 499, 508, + 343, 375, 397, 491, 492, 375, 498, 341, 349, 500, + 343, 526, 483, 482, 484, 375, 375, 339, 348, 500, + 343, 346, 349, 477, 319, 320, 338, 339, 350, 351, + 352, 353, 371, 372, 373, 374, 375, 402, 403, 404, + 405, 406, 407, 408, 409, 444, 445, 446, 448, 449, + 450, 451, 452, 453, 454, 455, 456, 497, 499, 503, + 500, 349, 494, 499, 509, 510, 507, 348, 340, 346, + 340, 346, 342, 455, 457, 458, 459, 460, 461, 462, + 463, 464, 465, 466, 467, 468, 341, 349, 341, 343, 344, 349, 383, 384, 385, 386, 388, 389, 390, 391, - 392, 393, 394, 410, 454, 467, 469, 471, 473, 477, - 496, 498, 514, 515, 516, 517, 518, 526, 527, 528, - 529, 532, 533, 536, 537, 538, 545, 550, 499, 348, - 499, 343, 469, 512, 348, 475, 375, 346, 349, 454, - 454, 471, 319, 320, 341, 345, 340, 340, 346, 382, - 469, 339, 454, 346, 358, 498, 375, 510, 511, 344, - 509, 508, 467, 472, 491, 375, 354, 355, 356, 351, - 353, 317, 318, 321, 322, 357, 358, 323, 324, 361, - 360, 359, 325, 327, 326, 362, 342, 342, 467, 341, - 344, 519, 339, 349, 349, 540, 339, 339, 349, 349, - 471, 339, 471, 347, 349, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 348, 470, 346, 349, 344, - 515, 529, 533, 538, 512, 348, 512, 513, 512, 508, - 375, 340, 446, 471, 375, 469, 454, 510, 499, 346, - 349, 344, 454, 454, 454, 456, 456, 457, 457, 458, - 458, 458, 458, 459, 459, 460, 461, 462, 463, 464, - 465, 468, 342, 375, 551, 552, 526, 539, 515, 541, - 471, 349, 471, 347, 469, 469, 512, 344, 346, 344, - 342, 349, 511, 471, 339, 342, 346, 520, 471, 486, - 493, 531, 383, 514, 527, 542, 340, 340, 344, 512, - 347, 472, 342, 552, 344, 375, 340, 339, 531, 543, - 544, 522, 523, 524, 530, 534, 469, 340, 348, 516, - 521, 525, 471, 349, 340, 387, 518, 516, 343, 512, - 340, 471, 521, 522, 526, 535, 349, 344 + 392, 393, 394, 395, 411, 455, 468, 470, 472, 474, + 478, 497, 499, 515, 516, 517, 518, 519, 527, 528, + 529, 530, 533, 534, 537, 538, 539, 546, 551, 500, + 348, 500, 343, 470, 513, 348, 476, 375, 346, 349, + 455, 455, 472, 319, 320, 341, 345, 340, 340, 346, + 382, 470, 339, 455, 346, 358, 499, 375, 511, 512, + 344, 510, 509, 468, 473, 492, 375, 354, 355, 356, + 351, 353, 317, 318, 321, 322, 357, 358, 323, 324, + 361, 360, 359, 325, 327, 326, 362, 342, 342, 468, + 341, 344, 520, 339, 349, 349, 541, 339, 339, 349, + 349, 472, 339, 472, 347, 349, 349, 328, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 348, 471, 346, + 349, 344, 516, 530, 534, 539, 513, 348, 513, 514, + 513, 509, 375, 340, 447, 472, 375, 470, 455, 511, + 500, 346, 349, 344, 455, 455, 455, 457, 457, 458, + 458, 459, 459, 459, 459, 460, 460, 461, 462, 463, + 464, 465, 466, 469, 342, 375, 552, 553, 527, 540, + 516, 542, 472, 349, 472, 347, 470, 470, 513, 344, + 346, 344, 342, 349, 512, 472, 339, 342, 346, 521, + 472, 487, 494, 532, 383, 515, 528, 543, 340, 340, + 344, 513, 347, 473, 342, 553, 344, 375, 340, 339, + 532, 544, 545, 523, 524, 525, 531, 535, 470, 340, + 348, 517, 522, 526, 472, 349, 340, 387, 519, 517, + 343, 513, 340, 472, 522, 523, 527, 536, 349, 344 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint16 yyr1[] = +static const yytype_int16 yyr1[] = { - 0, 442, 443, 444, 444, 444, 444, 444, 444, 444, - 444, 444, 444, 444, 444, 444, 444, 444, 445, 445, - 445, 445, 445, 445, 446, 447, 448, 449, 449, 450, - 450, 451, 451, 452, 453, 453, 453, 454, 454, 454, - 454, 455, 455, 455, 455, 456, 456, 456, 456, 457, - 457, 457, 458, 458, 458, 459, 459, 459, 459, 459, - 460, 460, 460, 461, 461, 462, 462, 463, 463, 464, - 464, 465, 465, 466, 466, 467, 468, 467, 469, 469, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 471, 471, 472, 473, 473, 473, 473, 473, 473, - 473, 473, 473, 475, 474, 476, 476, 477, 478, 478, - 479, 479, 480, 481, 481, 482, 482, 482, 482, 483, - 484, 484, 484, 484, 484, 485, 485, 485, 485, 485, - 486, 486, 487, 488, 488, 488, 488, 488, 488, 488, - 488, 489, 490, 490, 491, 491, 491, 492, 493, 493, - 494, 494, 494, 494, 494, 494, 494, 495, 495, 495, - 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, - 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, - 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, - 495, 495, 496, 497, 497, 498, 498, 499, 499, 499, - 499, 500, 500, 501, 502, 502, 503, 503, 503, 503, - 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, - 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, - 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, - 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, - 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, - 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, - 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, - 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, - 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, - 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, - 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, - 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, - 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, - 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, - 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, - 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, - 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, - 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, - 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, - 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, - 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, - 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, - 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, - 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, - 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, - 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, - 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, - 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, - 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, - 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, - 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, - 504, 504, 504, 506, 505, 507, 505, 508, 508, 509, - 509, 510, 510, 511, 511, 512, 512, 512, 513, 513, - 514, 515, 515, 516, 516, 516, 516, 516, 516, 516, - 516, 517, 518, 519, 520, 518, 521, 521, 523, 522, - 524, 522, 525, 525, 526, 526, 527, 527, 528, 528, - 529, 530, 530, 531, 531, 532, 532, 534, 533, 535, - 535, 536, 536, 537, 537, 539, 538, 540, 538, 541, - 538, 542, 542, 543, 543, 544, 544, 545, 545, 545, - 545, 545, 546, 546, 547, 547, 547, 549, 548, 550, - 551, 551, 552, 552 + 0, 443, 444, 445, 445, 445, 445, 445, 445, 445, + 445, 445, 445, 445, 445, 445, 445, 445, 446, 446, + 446, 446, 446, 446, 447, 448, 449, 450, 450, 451, + 451, 452, 452, 453, 454, 454, 454, 455, 455, 455, + 455, 456, 456, 456, 456, 457, 457, 457, 457, 458, + 458, 458, 459, 459, 459, 460, 460, 460, 460, 460, + 461, 461, 461, 462, 462, 463, 463, 464, 464, 465, + 465, 466, 466, 467, 467, 468, 469, 468, 470, 470, + 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, + 471, 472, 472, 473, 474, 474, 474, 474, 474, 474, + 474, 474, 474, 476, 475, 477, 477, 478, 479, 479, + 480, 480, 481, 482, 482, 483, 483, 483, 483, 484, + 485, 485, 485, 485, 485, 486, 486, 486, 486, 486, + 487, 487, 488, 489, 489, 489, 489, 489, 489, 489, + 489, 490, 491, 491, 492, 492, 492, 493, 494, 494, + 495, 495, 495, 495, 495, 495, 495, 496, 496, 496, + 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, + 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, + 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, + 496, 496, 497, 498, 498, 499, 499, 500, 500, 500, + 500, 501, 501, 502, 503, 503, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, + 505, 505, 505, 507, 506, 508, 506, 509, 509, 510, + 510, 511, 511, 512, 512, 513, 513, 513, 514, 514, + 515, 516, 516, 517, 517, 517, 517, 517, 517, 517, + 517, 518, 519, 520, 521, 519, 522, 522, 524, 523, + 525, 523, 526, 526, 527, 527, 528, 528, 529, 529, + 530, 531, 531, 532, 532, 533, 533, 535, 534, 536, + 536, 537, 537, 538, 538, 540, 539, 541, 539, 542, + 539, 543, 543, 544, 544, 545, 545, 546, 546, 546, + 546, 546, 546, 547, 547, 548, 548, 548, 550, 549, + 551, 552, 552, 553, 553 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = +static const yytype_int8 yyr2[] = { 0, 2, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, @@ -3678,15 +3821,15 @@ static const yytype_uint8 yyr2[] = 5, 3, 1, 1, 4, 1, 2, 0, 8, 0, 1, 3, 2, 1, 2, 0, 6, 0, 8, 0, 7, 1, 1, 1, 0, 2, 3, 2, 2, 2, - 3, 2, 1, 2, 1, 1, 1, 0, 3, 5, - 1, 3, 1, 4 + 3, 2, 2, 1, 2, 1, 1, 1, 0, 3, + 5, 1, 3, 1, 4 }; +enum { YYENOMEM = -2 }; + #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab @@ -3695,27 +3838,26 @@ static const yytype_uint8 yyr2[] = #define YYRECOVERING() (!!yyerrstatus) -#define YYBACKUP(Token, Value) \ -do \ - if (yychar == YYEMPTY) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - YYPOPSTACK (yylen); \ - yystate = *yyssp; \ - goto yybackup; \ - } \ - else \ - { \ - yyerror (pParseContext, YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ -while (0) - -/* Error token number */ -#define YYTERROR 1 -#define YYERRCODE 256 +#define YYBACKUP(Token, Value) \ + do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (pParseContext, YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ + while (0) +/* Backward compatibility with an undocumented macro. + Use YYerror or YYUNDEF. */ +#define YYERRCODE YYUNDEF /* Enable debugging if requested. */ @@ -3733,55 +3875,59 @@ do { \ } while (0) /* This macro is provided for backward compatibility. */ -#ifndef YY_LOCATION_PRINT -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -#endif +# ifndef YY_LOCATION_PRINT +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ - Type, Value, pParseContext); \ + Kind, Value, pParseContext); \ YYFPRINTF (stderr, "\n"); \ } \ } while (0) -/*----------------------------------------. -| Print this symbol's value on YYOUTPUT. | -`----------------------------------------*/ +/*-----------------------------------. +| Print this symbol's value on YYO. | +`-----------------------------------*/ static void -yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, glslang::TParseContext* pParseContext) +yy_symbol_value_print (FILE *yyo, + yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, glslang::TParseContext* pParseContext) { - FILE *yyo = yyoutput; - YYUSE (yyo); + FILE *yyoutput = yyo; + YYUSE (yyoutput); YYUSE (pParseContext); if (!yyvaluep) return; # ifdef YYPRINT - if (yytype < YYNTOKENS) - YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); + if (yykind < YYNTOKENS) + YYPRINT (yyo, yytoknum[yykind], *yyvaluep); # endif - YYUSE (yytype); + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YYUSE (yykind); + YY_IGNORE_MAYBE_UNINITIALIZED_END } -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ +/*---------------------------. +| Print this symbol on YYO. | +`---------------------------*/ static void -yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, glslang::TParseContext* pParseContext) +yy_symbol_print (FILE *yyo, + yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, glslang::TParseContext* pParseContext) { - YYFPRINTF (yyoutput, "%s %s (", - yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); + YYFPRINTF (yyo, "%s %s (", + yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind)); - yy_symbol_value_print (yyoutput, yytype, yyvaluep, pParseContext); - YYFPRINTF (yyoutput, ")"); + yy_symbol_value_print (yyo, yykind, yyvaluep, pParseContext); + YYFPRINTF (yyo, ")"); } /*------------------------------------------------------------------. @@ -3790,7 +3936,7 @@ yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, gls `------------------------------------------------------------------*/ static void -yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) @@ -3813,21 +3959,21 @@ do { \ `------------------------------------------------*/ static void -yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule, glslang::TParseContext* pParseContext) +yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, + int yyrule, glslang::TParseContext* pParseContext) { - unsigned long int yylno = yyrline[yyrule]; + int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, - yystos[yyssp[yyi + 1 - yynrhs]], - &(yyvsp[(yyi + 1) - (yynrhs)]) - , pParseContext); + YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]), + &yyvsp[(yyi + 1) - (yynrhs)], pParseContext); YYFPRINTF (stderr, "\n"); } } @@ -3842,8 +3988,8 @@ do { \ multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ -# define YYDPRINTF(Args) -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YYDPRINTF(Args) ((void) 0) +# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ @@ -3866,28 +4012,76 @@ int yydebug; #endif -#if YYERROR_VERBOSE +/* Context of a parse error. */ +typedef struct +{ + yy_state_t *yyssp; + yysymbol_kind_t yytoken; +} yypcontext_t; -# ifndef yystrlen -# if defined __GLIBC__ && defined _STRING_H -# define yystrlen strlen -# else +/* Put in YYARG at most YYARGN of the expected tokens given the + current YYCTX, and return the number of tokens stored in YYARG. If + YYARG is null, return the number of expected tokens (guaranteed to + be less than YYNTOKENS). Return YYENOMEM on memory exhaustion. + Return 0 if there are more than YYARGN expected tokens, yet fill + YYARG up to YYARGN. */ +static int +yypcontext_expected_tokens (const yypcontext_t *yyctx, + yysymbol_kind_t yyarg[], int yyargn) +{ + /* Actual size of YYARG. */ + int yycount = 0; + int yyn = yypact[+*yyctx->yyssp]; + if (!yypact_value_is_default (yyn)) + { + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. In other words, skip the first -YYN actions for + this state because they are default actions. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yyx; + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror + && !yytable_value_is_error (yytable[yyx + yyn])) + { + if (!yyarg) + ++yycount; + else if (yycount == yyargn) + return 0; + else + yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx); + } + } + if (yyarg && yycount == 0 && 0 < yyargn) + yyarg[0] = YYSYMBOL_YYEMPTY; + return yycount; +} + + + + +#ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S))) +# else /* Return the length of YYSTR. */ -static YYSIZE_T +static YYPTRDIFF_T yystrlen (const char *yystr) { - YYSIZE_T yylen; + YYPTRDIFF_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; } -# endif # endif +#endif -# ifndef yystpcpy -# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE -# define yystpcpy stpcpy -# else +#ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ static char * @@ -3901,10 +4095,10 @@ yystpcpy (char *yydest, const char *yysrc) return yyd - 1; } -# endif # endif +#endif -# ifndef yytnamerr +#ifndef yytnamerr /* Copy to YYRES the contents of YYSTR after stripping away unnecessary quotes and backslashes, so that it's suitable for yyerror. The heuristic is that double-quoting is unnecessary unless the string @@ -3912,14 +4106,13 @@ yystpcpy (char *yydest, const char *yysrc) backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ -static YYSIZE_T +static YYPTRDIFF_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { - YYSIZE_T yyn = 0; + YYPTRDIFF_T yyn = 0; char const *yyp = yystr; - for (;;) switch (*++yyp) { @@ -3930,7 +4123,10 @@ yytnamerr (char *yyres, const char *yystr) case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; - /* Fall through. */ + else + goto append; + + append: default: if (yyres) yyres[yyn] = *yyp; @@ -3945,36 +4141,20 @@ yytnamerr (char *yyres, const char *yystr) do_not_strip_quotes: ; } - if (! yyres) + if (yyres) + return yystpcpy (yyres, yystr) - yyres; + else return yystrlen (yystr); - - return yystpcpy (yyres, yystr) - yyres; } -# endif +#endif -/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message - about the unexpected token YYTOKEN for the state stack whose top is - YYSSP. - Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is - not large enough to hold the message. In that case, also set - *YYMSG_ALLOC to the required number of bytes. Return 2 if the - required number of bytes is too large to store. */ static int -yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, - yytype_int16 *yyssp, int yytoken) +yy_syntax_error_arguments (const yypcontext_t *yyctx, + yysymbol_kind_t yyarg[], int yyargn) { - YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); - YYSIZE_T yysize = yysize0; - enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; - /* Internationalized format string. */ - const char *yyformat = YY_NULLPTR; - /* Arguments of yyformat. */ - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - /* Number of reported tokens (one for the "unexpected", one per - "expected"). */ + /* Actual size of YYARG. */ int yycount = 0; - /* There are many possibilities here to consider: - If this state is a consistent state with a default action, then the only way this function was invoked is if the default action @@ -3998,63 +4178,78 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, one exception: it will still contain any token that will not be accepted due to an error action in a later state. */ - if (yytoken != YYEMPTY) + if (yyctx->yytoken != YYSYMBOL_YYEMPTY) { - int yyn = yypact[*yyssp]; - yyarg[yycount++] = yytname[yytoken]; - if (!yypact_value_is_default (yyn)) - { - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. In other words, skip the first -YYN actions for - this state because they are default actions. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = YYLAST - yyn + 1; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - int yyx; - - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR - && !yytable_value_is_error (yytable[yyx + yyn])) - { - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) - { - yycount = 1; - yysize = yysize0; - break; - } - yyarg[yycount++] = yytname[yyx]; - { - YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); - if (! (yysize <= yysize1 - && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) - return 2; - yysize = yysize1; - } - } - } + int yyn; + if (yyarg) + yyarg[yycount] = yyctx->yytoken; + ++yycount; + yyn = yypcontext_expected_tokens (yyctx, + yyarg ? yyarg + 1 : yyarg, yyargn - 1); + if (yyn == YYENOMEM) + return YYENOMEM; + else + yycount += yyn; } + return yycount; +} + +/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message + about the unexpected token YYTOKEN for the state stack whose top is + YYSSP. + + Return 0 if *YYMSG was successfully written. Return -1 if *YYMSG is + not large enough to hold the message. In that case, also set + *YYMSG_ALLOC to the required number of bytes. Return YYENOMEM if the + required number of bytes is too large to store. */ +static int +yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, + const yypcontext_t *yyctx) +{ + enum { YYARGS_MAX = 5 }; + /* Internationalized format string. */ + const char *yyformat = YY_NULLPTR; + /* Arguments of yyformat: reported tokens (one for the "unexpected", + one per "expected"). */ + yysymbol_kind_t yyarg[YYARGS_MAX]; + /* Cumulated lengths of YYARG. */ + YYPTRDIFF_T yysize = 0; + + /* Actual size of YYARG. */ + int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX); + if (yycount == YYENOMEM) + return YYENOMEM; switch (yycount) { -# define YYCASE_(N, S) \ +#define YYCASE_(N, S) \ case N: \ yyformat = S; \ - break + break + default: /* Avoid compiler warnings. */ YYCASE_(0, YY_("syntax error")); YYCASE_(1, YY_("syntax error, unexpected %s")); YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); -# undef YYCASE_ +#undef YYCASE_ } + /* Compute error message size. Don't count the "%s"s, but reserve + room for the terminator. */ + yysize = yystrlen (yyformat) - 2 * yycount + 1; { - YYSIZE_T yysize1 = yysize + yystrlen (yyformat); - if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) - return 2; - yysize = yysize1; + int yyi; + for (yyi = 0; yyi < yycount; ++yyi) + { + YYPTRDIFF_T yysize1 + = yysize + yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]); + if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) + yysize = yysize1; + else + return YYENOMEM; + } } if (*yymsg_alloc < yysize) @@ -4063,7 +4258,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, if (! (yysize <= *yymsg_alloc && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; - return 1; + return -1; } /* Avoid sprintf, as that infringes on the user's name space. @@ -4075,40 +4270,43 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, while ((*yyp = *yyformat) != '\0') if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) { - yyp += yytnamerr (yyp, yyarg[yyi++]); + yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]); yyformat += 2; } else { - yyp++; - yyformat++; + ++yyp; + ++yyformat; } } return 0; } -#endif /* YYERROR_VERBOSE */ + /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ static void -yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, glslang::TParseContext* pParseContext) +yydestruct (const char *yymsg, + yysymbol_kind_t yykind, YYSTYPE *yyvaluep, glslang::TParseContext* pParseContext) { YYUSE (yyvaluep); YYUSE (pParseContext); if (!yymsg) yymsg = "Deleting"; - YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yytype); + YYUSE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END } + + /*----------. | yyparse. | `----------*/ @@ -4116,7 +4314,7 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, glslang::TParseCon int yyparse (glslang::TParseContext* pParseContext) { -/* The lookahead symbol. */ +/* Lookahead token kind. */ int yychar; @@ -4127,45 +4325,41 @@ YY_INITIAL_VALUE (static YYSTYPE yyval_default;) YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); /* Number of syntax errors so far. */ - int yynerrs; + int yynerrs = 0; - int yystate; + yy_state_fast_t yystate = 0; /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; + int yyerrstatus = 0; - /* The stacks and their tools: - 'yyss': related to states. - 'yyvs': related to semantic values. - - Refer to the stacks through separate pointers, to allow yyoverflow + /* Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ - /* The state stack. */ - yytype_int16 yyssa[YYINITDEPTH]; - yytype_int16 *yyss; - yytype_int16 *yyssp; + /* Their size. */ + YYPTRDIFF_T yystacksize = YYINITDEPTH; - /* The semantic value stack. */ + /* The state stack: array, bottom, top. */ + yy_state_t yyssa[YYINITDEPTH]; + yy_state_t *yyss = yyssa; + yy_state_t *yyssp = yyss; + + /* The semantic value stack: array, bottom, top. */ YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs; - YYSTYPE *yyvsp; - - YYSIZE_T yystacksize; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp = yyvs; int yyn; + /* The return value of yyparse. */ int yyresult; - /* Lookahead token as an internal (translated) token number. */ - int yytoken = 0; + /* Lookahead symbol kind. */ + yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; -#if YYERROR_VERBOSE /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; - YYSIZE_T yymsg_alloc = sizeof yymsgbuf; -#endif + YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf; #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) @@ -4173,58 +4367,60 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); Keep to zero when no symbol should be popped. */ int yylen = 0; - yyssp = yyss = yyssa; - yyvsp = yyvs = yyvsa; - yystacksize = YYINITDEPTH; - YYDPRINTF ((stderr, "Starting parse\n")); - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ goto yysetstate; + /*------------------------------------------------------------. -| yynewstate -- Push a new state, which is found in yystate. | +| yynewstate -- push a new state, which is found in yystate. | `------------------------------------------------------------*/ - yynewstate: +yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; - yysetstate: - *yyssp = yystate; + +/*--------------------------------------------------------------------. +| yysetstate -- set current state (the top of the stack) to yystate. | +`--------------------------------------------------------------------*/ +yysetstate: + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + YY_ASSERT (0 <= yystate && yystate < YYNSTATES); + YY_IGNORE_USELESS_CAST_BEGIN + *yyssp = YY_CAST (yy_state_t, yystate); + YY_IGNORE_USELESS_CAST_END + YY_STACK_PRINT (yyss, yyssp); if (yyss + yystacksize - 1 <= yyssp) +#if !defined yyoverflow && !defined YYSTACK_RELOCATE + goto yyexhaustedlab; +#else { /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = yyssp - yyss + 1; + YYPTRDIFF_T yysize = yyssp - yyss + 1; -#ifdef yyoverflow +# if defined yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ + yy_state_t *yyss1 = yyss; YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), + &yyss1, yysize * YYSIZEOF (*yyssp), + &yyvs1, yysize * YYSIZEOF (*yyvsp), &yystacksize); - yyss = yyss1; yyvs = yyvs1; } -#else /* no yyoverflow */ -# ifndef YYSTACK_RELOCATE - goto yyexhaustedlab; -# else +# else /* defined YYSTACK_RELOCATE */ /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) goto yyexhaustedlab; @@ -4233,9 +4429,10 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); yystacksize = YYMAXDEPTH; { - yytype_int16 *yyss1 = yyss; + yy_state_t *yyss1 = yyss; union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + YY_CAST (union yyalloc *, + YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); @@ -4245,30 +4442,30 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); YYSTACK_FREE (yyss1); } # endif -#endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; - YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); + YY_IGNORE_USELESS_CAST_BEGIN + YYDPRINTF ((stderr, "Stack size increased to %ld\n", + YY_CAST (long, yystacksize))); + YY_IGNORE_USELESS_CAST_END if (yyss + yystacksize - 1 <= yyssp) YYABORT; } - - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); +#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ if (yystate == YYFINAL) YYACCEPT; goto yybackup; + /*-----------. | yybackup. | `-----------*/ yybackup: - /* Do appropriate processing given the current state. Read a lookahead token if we need one and don't already have one. */ @@ -4279,18 +4476,29 @@ yybackup: /* Not known => get a lookahead token if don't already have one. */ - /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ + /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */ if (yychar == YYEMPTY) { - YYDPRINTF ((stderr, "Reading a token: ")); + YYDPRINTF ((stderr, "Reading a token\n")); yychar = yylex (&yylval, parseContext); } if (yychar <= YYEOF) { - yychar = yytoken = YYEOF; + yychar = YYEOF; + yytoken = YYSYMBOL_YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } + else if (yychar == YYerror) + { + /* The scanner already issued an error message, process directly + to error recovery. But do not keep the error token as + lookahead, it is too special and may lead us to an endless + loop in error recovery. */ + yychar = YYUNDEF; + yytoken = YYSYMBOL_YYerror; + goto yyerrlab1; + } else { yytoken = YYTRANSLATE (yychar); @@ -4318,15 +4526,13 @@ yybackup: /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - - /* Discard the shifted token. */ - yychar = YYEMPTY; - yystate = yyn; YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END + /* Discard the shifted token. */ + yychar = YYEMPTY; goto yynewstate; @@ -4341,7 +4547,7 @@ yydefault: /*-----------------------------. -| yyreduce -- Do a reduction. | +| yyreduce -- do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ @@ -4361,304 +4567,304 @@ yyreduce: YY_REDUCE_PRINT (yyn); switch (yyn) { - case 2: -#line 369 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 2: /* variable_identifier: IDENTIFIER */ +#line 370 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string); } -#line 4370 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4576 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 3: -#line 375 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 3: /* primary_expression: variable_identifier */ +#line 376 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4378 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4584 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 4: -#line 378 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 4: /* primary_expression: LEFT_PAREN expression RIGHT_PAREN */ +#line 379 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } -#line 4388 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4594 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 5: -#line 383 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 5: /* primary_expression: FLOATCONSTANT */ +#line 384 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 4396 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4602 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 6: -#line 386 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 6: /* primary_expression: INTCONSTANT */ +#line 387 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 4404 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4610 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 7: -#line 389 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 7: /* primary_expression: UINTCONSTANT */ +#line 390 "glslang/MachineIndependent/glslang.y" + { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 4413 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4619 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 8: -#line 393 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 8: /* primary_expression: BOOLCONSTANT */ +#line 394 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 4421 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4627 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 9: -#line 397 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 9: /* primary_expression: STRING_LITERAL */ +#line 398 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); } -#line 4429 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4635 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 10: -#line 400 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 10: /* primary_expression: INT32CONSTANT */ +#line 401 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 4438 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4644 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 11: -#line 404 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 11: /* primary_expression: UINT32CONSTANT */ +#line 405 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 4447 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4653 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 12: -#line 408 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 12: /* primary_expression: INT64CONSTANT */ +#line 409 "glslang/MachineIndependent/glslang.y" + { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i64, (yyvsp[0].lex).loc, true); } -#line 4456 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4662 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 13: -#line 412 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 13: /* primary_expression: UINT64CONSTANT */ +#line 413 "glslang/MachineIndependent/glslang.y" + { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u64, (yyvsp[0].lex).loc, true); } -#line 4465 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4671 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 14: -#line 416 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 14: /* primary_expression: INT16CONSTANT */ +#line 417 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((short)(yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 4474 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4680 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 15: -#line 420 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 15: /* primary_expression: UINT16CONSTANT */ +#line 421 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit unsigned integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((unsigned short)(yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 4483 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4689 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 16: -#line 424 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 16: /* primary_expression: DOUBLECONSTANT */ +#line 425 "glslang/MachineIndependent/glslang.y" + { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double literal"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtDouble, (yyvsp[0].lex).loc, true); } -#line 4494 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4700 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 17: -#line 430 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 17: /* primary_expression: FLOAT16CONSTANT */ +#line 431 "glslang/MachineIndependent/glslang.y" + { parseContext.float16Check((yyvsp[0].lex).loc, "half float literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat16, (yyvsp[0].lex).loc, true); } -#line 4503 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4709 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 18: -#line 438 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 18: /* postfix_expression: primary_expression */ +#line 439 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4511 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4717 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 19: -#line 441 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 19: /* postfix_expression: postfix_expression LEFT_BRACKET integer_expression RIGHT_BRACKET */ +#line 442 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode)); } -#line 4519 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4725 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 20: -#line 444 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 20: /* postfix_expression: function_call */ +#line 445 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4527 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4733 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 21: -#line 447 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 21: /* postfix_expression: postfix_expression DOT IDENTIFIER */ +#line 448 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string); } -#line 4535 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4741 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 22: -#line 450 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 22: /* postfix_expression: postfix_expression INC_OP */ +#line 451 "glslang/MachineIndependent/glslang.y" + { parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode)); parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "++", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "++", EOpPostIncrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 4545 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4751 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 23: -#line 455 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 23: /* postfix_expression: postfix_expression DEC_OP */ +#line 456 "glslang/MachineIndependent/glslang.y" + { parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode)); parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "--", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "--", EOpPostDecrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 4555 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4761 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 24: -#line 463 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 24: /* integer_expression: expression */ +#line 464 "glslang/MachineIndependent/glslang.y" + { parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]"); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4564 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4770 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 25: -#line 470 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 25: /* function_call: function_call_or_method */ +#line 471 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode); delete (yyvsp[0].interm).function; } -#line 4573 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4779 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 26: -#line 477 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 26: /* function_call_or_method: function_call_generic */ +#line 478 "glslang/MachineIndependent/glslang.y" + { (yyval.interm) = (yyvsp[0].interm); } -#line 4581 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4787 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 27: -#line 483 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 27: /* function_call_generic: function_call_header_with_parameters RIGHT_PAREN */ +#line 484 "glslang/MachineIndependent/glslang.y" + { (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 4590 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4796 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 28: -#line 487 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 28: /* function_call_generic: function_call_header_no_parameters RIGHT_PAREN */ +#line 488 "glslang/MachineIndependent/glslang.y" + { (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 4599 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4805 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 29: -#line 494 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 29: /* function_call_header_no_parameters: function_call_header VOID */ +#line 495 "glslang/MachineIndependent/glslang.y" + { (yyval.interm) = (yyvsp[-1].interm); } -#line 4607 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4813 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 30: -#line 497 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 30: /* function_call_header_no_parameters: function_call_header */ +#line 498 "glslang/MachineIndependent/glslang.y" + { (yyval.interm) = (yyvsp[0].interm); } -#line 4615 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4821 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 31: -#line 503 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 31: /* function_call_header_with_parameters: function_call_header assignment_expression */ +#line 504 "glslang/MachineIndependent/glslang.y" + { TParameter param = { 0, new TType }; param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); (yyvsp[-1].interm).function->addParameter(param); (yyval.interm).function = (yyvsp[-1].interm).function; (yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode); } -#line 4627 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4833 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 32: -#line 510 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 32: /* function_call_header_with_parameters: function_call_header_with_parameters COMMA assignment_expression */ +#line 511 "glslang/MachineIndependent/glslang.y" + { TParameter param = { 0, new TType }; param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); (yyvsp[-2].interm).function->addParameter(param); (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 4639 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4845 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 33: -#line 520 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 33: /* function_call_header: function_identifier LEFT_PAREN */ +#line 521 "glslang/MachineIndependent/glslang.y" + { (yyval.interm) = (yyvsp[-1].interm); } -#line 4647 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4853 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 34: -#line 528 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 34: /* function_identifier: type_specifier */ +#line 529 "glslang/MachineIndependent/glslang.y" + { // Constructor (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 4657 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4863 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 35: -#line 533 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 35: /* function_identifier: postfix_expression */ +#line 534 "glslang/MachineIndependent/glslang.y" + { // // Should be a method or subroutine call, but we haven't recognized the arguments yet. // @@ -4685,51 +4891,51 @@ yyreduce: (yyval.interm).function = new TFunction(empty, TType(EbtVoid), EOpNull); } } -#line 4689 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4895 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 36: -#line 561 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 36: /* function_identifier: non_uniform_qualifier */ +#line 562 "glslang/MachineIndependent/glslang.y" + { // Constructor (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 4699 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4905 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 37: -#line 570 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 37: /* unary_expression: postfix_expression */ +#line 571 "glslang/MachineIndependent/glslang.y" + { parseContext.variableCheck((yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); if (TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode()) parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), ""); } -#line 4710 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4916 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 38: -#line 576 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 38: /* unary_expression: INC_OP unary_expression */ +#line 577 "glslang/MachineIndependent/glslang.y" + { parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "++", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "++", EOpPreIncrement, (yyvsp[0].interm.intermTypedNode)); } -#line 4719 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4925 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 39: -#line 580 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 39: /* unary_expression: DEC_OP unary_expression */ +#line 581 "glslang/MachineIndependent/glslang.y" + { parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "--", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "--", EOpPreDecrement, (yyvsp[0].interm.intermTypedNode)); } -#line 4728 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4934 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 40: -#line 584 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 40: /* unary_expression: unary_operator unary_expression */ +#line 585 "glslang/MachineIndependent/glslang.y" + { if ((yyvsp[-1].interm).op != EOpNull) { char errorOp[2] = {0, 0}; switch((yyvsp[-1].interm).op) { @@ -4745,180 +4951,180 @@ yyreduce: (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } } -#line 4749 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4955 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 41: -#line 604 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; } -#line 4755 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 41: /* unary_operator: PLUS */ +#line 605 "glslang/MachineIndependent/glslang.y" + { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; } +#line 4961 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 42: -#line 605 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; } -#line 4761 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 42: /* unary_operator: DASH */ +#line 606 "glslang/MachineIndependent/glslang.y" + { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; } +#line 4967 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 43: -#line 606 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; } -#line 4767 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 43: /* unary_operator: BANG */ +#line 607 "glslang/MachineIndependent/glslang.y" + { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; } +#line 4973 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 44: -#line 607 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot; + case 44: /* unary_operator: TILDE */ +#line 608 "glslang/MachineIndependent/glslang.y" + { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot; parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); } -#line 4774 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4980 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 45: -#line 613 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4780 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 45: /* multiplicative_expression: unary_expression */ +#line 614 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } +#line 4986 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 46: -#line 614 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 46: /* multiplicative_expression: multiplicative_expression STAR unary_expression */ +#line 615 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "*", EOpMul, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4790 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4996 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 47: -#line 619 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 47: /* multiplicative_expression: multiplicative_expression SLASH unary_expression */ +#line 620 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "/", EOpDiv, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4800 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5006 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 48: -#line 624 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 48: /* multiplicative_expression: multiplicative_expression PERCENT unary_expression */ +#line 625 "glslang/MachineIndependent/glslang.y" + { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "%"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "%", EOpMod, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4811 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5017 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 49: -#line 633 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4817 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 49: /* additive_expression: multiplicative_expression */ +#line 634 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } +#line 5023 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 50: -#line 634 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 50: /* additive_expression: additive_expression PLUS multiplicative_expression */ +#line 635 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "+", EOpAdd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4827 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5033 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 51: -#line 639 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 51: /* additive_expression: additive_expression DASH multiplicative_expression */ +#line 640 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "-", EOpSub, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4837 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5043 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 52: -#line 647 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4843 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 52: /* shift_expression: additive_expression */ +#line 648 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } +#line 5049 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 53: -#line 648 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 53: /* shift_expression: shift_expression LEFT_OP additive_expression */ +#line 649 "glslang/MachineIndependent/glslang.y" + { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift left"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<<", EOpLeftShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4854 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5060 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 54: -#line 654 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 54: /* shift_expression: shift_expression RIGHT_OP additive_expression */ +#line 655 "glslang/MachineIndependent/glslang.y" + { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift right"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">>", EOpRightShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4865 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5071 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 55: -#line 663 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4871 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 55: /* relational_expression: shift_expression */ +#line 664 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } +#line 5077 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 56: -#line 664 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 56: /* relational_expression: relational_expression LEFT_ANGLE shift_expression */ +#line 665 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<", EOpLessThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 4881 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5087 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 57: -#line 669 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 57: /* relational_expression: relational_expression RIGHT_ANGLE shift_expression */ +#line 670 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">", EOpGreaterThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 4891 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5097 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 58: -#line 674 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 58: /* relational_expression: relational_expression LE_OP shift_expression */ +#line 675 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<=", EOpLessThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 4901 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5107 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 59: -#line 679 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 59: /* relational_expression: relational_expression GE_OP shift_expression */ +#line 680 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">=", EOpGreaterThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 4911 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5117 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 60: -#line 687 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4917 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 60: /* equality_expression: relational_expression */ +#line 688 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } +#line 5123 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 61: -#line 688 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 61: /* equality_expression: equality_expression EQ_OP relational_expression */ +#line 689 "glslang/MachineIndependent/glslang.y" + { parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison"); parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=="); parseContext.specializationCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=="); @@ -4927,12 +5133,12 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 4931 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5137 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 62: -#line 697 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 62: /* equality_expression: equality_expression NE_OP relational_expression */ +#line 698 "glslang/MachineIndependent/glslang.y" + { parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison"); parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!="); parseContext.specializationCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!="); @@ -4941,125 +5147,125 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 4945 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5151 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 63: -#line 709 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4951 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 63: /* and_expression: equality_expression */ +#line 710 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } +#line 5157 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 64: -#line 710 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 64: /* and_expression: and_expression AMPERSAND equality_expression */ +#line 711 "glslang/MachineIndependent/glslang.y" + { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise and"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&", EOpAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4962 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5168 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 65: -#line 719 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4968 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 65: /* exclusive_or_expression: and_expression */ +#line 720 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } +#line 5174 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 66: -#line 720 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 66: /* exclusive_or_expression: exclusive_or_expression CARET and_expression */ +#line 721 "glslang/MachineIndependent/glslang.y" + { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise exclusive or"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^", EOpExclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4979 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5185 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 67: -#line 729 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4985 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 67: /* inclusive_or_expression: exclusive_or_expression */ +#line 730 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } +#line 5191 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 68: -#line 730 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 68: /* inclusive_or_expression: inclusive_or_expression VERTICAL_BAR exclusive_or_expression */ +#line 731 "glslang/MachineIndependent/glslang.y" + { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise inclusive or"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "|", EOpInclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4996 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5202 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 69: -#line 739 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5002 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 69: /* logical_and_expression: inclusive_or_expression */ +#line 740 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } +#line 5208 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 70: -#line 740 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 70: /* logical_and_expression: logical_and_expression AND_OP inclusive_or_expression */ +#line 741 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&&", EOpLogicalAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5012 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5218 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 71: -#line 748 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5018 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 71: /* logical_xor_expression: logical_and_expression */ +#line 749 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } +#line 5224 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 72: -#line 749 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 72: /* logical_xor_expression: logical_xor_expression XOR_OP logical_and_expression */ +#line 750 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^^", EOpLogicalXor, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5028 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5234 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 73: -#line 757 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5034 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 73: /* logical_or_expression: logical_xor_expression */ +#line 758 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } +#line 5240 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 74: -#line 758 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 74: /* logical_or_expression: logical_or_expression OR_OP logical_xor_expression */ +#line 759 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "||", EOpLogicalOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5044 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5250 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 75: -#line 766 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5050 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 75: /* conditional_expression: logical_or_expression */ +#line 767 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } +#line 5256 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 76: -#line 767 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 76: /* $@1: %empty */ +#line 768 "glslang/MachineIndependent/glslang.y" + { ++parseContext.controlFlowNestingLevel; } -#line 5058 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5264 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 77: -#line 770 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 77: /* conditional_expression: logical_or_expression QUESTION $@1 expression COLON assignment_expression */ +#line 771 "glslang/MachineIndependent/glslang.y" + { --parseContext.controlFlowNestingLevel; parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-5].interm.intermTypedNode)); parseContext.rValueErrorCheck((yyvsp[-4].lex).loc, "?", (yyvsp[-5].interm.intermTypedNode)); @@ -5071,18 +5277,18 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 5075 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5281 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 78: -#line 785 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5081 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 78: /* assignment_expression: conditional_expression */ +#line 786 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } +#line 5287 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 79: -#line 786 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 79: /* assignment_expression: unary_expression assignment_operator assignment_expression */ +#line 787 "glslang/MachineIndependent/glslang.y" + { parseContext.arrayObjectCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array assignment"); parseContext.opaqueCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "="); parseContext.storage16BitAssignmentCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "="); @@ -5095,120 +5301,120 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } } -#line 5099 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5305 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 80: -#line 802 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 80: /* assignment_operator: EQUAL */ +#line 803 "glslang/MachineIndependent/glslang.y" + { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAssign; } -#line 5108 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5314 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 81: -#line 806 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 81: /* assignment_operator: MUL_ASSIGN */ +#line 807 "glslang/MachineIndependent/glslang.y" + { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpMulAssign; } -#line 5117 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5323 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 82: -#line 810 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 82: /* assignment_operator: DIV_ASSIGN */ +#line 811 "glslang/MachineIndependent/glslang.y" + { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpDivAssign; } -#line 5126 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5332 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 83: -#line 814 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 83: /* assignment_operator: MOD_ASSIGN */ +#line 815 "glslang/MachineIndependent/glslang.y" + { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "%="); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpModAssign; } -#line 5136 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5342 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 84: -#line 819 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 84: /* assignment_operator: ADD_ASSIGN */ +#line 820 "glslang/MachineIndependent/glslang.y" + { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAddAssign; } -#line 5145 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5351 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 85: -#line 823 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 85: /* assignment_operator: SUB_ASSIGN */ +#line 824 "glslang/MachineIndependent/glslang.y" + { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpSubAssign; } -#line 5154 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5360 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 86: -#line 827 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 86: /* assignment_operator: LEFT_ASSIGN */ +#line 828 "glslang/MachineIndependent/glslang.y" + { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign; } -#line 5163 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5369 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 87: -#line 831 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 87: /* assignment_operator: RIGHT_ASSIGN */ +#line 832 "glslang/MachineIndependent/glslang.y" + { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign; } -#line 5172 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5378 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 88: -#line 835 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 88: /* assignment_operator: AND_ASSIGN */ +#line 836 "glslang/MachineIndependent/glslang.y" + { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign; } -#line 5181 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5387 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 89: -#line 839 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 89: /* assignment_operator: XOR_ASSIGN */ +#line 840 "glslang/MachineIndependent/glslang.y" + { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign; } -#line 5190 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5396 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 90: -#line 843 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 90: /* assignment_operator: OR_ASSIGN */ +#line 844 "glslang/MachineIndependent/glslang.y" + { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign; } -#line 5199 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5405 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 91: -#line 850 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 91: /* expression: assignment_expression */ +#line 851 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5207 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5413 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 92: -#line 853 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 92: /* expression: expression COMMA assignment_expression */ +#line 854 "glslang/MachineIndependent/glslang.y" + { parseContext.samplerConstructorLocationCheck((yyvsp[-1].lex).loc, ",", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.intermediate.addComma((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); if ((yyval.interm.intermTypedNode) == 0) { @@ -5216,117 +5422,117 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 5220 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5426 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 93: -#line 864 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 93: /* constant_expression: conditional_expression */ +#line 865 "glslang/MachineIndependent/glslang.y" + { parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), ""); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5229 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5435 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 94: -#line 871 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 94: /* declaration: function_prototype SEMICOLON */ +#line 872 "glslang/MachineIndependent/glslang.y" + { parseContext.handleFunctionDeclarator((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).function, true /* prototype */); (yyval.interm.intermNode) = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 5239 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5445 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 95: -#line 876 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 95: /* declaration: init_declarator_list SEMICOLON */ +#line 877 "glslang/MachineIndependent/glslang.y" + { if ((yyvsp[-1].interm).intermNode && (yyvsp[-1].interm).intermNode->getAsAggregate()) (yyvsp[-1].interm).intermNode->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm).intermNode; } -#line 5249 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5455 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 96: -#line 881 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 96: /* declaration: PRECISION precision_qualifier type_specifier SEMICOLON */ +#line 882 "glslang/MachineIndependent/glslang.y" + { parseContext.profileRequires((yyvsp[-3].lex).loc, ENoProfile, 130, 0, "precision statement"); // lazy setting of the previous scope's defaults, has effect only the first time it is called in a particular scope parseContext.symbolTable.setPreviousDefaultPrecisions(&parseContext.defaultPrecision[0]); parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision); (yyval.interm.intermNode) = 0; } -#line 5261 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5467 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 97: -#line 888 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 97: /* declaration: block_structure SEMICOLON */ +#line 889 "glslang/MachineIndependent/glslang.y" + { parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList); (yyval.interm.intermNode) = 0; } -#line 5270 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5476 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 98: -#line 892 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 98: /* declaration: block_structure IDENTIFIER SEMICOLON */ +#line 893 "glslang/MachineIndependent/glslang.y" + { parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 5279 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5485 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 99: -#line 896 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 99: /* declaration: block_structure IDENTIFIER array_specifier SEMICOLON */ +#line 897 "glslang/MachineIndependent/glslang.y" + { parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes); (yyval.interm.intermNode) = 0; } -#line 5288 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5494 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 100: -#line 900 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 100: /* declaration: type_qualifier SEMICOLON */ +#line 901 "glslang/MachineIndependent/glslang.y" + { parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier); parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type)); (yyval.interm.intermNode) = 0; } -#line 5298 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5504 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 101: -#line 905 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 101: /* declaration: type_qualifier IDENTIFIER SEMICOLON */ +#line 906 "glslang/MachineIndependent/glslang.y" + { parseContext.checkNoShaderLayouts((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).shaderQualifiers); parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 5308 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5514 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 102: -#line 910 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 102: /* declaration: type_qualifier IDENTIFIER identifier_list SEMICOLON */ +#line 911 "glslang/MachineIndependent/glslang.y" + { parseContext.checkNoShaderLayouts((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).shaderQualifiers); (yyvsp[-1].interm.identifierList)->push_back((yyvsp[-2].lex).string); parseContext.addQualifierToExisting((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier, *(yyvsp[-1].interm.identifierList)); (yyval.interm.intermNode) = 0; } -#line 5319 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5525 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 103: -#line 919 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); } -#line 5325 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 103: /* $@2: %empty */ +#line 920 "glslang/MachineIndependent/glslang.y" + { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); } +#line 5531 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 104: -#line 919 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 104: /* block_structure: type_qualifier IDENTIFIER LEFT_BRACE $@2 struct_declaration_list RIGHT_BRACE */ +#line 920 "glslang/MachineIndependent/glslang.y" + { --parseContext.blockNestingLevel; parseContext.blockName = (yyvsp[-4].lex).string; parseContext.globalQualifierFixCheck((yyvsp[-5].interm.type).loc, (yyvsp[-5].interm.type).qualifier); @@ -5335,55 +5541,55 @@ yyreduce: (yyval.interm).loc = (yyvsp[-5].interm.type).loc; (yyval.interm).typeList = (yyvsp[-1].interm.typeList); } -#line 5339 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5545 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 105: -#line 930 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 105: /* identifier_list: COMMA IDENTIFIER */ +#line 931 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.identifierList) = new TIdentifierList; (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 5348 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5554 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 106: -#line 934 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 106: /* identifier_list: identifier_list COMMA IDENTIFIER */ +#line 935 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList); (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 5357 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5563 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 107: -#line 941 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 107: /* function_prototype: function_declarator RIGHT_PAREN */ +#line 942 "glslang/MachineIndependent/glslang.y" + { (yyval.interm).function = (yyvsp[-1].interm.function); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 5366 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5572 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 108: -#line 948 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 108: /* function_declarator: function_header */ +#line 949 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 5374 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5580 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 109: -#line 951 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 109: /* function_declarator: function_header_with_parameters */ +#line 952 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 5382 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5588 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 110: -#line 958 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 110: /* function_header_with_parameters: function_header parameter_declaration */ +#line 959 "glslang/MachineIndependent/glslang.y" + { // Add the parameter (yyval.interm.function) = (yyvsp[-1].interm.function); if ((yyvsp[0].interm).param.type->getBasicType() != EbtVoid) @@ -5391,12 +5597,12 @@ yyreduce: else delete (yyvsp[0].interm).param.type; } -#line 5395 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5601 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 111: -#line 966 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 111: /* function_header_with_parameters: function_header_with_parameters COMMA parameter_declaration */ +#line 967 "glslang/MachineIndependent/glslang.y" + { // // Only first parameter of one-parameter functions can be void // The check for named parameters not being void is done in parameter_declarator @@ -5413,12 +5619,12 @@ yyreduce: (yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param); } } -#line 5417 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5623 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 112: -#line 986 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 112: /* function_header: fully_specified_type IDENTIFIER LEFT_PAREN */ +#line 987 "glslang/MachineIndependent/glslang.y" + { if ((yyvsp[-2].interm.type).qualifier.storage != EvqGlobal && (yyvsp[-2].interm.type).qualifier.storage != EvqTemporary) { parseContext.error((yyvsp[-1].lex).loc, "no qualifiers allowed for function return", GetStorageQualifierString((yyvsp[-2].interm.type).qualifier.storage), ""); @@ -5437,12 +5643,12 @@ yyreduce: function = new TFunction((yyvsp[-1].lex).string, type); (yyval.interm.function) = function; } -#line 5441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5647 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 113: -#line 1009 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 113: /* parameter_declarator: type_specifier IDENTIFIER */ +#line 1010 "glslang/MachineIndependent/glslang.y" + { if ((yyvsp[-1].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-1].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); parseContext.profileRequires((yyvsp[-1].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); @@ -5457,12 +5663,12 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).param = param; } -#line 5461 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5667 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 114: -#line 1024 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 114: /* parameter_declarator: type_specifier IDENTIFIER array_specifier */ +#line 1025 "glslang/MachineIndependent/glslang.y" + { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); @@ -5481,12 +5687,12 @@ yyreduce: (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).param = param; } -#line 5485 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5691 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 115: -#line 1049 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 115: /* parameter_declaration: type_qualifier parameter_declarator */ +#line 1050 "glslang/MachineIndependent/glslang.y" + { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) (yyval.interm).param.type->getQualifier().precision = (yyvsp[-1].interm.type).qualifier.precision; @@ -5497,24 +5703,24 @@ yyreduce: parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 5501 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5707 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 116: -#line 1060 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 116: /* parameter_declaration: parameter_declarator */ +#line 1061 "glslang/MachineIndependent/glslang.y" + { (yyval.interm) = (yyvsp[0].interm); parseContext.parameterTypeCheck((yyvsp[0].interm).loc, EvqIn, *(yyvsp[0].interm).param.type); parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); } -#line 5513 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5719 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 117: -#line 1070 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 117: /* parameter_declaration: type_qualifier parameter_type_specifier */ +#line 1071 "glslang/MachineIndependent/glslang.y" + { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) (yyval.interm).param.type->getQualifier().precision = (yyvsp[-1].interm.type).qualifier.precision; @@ -5524,133 +5730,133 @@ 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 5528 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5734 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 118: -#line 1080 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 118: /* parameter_declaration: parameter_type_specifier */ +#line 1081 "glslang/MachineIndependent/glslang.y" + { (yyval.interm) = (yyvsp[0].interm); parseContext.parameterTypeCheck((yyvsp[0].interm).loc, EvqIn, *(yyvsp[0].interm).param.type); parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); } -#line 5540 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5746 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 119: -#line 1090 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 119: /* parameter_type_specifier: type_specifier */ +#line 1091 "glslang/MachineIndependent/glslang.y" + { TParameter param = { 0, new TType((yyvsp[0].interm.type)) }; (yyval.interm).param = param; if ((yyvsp[0].interm.type).arraySizes) parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes); } -#line 5551 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5757 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 120: -#line 1099 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 120: /* init_declarator_list: single_declaration */ +#line 1100 "glslang/MachineIndependent/glslang.y" + { (yyval.interm) = (yyvsp[0].interm); } -#line 5559 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5765 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 121: -#line 1102 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 121: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER */ +#line 1103 "glslang/MachineIndependent/glslang.y" + { (yyval.interm) = (yyvsp[-2].interm); parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type); } -#line 5568 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5774 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 122: -#line 1106 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 122: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier */ +#line 1107 "glslang/MachineIndependent/glslang.y" + { (yyval.interm) = (yyvsp[-3].interm); parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes); } -#line 5577 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5783 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 123: -#line 1110 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 123: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier EQUAL initializer */ +#line 1111 "glslang/MachineIndependent/glslang.y" + { (yyval.interm).type = (yyvsp[-5].interm).type; TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-5].interm).type, (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-5].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 5587 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5793 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 124: -#line 1115 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 124: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER EQUAL initializer */ +#line 1116 "glslang/MachineIndependent/glslang.y" + { (yyval.interm).type = (yyvsp[-4].interm).type; TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 5597 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5803 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 125: -#line 1123 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 125: /* single_declaration: fully_specified_type */ +#line 1124 "glslang/MachineIndependent/glslang.y" + { (yyval.interm).type = (yyvsp[0].interm.type); (yyval.interm).intermNode = 0; parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type); } -#line 5609 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5815 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 126: -#line 1130 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 126: /* single_declaration: fully_specified_type IDENTIFIER */ +#line 1131 "glslang/MachineIndependent/glslang.y" + { (yyval.interm).type = (yyvsp[-1].interm.type); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type)); } -#line 5619 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5825 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 127: -#line 1135 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 127: /* single_declaration: fully_specified_type IDENTIFIER array_specifier */ +#line 1136 "glslang/MachineIndependent/glslang.y" + { (yyval.interm).type = (yyvsp[-2].interm.type); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes); } -#line 5629 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5835 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 128: -#line 1140 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 128: /* single_declaration: fully_specified_type IDENTIFIER array_specifier EQUAL initializer */ +#line 1141 "glslang/MachineIndependent/glslang.y" + { (yyval.interm).type = (yyvsp[-4].interm.type); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-4].interm.type), (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 5639 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5845 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 129: -#line 1145 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 129: /* single_declaration: fully_specified_type IDENTIFIER EQUAL initializer */ +#line 1146 "glslang/MachineIndependent/glslang.y" + { (yyval.interm).type = (yyvsp[-3].interm.type); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 5649 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5855 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 130: -#line 1154 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 130: /* fully_specified_type: type_specifier */ +#line 1155 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type) = (yyvsp[0].interm.type); parseContext.globalQualifierTypeCheck((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier, (yyval.interm.type)); @@ -5660,12 +5866,12 @@ yyreduce: } parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier); } -#line 5664 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5870 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 131: -#line 1164 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 131: /* fully_specified_type: type_qualifier type_specifier */ +#line 1165 "glslang/MachineIndependent/glslang.y" + { 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)); @@ -5689,71 +5895,71 @@ yyreduce: (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn))) (yyval.interm.type).qualifier.smooth = true; } -#line 5693 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5899 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 132: -#line 1191 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 132: /* invariant_qualifier: INVARIANT */ +#line 1192 "glslang/MachineIndependent/glslang.y" + { parseContext.globalCheck((yyvsp[0].lex).loc, "invariant"); parseContext.profileRequires((yyval.interm.type).loc, ENoProfile, 120, 0, "invariant"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.invariant = true; } -#line 5704 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5910 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 133: -#line 1200 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 133: /* interpolation_qualifier: SMOOTH */ +#line 1201 "glslang/MachineIndependent/glslang.y" + { parseContext.globalCheck((yyvsp[0].lex).loc, "smooth"); parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "smooth"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "smooth"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.smooth = true; } -#line 5716 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5922 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 134: -#line 1207 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 134: /* interpolation_qualifier: FLAT */ +#line 1208 "glslang/MachineIndependent/glslang.y" + { parseContext.globalCheck((yyvsp[0].lex).loc, "flat"); parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "flat"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "flat"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.flat = true; } -#line 5728 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5934 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 135: -#line 1215 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 135: /* interpolation_qualifier: NOPERSPECTIVE */ +#line 1216 "glslang/MachineIndependent/glslang.y" + { parseContext.globalCheck((yyvsp[0].lex).loc, "noperspective"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 0, E_GL_NV_shader_noperspective_interpolation, "noperspective"); parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "noperspective"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nopersp = true; } -#line 5740 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5946 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 136: -#line 1222 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 136: /* interpolation_qualifier: EXPLICITINTERPAMD */ +#line 1223 "glslang/MachineIndependent/glslang.y" + { parseContext.globalCheck((yyvsp[0].lex).loc, "__explicitInterpAMD"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); parseContext.profileRequires((yyvsp[0].lex).loc, ECompatibilityProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.explicitInterp = true; } -#line 5752 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5958 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 137: -#line 1229 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 137: /* interpolation_qualifier: PERVERTEXNV */ +#line 1230 "glslang/MachineIndependent/glslang.y" + { parseContext.globalCheck((yyvsp[0].lex).loc, "pervertexNV"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); parseContext.profileRequires((yyvsp[0].lex).loc, ECompatibilityProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); @@ -5761,12 +5967,12 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.pervertexNV = true; } -#line 5765 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5971 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 138: -#line 1237 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 138: /* interpolation_qualifier: PERPRIMITIVENV */ +#line 1238 "glslang/MachineIndependent/glslang.y" + { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangFragmentMask | EShLangMeshNVMask), "perprimitiveNV"); @@ -5776,109 +5982,109 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perPrimitiveNV = true; } -#line 5780 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5986 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 139: -#line 1247 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 139: /* interpolation_qualifier: PERVIEWNV */ +#line 1248 "glslang/MachineIndependent/glslang.y" + { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perviewNV"); parseContext.requireStage((yyvsp[0].lex).loc, EShLangMeshNV, "perviewNV"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perViewNV = true; } -#line 5792 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5998 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 140: -#line 1254 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 140: /* interpolation_qualifier: PERTASKNV */ +#line 1255 "glslang/MachineIndependent/glslang.y" + { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "taskNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTaskNVMask | EShLangMeshNVMask), "taskNV"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perTaskNV = true; } -#line 5804 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6010 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 141: -#line 1265 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 141: /* layout_qualifier: LAYOUT LEFT_PAREN layout_qualifier_id_list RIGHT_PAREN */ +#line 1266 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type) = (yyvsp[-1].interm.type); } -#line 5812 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6018 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 142: -#line 1271 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 142: /* layout_qualifier_id_list: layout_qualifier_id */ +#line 1272 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5820 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6026 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 143: -#line 1274 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 143: /* layout_qualifier_id_list: layout_qualifier_id_list COMMA layout_qualifier_id */ +#line 1275 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type) = (yyvsp[-2].interm.type); (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 5830 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6036 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 144: -#line 1281 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 144: /* layout_qualifier_id: IDENTIFIER */ +#line 1282 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string); } -#line 5839 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6045 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 145: -#line 1285 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 145: /* layout_qualifier_id: IDENTIFIER EQUAL constant_expression */ +#line 1286 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[-2].lex).loc); parseContext.setLayoutQualifier((yyvsp[-2].lex).loc, (yyval.interm.type), *(yyvsp[-2].lex).string, (yyvsp[0].interm.intermTypedNode)); } -#line 5848 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6054 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 146: -#line 1289 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { // because "shared" is both an identifier and a keyword + case 146: /* layout_qualifier_id: SHARED */ +#line 1290 "glslang/MachineIndependent/glslang.y" + { // because "shared" is both an identifier and a keyword (yyval.interm.type).init((yyvsp[0].lex).loc); TString strShared("shared"); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), strShared); } -#line 5858 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6064 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 147: -#line 1298 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 147: /* precise_qualifier: PRECISE */ +#line 1299 "glslang/MachineIndependent/glslang.y" + { parseContext.profileRequires((yyval.interm.type).loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "precise"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.noContraction = true; } -#line 5869 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6075 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 148: -#line 1308 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 148: /* type_qualifier: single_type_qualifier */ +#line 1309 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5877 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6083 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 149: -#line 1311 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 149: /* type_qualifier: type_qualifier single_type_qualifier */ +#line 1312 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type) = (yyvsp[-1].interm.type); if ((yyval.interm.type).basicType == EbtVoid) (yyval.interm.type).basicType = (yyvsp[0].interm.type).basicType; @@ -5886,135 +6092,135 @@ 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 5890 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6096 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 150: -#line 1322 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 150: /* single_type_qualifier: storage_qualifier */ +#line 1323 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5898 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6104 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 151: -#line 1325 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 151: /* single_type_qualifier: layout_qualifier */ +#line 1326 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5906 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6112 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 152: -#line 1328 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 152: /* single_type_qualifier: precision_qualifier */ +#line 1329 "glslang/MachineIndependent/glslang.y" + { parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5915 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6121 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 153: -#line 1332 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 153: /* single_type_qualifier: interpolation_qualifier */ +#line 1333 "glslang/MachineIndependent/glslang.y" + { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5924 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6130 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 154: -#line 1336 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 154: /* single_type_qualifier: invariant_qualifier */ +#line 1337 "glslang/MachineIndependent/glslang.y" + { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5933 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6139 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 155: -#line 1341 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 155: /* single_type_qualifier: precise_qualifier */ +#line 1342 "glslang/MachineIndependent/glslang.y" + { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5942 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6148 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 156: -#line 1345 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 156: /* single_type_qualifier: non_uniform_qualifier */ +#line 1346 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5950 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6156 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 157: -#line 1352 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 157: /* storage_qualifier: CONST */ +#line 1353 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqConst; // will later turn into EvqConstReadOnly, if the initializer is not constant } -#line 5959 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6165 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 158: -#line 1356 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 158: /* storage_qualifier: INOUT */ +#line 1357 "glslang/MachineIndependent/glslang.y" + { parseContext.globalCheck((yyvsp[0].lex).loc, "inout"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqInOut; } -#line 5969 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6175 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 159: -#line 1361 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 159: /* storage_qualifier: IN */ +#line 1362 "glslang/MachineIndependent/glslang.y" + { parseContext.globalCheck((yyvsp[0].lex).loc, "in"); (yyval.interm.type).init((yyvsp[0].lex).loc); // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqIn; } -#line 5980 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6186 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 160: -#line 1367 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 160: /* storage_qualifier: OUT */ +#line 1368 "glslang/MachineIndependent/glslang.y" + { parseContext.globalCheck((yyvsp[0].lex).loc, "out"); (yyval.interm.type).init((yyvsp[0].lex).loc); // whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqOut; } -#line 5991 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6197 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 161: -#line 1373 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 161: /* storage_qualifier: CENTROID */ +#line 1374 "glslang/MachineIndependent/glslang.y" + { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, 0, "centroid"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "centroid"); parseContext.globalCheck((yyvsp[0].lex).loc, "centroid"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.centroid = true; } -#line 6003 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6209 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 162: -#line 1380 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 162: /* storage_qualifier: UNIFORM */ +#line 1381 "glslang/MachineIndependent/glslang.y" + { parseContext.globalCheck((yyvsp[0].lex).loc, "uniform"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqUniform; } -#line 6013 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6219 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 163: -#line 1385 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 163: /* storage_qualifier: SHARED */ +#line 1386 "glslang/MachineIndependent/glslang.y" + { parseContext.globalCheck((yyvsp[0].lex).loc, "shared"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 310, 0, "shared"); @@ -6022,22 +6228,22 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqShared; } -#line 6026 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6232 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 164: -#line 1393 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 164: /* storage_qualifier: BUFFER */ +#line 1394 "glslang/MachineIndependent/glslang.y" + { parseContext.globalCheck((yyvsp[0].lex).loc, "buffer"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqBuffer; } -#line 6036 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6242 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 165: -#line 1399 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 165: /* storage_qualifier: ATTRIBUTE */ +#line 1400 "glslang/MachineIndependent/glslang.y" + { parseContext.requireStage((yyvsp[0].lex).loc, EShLangVertex, "attribute"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "attribute"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "attribute"); @@ -6049,12 +6255,12 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 6053 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6259 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 166: -#line 1411 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 166: /* storage_qualifier: VARYING */ +#line 1412 "glslang/MachineIndependent/glslang.y" + { parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "varying"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "varying"); parseContext.requireNotRemoved((yyvsp[0].lex).loc, ECoreProfile, 420, "varying"); @@ -6068,33 +6274,33 @@ yyreduce: else (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 6072 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6278 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 167: -#line 1425 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 167: /* storage_qualifier: PATCH */ +#line 1426 "glslang/MachineIndependent/glslang.y" + { parseContext.globalCheck((yyvsp[0].lex).loc, "patch"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.patch = true; } -#line 6083 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6289 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 168: -#line 1431 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 168: /* storage_qualifier: SAMPLE */ +#line 1432 "glslang/MachineIndependent/glslang.y" + { parseContext.globalCheck((yyvsp[0].lex).loc, "sample"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.sample = true; } -#line 6093 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6299 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 169: -#line 1436 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 169: /* storage_qualifier: HITATTRNV */ +#line 1437 "glslang/MachineIndependent/glslang.y" + { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask | EShLangAnyHitMask), "hitAttributeNV"); @@ -6102,12 +6308,12 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 6106 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6312 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 170: -#line 1444 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 170: /* storage_qualifier: HITATTREXT */ +#line 1445 "glslang/MachineIndependent/glslang.y" + { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask | EShLangAnyHitMask), "hitAttributeEXT"); @@ -6115,12 +6321,12 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 6119 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6325 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 171: -#line 1452 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 171: /* storage_qualifier: PAYLOADNV */ +#line 1453 "glslang/MachineIndependent/glslang.y" + { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | EShLangAnyHitMask | EShLangMissMask), "rayPayloadNV"); @@ -6128,12 +6334,12 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 6132 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6338 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 172: -#line 1460 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 172: /* storage_qualifier: PAYLOADEXT */ +#line 1461 "glslang/MachineIndependent/glslang.y" + { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | EShLangAnyHitMask | EShLangMissMask), "rayPayloadEXT"); @@ -6141,12 +6347,12 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 6145 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6351 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 173: -#line 1468 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 173: /* storage_qualifier: PAYLOADINNV */ +#line 1469 "glslang/MachineIndependent/glslang.y" + { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask | EShLangAnyHitMask | EShLangMissMask), "rayPayloadInNV"); @@ -6154,12 +6360,12 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 6158 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6364 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 174: -#line 1476 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 174: /* storage_qualifier: PAYLOADINEXT */ +#line 1477 "glslang/MachineIndependent/glslang.y" + { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask | EShLangAnyHitMask | EShLangMissMask), "rayPayloadInEXT"); @@ -6167,12 +6373,12 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 6171 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6377 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 175: -#line 1484 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 175: /* storage_qualifier: CALLDATANV */ +#line 1485 "glslang/MachineIndependent/glslang.y" + { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | EShLangMissMask | EShLangCallableMask), "callableDataNV"); @@ -6180,12 +6386,12 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 6184 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6390 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 176: -#line 1492 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 176: /* storage_qualifier: CALLDATAEXT */ +#line 1493 "glslang/MachineIndependent/glslang.y" + { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | EShLangMissMask | EShLangCallableMask), "callableDataEXT"); @@ -6193,222 +6399,222 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 6197 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6403 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 177: -#line 1500 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 177: /* storage_qualifier: CALLDATAINNV */ +#line 1501 "glslang/MachineIndependent/glslang.y" + { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInNV"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "callableDataInNV"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 6209 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6415 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 178: -#line 1507 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 178: /* storage_qualifier: CALLDATAINEXT */ +#line 1508 "glslang/MachineIndependent/glslang.y" + { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInEXT"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "callableDataInEXT"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 6221 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6427 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 179: -#line 1514 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 179: /* storage_qualifier: COHERENT */ +#line 1515 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.coherent = true; } -#line 6230 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6436 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 180: -#line 1518 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 180: /* storage_qualifier: DEVICECOHERENT */ +#line 1519 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "devicecoherent"); (yyval.interm.type).qualifier.devicecoherent = true; } -#line 6240 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6446 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 181: -#line 1523 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 181: /* storage_qualifier: QUEUEFAMILYCOHERENT */ +#line 1524 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "queuefamilycoherent"); (yyval.interm.type).qualifier.queuefamilycoherent = true; } -#line 6250 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6456 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 182: -#line 1528 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 182: /* storage_qualifier: WORKGROUPCOHERENT */ +#line 1529 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "workgroupcoherent"); (yyval.interm.type).qualifier.workgroupcoherent = true; } -#line 6260 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6466 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 183: -#line 1533 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 183: /* storage_qualifier: SUBGROUPCOHERENT */ +#line 1534 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "subgroupcoherent"); (yyval.interm.type).qualifier.subgroupcoherent = true; } -#line 6270 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6476 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 184: -#line 1538 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 184: /* storage_qualifier: NONPRIVATE */ +#line 1539 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "nonprivate"); (yyval.interm.type).qualifier.nonprivate = true; } -#line 6280 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6486 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 185: -#line 1543 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 185: /* storage_qualifier: SHADERCALLCOHERENT */ +#line 1544 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_ray_tracing, "shadercallcoherent"); (yyval.interm.type).qualifier.shadercallcoherent = true; } -#line 6290 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6496 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 186: -#line 1548 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 186: /* storage_qualifier: VOLATILE */ +#line 1549 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.volatil = true; } -#line 6299 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6505 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 187: -#line 1552 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 187: /* storage_qualifier: RESTRICT */ +#line 1553 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.restrict = true; } -#line 6308 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6514 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 188: -#line 1556 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 188: /* storage_qualifier: READONLY */ +#line 1557 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.readonly = true; } -#line 6317 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6523 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 189: -#line 1560 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 189: /* storage_qualifier: WRITEONLY */ +#line 1561 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.writeonly = true; } -#line 6326 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6532 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 190: -#line 1564 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 190: /* storage_qualifier: SUBROUTINE */ +#line 1565 "glslang/MachineIndependent/glslang.y" + { parseContext.spvRemoved((yyvsp[0].lex).loc, "subroutine"); parseContext.globalCheck((yyvsp[0].lex).loc, "subroutine"); parseContext.unimplemented((yyvsp[0].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[0].lex).loc); } -#line 6337 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6543 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 191: -#line 1570 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 191: /* storage_qualifier: SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN */ +#line 1571 "glslang/MachineIndependent/glslang.y" + { parseContext.spvRemoved((yyvsp[-3].lex).loc, "subroutine"); parseContext.globalCheck((yyvsp[-3].lex).loc, "subroutine"); parseContext.unimplemented((yyvsp[-3].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[-3].lex).loc); } -#line 6348 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6554 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 192: -#line 1581 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 192: /* non_uniform_qualifier: NONUNIFORM */ +#line 1582 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nonUniform = true; } -#line 6357 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6563 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 193: -#line 1588 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 193: /* type_name_list: IDENTIFIER */ +#line 1589 "glslang/MachineIndependent/glslang.y" + { // TODO } -#line 6365 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6571 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 194: -#line 1591 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 194: /* type_name_list: type_name_list COMMA IDENTIFIER */ +#line 1592 "glslang/MachineIndependent/glslang.y" + { // TODO: 4.0 semantics: subroutines // 1) make sure each identifier is a type declared earlier with SUBROUTINE // 2) save all of the identifiers for future comparison with the declared function } -#line 6375 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6581 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 195: -#line 1600 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 195: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt */ +#line 1601 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type) = (yyvsp[-1].interm.type); (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); (yyval.interm.type).typeParameters = (yyvsp[0].interm.typeParameters); } -#line 6385 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6591 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 196: -#line 1605 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 196: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt array_specifier */ +#line 1606 "glslang/MachineIndependent/glslang.y" + { parseContext.arrayOfArrayVersionCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes); (yyval.interm.type) = (yyvsp[-2].interm.type); (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); (yyval.interm.type).typeParameters = (yyvsp[-1].interm.typeParameters); (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes; } -#line 6397 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6603 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 197: -#line 1615 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 197: /* array_specifier: LEFT_BRACKET RIGHT_BRACKET */ +#line 1616 "glslang/MachineIndependent/glslang.y" + { (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).arraySizes = new TArraySizes; (yyval.interm).arraySizes->addInnerSize(); } -#line 6407 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6613 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 198: -#line 1620 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 198: /* array_specifier: LEFT_BRACKET conditional_expression RIGHT_BRACKET */ +#line 1621 "glslang/MachineIndependent/glslang.y" + { (yyval.interm).loc = (yyvsp[-2].lex).loc; (yyval.interm).arraySizes = new TArraySizes; @@ -6416,492 +6622,492 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 6420 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6626 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 199: -#line 1628 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 199: /* array_specifier: array_specifier LEFT_BRACKET RIGHT_BRACKET */ +#line 1629 "glslang/MachineIndependent/glslang.y" + { (yyval.interm) = (yyvsp[-2].interm); (yyval.interm).arraySizes->addInnerSize(); } -#line 6429 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6635 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 200: -#line 1632 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 200: /* array_specifier: array_specifier LEFT_BRACKET conditional_expression RIGHT_BRACKET */ +#line 1633 "glslang/MachineIndependent/glslang.y" + { (yyval.interm) = (yyvsp[-3].interm); TArraySize size; parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 6441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6647 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 201: -#line 1642 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 201: /* type_parameter_specifier_opt: type_parameter_specifier */ +#line 1643 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.typeParameters) = (yyvsp[0].interm.typeParameters); } -#line 6449 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6655 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 202: -#line 1645 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 202: /* type_parameter_specifier_opt: %empty */ +#line 1646 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.typeParameters) = 0; } -#line 6457 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6663 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 203: -#line 1651 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 203: /* type_parameter_specifier: LEFT_ANGLE type_parameter_specifier_list RIGHT_ANGLE */ +#line 1652 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.typeParameters) = (yyvsp[-1].interm.typeParameters); } -#line 6465 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6671 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 204: -#line 1657 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 204: /* type_parameter_specifier_list: unary_expression */ +#line 1658 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.typeParameters) = new TArraySizes; TArraySize size; parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); (yyval.interm.typeParameters)->addInnerSize(size); } -#line 6477 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6683 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 205: -#line 1664 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 205: /* type_parameter_specifier_list: type_parameter_specifier_list COMMA unary_expression */ +#line 1665 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.typeParameters) = (yyvsp[-2].interm.typeParameters); TArraySize size; parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); (yyval.interm.typeParameters)->addInnerSize(size); } -#line 6489 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6695 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 206: -#line 1674 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 206: /* type_specifier_nonarray: VOID */ +#line 1675 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtVoid; } -#line 6498 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6704 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 207: -#line 1678 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 207: /* type_specifier_nonarray: FLOAT */ +#line 1679 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 6507 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6713 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 208: -#line 1682 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 208: /* type_specifier_nonarray: INT */ +#line 1683 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 6516 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6722 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 209: -#line 1686 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 209: /* type_specifier_nonarray: UINT */ +#line 1687 "glslang/MachineIndependent/glslang.y" + { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 6526 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6732 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 210: -#line 1691 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 210: /* type_specifier_nonarray: BOOL */ +#line 1692 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; } -#line 6535 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6741 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 211: -#line 1695 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 211: /* type_specifier_nonarray: VEC2 */ +#line 1696 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 6545 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6751 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 212: -#line 1700 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 212: /* type_specifier_nonarray: VEC3 */ +#line 1701 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 6555 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6761 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 213: -#line 1705 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 213: /* type_specifier_nonarray: VEC4 */ +#line 1706 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 6565 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6771 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 214: -#line 1710 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 214: /* type_specifier_nonarray: BVEC2 */ +#line 1711 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(2); } -#line 6575 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6781 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 215: -#line 1715 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 215: /* type_specifier_nonarray: BVEC3 */ +#line 1716 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(3); } -#line 6585 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6791 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 216: -#line 1720 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 216: /* type_specifier_nonarray: BVEC4 */ +#line 1721 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(4); } -#line 6595 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6801 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 217: -#line 1725 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 217: /* type_specifier_nonarray: IVEC2 */ +#line 1726 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 6605 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6811 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 218: -#line 1730 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 218: /* type_specifier_nonarray: IVEC3 */ +#line 1731 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 6615 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6821 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 219: -#line 1735 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 219: /* type_specifier_nonarray: IVEC4 */ +#line 1736 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 6625 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6831 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 220: -#line 1740 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 220: /* type_specifier_nonarray: UVEC2 */ +#line 1741 "glslang/MachineIndependent/glslang.y" + { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 6636 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6842 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 221: -#line 1746 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 221: /* type_specifier_nonarray: UVEC3 */ +#line 1747 "glslang/MachineIndependent/glslang.y" + { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 6647 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6853 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 222: -#line 1752 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 222: /* type_specifier_nonarray: UVEC4 */ +#line 1753 "glslang/MachineIndependent/glslang.y" + { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 6658 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6864 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 223: -#line 1758 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 223: /* type_specifier_nonarray: MAT2 */ +#line 1759 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 6668 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6874 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 224: -#line 1763 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 224: /* type_specifier_nonarray: MAT3 */ +#line 1764 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 6678 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6884 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 225: -#line 1768 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 225: /* type_specifier_nonarray: MAT4 */ +#line 1769 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 6688 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6894 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 226: -#line 1773 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 226: /* type_specifier_nonarray: MAT2X2 */ +#line 1774 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 6698 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6904 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 227: -#line 1778 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 227: /* type_specifier_nonarray: MAT2X3 */ +#line 1779 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 6708 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6914 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 228: -#line 1783 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 228: /* type_specifier_nonarray: MAT2X4 */ +#line 1784 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 6718 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6924 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 229: -#line 1788 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 229: /* type_specifier_nonarray: MAT3X2 */ +#line 1789 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 6728 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6934 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 230: -#line 1793 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 230: /* type_specifier_nonarray: MAT3X3 */ +#line 1794 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 6738 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6944 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 231: -#line 1798 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 231: /* type_specifier_nonarray: MAT3X4 */ +#line 1799 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 6748 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6954 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 232: -#line 1803 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 232: /* type_specifier_nonarray: MAT4X2 */ +#line 1804 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 6758 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6964 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 233: -#line 1808 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 233: /* type_specifier_nonarray: MAT4X3 */ +#line 1809 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 6768 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6974 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 234: -#line 1813 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 234: /* type_specifier_nonarray: MAT4X4 */ +#line 1814 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 6778 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6984 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 235: -#line 1819 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 235: /* type_specifier_nonarray: DOUBLE */ +#line 1820 "glslang/MachineIndependent/glslang.y" + { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 6790 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6996 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 236: -#line 1826 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 236: /* type_specifier_nonarray: FLOAT16_T */ +#line 1827 "glslang/MachineIndependent/glslang.y" + { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "float16_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; } -#line 6800 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7006 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 237: -#line 1831 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 237: /* type_specifier_nonarray: FLOAT32_T */ +#line 1832 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 6810 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7016 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 238: -#line 1836 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 238: /* type_specifier_nonarray: FLOAT64_T */ +#line 1837 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 6820 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7026 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 239: -#line 1841 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 239: /* type_specifier_nonarray: INT8_T */ +#line 1842 "glslang/MachineIndependent/glslang.y" + { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; } -#line 6830 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7036 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 240: -#line 1846 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 240: /* type_specifier_nonarray: UINT8_T */ +#line 1847 "glslang/MachineIndependent/glslang.y" + { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; } -#line 6840 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7046 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 241: -#line 1851 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 241: /* type_specifier_nonarray: INT16_T */ +#line 1852 "glslang/MachineIndependent/glslang.y" + { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; } -#line 6850 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7056 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 242: -#line 1856 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 242: /* type_specifier_nonarray: UINT16_T */ +#line 1857 "glslang/MachineIndependent/glslang.y" + { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; } -#line 6860 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7066 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 243: -#line 1861 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 243: /* type_specifier_nonarray: INT32_T */ +#line 1862 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 6870 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7076 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 244: -#line 1866 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 244: /* type_specifier_nonarray: UINT32_T */ +#line 1867 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 6880 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7086 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 245: -#line 1871 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 245: /* type_specifier_nonarray: INT64_T */ +#line 1872 "glslang/MachineIndependent/glslang.y" + { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; } -#line 6890 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7096 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 246: -#line 1876 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 246: /* type_specifier_nonarray: UINT64_T */ +#line 1877 "glslang/MachineIndependent/glslang.y" + { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; } -#line 6900 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7106 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 247: -#line 1881 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 247: /* type_specifier_nonarray: DVEC2 */ +#line 1882 "glslang/MachineIndependent/glslang.y" + { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector"); @@ -6909,12 +7115,12 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 6913 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7119 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 248: -#line 1889 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 248: /* type_specifier_nonarray: DVEC3 */ +#line 1890 "glslang/MachineIndependent/glslang.y" + { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector"); @@ -6922,12 +7128,12 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 6926 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7132 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 249: -#line 1897 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 249: /* type_specifier_nonarray: DVEC4 */ +#line 1898 "glslang/MachineIndependent/glslang.y" + { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector"); @@ -6935,375 +7141,375 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 6939 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7145 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 250: -#line 1905 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 250: /* type_specifier_nonarray: F16VEC2 */ +#line 1906 "glslang/MachineIndependent/glslang.y" + { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(2); } -#line 6950 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7156 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 251: -#line 1911 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 251: /* type_specifier_nonarray: F16VEC3 */ +#line 1912 "glslang/MachineIndependent/glslang.y" + { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(3); } -#line 6961 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7167 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 252: -#line 1917 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 252: /* type_specifier_nonarray: F16VEC4 */ +#line 1918 "glslang/MachineIndependent/glslang.y" + { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(4); } -#line 6972 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7178 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 253: -#line 1923 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 253: /* type_specifier_nonarray: F32VEC2 */ +#line 1924 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 6983 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7189 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 254: -#line 1929 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 254: /* type_specifier_nonarray: F32VEC3 */ +#line 1930 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 6994 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7200 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 255: -#line 1935 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 255: /* type_specifier_nonarray: F32VEC4 */ +#line 1936 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 7005 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7211 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 256: -#line 1941 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 256: /* type_specifier_nonarray: F64VEC2 */ +#line 1942 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 7016 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7222 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 257: -#line 1947 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 257: /* type_specifier_nonarray: F64VEC3 */ +#line 1948 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 7027 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7233 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 258: -#line 1953 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 258: /* type_specifier_nonarray: F64VEC4 */ +#line 1954 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 7038 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7244 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 259: -#line 1959 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 259: /* type_specifier_nonarray: I8VEC2 */ +#line 1960 "glslang/MachineIndependent/glslang.y" + { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(2); } -#line 7049 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7255 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 260: -#line 1965 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 260: /* type_specifier_nonarray: I8VEC3 */ +#line 1966 "glslang/MachineIndependent/glslang.y" + { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(3); } -#line 7060 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7266 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 261: -#line 1971 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 261: /* type_specifier_nonarray: I8VEC4 */ +#line 1972 "glslang/MachineIndependent/glslang.y" + { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(4); } -#line 7071 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7277 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 262: -#line 1977 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 262: /* type_specifier_nonarray: I16VEC2 */ +#line 1978 "glslang/MachineIndependent/glslang.y" + { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(2); } -#line 7082 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7288 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 263: -#line 1983 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 263: /* type_specifier_nonarray: I16VEC3 */ +#line 1984 "glslang/MachineIndependent/glslang.y" + { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(3); } -#line 7093 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7299 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 264: -#line 1989 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 264: /* type_specifier_nonarray: I16VEC4 */ +#line 1990 "glslang/MachineIndependent/glslang.y" + { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(4); } -#line 7104 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7310 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 265: -#line 1995 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 265: /* type_specifier_nonarray: I32VEC2 */ +#line 1996 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 7115 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7321 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 266: -#line 2001 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 266: /* type_specifier_nonarray: I32VEC3 */ +#line 2002 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 7126 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7332 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 267: -#line 2007 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 267: /* type_specifier_nonarray: I32VEC4 */ +#line 2008 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 7137 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7343 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 268: -#line 2013 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 268: /* type_specifier_nonarray: I64VEC2 */ +#line 2014 "glslang/MachineIndependent/glslang.y" + { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(2); } -#line 7148 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7354 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 269: -#line 2019 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 269: /* type_specifier_nonarray: I64VEC3 */ +#line 2020 "glslang/MachineIndependent/glslang.y" + { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(3); } -#line 7159 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7365 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 270: -#line 2025 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 270: /* type_specifier_nonarray: I64VEC4 */ +#line 2026 "glslang/MachineIndependent/glslang.y" + { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(4); } -#line 7170 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7376 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 271: -#line 2031 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 271: /* type_specifier_nonarray: U8VEC2 */ +#line 2032 "glslang/MachineIndependent/glslang.y" + { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(2); } -#line 7181 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7387 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 272: -#line 2037 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 272: /* type_specifier_nonarray: U8VEC3 */ +#line 2038 "glslang/MachineIndependent/glslang.y" + { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(3); } -#line 7192 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7398 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 273: -#line 2043 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 273: /* type_specifier_nonarray: U8VEC4 */ +#line 2044 "glslang/MachineIndependent/glslang.y" + { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(4); } -#line 7203 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7409 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 274: -#line 2049 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 274: /* type_specifier_nonarray: U16VEC2 */ +#line 2050 "glslang/MachineIndependent/glslang.y" + { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(2); } -#line 7214 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7420 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 275: -#line 2055 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 275: /* type_specifier_nonarray: U16VEC3 */ +#line 2056 "glslang/MachineIndependent/glslang.y" + { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(3); } -#line 7225 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7431 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 276: -#line 2061 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 276: /* type_specifier_nonarray: U16VEC4 */ +#line 2062 "glslang/MachineIndependent/glslang.y" + { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(4); } -#line 7236 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7442 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 277: -#line 2067 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 277: /* type_specifier_nonarray: U32VEC2 */ +#line 2068 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 7247 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7453 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 278: -#line 2073 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 278: /* type_specifier_nonarray: U32VEC3 */ +#line 2074 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 7258 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7464 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 279: -#line 2079 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 279: /* type_specifier_nonarray: U32VEC4 */ +#line 2080 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 7269 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7475 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 280: -#line 2085 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 280: /* type_specifier_nonarray: U64VEC2 */ +#line 2086 "glslang/MachineIndependent/glslang.y" + { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(2); } -#line 7280 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7486 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 281: -#line 2091 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 281: /* type_specifier_nonarray: U64VEC3 */ +#line 2092 "glslang/MachineIndependent/glslang.y" + { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(3); } -#line 7291 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7497 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 282: -#line 2097 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 282: /* type_specifier_nonarray: U64VEC4 */ +#line 2098 "glslang/MachineIndependent/glslang.y" + { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(4); } -#line 7302 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7508 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 283: -#line 2103 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 283: /* type_specifier_nonarray: DMAT2 */ +#line 2104 "glslang/MachineIndependent/glslang.y" + { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); @@ -7311,12 +7517,12 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 7315 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7521 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 284: -#line 2111 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 284: /* type_specifier_nonarray: DMAT3 */ +#line 2112 "glslang/MachineIndependent/glslang.y" + { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); @@ -7324,12 +7530,12 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 7328 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7534 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 285: -#line 2119 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 285: /* type_specifier_nonarray: DMAT4 */ +#line 2120 "glslang/MachineIndependent/glslang.y" + { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); @@ -7337,12 +7543,12 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 7341 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7547 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 286: -#line 2127 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 286: /* type_specifier_nonarray: DMAT2X2 */ +#line 2128 "glslang/MachineIndependent/glslang.y" + { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); @@ -7350,12 +7556,12 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 7354 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7560 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 287: -#line 2135 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 287: /* type_specifier_nonarray: DMAT2X3 */ +#line 2136 "glslang/MachineIndependent/glslang.y" + { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); @@ -7363,12 +7569,12 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 7367 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7573 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 288: -#line 2143 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 288: /* type_specifier_nonarray: DMAT2X4 */ +#line 2144 "glslang/MachineIndependent/glslang.y" + { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); @@ -7376,12 +7582,12 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 7380 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7586 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 289: -#line 2151 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 289: /* type_specifier_nonarray: DMAT3X2 */ +#line 2152 "glslang/MachineIndependent/glslang.y" + { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); @@ -7389,12 +7595,12 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 7393 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7599 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 290: -#line 2159 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 290: /* type_specifier_nonarray: DMAT3X3 */ +#line 2160 "glslang/MachineIndependent/glslang.y" + { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); @@ -7402,12 +7608,12 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 7406 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7612 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 291: -#line 2167 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 291: /* type_specifier_nonarray: DMAT3X4 */ +#line 2168 "glslang/MachineIndependent/glslang.y" + { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); @@ -7415,12 +7621,12 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 7419 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7625 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 292: -#line 2175 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 292: /* type_specifier_nonarray: DMAT4X2 */ +#line 2176 "glslang/MachineIndependent/glslang.y" + { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); @@ -7428,12 +7634,12 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 7432 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7638 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 293: -#line 2183 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 293: /* type_specifier_nonarray: DMAT4X3 */ +#line 2184 "glslang/MachineIndependent/glslang.y" + { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); @@ -7441,12 +7647,12 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 7445 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7651 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 294: -#line 2191 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 294: /* type_specifier_nonarray: DMAT4X4 */ +#line 2192 "glslang/MachineIndependent/glslang.y" + { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); @@ -7454,2340 +7660,2340 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 7458 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7664 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 295: -#line 2199 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 295: /* type_specifier_nonarray: F16MAT2 */ +#line 2200 "glslang/MachineIndependent/glslang.y" + { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 2); } -#line 7469 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7675 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 296: -#line 2205 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 296: /* type_specifier_nonarray: F16MAT3 */ +#line 2206 "glslang/MachineIndependent/glslang.y" + { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 3); } -#line 7480 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7686 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 297: -#line 2211 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 297: /* type_specifier_nonarray: F16MAT4 */ +#line 2212 "glslang/MachineIndependent/glslang.y" + { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 7491 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7697 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 298: -#line 2217 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 298: /* type_specifier_nonarray: F16MAT2X2 */ +#line 2218 "glslang/MachineIndependent/glslang.y" + { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 2); } -#line 7502 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7708 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 299: -#line 2223 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 299: /* type_specifier_nonarray: F16MAT2X3 */ +#line 2224 "glslang/MachineIndependent/glslang.y" + { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 3); } -#line 7513 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7719 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 300: -#line 2229 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 300: /* type_specifier_nonarray: F16MAT2X4 */ +#line 2230 "glslang/MachineIndependent/glslang.y" + { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 4); } -#line 7524 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7730 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 301: -#line 2235 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 301: /* type_specifier_nonarray: F16MAT3X2 */ +#line 2236 "glslang/MachineIndependent/glslang.y" + { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 2); } -#line 7535 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7741 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 302: -#line 2241 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 302: /* type_specifier_nonarray: F16MAT3X3 */ +#line 2242 "glslang/MachineIndependent/glslang.y" + { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 3); } -#line 7546 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7752 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 303: -#line 2247 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 303: /* type_specifier_nonarray: F16MAT3X4 */ +#line 2248 "glslang/MachineIndependent/glslang.y" + { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 4); } -#line 7557 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7763 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 304: -#line 2253 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 304: /* type_specifier_nonarray: F16MAT4X2 */ +#line 2254 "glslang/MachineIndependent/glslang.y" + { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 2); } -#line 7568 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7774 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 305: -#line 2259 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 305: /* type_specifier_nonarray: F16MAT4X3 */ +#line 2260 "glslang/MachineIndependent/glslang.y" + { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 3); } -#line 7579 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7785 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 306: -#line 2265 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 306: /* type_specifier_nonarray: F16MAT4X4 */ +#line 2266 "glslang/MachineIndependent/glslang.y" + { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 7590 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7796 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 307: -#line 2271 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 307: /* type_specifier_nonarray: F32MAT2 */ +#line 2272 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 7601 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7807 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 308: -#line 2277 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 308: /* type_specifier_nonarray: F32MAT3 */ +#line 2278 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 7612 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7818 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 309: -#line 2283 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 309: /* type_specifier_nonarray: F32MAT4 */ +#line 2284 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7623 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7829 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 310: -#line 2289 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 310: /* type_specifier_nonarray: F32MAT2X2 */ +#line 2290 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 7634 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7840 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 311: -#line 2295 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 311: /* type_specifier_nonarray: F32MAT2X3 */ +#line 2296 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 7645 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7851 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 312: -#line 2301 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 312: /* type_specifier_nonarray: F32MAT2X4 */ +#line 2302 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 7656 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7862 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 313: -#line 2307 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 313: /* type_specifier_nonarray: F32MAT3X2 */ +#line 2308 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 7667 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7873 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 314: -#line 2313 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 314: /* type_specifier_nonarray: F32MAT3X3 */ +#line 2314 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 7678 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7884 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 315: -#line 2319 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 315: /* type_specifier_nonarray: F32MAT3X4 */ +#line 2320 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 7689 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7895 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 316: -#line 2325 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 316: /* type_specifier_nonarray: F32MAT4X2 */ +#line 2326 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 7700 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7906 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 317: -#line 2331 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 317: /* type_specifier_nonarray: F32MAT4X3 */ +#line 2332 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 7711 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7917 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 318: -#line 2337 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 318: /* type_specifier_nonarray: F32MAT4X4 */ +#line 2338 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7722 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7928 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 319: -#line 2343 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 319: /* type_specifier_nonarray: F64MAT2 */ +#line 2344 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 7733 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7939 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 320: -#line 2349 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 320: /* type_specifier_nonarray: F64MAT3 */ +#line 2350 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 7744 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7950 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 321: -#line 2355 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 321: /* type_specifier_nonarray: F64MAT4 */ +#line 2356 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 7755 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7961 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 322: -#line 2361 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 322: /* type_specifier_nonarray: F64MAT2X2 */ +#line 2362 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 7766 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7972 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 323: -#line 2367 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 323: /* type_specifier_nonarray: F64MAT2X3 */ +#line 2368 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 7777 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7983 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 324: -#line 2373 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 324: /* type_specifier_nonarray: F64MAT2X4 */ +#line 2374 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 7788 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7994 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 325: -#line 2379 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 325: /* type_specifier_nonarray: F64MAT3X2 */ +#line 2380 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 7799 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8005 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 326: -#line 2385 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 326: /* type_specifier_nonarray: F64MAT3X3 */ +#line 2386 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 7810 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8016 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 327: -#line 2391 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 327: /* type_specifier_nonarray: F64MAT3X4 */ +#line 2392 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 7821 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8027 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 328: -#line 2397 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 328: /* type_specifier_nonarray: F64MAT4X2 */ +#line 2398 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 7832 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8038 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 329: -#line 2403 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 329: /* type_specifier_nonarray: F64MAT4X3 */ +#line 2404 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 7843 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8049 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 330: -#line 2409 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 330: /* type_specifier_nonarray: F64MAT4X4 */ +#line 2410 "glslang/MachineIndependent/glslang.y" + { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 7854 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8060 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 331: -#line 2415 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 331: /* type_specifier_nonarray: ACCSTRUCTNV */ +#line 2416 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 7863 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8069 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 332: -#line 2419 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 332: /* type_specifier_nonarray: ACCSTRUCTEXT */ +#line 2420 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 7872 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8078 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 333: -#line 2423 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 333: /* type_specifier_nonarray: RAYQUERYEXT */ +#line 2424 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtRayQuery; } -#line 7881 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8087 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 334: -#line 2427 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 334: /* type_specifier_nonarray: ATOMIC_UINT */ +#line 2428 "glslang/MachineIndependent/glslang.y" + { parseContext.vulkanRemoved((yyvsp[0].lex).loc, "atomic counter types"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAtomicUint; } -#line 7891 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8097 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 335: -#line 2432 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 335: /* type_specifier_nonarray: SAMPLER1D */ +#line 2433 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D); } -#line 7901 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8107 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 336: -#line 2438 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 336: /* type_specifier_nonarray: SAMPLER2D */ +#line 2439 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); } -#line 7911 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8117 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 337: -#line 2443 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 337: /* type_specifier_nonarray: SAMPLER3D */ +#line 2444 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd3D); } -#line 7921 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8127 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 338: -#line 2448 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 338: /* type_specifier_nonarray: SAMPLERCUBE */ +#line 2449 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube); } -#line 7931 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8137 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 339: -#line 2453 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 339: /* type_specifier_nonarray: SAMPLER2DSHADOW */ +#line 2454 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true); } -#line 7941 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8147 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 340: -#line 2458 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 340: /* type_specifier_nonarray: SAMPLERCUBESHADOW */ +#line 2459 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true); } -#line 7951 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8157 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 341: -#line 2463 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 341: /* type_specifier_nonarray: SAMPLER2DARRAY */ +#line 2464 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true); } -#line 7961 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8167 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 342: -#line 2468 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 342: /* type_specifier_nonarray: SAMPLER2DARRAYSHADOW */ +#line 2469 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true); } -#line 7971 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8177 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 343: -#line 2474 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 343: /* type_specifier_nonarray: SAMPLER1DSHADOW */ +#line 2475 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true); } -#line 7981 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8187 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 344: -#line 2479 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 344: /* type_specifier_nonarray: SAMPLER1DARRAY */ +#line 2480 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true); } -#line 7991 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8197 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 345: -#line 2484 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 345: /* type_specifier_nonarray: SAMPLER1DARRAYSHADOW */ +#line 2485 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true); } -#line 8001 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8207 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 346: -#line 2489 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 346: /* type_specifier_nonarray: SAMPLERCUBEARRAY */ +#line 2490 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true); } -#line 8011 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8217 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 347: -#line 2494 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 347: /* type_specifier_nonarray: SAMPLERCUBEARRAYSHADOW */ +#line 2495 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true); } -#line 8021 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8227 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 348: -#line 2499 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 348: /* type_specifier_nonarray: F16SAMPLER1D */ +#line 2500 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D); } -#line 8032 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8238 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 349: -#line 2505 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 349: /* type_specifier_nonarray: F16SAMPLER2D */ +#line 2506 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D); } -#line 8043 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8249 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 350: -#line 2511 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 350: /* type_specifier_nonarray: F16SAMPLER3D */ +#line 2512 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd3D); } -#line 8054 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8260 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 351: -#line 2517 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 351: /* type_specifier_nonarray: F16SAMPLERCUBE */ +#line 2518 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube); } -#line 8065 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8271 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 352: -#line 2523 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 352: /* type_specifier_nonarray: F16SAMPLER1DSHADOW */ +#line 2524 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, false, true); } -#line 8076 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8282 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 353: -#line 2529 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 353: /* type_specifier_nonarray: F16SAMPLER2DSHADOW */ +#line 2530 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, true); } -#line 8087 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8293 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 354: -#line 2535 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 354: /* type_specifier_nonarray: F16SAMPLERCUBESHADOW */ +#line 2536 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, false, true); } -#line 8098 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8304 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 355: -#line 2541 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 355: /* type_specifier_nonarray: F16SAMPLER1DARRAY */ +#line 2542 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true); } -#line 8109 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8315 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 356: -#line 2547 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 356: /* type_specifier_nonarray: F16SAMPLER2DARRAY */ +#line 2548 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true); } -#line 8120 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8326 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 357: -#line 2553 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 357: /* type_specifier_nonarray: F16SAMPLER1DARRAYSHADOW */ +#line 2554 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true, true); } -#line 8131 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8337 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 358: -#line 2559 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 358: /* type_specifier_nonarray: F16SAMPLER2DARRAYSHADOW */ +#line 2560 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, true); } -#line 8142 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8348 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 359: -#line 2565 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 359: /* type_specifier_nonarray: F16SAMPLERCUBEARRAY */ +#line 2566 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true); } -#line 8153 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8359 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 360: -#line 2571 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 360: /* type_specifier_nonarray: F16SAMPLERCUBEARRAYSHADOW */ +#line 2572 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true, true); } -#line 8164 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8370 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 361: -#line 2577 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 361: /* type_specifier_nonarray: ISAMPLER1D */ +#line 2578 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D); } -#line 8174 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8380 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 362: -#line 2583 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 362: /* type_specifier_nonarray: ISAMPLER2D */ +#line 2584 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D); } -#line 8184 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8390 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 363: -#line 2588 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 363: /* type_specifier_nonarray: ISAMPLER3D */ +#line 2589 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd3D); } -#line 8194 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8400 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 364: -#line 2593 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 364: /* type_specifier_nonarray: ISAMPLERCUBE */ +#line 2594 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube); } -#line 8204 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8410 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 365: -#line 2598 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 365: /* type_specifier_nonarray: ISAMPLER2DARRAY */ +#line 2599 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true); } -#line 8214 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8420 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 366: -#line 2603 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 366: /* type_specifier_nonarray: USAMPLER2D */ +#line 2604 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D); } -#line 8224 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8430 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 367: -#line 2608 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 367: /* type_specifier_nonarray: USAMPLER3D */ +#line 2609 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd3D); } -#line 8234 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8440 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 368: -#line 2613 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 368: /* type_specifier_nonarray: USAMPLERCUBE */ +#line 2614 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube); } -#line 8244 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8450 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 369: -#line 2619 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 369: /* type_specifier_nonarray: ISAMPLER1DARRAY */ +#line 2620 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D, true); } -#line 8254 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8460 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 370: -#line 2624 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 370: /* type_specifier_nonarray: ISAMPLERCUBEARRAY */ +#line 2625 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube, true); } -#line 8264 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8470 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 371: -#line 2629 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 371: /* type_specifier_nonarray: USAMPLER1D */ +#line 2630 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D); } -#line 8274 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8480 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 372: -#line 2634 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 372: /* type_specifier_nonarray: USAMPLER1DARRAY */ +#line 2635 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D, true); } -#line 8284 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8490 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 373: -#line 2639 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 373: /* type_specifier_nonarray: USAMPLERCUBEARRAY */ +#line 2640 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube, true); } -#line 8294 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8500 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 374: -#line 2644 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 374: /* type_specifier_nonarray: TEXTURECUBEARRAY */ +#line 2645 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true); } -#line 8304 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8510 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 375: -#line 2649 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 375: /* type_specifier_nonarray: ITEXTURECUBEARRAY */ +#line 2650 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true); } -#line 8314 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8520 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 376: -#line 2654 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 376: /* type_specifier_nonarray: UTEXTURECUBEARRAY */ +#line 2655 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true); } -#line 8324 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8530 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 377: -#line 2660 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 377: /* type_specifier_nonarray: USAMPLER2DARRAY */ +#line 2661 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true); } -#line 8334 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8540 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 378: -#line 2665 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 378: /* type_specifier_nonarray: TEXTURE2D */ +#line 2666 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D); } -#line 8344 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8550 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 379: -#line 2670 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 379: /* type_specifier_nonarray: TEXTURE3D */ +#line 2671 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D); } -#line 8354 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8560 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 380: -#line 2675 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 380: /* type_specifier_nonarray: TEXTURE2DARRAY */ +#line 2676 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true); } -#line 8364 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8570 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 381: -#line 2680 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 381: /* type_specifier_nonarray: TEXTURECUBE */ +#line 2681 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube); } -#line 8374 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8580 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 382: -#line 2685 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 382: /* type_specifier_nonarray: ITEXTURE2D */ +#line 2686 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D); } -#line 8384 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8590 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 383: -#line 2690 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 383: /* type_specifier_nonarray: ITEXTURE3D */ +#line 2691 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D); } -#line 8394 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8600 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 384: -#line 2695 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 384: /* type_specifier_nonarray: ITEXTURECUBE */ +#line 2696 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube); } -#line 8404 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8610 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 385: -#line 2700 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 385: /* type_specifier_nonarray: ITEXTURE2DARRAY */ +#line 2701 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true); } -#line 8414 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8620 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 386: -#line 2705 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 386: /* type_specifier_nonarray: UTEXTURE2D */ +#line 2706 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D); } -#line 8424 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8630 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 387: -#line 2710 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 387: /* type_specifier_nonarray: UTEXTURE3D */ +#line 2711 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D); } -#line 8434 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8640 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 388: -#line 2715 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 388: /* type_specifier_nonarray: UTEXTURECUBE */ +#line 2716 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube); } -#line 8444 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8650 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 389: -#line 2720 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 389: /* type_specifier_nonarray: UTEXTURE2DARRAY */ +#line 2721 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true); } -#line 8454 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8660 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 390: -#line 2725 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 390: /* type_specifier_nonarray: SAMPLER */ +#line 2726 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(false); } -#line 8464 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8670 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 391: -#line 2730 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 391: /* type_specifier_nonarray: SAMPLERSHADOW */ +#line 2731 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(true); } -#line 8474 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8680 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 392: -#line 2736 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 392: /* type_specifier_nonarray: SAMPLER2DRECT */ +#line 2737 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect); } -#line 8484 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8690 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 393: -#line 2741 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 393: /* type_specifier_nonarray: SAMPLER2DRECTSHADOW */ +#line 2742 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true); } -#line 8494 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8700 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 394: -#line 2746 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 394: /* type_specifier_nonarray: F16SAMPLER2DRECT */ +#line 2747 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdRect); } -#line 8505 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8711 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 395: -#line 2752 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 395: /* type_specifier_nonarray: F16SAMPLER2DRECTSHADOW */ +#line 2753 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdRect, false, true); } -#line 8516 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8722 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 396: -#line 2758 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 396: /* type_specifier_nonarray: ISAMPLER2DRECT */ +#line 2759 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdRect); } -#line 8526 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8732 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 397: -#line 2763 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 397: /* type_specifier_nonarray: USAMPLER2DRECT */ +#line 2764 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdRect); } -#line 8536 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8742 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 398: -#line 2768 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 398: /* type_specifier_nonarray: SAMPLERBUFFER */ +#line 2769 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer); } -#line 8546 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8752 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 399: -#line 2773 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 399: /* type_specifier_nonarray: F16SAMPLERBUFFER */ +#line 2774 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdBuffer); } -#line 8557 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8763 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 400: -#line 2779 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 400: /* type_specifier_nonarray: ISAMPLERBUFFER */ +#line 2780 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdBuffer); } -#line 8567 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8773 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 401: -#line 2784 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 401: /* type_specifier_nonarray: USAMPLERBUFFER */ +#line 2785 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdBuffer); } -#line 8577 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8783 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 402: -#line 2789 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 402: /* type_specifier_nonarray: SAMPLER2DMS */ +#line 2790 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true); } -#line 8587 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8793 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 403: -#line 2794 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 403: /* type_specifier_nonarray: F16SAMPLER2DMS */ +#line 2795 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, false, true); } -#line 8598 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8804 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 404: -#line 2800 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 404: /* type_specifier_nonarray: ISAMPLER2DMS */ +#line 2801 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true); } -#line 8608 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8814 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 405: -#line 2805 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 405: /* type_specifier_nonarray: USAMPLER2DMS */ +#line 2806 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true); } -#line 8618 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8824 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 406: -#line 2810 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 406: /* type_specifier_nonarray: SAMPLER2DMSARRAY */ +#line 2811 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true); } -#line 8628 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8834 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 407: -#line 2815 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 407: /* type_specifier_nonarray: F16SAMPLER2DMSARRAY */ +#line 2816 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, false, true); } -#line 8639 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8845 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 408: -#line 2821 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 408: /* type_specifier_nonarray: ISAMPLER2DMSARRAY */ +#line 2822 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true); } -#line 8649 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8855 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 409: -#line 2826 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 409: /* type_specifier_nonarray: USAMPLER2DMSARRAY */ +#line 2827 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true); } -#line 8659 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8865 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 410: -#line 2831 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 410: /* type_specifier_nonarray: TEXTURE1D */ +#line 2832 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D); } -#line 8669 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8875 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 411: -#line 2836 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 411: /* type_specifier_nonarray: F16TEXTURE1D */ +#line 2837 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D); } -#line 8680 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8886 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 412: -#line 2842 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 412: /* type_specifier_nonarray: F16TEXTURE2D */ +#line 2843 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D); } -#line 8691 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8897 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 413: -#line 2848 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 413: /* type_specifier_nonarray: F16TEXTURE3D */ +#line 2849 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd3D); } -#line 8702 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8908 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 414: -#line 2854 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 414: /* type_specifier_nonarray: F16TEXTURECUBE */ +#line 2855 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube); } -#line 8713 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8919 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 415: -#line 2860 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 415: /* type_specifier_nonarray: TEXTURE1DARRAY */ +#line 2861 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true); } -#line 8723 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8929 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 416: -#line 2865 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 416: /* type_specifier_nonarray: F16TEXTURE1DARRAY */ +#line 2866 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D, true); } -#line 8734 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8940 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 417: -#line 2871 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 417: /* type_specifier_nonarray: F16TEXTURE2DARRAY */ +#line 2872 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true); } -#line 8745 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8951 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 418: -#line 2877 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 418: /* type_specifier_nonarray: F16TEXTURECUBEARRAY */ +#line 2878 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube, true); } -#line 8756 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8962 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 419: -#line 2883 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 419: /* type_specifier_nonarray: ITEXTURE1D */ +#line 2884 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D); } -#line 8766 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8972 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 420: -#line 2888 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 420: /* type_specifier_nonarray: ITEXTURE1DARRAY */ +#line 2889 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true); } -#line 8776 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8982 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 421: -#line 2893 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 421: /* type_specifier_nonarray: UTEXTURE1D */ +#line 2894 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D); } -#line 8786 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8992 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 422: -#line 2898 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 422: /* type_specifier_nonarray: UTEXTURE1DARRAY */ +#line 2899 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true); } -#line 8796 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9002 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 423: -#line 2903 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 423: /* type_specifier_nonarray: TEXTURE2DRECT */ +#line 2904 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect); } -#line 8806 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9012 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 424: -#line 2908 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 424: /* type_specifier_nonarray: F16TEXTURE2DRECT */ +#line 2909 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdRect); } -#line 8817 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9023 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 425: -#line 2914 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 425: /* type_specifier_nonarray: ITEXTURE2DRECT */ +#line 2915 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdRect); } -#line 8827 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9033 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 426: -#line 2919 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 426: /* type_specifier_nonarray: UTEXTURE2DRECT */ +#line 2920 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdRect); } -#line 8837 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9043 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 427: -#line 2924 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 427: /* type_specifier_nonarray: TEXTUREBUFFER */ +#line 2925 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer); } -#line 8847 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9053 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 428: -#line 2929 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 428: /* type_specifier_nonarray: F16TEXTUREBUFFER */ +#line 2930 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdBuffer); } -#line 8858 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9064 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 429: -#line 2935 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 429: /* type_specifier_nonarray: ITEXTUREBUFFER */ +#line 2936 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer); } -#line 8868 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9074 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 430: -#line 2940 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 430: /* type_specifier_nonarray: UTEXTUREBUFFER */ +#line 2941 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer); } -#line 8878 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9084 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 431: -#line 2945 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 431: /* type_specifier_nonarray: TEXTURE2DMS */ +#line 2946 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true); } -#line 8888 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9094 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 432: -#line 2950 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 432: /* type_specifier_nonarray: F16TEXTURE2DMS */ +#line 2951 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, false, false, true); } -#line 8899 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9105 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 433: -#line 2956 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 433: /* type_specifier_nonarray: ITEXTURE2DMS */ +#line 2957 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true); } -#line 8909 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9115 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 434: -#line 2961 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 434: /* type_specifier_nonarray: UTEXTURE2DMS */ +#line 2962 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true); } -#line 8919 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9125 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 435: -#line 2966 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 435: /* type_specifier_nonarray: TEXTURE2DMSARRAY */ +#line 2967 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true); } -#line 8929 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9135 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 436: -#line 2971 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 436: /* type_specifier_nonarray: F16TEXTURE2DMSARRAY */ +#line 2972 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true, false, true); } -#line 8940 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9146 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 437: -#line 2977 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 437: /* type_specifier_nonarray: ITEXTURE2DMSARRAY */ +#line 2978 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true); } -#line 8950 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9156 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 438: -#line 2982 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 438: /* type_specifier_nonarray: UTEXTURE2DMSARRAY */ +#line 2983 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true); } -#line 8960 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9166 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 439: -#line 2987 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 439: /* type_specifier_nonarray: IMAGE1D */ +#line 2988 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D); } -#line 8970 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9176 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 440: -#line 2992 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 440: /* type_specifier_nonarray: F16IMAGE1D */ +#line 2993 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D); } -#line 8981 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9187 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 441: -#line 2998 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 441: /* type_specifier_nonarray: IIMAGE1D */ +#line 2999 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D); } -#line 8991 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9197 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 442: -#line 3003 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 442: /* type_specifier_nonarray: UIMAGE1D */ +#line 3004 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D); } -#line 9001 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9207 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 443: -#line 3008 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 443: /* type_specifier_nonarray: IMAGE2D */ +#line 3009 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D); } -#line 9011 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9217 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 444: -#line 3013 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 444: /* type_specifier_nonarray: F16IMAGE2D */ +#line 3014 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D); } -#line 9022 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9228 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 445: -#line 3019 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 445: /* type_specifier_nonarray: IIMAGE2D */ +#line 3020 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D); } -#line 9032 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9238 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 446: -#line 3024 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 446: /* type_specifier_nonarray: UIMAGE2D */ +#line 3025 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D); } -#line 9042 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9248 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 447: -#line 3029 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 447: /* type_specifier_nonarray: IMAGE3D */ +#line 3030 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd3D); } -#line 9052 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9258 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 448: -#line 3034 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 448: /* type_specifier_nonarray: F16IMAGE3D */ +#line 3035 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd3D); } -#line 9063 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9269 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 449: -#line 3040 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 449: /* type_specifier_nonarray: IIMAGE3D */ +#line 3041 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd3D); } -#line 9073 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9279 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 450: -#line 3045 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 450: /* type_specifier_nonarray: UIMAGE3D */ +#line 3046 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd3D); } -#line 9083 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9289 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 451: -#line 3050 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 451: /* type_specifier_nonarray: IMAGE2DRECT */ +#line 3051 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdRect); } -#line 9093 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9299 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 452: -#line 3055 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 452: /* type_specifier_nonarray: F16IMAGE2DRECT */ +#line 3056 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdRect); } -#line 9104 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9310 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 453: -#line 3061 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 453: /* type_specifier_nonarray: IIMAGE2DRECT */ +#line 3062 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdRect); } -#line 9114 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9320 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 454: -#line 3066 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 454: /* type_specifier_nonarray: UIMAGE2DRECT */ +#line 3067 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdRect); } -#line 9124 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9330 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 455: -#line 3071 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 455: /* type_specifier_nonarray: IMAGECUBE */ +#line 3072 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube); } -#line 9134 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9340 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 456: -#line 3076 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 456: /* type_specifier_nonarray: F16IMAGECUBE */ +#line 3077 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube); } -#line 9145 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9351 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 457: -#line 3082 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 457: /* type_specifier_nonarray: IIMAGECUBE */ +#line 3083 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube); } -#line 9155 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9361 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 458: -#line 3087 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 458: /* type_specifier_nonarray: UIMAGECUBE */ +#line 3088 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube); } -#line 9165 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9371 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 459: -#line 3092 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 459: /* type_specifier_nonarray: IMAGEBUFFER */ +#line 3093 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer); } -#line 9175 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9381 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 460: -#line 3097 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 460: /* type_specifier_nonarray: F16IMAGEBUFFER */ +#line 3098 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdBuffer); } -#line 9186 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9392 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 461: -#line 3103 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 461: /* type_specifier_nonarray: IIMAGEBUFFER */ +#line 3104 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer); } -#line 9196 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9402 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 462: -#line 3108 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 462: /* type_specifier_nonarray: UIMAGEBUFFER */ +#line 3109 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer); } -#line 9206 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9412 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 463: -#line 3113 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 463: /* type_specifier_nonarray: IMAGE1DARRAY */ +#line 3114 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true); } -#line 9216 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9422 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 464: -#line 3118 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 464: /* type_specifier_nonarray: F16IMAGE1DARRAY */ +#line 3119 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D, true); } -#line 9227 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9433 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 465: -#line 3124 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 465: /* type_specifier_nonarray: IIMAGE1DARRAY */ +#line 3125 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true); } -#line 9237 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9443 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 466: -#line 3129 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 466: /* type_specifier_nonarray: UIMAGE1DARRAY */ +#line 3130 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true); } -#line 9247 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9453 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 467: -#line 3134 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 467: /* type_specifier_nonarray: IMAGE2DARRAY */ +#line 3135 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true); } -#line 9257 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9463 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 468: -#line 3139 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 468: /* type_specifier_nonarray: F16IMAGE2DARRAY */ +#line 3140 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true); } -#line 9268 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9474 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 469: -#line 3145 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 469: /* type_specifier_nonarray: IIMAGE2DARRAY */ +#line 3146 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true); } -#line 9278 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9484 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 470: -#line 3150 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 470: /* type_specifier_nonarray: UIMAGE2DARRAY */ +#line 3151 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true); } -#line 9288 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9494 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 471: -#line 3155 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 471: /* type_specifier_nonarray: IMAGECUBEARRAY */ +#line 3156 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true); } -#line 9298 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9504 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 472: -#line 3160 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 472: /* type_specifier_nonarray: F16IMAGECUBEARRAY */ +#line 3161 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube, true); } -#line 9309 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9515 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 473: -#line 3166 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 473: /* type_specifier_nonarray: IIMAGECUBEARRAY */ +#line 3167 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true); } -#line 9319 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9525 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 474: -#line 3171 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 474: /* type_specifier_nonarray: UIMAGECUBEARRAY */ +#line 3172 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true); } -#line 9329 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9535 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 475: -#line 3176 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 475: /* type_specifier_nonarray: IMAGE2DMS */ +#line 3177 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true); } -#line 9339 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9545 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 476: -#line 3181 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 476: /* type_specifier_nonarray: F16IMAGE2DMS */ +#line 3182 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, false, false, true); } -#line 9350 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9556 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 477: -#line 3187 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 477: /* type_specifier_nonarray: IIMAGE2DMS */ +#line 3188 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true); } -#line 9360 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9566 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 478: -#line 3192 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 478: /* type_specifier_nonarray: UIMAGE2DMS */ +#line 3193 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true); } -#line 9370 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9576 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 479: -#line 3197 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 479: /* type_specifier_nonarray: IMAGE2DMSARRAY */ +#line 3198 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true); } -#line 9380 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9586 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 480: -#line 3202 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 480: /* type_specifier_nonarray: F16IMAGE2DMSARRAY */ +#line 3203 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true, false, true); } -#line 9391 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9597 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 481: -#line 3208 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 481: /* type_specifier_nonarray: IIMAGE2DMSARRAY */ +#line 3209 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true); } -#line 9401 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9607 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 482: -#line 3213 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 482: /* type_specifier_nonarray: UIMAGE2DMSARRAY */ +#line 3214 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true); } -#line 9411 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9617 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 483: -#line 3218 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 483: /* type_specifier_nonarray: I64IMAGE1D */ +#line 3219 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D); } -#line 9421 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9627 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 484: -#line 3223 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 484: /* type_specifier_nonarray: U64IMAGE1D */ +#line 3224 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D); } -#line 9431 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9637 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 485: -#line 3228 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 485: /* type_specifier_nonarray: I64IMAGE2D */ +#line 3229 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D); } -#line 9441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9647 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 486: -#line 3233 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 486: /* type_specifier_nonarray: U64IMAGE2D */ +#line 3234 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D); } -#line 9451 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9657 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 487: -#line 3238 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 487: /* type_specifier_nonarray: I64IMAGE3D */ +#line 3239 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd3D); } -#line 9461 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9667 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 488: -#line 3243 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 488: /* type_specifier_nonarray: U64IMAGE3D */ +#line 3244 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd3D); } -#line 9471 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9677 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 489: -#line 3248 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 489: /* type_specifier_nonarray: I64IMAGE2DRECT */ +#line 3249 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdRect); } -#line 9481 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9687 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 490: -#line 3253 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 490: /* type_specifier_nonarray: U64IMAGE2DRECT */ +#line 3254 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdRect); } -#line 9491 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9697 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 491: -#line 3258 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 491: /* type_specifier_nonarray: I64IMAGECUBE */ +#line 3259 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube); } -#line 9501 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9707 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 492: -#line 3263 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 492: /* type_specifier_nonarray: U64IMAGECUBE */ +#line 3264 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube); } -#line 9511 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9717 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 493: -#line 3268 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 493: /* type_specifier_nonarray: I64IMAGEBUFFER */ +#line 3269 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdBuffer); } -#line 9521 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9727 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 494: -#line 3273 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 494: /* type_specifier_nonarray: U64IMAGEBUFFER */ +#line 3274 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdBuffer); } -#line 9531 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9737 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 495: -#line 3278 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 495: /* type_specifier_nonarray: I64IMAGE1DARRAY */ +#line 3279 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D, true); } -#line 9541 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9747 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 496: -#line 3283 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 496: /* type_specifier_nonarray: U64IMAGE1DARRAY */ +#line 3284 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D, true); } -#line 9551 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9757 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 497: -#line 3288 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 497: /* type_specifier_nonarray: I64IMAGE2DARRAY */ +#line 3289 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true); } -#line 9561 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9767 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 498: -#line 3293 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 498: /* type_specifier_nonarray: U64IMAGE2DARRAY */ +#line 3294 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true); } -#line 9571 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9777 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 499: -#line 3298 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 499: /* type_specifier_nonarray: I64IMAGECUBEARRAY */ +#line 3299 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube, true); } -#line 9581 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9787 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 500: -#line 3303 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 500: /* type_specifier_nonarray: U64IMAGECUBEARRAY */ +#line 3304 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube, true); } -#line 9591 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9797 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 501: -#line 3308 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 501: /* type_specifier_nonarray: I64IMAGE2DMS */ +#line 3309 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, false, false, true); } -#line 9601 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9807 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 502: -#line 3313 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 502: /* type_specifier_nonarray: U64IMAGE2DMS */ +#line 3314 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, false, false, true); } -#line 9611 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9817 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 503: -#line 3318 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 503: /* type_specifier_nonarray: I64IMAGE2DMSARRAY */ +#line 3319 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true, false, true); } -#line 9621 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9827 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 504: -#line 3323 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 504: /* type_specifier_nonarray: U64IMAGE2DMSARRAY */ +#line 3324 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true, false, true); } -#line 9631 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9837 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 505: -#line 3328 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { // GL_OES_EGL_image_external + case 505: /* type_specifier_nonarray: SAMPLEREXTERNALOES */ +#line 3329 "glslang/MachineIndependent/glslang.y" + { // GL_OES_EGL_image_external (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.external = true; } -#line 9642 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9848 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 506: -#line 3334 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { // GL_EXT_YUV_target + case 506: /* type_specifier_nonarray: SAMPLEREXTERNAL2DY2YEXT */ +#line 3335 "glslang/MachineIndependent/glslang.y" + { // GL_EXT_YUV_target (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.yuv = true; } -#line 9653 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9859 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 507: -#line 3340 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 507: /* type_specifier_nonarray: SUBPASSINPUT */ +#line 3341 "glslang/MachineIndependent/glslang.y" + { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat); } -#line 9664 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9870 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 508: -#line 3346 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 508: /* type_specifier_nonarray: SUBPASSINPUTMS */ +#line 3347 "glslang/MachineIndependent/glslang.y" + { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat, true); } -#line 9675 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9881 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 509: -#line 3352 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 509: /* type_specifier_nonarray: F16SUBPASSINPUT */ +#line 3353 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16); } -#line 9687 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9893 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 510: -#line 3359 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 510: /* type_specifier_nonarray: F16SUBPASSINPUTMS */ +#line 3360 "glslang/MachineIndependent/glslang.y" + { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16, true); } -#line 9699 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9905 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 511: -#line 3366 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 511: /* type_specifier_nonarray: ISUBPASSINPUT */ +#line 3367 "glslang/MachineIndependent/glslang.y" + { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt); } -#line 9710 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9916 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 512: -#line 3372 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 512: /* type_specifier_nonarray: ISUBPASSINPUTMS */ +#line 3373 "glslang/MachineIndependent/glslang.y" + { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt, true); } -#line 9721 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9927 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 513: -#line 3378 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 513: /* type_specifier_nonarray: USUBPASSINPUT */ +#line 3379 "glslang/MachineIndependent/glslang.y" + { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint); } -#line 9732 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9938 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 514: -#line 3384 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 514: /* type_specifier_nonarray: USUBPASSINPUTMS */ +#line 3385 "glslang/MachineIndependent/glslang.y" + { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint, true); } -#line 9743 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9949 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 515: -#line 3390 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 515: /* type_specifier_nonarray: FCOOPMATNV */ +#line 3391 "glslang/MachineIndependent/glslang.y" + { parseContext.fcoopmatCheck((yyvsp[0].lex).loc, "fcoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).coopmat = true; } -#line 9754 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9960 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 516: -#line 3396 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 516: /* type_specifier_nonarray: ICOOPMATNV */ +#line 3397 "glslang/MachineIndependent/glslang.y" + { parseContext.intcoopmatCheck((yyvsp[0].lex).loc, "icoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).coopmat = true; } -#line 9765 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9971 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 517: -#line 3402 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 517: /* type_specifier_nonarray: UCOOPMATNV */ +#line 3403 "glslang/MachineIndependent/glslang.y" + { parseContext.intcoopmatCheck((yyvsp[0].lex).loc, "ucoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).coopmat = true; } -#line 9776 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9982 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 518: -#line 3409 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 518: /* type_specifier_nonarray: struct_specifier */ +#line 3410 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.type) = (yyvsp[0].interm.type); (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type)); } -#line 9786 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9992 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 519: -#line 3414 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 519: /* type_specifier_nonarray: TYPE_NAME */ +#line 3415 "glslang/MachineIndependent/glslang.y" + { // // This is for user defined type names. The lexical phase looked up the // type. @@ -9800,48 +10006,48 @@ yyreduce: } else parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), ""); } -#line 9804 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10010 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 520: -#line 3430 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 520: /* precision_qualifier: HIGH_PRECISION */ +#line 3431 "glslang/MachineIndependent/glslang.y" + { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "highp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh); } -#line 9814 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10020 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 521: -#line 3435 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 521: /* precision_qualifier: MEDIUM_PRECISION */ +#line 3436 "glslang/MachineIndependent/glslang.y" + { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium); } -#line 9824 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10030 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 522: -#line 3440 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 522: /* precision_qualifier: LOW_PRECISION */ +#line 3441 "glslang/MachineIndependent/glslang.y" + { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow); } -#line 9834 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10040 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 523: -#line 3448 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); } -#line 9840 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 523: /* $@3: %empty */ +#line 3449 "glslang/MachineIndependent/glslang.y" + { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); } +#line 10046 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 524: -#line 3448 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 524: /* struct_specifier: STRUCT IDENTIFIER LEFT_BRACE $@3 struct_declaration_list RIGHT_BRACE */ +#line 3449 "glslang/MachineIndependent/glslang.y" + { TType* structure = new TType((yyvsp[-1].interm.typeList), *(yyvsp[-4].lex).string); parseContext.structArrayCheck((yyvsp[-4].lex).loc, *structure); TVariable* userTypeDef = new TVariable((yyvsp[-4].lex).string, *structure, true); @@ -9852,38 +10058,38 @@ yyreduce: (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 9856 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10062 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 525: -#line 3459 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); } -#line 9862 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 525: /* $@4: %empty */ +#line 3460 "glslang/MachineIndependent/glslang.y" + { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); } +#line 10068 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 526: -#line 3459 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 526: /* struct_specifier: STRUCT LEFT_BRACE $@4 struct_declaration_list RIGHT_BRACE */ +#line 3460 "glslang/MachineIndependent/glslang.y" + { TType* structure = new TType((yyvsp[-1].interm.typeList), TString("")); (yyval.interm.type).init((yyvsp[-4].lex).loc); (yyval.interm.type).basicType = EbtStruct; (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 9874 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10080 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 527: -#line 3469 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 527: /* struct_declaration_list: struct_declaration */ +#line 3470 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.typeList) = (yyvsp[0].interm.typeList); } -#line 9882 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10088 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 528: -#line 3472 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 528: /* struct_declaration_list: struct_declaration_list struct_declaration */ +#line 3473 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.typeList) = (yyvsp[-1].interm.typeList); for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) { for (unsigned int j = 0; j < (yyval.interm.typeList)->size(); ++j) { @@ -9893,12 +10099,12 @@ yyreduce: (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]); } } -#line 9897 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10103 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 529: -#line 3485 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 529: /* struct_declaration: type_specifier struct_declarator_list SEMICOLON */ +#line 3486 "glslang/MachineIndependent/glslang.y" + { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); @@ -9920,12 +10126,12 @@ yyreduce: (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 9924 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10130 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 530: -#line 3507 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 530: /* struct_declaration: type_qualifier type_specifier struct_declarator_list SEMICOLON */ +#line 3508 "glslang/MachineIndependent/glslang.y" + { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); @@ -9949,39 +10155,39 @@ yyreduce: (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 9953 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10159 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 531: -#line 3534 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 531: /* struct_declarator_list: struct_declarator */ +#line 3535 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.typeList) = new TTypeList; (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 9962 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10168 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 532: -#line 3538 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 532: /* struct_declarator_list: struct_declarator_list COMMA struct_declarator */ +#line 3539 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 9970 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10176 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 533: -#line 3544 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 533: /* struct_declarator: IDENTIFIER */ +#line 3545 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.typeLine).type = new TType(EbtVoid); (yyval.interm.typeLine).loc = (yyvsp[0].lex).loc; (yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string); } -#line 9980 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10186 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 534: -#line 3549 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 534: /* struct_declarator: IDENTIFIER array_specifier */ +#line 3550 "glslang/MachineIndependent/glslang.y" + { parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes); (yyval.interm.typeLine).type = new TType(EbtVoid); @@ -9989,236 +10195,236 @@ yyreduce: (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string); (yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes); } -#line 9993 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10199 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 535: -#line 3560 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 535: /* initializer: assignment_expression */ +#line 3561 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 10001 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10207 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 536: -#line 3564 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 536: /* initializer: LEFT_BRACE initializer_list RIGHT_BRACE */ +#line 3565 "glslang/MachineIndependent/glslang.y" + { const char* initFeature = "{ } style initializers"; parseContext.requireProfile((yyvsp[-2].lex).loc, ~EEsProfile, initFeature); parseContext.profileRequires((yyvsp[-2].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); } -#line 10012 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10218 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 537: -#line 3570 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 537: /* initializer: LEFT_BRACE initializer_list COMMA RIGHT_BRACE */ +#line 3571 "glslang/MachineIndependent/glslang.y" + { const char* initFeature = "{ } style initializers"; parseContext.requireProfile((yyvsp[-3].lex).loc, ~EEsProfile, initFeature); parseContext.profileRequires((yyvsp[-3].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 10023 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10229 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 538: -#line 3581 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 538: /* initializer_list: initializer */ +#line 3582 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc()); } -#line 10031 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10237 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 539: -#line 3584 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 539: /* initializer_list: initializer_list COMMA initializer */ +#line 3585 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); } -#line 10039 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10245 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 540: -#line 3591 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10045 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 540: /* declaration_statement: declaration */ +#line 3592 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 10251 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 541: -#line 3595 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10051 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 541: /* statement: compound_statement */ +#line 3596 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 10257 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 542: -#line 3596 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10057 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 542: /* statement: simple_statement */ +#line 3597 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 10263 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 543: -#line 3602 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10063 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 543: /* simple_statement: declaration_statement */ +#line 3603 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 10269 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 544: -#line 3603 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10069 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 544: /* simple_statement: expression_statement */ +#line 3604 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 10275 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 545: -#line 3604 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10075 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 545: /* simple_statement: selection_statement */ +#line 3605 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 10281 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 546: -#line 3605 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10081 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 546: /* simple_statement: switch_statement */ +#line 3606 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 10287 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 547: -#line 3606 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10087 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 547: /* simple_statement: case_label */ +#line 3607 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 10293 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 548: -#line 3607 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10093 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 548: /* simple_statement: iteration_statement */ +#line 3608 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 10299 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 549: -#line 3608 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10099 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 549: /* simple_statement: jump_statement */ +#line 3609 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 10305 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 550: -#line 3610 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10105 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 550: /* simple_statement: demote_statement */ +#line 3611 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 10311 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 551: -#line 3616 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 551: /* demote_statement: DEMOTE SEMICOLON */ +#line 3617 "glslang/MachineIndependent/glslang.y" + { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "demote"); parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_demote_to_helper_invocation, "demote"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDemote, (yyvsp[-1].lex).loc); } -#line 10115 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10321 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 552: -#line 3625 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = 0; } -#line 10121 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 552: /* compound_statement: LEFT_BRACE RIGHT_BRACE */ +#line 3626 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = 0; } +#line 10327 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 553: -#line 3626 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 553: /* $@5: %empty */ +#line 3627 "glslang/MachineIndependent/glslang.y" + { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; } -#line 10130 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10336 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 554: -#line 3630 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 554: /* $@6: %empty */ +#line 3631 "glslang/MachineIndependent/glslang.y" + { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; } -#line 10139 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10345 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 555: -#line 3634 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 555: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE */ +#line 3635 "glslang/MachineIndependent/glslang.y" + { if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate()) (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode); } -#line 10149 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10355 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 556: -#line 3642 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10155 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 556: /* statement_no_new_scope: compound_statement_no_new_scope */ +#line 3643 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 10361 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 557: -#line 3643 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10161 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 557: /* statement_no_new_scope: simple_statement */ +#line 3644 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 10367 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 558: -#line 3647 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 558: /* $@7: %empty */ +#line 3648 "glslang/MachineIndependent/glslang.y" + { ++parseContext.controlFlowNestingLevel; } -#line 10169 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10375 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 559: -#line 3650 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 559: /* statement_scoped: $@7 compound_statement */ +#line 3651 "glslang/MachineIndependent/glslang.y" + { --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10178 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10384 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 560: -#line 3654 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 560: /* $@8: %empty */ +#line 3655 "glslang/MachineIndependent/glslang.y" + { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 10188 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10394 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 561: -#line 3659 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 561: /* statement_scoped: $@8 simple_statement */ +#line 3660 "glslang/MachineIndependent/glslang.y" + { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10199 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10405 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 562: -#line 3668 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 562: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE */ +#line 3669 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = 0; } -#line 10207 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10413 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 563: -#line 3671 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 563: /* compound_statement_no_new_scope: LEFT_BRACE statement_list RIGHT_BRACE */ +#line 3672 "glslang/MachineIndependent/glslang.y" + { if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate()) (yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode); } -#line 10217 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10423 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 564: -#line 3679 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 564: /* statement_list: statement */ +#line 3680 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { @@ -10226,12 +10432,12 @@ yyreduce: (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case } } -#line 10230 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10436 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 565: -#line 3687 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 565: /* statement_list: statement_list statement */ +#line 3688 "glslang/MachineIndependent/glslang.y" + { if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { parseContext.wrapupSwitchSubsequence((yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0, (yyvsp[0].interm.intermNode)); @@ -10239,77 +10445,77 @@ yyreduce: } else (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 10243 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10449 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 566: -#line 3698 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = 0; } -#line 10249 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 566: /* expression_statement: SEMICOLON */ +#line 3699 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = 0; } +#line 10455 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 567: -#line 3699 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = static_cast((yyvsp[-1].interm.intermTypedNode)); } -#line 10255 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + case 567: /* expression_statement: expression SEMICOLON */ +#line 3700 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = static_cast((yyvsp[-1].interm.intermTypedNode)); } +#line 10461 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 568: -#line 3703 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 568: /* selection_statement: selection_statement_nonattributed */ +#line 3704 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10263 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10469 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 569: -#line 3707 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 569: /* selection_statement: attribute selection_statement_nonattributed */ +#line 3708 "glslang/MachineIndependent/glslang.y" + { parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10272 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10478 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 570: -#line 3714 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 570: /* selection_statement_nonattributed: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement */ +#line 3715 "glslang/MachineIndependent/glslang.y" + { parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode)); (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc); } -#line 10281 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10487 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 571: -#line 3721 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 571: /* selection_rest_statement: statement_scoped ELSE statement_scoped */ +#line 3722 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode); } -#line 10290 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10496 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 572: -#line 3725 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 572: /* selection_rest_statement: statement_scoped */ +#line 3726 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode); (yyval.interm.nodePair).node2 = 0; } -#line 10299 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10505 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 573: -#line 3733 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 573: /* condition: expression */ +#line 3734 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)); } -#line 10308 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10514 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 574: -#line 3737 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 574: /* condition: fully_specified_type IDENTIFIER EQUAL initializer */ +#line 3738 "glslang/MachineIndependent/glslang.y" + { parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type)); TType type((yyvsp[-3].interm.type)); @@ -10319,29 +10525,29 @@ yyreduce: else (yyval.interm.intermTypedNode) = 0; } -#line 10323 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10529 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 575: -#line 3750 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 575: /* switch_statement: switch_statement_nonattributed */ +#line 3751 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10331 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10537 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 576: -#line 3754 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 576: /* switch_statement: attribute switch_statement_nonattributed */ +#line 3755 "glslang/MachineIndependent/glslang.y" + { parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10340 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10546 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 577: -#line 3761 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 577: /* $@9: %empty */ +#line 3762 "glslang/MachineIndependent/glslang.y" + { // start new switch sequence on the switch stack ++parseContext.controlFlowNestingLevel; ++parseContext.statementNestingLevel; @@ -10349,12 +10555,12 @@ yyreduce: parseContext.switchLevel.push_back(parseContext.statementNestingLevel); parseContext.symbolTable.push(); } -#line 10353 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10559 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 578: -#line 3769 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 578: /* switch_statement_nonattributed: SWITCH LEFT_PAREN expression RIGHT_PAREN $@9 LEFT_BRACE switch_statement_list RIGHT_BRACE */ +#line 3770 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0); delete parseContext.switchSequenceStack.back(); parseContext.switchSequenceStack.pop_back(); @@ -10363,28 +10569,28 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 10367 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10573 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 579: -#line 3781 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 579: /* switch_statement_list: %empty */ +#line 3782 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = 0; } -#line 10375 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10581 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 580: -#line 3784 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 580: /* switch_statement_list: statement_list */ +#line 3785 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10383 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10589 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 581: -#line 3790 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 581: /* case_label: CASE expression COLON */ +#line 3791 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) parseContext.error((yyvsp[-2].lex).loc, "cannot appear outside switch statement", "case", ""); @@ -10396,12 +10602,12 @@ yyreduce: (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc); } } -#line 10400 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10606 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 582: -#line 3802 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 582: /* case_label: DEFAULT COLON */ +#line 3803 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) parseContext.error((yyvsp[-1].lex).loc, "cannot appear outside switch statement", "default", ""); @@ -10410,29 +10616,29 @@ yyreduce: else (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc); } -#line 10414 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10620 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 583: -#line 3814 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 583: /* iteration_statement: iteration_statement_nonattributed */ +#line 3815 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10422 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10628 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 584: -#line 3818 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 584: /* iteration_statement: attribute iteration_statement_nonattributed */ +#line 3819 "glslang/MachineIndependent/glslang.y" + { parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10431 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10637 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 585: -#line 3825 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 585: /* $@10: %empty */ +#line 3826 "glslang/MachineIndependent/glslang.y" + { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", ""); parseContext.symbolTable.push(); @@ -10440,34 +10646,34 @@ yyreduce: ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 10444 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10650 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 586: -#line 3833 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 586: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope */ +#line 3834 "glslang/MachineIndependent/glslang.y" + { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc); --parseContext.loopNestingLevel; --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 10456 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10662 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 587: -#line 3840 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 587: /* $@11: %empty */ +#line 3841 "glslang/MachineIndependent/glslang.y" + { ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 10466 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10672 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 588: -#line 3845 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 588: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON */ +#line 3846 "glslang/MachineIndependent/glslang.y" + { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", ""); @@ -10478,23 +10684,23 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 10482 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10688 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 589: -#line 3856 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 589: /* $@12: %empty */ +#line 3857 "glslang/MachineIndependent/glslang.y" + { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 10493 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10699 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 590: -#line 3862 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 590: /* iteration_statement_nonattributed: FOR LEFT_PAREN $@12 for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope */ +#line 3863 "glslang/MachineIndependent/glslang.y" + { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc); TIntermLoop* forLoop = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), reinterpret_cast((yyvsp[-2].interm.nodePair).node1), reinterpret_cast((yyvsp[-2].interm.nodePair).node2), true, (yyvsp[-6].lex).loc); @@ -10506,157 +10712,166 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 10510 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10716 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 591: -#line 3877 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 591: /* for_init_statement: expression_statement */ +#line 3878 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10518 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10724 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 592: -#line 3880 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 592: /* for_init_statement: declaration_statement */ +#line 3881 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10526 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10732 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 593: -#line 3886 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 593: /* conditionopt: condition */ +#line 3887 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 10534 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10740 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 594: -#line 3889 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 594: /* conditionopt: %empty */ +#line 3890 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermTypedNode) = 0; } -#line 10542 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10748 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 595: -#line 3895 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 595: /* for_rest_statement: conditionopt SEMICOLON */ +#line 3896 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); (yyval.interm.nodePair).node2 = 0; } -#line 10551 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10757 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 596: -#line 3899 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 596: /* for_rest_statement: conditionopt SEMICOLON expression */ +#line 3900 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode); } -#line 10560 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10766 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 597: -#line 3906 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 597: /* jump_statement: CONTINUE SEMICOLON */ +#line 3907 "glslang/MachineIndependent/glslang.y" + { if (parseContext.loopNestingLevel <= 0) parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc); } -#line 10570 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10776 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 598: -#line 3911 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 598: /* jump_statement: BREAK SEMICOLON */ +#line 3912 "glslang/MachineIndependent/glslang.y" + { if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0) parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc); } -#line 10580 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10786 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 599: -#line 3916 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 599: /* jump_statement: RETURN SEMICOLON */ +#line 3917 "glslang/MachineIndependent/glslang.y" + { (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.postEntryPointReturn = true; } -#line 10592 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10798 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 600: -#line 3923 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 600: /* jump_statement: RETURN expression SEMICOLON */ +#line 3924 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); } -#line 10600 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10806 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 601: -#line 3926 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 601: /* jump_statement: DISCARD SEMICOLON */ +#line 3927 "glslang/MachineIndependent/glslang.y" + { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc); } -#line 10609 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10815 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 602: -#line 3935 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 602: /* jump_statement: TERMINATE_INVOCATION SEMICOLON */ +#line 3931 "glslang/MachineIndependent/glslang.y" + { + parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "terminateInvocation"); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateInvocation, (yyvsp[-1].lex).loc); + } +#line 10824 "glslang/MachineIndependent/glslang_tab.cpp" + break; + + case 603: /* translation_unit: external_declaration */ +#line 3940 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } -#line 10618 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10833 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 603: -#line 3939 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 604: /* translation_unit: translation_unit external_declaration */ +#line 3944 "glslang/MachineIndependent/glslang.y" + { if ((yyvsp[0].interm.intermNode) != nullptr) { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } } -#line 10629 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10844 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 604: -#line 3948 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 605: /* external_declaration: function_definition */ +#line 3953 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10637 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10852 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 605: -#line 3951 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 606: /* external_declaration: declaration */ +#line 3956 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10645 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10860 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 606: -#line 3955 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 607: /* external_declaration: SEMICOLON */ +#line 3960 "glslang/MachineIndependent/glslang.y" + { parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "extraneous semicolon"); parseContext.profileRequires((yyvsp[0].lex).loc, ~EEsProfile, 460, nullptr, "extraneous semicolon"); (yyval.interm.intermNode) = nullptr; } -#line 10655 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10870 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 607: -#line 3964 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 608: /* $@13: %empty */ +#line 3969 "glslang/MachineIndependent/glslang.y" + { (yyvsp[0].interm).function = parseContext.handleFunctionDeclarator((yyvsp[0].interm).loc, *(yyvsp[0].interm).function, false /* not prototype */); (yyvsp[0].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[0].interm).loc, *(yyvsp[0].interm).function); @@ -10668,12 +10883,12 @@ yyreduce: ++parseContext.statementNestingLevel; } } -#line 10672 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10887 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 608: -#line 3976 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 609: /* function_definition: function_prototype $@13 compound_statement_no_new_scope */ +#line 3981 "glslang/MachineIndependent/glslang.y" + { // May be best done as post process phase on intermediate code if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) parseContext.error((yyvsp[-2].interm).loc, "function does not return a value:", "", (yyvsp[-2].interm).function->getName().c_str()); @@ -10699,52 +10914,53 @@ yyreduce: --parseContext.statementNestingLevel; } } -#line 10703 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10918 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 609: -#line 4006 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 610: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET */ +#line 4011 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.attributes) = (yyvsp[-2].interm.attributes); parseContext.requireExtensions((yyvsp[-4].lex).loc, 1, &E_GL_EXT_control_flow_attributes, "attribute"); } -#line 10712 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10927 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 610: -#line 4012 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 611: /* attribute_list: single_attribute */ +#line 4017 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.attributes) = (yyvsp[0].interm.attributes); } -#line 10720 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10935 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 611: -#line 4015 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 612: /* attribute_list: attribute_list COMMA single_attribute */ +#line 4020 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes)); } -#line 10728 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10943 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 612: -#line 4020 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 613: /* single_attribute: IDENTIFIER */ +#line 4025 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string); } -#line 10736 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10951 "glslang/MachineIndependent/glslang_tab.cpp" break; - case 613: -#line 4023 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { + case 614: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN */ +#line 4028 "glslang/MachineIndependent/glslang.y" + { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode)); } -#line 10744 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10959 "glslang/MachineIndependent/glslang_tab.cpp" break; -#line 10748 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10963 "glslang/MachineIndependent/glslang_tab.cpp" + default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -10758,25 +10974,23 @@ yyreduce: case of YYERROR or YYBACKUP, subsequent parser actions might lead to an incorrect destructor call or verbose syntax error message before the lookahead is translated. */ - YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; - YY_STACK_PRINT (yyss, yyssp); *++yyvsp = yyval; /* Now 'shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ - - yyn = yyr1[yyn]; - - yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; - if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) - yystate = yytable[yystate]; - else - yystate = yydefgoto[yyn - YYNTOKENS]; + { + const int yylhs = yyr1[yyn] - YYNTOKENS; + const int yyi = yypgoto[yylhs] + *yyssp; + yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp + ? yytable[yyi] + : yydefgoto[yylhs]); + } goto yynewstate; @@ -10787,50 +11001,44 @@ yyreduce: yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ - yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); - + yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar); /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; -#if ! YYERROR_VERBOSE - yyerror (pParseContext, YY_("syntax error")); -#else -# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ - yyssp, yytoken) { + yypcontext_t yyctx + = {yyssp, yytoken}; char const *yymsgp = YY_("syntax error"); int yysyntax_error_status; - yysyntax_error_status = YYSYNTAX_ERROR; + yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx); if (yysyntax_error_status == 0) yymsgp = yymsg; - else if (yysyntax_error_status == 1) + else if (yysyntax_error_status == -1) { if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); - yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); - if (!yymsg) + yymsg = YY_CAST (char *, + YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc))); + if (yymsg) { - yymsg = yymsgbuf; - yymsg_alloc = sizeof yymsgbuf; - yysyntax_error_status = 2; + yysyntax_error_status + = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx); + yymsgp = yymsg; } else { - yysyntax_error_status = YYSYNTAX_ERROR; - yymsgp = yymsg; + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + yysyntax_error_status = YYENOMEM; } } yyerror (pParseContext, yymsgp); - if (yysyntax_error_status == 2) + if (yysyntax_error_status == YYENOMEM) goto yyexhaustedlab; } -# undef YYSYNTAX_ERROR -#endif } - - if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an @@ -10859,12 +11067,10 @@ yyerrlab: | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: - - /* Pacify compilers like GCC when the user code never invokes - YYERROR and the label yyerrorlab therefore never appears in user - code. */ - if (/*CONSTCOND*/ 0) - goto yyerrorlab; + /* Pacify compilers when the user code never invokes YYERROR and the + label yyerrorlab therefore never appears in user code. */ + if (0) + YYERROR; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ @@ -10881,13 +11087,14 @@ yyerrorlab: yyerrlab1: yyerrstatus = 3; /* Each real token shifted decrements this. */ + /* Pop stack until we find a state that shifts the error token. */ for (;;) { yyn = yypact[yystate]; if (!yypact_value_is_default (yyn)) { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + yyn += YYSYMBOL_YYerror; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror) { yyn = yytable[yyn]; if (0 < yyn) @@ -10901,7 +11108,7 @@ yyerrlab1: yydestruct ("Error: popping", - yystos[yystate], yyvsp, pParseContext); + YY_ACCESSING_SYMBOL (yystate), yyvsp, pParseContext); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); @@ -10913,7 +11120,7 @@ yyerrlab1: /* Shift the error token. */ - YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp); yystate = yyn; goto yynewstate; @@ -10926,6 +11133,7 @@ yyacceptlab: yyresult = 0; goto yyreturn; + /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ @@ -10933,16 +11141,21 @@ yyabortlab: yyresult = 1; goto yyreturn; -#if !defined yyoverflow || YYERROR_VERBOSE + +#if 1 /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ yyexhaustedlab: yyerror (pParseContext, YY_("memory exhausted")); yyresult = 2; - /* Fall through. */ + goto yyreturn; #endif + +/*-------------------------------------------------------. +| yyreturn -- parsing is finished, clean up and return. | +`-------------------------------------------------------*/ yyreturn: if (yychar != YYEMPTY) { @@ -10959,18 +11172,17 @@ yyreturn: while (yyssp != yyss) { yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp, pParseContext); + YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, pParseContext); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif -#if YYERROR_VERBOSE if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); -#endif return yyresult; } -#line 4028 "MachineIndependent/glslang.y" /* yacc.c:1906 */ + +#line 4033 "glslang/MachineIndependent/glslang.y" diff --git a/glslang/MachineIndependent/glslang_tab.cpp.h b/glslang/MachineIndependent/glslang_tab.cpp.h index 58fc9fbe..66983a08 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp.h +++ b/glslang/MachineIndependent/glslang_tab.cpp.h @@ -1,8 +1,9 @@ -/* A Bison parser, made by GNU Bison 3.0.4. */ +/* A Bison parser, made by GNU Bison 3.7.2. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, + Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -30,8 +31,12 @@ This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ -#ifndef YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED -# define YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED +/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, + especially those whose name start with YY_ or yy_. They are + private implementation details that can be changed or removed. */ + +#ifndef YY_YY_GLSLANG_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED +# define YY_YY_GLSLANG_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED /* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 1 @@ -40,459 +45,464 @@ extern int yydebug; #endif -/* Token type. */ +/* Token kinds. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE enum yytokentype { - CONST = 258, - BOOL = 259, - INT = 260, - UINT = 261, - FLOAT = 262, - BVEC2 = 263, - BVEC3 = 264, - BVEC4 = 265, - IVEC2 = 266, - IVEC3 = 267, - IVEC4 = 268, - UVEC2 = 269, - UVEC3 = 270, - UVEC4 = 271, - VEC2 = 272, - VEC3 = 273, - VEC4 = 274, - MAT2 = 275, - MAT3 = 276, - MAT4 = 277, - MAT2X2 = 278, - MAT2X3 = 279, - MAT2X4 = 280, - MAT3X2 = 281, - MAT3X3 = 282, - MAT3X4 = 283, - MAT4X2 = 284, - MAT4X3 = 285, - MAT4X4 = 286, - SAMPLER2D = 287, - SAMPLER3D = 288, - SAMPLERCUBE = 289, - SAMPLER2DSHADOW = 290, - SAMPLERCUBESHADOW = 291, - SAMPLER2DARRAY = 292, - SAMPLER2DARRAYSHADOW = 293, - ISAMPLER2D = 294, - ISAMPLER3D = 295, - ISAMPLERCUBE = 296, - ISAMPLER2DARRAY = 297, - USAMPLER2D = 298, - USAMPLER3D = 299, - USAMPLERCUBE = 300, - USAMPLER2DARRAY = 301, - SAMPLER = 302, - SAMPLERSHADOW = 303, - TEXTURE2D = 304, - TEXTURE3D = 305, - TEXTURECUBE = 306, - TEXTURE2DARRAY = 307, - ITEXTURE2D = 308, - ITEXTURE3D = 309, - ITEXTURECUBE = 310, - ITEXTURE2DARRAY = 311, - UTEXTURE2D = 312, - UTEXTURE3D = 313, - UTEXTURECUBE = 314, - UTEXTURE2DARRAY = 315, - ATTRIBUTE = 316, - VARYING = 317, - FLOAT16_T = 318, - FLOAT32_T = 319, - DOUBLE = 320, - FLOAT64_T = 321, - INT64_T = 322, - UINT64_T = 323, - INT32_T = 324, - UINT32_T = 325, - INT16_T = 326, - UINT16_T = 327, - INT8_T = 328, - UINT8_T = 329, - I64VEC2 = 330, - I64VEC3 = 331, - I64VEC4 = 332, - U64VEC2 = 333, - U64VEC3 = 334, - U64VEC4 = 335, - I32VEC2 = 336, - I32VEC3 = 337, - I32VEC4 = 338, - U32VEC2 = 339, - U32VEC3 = 340, - U32VEC4 = 341, - I16VEC2 = 342, - I16VEC3 = 343, - I16VEC4 = 344, - U16VEC2 = 345, - U16VEC3 = 346, - U16VEC4 = 347, - I8VEC2 = 348, - I8VEC3 = 349, - I8VEC4 = 350, - U8VEC2 = 351, - U8VEC3 = 352, - U8VEC4 = 353, - DVEC2 = 354, - DVEC3 = 355, - DVEC4 = 356, - DMAT2 = 357, - DMAT3 = 358, - DMAT4 = 359, - F16VEC2 = 360, - F16VEC3 = 361, - F16VEC4 = 362, - F16MAT2 = 363, - F16MAT3 = 364, - F16MAT4 = 365, - F32VEC2 = 366, - F32VEC3 = 367, - F32VEC4 = 368, - F32MAT2 = 369, - F32MAT3 = 370, - F32MAT4 = 371, - F64VEC2 = 372, - F64VEC3 = 373, - F64VEC4 = 374, - F64MAT2 = 375, - F64MAT3 = 376, - F64MAT4 = 377, - DMAT2X2 = 378, - DMAT2X3 = 379, - DMAT2X4 = 380, - DMAT3X2 = 381, - DMAT3X3 = 382, - DMAT3X4 = 383, - DMAT4X2 = 384, - DMAT4X3 = 385, - DMAT4X4 = 386, - F16MAT2X2 = 387, - F16MAT2X3 = 388, - F16MAT2X4 = 389, - F16MAT3X2 = 390, - F16MAT3X3 = 391, - F16MAT3X4 = 392, - F16MAT4X2 = 393, - F16MAT4X3 = 394, - F16MAT4X4 = 395, - F32MAT2X2 = 396, - F32MAT2X3 = 397, - F32MAT2X4 = 398, - F32MAT3X2 = 399, - F32MAT3X3 = 400, - F32MAT3X4 = 401, - F32MAT4X2 = 402, - F32MAT4X3 = 403, - F32MAT4X4 = 404, - F64MAT2X2 = 405, - F64MAT2X3 = 406, - F64MAT2X4 = 407, - F64MAT3X2 = 408, - F64MAT3X3 = 409, - F64MAT3X4 = 410, - F64MAT4X2 = 411, - F64MAT4X3 = 412, - F64MAT4X4 = 413, - ATOMIC_UINT = 414, - ACCSTRUCTNV = 415, - ACCSTRUCTEXT = 416, - RAYQUERYEXT = 417, - FCOOPMATNV = 418, - ICOOPMATNV = 419, - UCOOPMATNV = 420, - SAMPLERCUBEARRAY = 421, - SAMPLERCUBEARRAYSHADOW = 422, - ISAMPLERCUBEARRAY = 423, - USAMPLERCUBEARRAY = 424, - SAMPLER1D = 425, - SAMPLER1DARRAY = 426, - SAMPLER1DARRAYSHADOW = 427, - ISAMPLER1D = 428, - SAMPLER1DSHADOW = 429, - SAMPLER2DRECT = 430, - SAMPLER2DRECTSHADOW = 431, - ISAMPLER2DRECT = 432, - USAMPLER2DRECT = 433, - SAMPLERBUFFER = 434, - ISAMPLERBUFFER = 435, - USAMPLERBUFFER = 436, - SAMPLER2DMS = 437, - ISAMPLER2DMS = 438, - USAMPLER2DMS = 439, - SAMPLER2DMSARRAY = 440, - ISAMPLER2DMSARRAY = 441, - USAMPLER2DMSARRAY = 442, - SAMPLEREXTERNALOES = 443, - SAMPLEREXTERNAL2DY2YEXT = 444, - ISAMPLER1DARRAY = 445, - USAMPLER1D = 446, - USAMPLER1DARRAY = 447, - F16SAMPLER1D = 448, - F16SAMPLER2D = 449, - F16SAMPLER3D = 450, - F16SAMPLER2DRECT = 451, - F16SAMPLERCUBE = 452, - F16SAMPLER1DARRAY = 453, - F16SAMPLER2DARRAY = 454, - F16SAMPLERCUBEARRAY = 455, - F16SAMPLERBUFFER = 456, - F16SAMPLER2DMS = 457, - F16SAMPLER2DMSARRAY = 458, - F16SAMPLER1DSHADOW = 459, - F16SAMPLER2DSHADOW = 460, - F16SAMPLER1DARRAYSHADOW = 461, - F16SAMPLER2DARRAYSHADOW = 462, - F16SAMPLER2DRECTSHADOW = 463, - F16SAMPLERCUBESHADOW = 464, - F16SAMPLERCUBEARRAYSHADOW = 465, - IMAGE1D = 466, - IIMAGE1D = 467, - UIMAGE1D = 468, - IMAGE2D = 469, - IIMAGE2D = 470, - UIMAGE2D = 471, - IMAGE3D = 472, - IIMAGE3D = 473, - UIMAGE3D = 474, - IMAGE2DRECT = 475, - IIMAGE2DRECT = 476, - UIMAGE2DRECT = 477, - IMAGECUBE = 478, - IIMAGECUBE = 479, - UIMAGECUBE = 480, - IMAGEBUFFER = 481, - IIMAGEBUFFER = 482, - UIMAGEBUFFER = 483, - IMAGE1DARRAY = 484, - IIMAGE1DARRAY = 485, - UIMAGE1DARRAY = 486, - IMAGE2DARRAY = 487, - IIMAGE2DARRAY = 488, - UIMAGE2DARRAY = 489, - IMAGECUBEARRAY = 490, - IIMAGECUBEARRAY = 491, - UIMAGECUBEARRAY = 492, - IMAGE2DMS = 493, - IIMAGE2DMS = 494, - UIMAGE2DMS = 495, - IMAGE2DMSARRAY = 496, - IIMAGE2DMSARRAY = 497, - UIMAGE2DMSARRAY = 498, - F16IMAGE1D = 499, - F16IMAGE2D = 500, - F16IMAGE3D = 501, - F16IMAGE2DRECT = 502, - F16IMAGECUBE = 503, - F16IMAGE1DARRAY = 504, - F16IMAGE2DARRAY = 505, - F16IMAGECUBEARRAY = 506, - F16IMAGEBUFFER = 507, - F16IMAGE2DMS = 508, - F16IMAGE2DMSARRAY = 509, - I64IMAGE1D = 510, - U64IMAGE1D = 511, - I64IMAGE2D = 512, - U64IMAGE2D = 513, - I64IMAGE3D = 514, - U64IMAGE3D = 515, - I64IMAGE2DRECT = 516, - U64IMAGE2DRECT = 517, - I64IMAGECUBE = 518, - U64IMAGECUBE = 519, - I64IMAGEBUFFER = 520, - U64IMAGEBUFFER = 521, - I64IMAGE1DARRAY = 522, - U64IMAGE1DARRAY = 523, - I64IMAGE2DARRAY = 524, - U64IMAGE2DARRAY = 525, - I64IMAGECUBEARRAY = 526, - U64IMAGECUBEARRAY = 527, - I64IMAGE2DMS = 528, - U64IMAGE2DMS = 529, - I64IMAGE2DMSARRAY = 530, - U64IMAGE2DMSARRAY = 531, - TEXTURECUBEARRAY = 532, - ITEXTURECUBEARRAY = 533, - UTEXTURECUBEARRAY = 534, - TEXTURE1D = 535, - ITEXTURE1D = 536, - UTEXTURE1D = 537, - TEXTURE1DARRAY = 538, - ITEXTURE1DARRAY = 539, - UTEXTURE1DARRAY = 540, - TEXTURE2DRECT = 541, - ITEXTURE2DRECT = 542, - UTEXTURE2DRECT = 543, - TEXTUREBUFFER = 544, - ITEXTUREBUFFER = 545, - UTEXTUREBUFFER = 546, - TEXTURE2DMS = 547, - ITEXTURE2DMS = 548, - UTEXTURE2DMS = 549, - TEXTURE2DMSARRAY = 550, - ITEXTURE2DMSARRAY = 551, - UTEXTURE2DMSARRAY = 552, - F16TEXTURE1D = 553, - F16TEXTURE2D = 554, - F16TEXTURE3D = 555, - F16TEXTURE2DRECT = 556, - F16TEXTURECUBE = 557, - F16TEXTURE1DARRAY = 558, - F16TEXTURE2DARRAY = 559, - F16TEXTURECUBEARRAY = 560, - F16TEXTUREBUFFER = 561, - F16TEXTURE2DMS = 562, - F16TEXTURE2DMSARRAY = 563, - SUBPASSINPUT = 564, - SUBPASSINPUTMS = 565, - ISUBPASSINPUT = 566, - ISUBPASSINPUTMS = 567, - USUBPASSINPUT = 568, - USUBPASSINPUTMS = 569, - F16SUBPASSINPUT = 570, - F16SUBPASSINPUTMS = 571, - LEFT_OP = 572, - RIGHT_OP = 573, - INC_OP = 574, - DEC_OP = 575, - LE_OP = 576, - GE_OP = 577, - EQ_OP = 578, - NE_OP = 579, - AND_OP = 580, - OR_OP = 581, - XOR_OP = 582, - MUL_ASSIGN = 583, - DIV_ASSIGN = 584, - ADD_ASSIGN = 585, - MOD_ASSIGN = 586, - LEFT_ASSIGN = 587, - RIGHT_ASSIGN = 588, - AND_ASSIGN = 589, - XOR_ASSIGN = 590, - OR_ASSIGN = 591, - SUB_ASSIGN = 592, - STRING_LITERAL = 593, - LEFT_PAREN = 594, - RIGHT_PAREN = 595, - LEFT_BRACKET = 596, - RIGHT_BRACKET = 597, - LEFT_BRACE = 598, - RIGHT_BRACE = 599, - DOT = 600, - COMMA = 601, - COLON = 602, - EQUAL = 603, - SEMICOLON = 604, - BANG = 605, - DASH = 606, - TILDE = 607, - PLUS = 608, - STAR = 609, - SLASH = 610, - PERCENT = 611, - LEFT_ANGLE = 612, - RIGHT_ANGLE = 613, - VERTICAL_BAR = 614, - CARET = 615, - AMPERSAND = 616, - QUESTION = 617, - INVARIANT = 618, - HIGH_PRECISION = 619, - MEDIUM_PRECISION = 620, - LOW_PRECISION = 621, - PRECISION = 622, - PACKED = 623, - RESOURCE = 624, - SUPERP = 625, - FLOATCONSTANT = 626, - INTCONSTANT = 627, - UINTCONSTANT = 628, - BOOLCONSTANT = 629, - IDENTIFIER = 630, - TYPE_NAME = 631, - CENTROID = 632, - IN = 633, - OUT = 634, - INOUT = 635, - STRUCT = 636, - VOID = 637, - WHILE = 638, - BREAK = 639, - CONTINUE = 640, - DO = 641, - ELSE = 642, - FOR = 643, - IF = 644, - DISCARD = 645, - RETURN = 646, - SWITCH = 647, - CASE = 648, - DEFAULT = 649, - UNIFORM = 650, - SHARED = 651, - BUFFER = 652, - FLAT = 653, - SMOOTH = 654, - LAYOUT = 655, - DOUBLECONSTANT = 656, - INT16CONSTANT = 657, - UINT16CONSTANT = 658, - FLOAT16CONSTANT = 659, - INT32CONSTANT = 660, - UINT32CONSTANT = 661, - INT64CONSTANT = 662, - UINT64CONSTANT = 663, - SUBROUTINE = 664, - DEMOTE = 665, - PAYLOADNV = 666, - PAYLOADINNV = 667, - HITATTRNV = 668, - CALLDATANV = 669, - CALLDATAINNV = 670, - PAYLOADEXT = 671, - PAYLOADINEXT = 672, - HITATTREXT = 673, - CALLDATAEXT = 674, - CALLDATAINEXT = 675, - PATCH = 676, - SAMPLE = 677, - NONUNIFORM = 678, - COHERENT = 679, - VOLATILE = 680, - RESTRICT = 681, - READONLY = 682, - WRITEONLY = 683, - DEVICECOHERENT = 684, - QUEUEFAMILYCOHERENT = 685, - WORKGROUPCOHERENT = 686, - SUBGROUPCOHERENT = 687, - NONPRIVATE = 688, - SHADERCALLCOHERENT = 689, - NOPERSPECTIVE = 690, - EXPLICITINTERPAMD = 691, - PERVERTEXNV = 692, - PERPRIMITIVENV = 693, - PERVIEWNV = 694, - PERTASKNV = 695, - PRECISE = 696 + YYEMPTY = -2, + YYEOF = 0, /* "end of file" */ + YYerror = 256, /* error */ + YYUNDEF = 257, /* "invalid token" */ + CONST = 258, /* CONST */ + BOOL = 259, /* BOOL */ + INT = 260, /* INT */ + UINT = 261, /* UINT */ + FLOAT = 262, /* FLOAT */ + BVEC2 = 263, /* BVEC2 */ + BVEC3 = 264, /* BVEC3 */ + BVEC4 = 265, /* BVEC4 */ + IVEC2 = 266, /* IVEC2 */ + IVEC3 = 267, /* IVEC3 */ + IVEC4 = 268, /* IVEC4 */ + UVEC2 = 269, /* UVEC2 */ + UVEC3 = 270, /* UVEC3 */ + UVEC4 = 271, /* UVEC4 */ + VEC2 = 272, /* VEC2 */ + VEC3 = 273, /* VEC3 */ + VEC4 = 274, /* VEC4 */ + MAT2 = 275, /* MAT2 */ + MAT3 = 276, /* MAT3 */ + MAT4 = 277, /* MAT4 */ + MAT2X2 = 278, /* MAT2X2 */ + MAT2X3 = 279, /* MAT2X3 */ + MAT2X4 = 280, /* MAT2X4 */ + MAT3X2 = 281, /* MAT3X2 */ + MAT3X3 = 282, /* MAT3X3 */ + MAT3X4 = 283, /* MAT3X4 */ + MAT4X2 = 284, /* MAT4X2 */ + MAT4X3 = 285, /* MAT4X3 */ + MAT4X4 = 286, /* MAT4X4 */ + SAMPLER2D = 287, /* SAMPLER2D */ + SAMPLER3D = 288, /* SAMPLER3D */ + SAMPLERCUBE = 289, /* SAMPLERCUBE */ + SAMPLER2DSHADOW = 290, /* SAMPLER2DSHADOW */ + SAMPLERCUBESHADOW = 291, /* SAMPLERCUBESHADOW */ + SAMPLER2DARRAY = 292, /* SAMPLER2DARRAY */ + SAMPLER2DARRAYSHADOW = 293, /* SAMPLER2DARRAYSHADOW */ + ISAMPLER2D = 294, /* ISAMPLER2D */ + ISAMPLER3D = 295, /* ISAMPLER3D */ + ISAMPLERCUBE = 296, /* ISAMPLERCUBE */ + ISAMPLER2DARRAY = 297, /* ISAMPLER2DARRAY */ + USAMPLER2D = 298, /* USAMPLER2D */ + USAMPLER3D = 299, /* USAMPLER3D */ + USAMPLERCUBE = 300, /* USAMPLERCUBE */ + USAMPLER2DARRAY = 301, /* USAMPLER2DARRAY */ + SAMPLER = 302, /* SAMPLER */ + SAMPLERSHADOW = 303, /* SAMPLERSHADOW */ + TEXTURE2D = 304, /* TEXTURE2D */ + TEXTURE3D = 305, /* TEXTURE3D */ + TEXTURECUBE = 306, /* TEXTURECUBE */ + TEXTURE2DARRAY = 307, /* TEXTURE2DARRAY */ + ITEXTURE2D = 308, /* ITEXTURE2D */ + ITEXTURE3D = 309, /* ITEXTURE3D */ + ITEXTURECUBE = 310, /* ITEXTURECUBE */ + ITEXTURE2DARRAY = 311, /* ITEXTURE2DARRAY */ + UTEXTURE2D = 312, /* UTEXTURE2D */ + UTEXTURE3D = 313, /* UTEXTURE3D */ + UTEXTURECUBE = 314, /* UTEXTURECUBE */ + UTEXTURE2DARRAY = 315, /* UTEXTURE2DARRAY */ + ATTRIBUTE = 316, /* ATTRIBUTE */ + VARYING = 317, /* VARYING */ + FLOAT16_T = 318, /* FLOAT16_T */ + FLOAT32_T = 319, /* FLOAT32_T */ + DOUBLE = 320, /* DOUBLE */ + FLOAT64_T = 321, /* FLOAT64_T */ + INT64_T = 322, /* INT64_T */ + UINT64_T = 323, /* UINT64_T */ + INT32_T = 324, /* INT32_T */ + UINT32_T = 325, /* UINT32_T */ + INT16_T = 326, /* INT16_T */ + UINT16_T = 327, /* UINT16_T */ + INT8_T = 328, /* INT8_T */ + UINT8_T = 329, /* UINT8_T */ + I64VEC2 = 330, /* I64VEC2 */ + I64VEC3 = 331, /* I64VEC3 */ + I64VEC4 = 332, /* I64VEC4 */ + U64VEC2 = 333, /* U64VEC2 */ + U64VEC3 = 334, /* U64VEC3 */ + U64VEC4 = 335, /* U64VEC4 */ + I32VEC2 = 336, /* I32VEC2 */ + I32VEC3 = 337, /* I32VEC3 */ + I32VEC4 = 338, /* I32VEC4 */ + U32VEC2 = 339, /* U32VEC2 */ + U32VEC3 = 340, /* U32VEC3 */ + U32VEC4 = 341, /* U32VEC4 */ + I16VEC2 = 342, /* I16VEC2 */ + I16VEC3 = 343, /* I16VEC3 */ + I16VEC4 = 344, /* I16VEC4 */ + U16VEC2 = 345, /* U16VEC2 */ + U16VEC3 = 346, /* U16VEC3 */ + U16VEC4 = 347, /* U16VEC4 */ + I8VEC2 = 348, /* I8VEC2 */ + I8VEC3 = 349, /* I8VEC3 */ + I8VEC4 = 350, /* I8VEC4 */ + U8VEC2 = 351, /* U8VEC2 */ + U8VEC3 = 352, /* U8VEC3 */ + U8VEC4 = 353, /* U8VEC4 */ + DVEC2 = 354, /* DVEC2 */ + DVEC3 = 355, /* DVEC3 */ + DVEC4 = 356, /* DVEC4 */ + DMAT2 = 357, /* DMAT2 */ + DMAT3 = 358, /* DMAT3 */ + DMAT4 = 359, /* DMAT4 */ + F16VEC2 = 360, /* F16VEC2 */ + F16VEC3 = 361, /* F16VEC3 */ + F16VEC4 = 362, /* F16VEC4 */ + F16MAT2 = 363, /* F16MAT2 */ + F16MAT3 = 364, /* F16MAT3 */ + F16MAT4 = 365, /* F16MAT4 */ + F32VEC2 = 366, /* F32VEC2 */ + F32VEC3 = 367, /* F32VEC3 */ + F32VEC4 = 368, /* F32VEC4 */ + F32MAT2 = 369, /* F32MAT2 */ + F32MAT3 = 370, /* F32MAT3 */ + F32MAT4 = 371, /* F32MAT4 */ + F64VEC2 = 372, /* F64VEC2 */ + F64VEC3 = 373, /* F64VEC3 */ + F64VEC4 = 374, /* F64VEC4 */ + F64MAT2 = 375, /* F64MAT2 */ + F64MAT3 = 376, /* F64MAT3 */ + F64MAT4 = 377, /* F64MAT4 */ + DMAT2X2 = 378, /* DMAT2X2 */ + DMAT2X3 = 379, /* DMAT2X3 */ + DMAT2X4 = 380, /* DMAT2X4 */ + DMAT3X2 = 381, /* DMAT3X2 */ + DMAT3X3 = 382, /* DMAT3X3 */ + DMAT3X4 = 383, /* DMAT3X4 */ + DMAT4X2 = 384, /* DMAT4X2 */ + DMAT4X3 = 385, /* DMAT4X3 */ + DMAT4X4 = 386, /* DMAT4X4 */ + F16MAT2X2 = 387, /* F16MAT2X2 */ + F16MAT2X3 = 388, /* F16MAT2X3 */ + F16MAT2X4 = 389, /* F16MAT2X4 */ + F16MAT3X2 = 390, /* F16MAT3X2 */ + F16MAT3X3 = 391, /* F16MAT3X3 */ + F16MAT3X4 = 392, /* F16MAT3X4 */ + F16MAT4X2 = 393, /* F16MAT4X2 */ + F16MAT4X3 = 394, /* F16MAT4X3 */ + F16MAT4X4 = 395, /* F16MAT4X4 */ + F32MAT2X2 = 396, /* F32MAT2X2 */ + F32MAT2X3 = 397, /* F32MAT2X3 */ + F32MAT2X4 = 398, /* F32MAT2X4 */ + F32MAT3X2 = 399, /* F32MAT3X2 */ + F32MAT3X3 = 400, /* F32MAT3X3 */ + F32MAT3X4 = 401, /* F32MAT3X4 */ + F32MAT4X2 = 402, /* F32MAT4X2 */ + F32MAT4X3 = 403, /* F32MAT4X3 */ + F32MAT4X4 = 404, /* F32MAT4X4 */ + F64MAT2X2 = 405, /* F64MAT2X2 */ + F64MAT2X3 = 406, /* F64MAT2X3 */ + F64MAT2X4 = 407, /* F64MAT2X4 */ + F64MAT3X2 = 408, /* F64MAT3X2 */ + F64MAT3X3 = 409, /* F64MAT3X3 */ + F64MAT3X4 = 410, /* F64MAT3X4 */ + F64MAT4X2 = 411, /* F64MAT4X2 */ + F64MAT4X3 = 412, /* F64MAT4X3 */ + F64MAT4X4 = 413, /* F64MAT4X4 */ + ATOMIC_UINT = 414, /* ATOMIC_UINT */ + ACCSTRUCTNV = 415, /* ACCSTRUCTNV */ + ACCSTRUCTEXT = 416, /* ACCSTRUCTEXT */ + RAYQUERYEXT = 417, /* RAYQUERYEXT */ + FCOOPMATNV = 418, /* FCOOPMATNV */ + ICOOPMATNV = 419, /* ICOOPMATNV */ + UCOOPMATNV = 420, /* UCOOPMATNV */ + SAMPLERCUBEARRAY = 421, /* SAMPLERCUBEARRAY */ + SAMPLERCUBEARRAYSHADOW = 422, /* SAMPLERCUBEARRAYSHADOW */ + ISAMPLERCUBEARRAY = 423, /* ISAMPLERCUBEARRAY */ + USAMPLERCUBEARRAY = 424, /* USAMPLERCUBEARRAY */ + SAMPLER1D = 425, /* SAMPLER1D */ + SAMPLER1DARRAY = 426, /* SAMPLER1DARRAY */ + SAMPLER1DARRAYSHADOW = 427, /* SAMPLER1DARRAYSHADOW */ + ISAMPLER1D = 428, /* ISAMPLER1D */ + SAMPLER1DSHADOW = 429, /* SAMPLER1DSHADOW */ + SAMPLER2DRECT = 430, /* SAMPLER2DRECT */ + SAMPLER2DRECTSHADOW = 431, /* SAMPLER2DRECTSHADOW */ + ISAMPLER2DRECT = 432, /* ISAMPLER2DRECT */ + USAMPLER2DRECT = 433, /* USAMPLER2DRECT */ + SAMPLERBUFFER = 434, /* SAMPLERBUFFER */ + ISAMPLERBUFFER = 435, /* ISAMPLERBUFFER */ + USAMPLERBUFFER = 436, /* USAMPLERBUFFER */ + SAMPLER2DMS = 437, /* SAMPLER2DMS */ + ISAMPLER2DMS = 438, /* ISAMPLER2DMS */ + USAMPLER2DMS = 439, /* USAMPLER2DMS */ + SAMPLER2DMSARRAY = 440, /* SAMPLER2DMSARRAY */ + ISAMPLER2DMSARRAY = 441, /* ISAMPLER2DMSARRAY */ + USAMPLER2DMSARRAY = 442, /* USAMPLER2DMSARRAY */ + SAMPLEREXTERNALOES = 443, /* SAMPLEREXTERNALOES */ + SAMPLEREXTERNAL2DY2YEXT = 444, /* SAMPLEREXTERNAL2DY2YEXT */ + ISAMPLER1DARRAY = 445, /* ISAMPLER1DARRAY */ + USAMPLER1D = 446, /* USAMPLER1D */ + USAMPLER1DARRAY = 447, /* USAMPLER1DARRAY */ + F16SAMPLER1D = 448, /* F16SAMPLER1D */ + F16SAMPLER2D = 449, /* F16SAMPLER2D */ + F16SAMPLER3D = 450, /* F16SAMPLER3D */ + F16SAMPLER2DRECT = 451, /* F16SAMPLER2DRECT */ + F16SAMPLERCUBE = 452, /* F16SAMPLERCUBE */ + F16SAMPLER1DARRAY = 453, /* F16SAMPLER1DARRAY */ + F16SAMPLER2DARRAY = 454, /* F16SAMPLER2DARRAY */ + F16SAMPLERCUBEARRAY = 455, /* F16SAMPLERCUBEARRAY */ + F16SAMPLERBUFFER = 456, /* F16SAMPLERBUFFER */ + F16SAMPLER2DMS = 457, /* F16SAMPLER2DMS */ + F16SAMPLER2DMSARRAY = 458, /* F16SAMPLER2DMSARRAY */ + F16SAMPLER1DSHADOW = 459, /* F16SAMPLER1DSHADOW */ + F16SAMPLER2DSHADOW = 460, /* F16SAMPLER2DSHADOW */ + F16SAMPLER1DARRAYSHADOW = 461, /* F16SAMPLER1DARRAYSHADOW */ + F16SAMPLER2DARRAYSHADOW = 462, /* F16SAMPLER2DARRAYSHADOW */ + F16SAMPLER2DRECTSHADOW = 463, /* F16SAMPLER2DRECTSHADOW */ + F16SAMPLERCUBESHADOW = 464, /* F16SAMPLERCUBESHADOW */ + F16SAMPLERCUBEARRAYSHADOW = 465, /* F16SAMPLERCUBEARRAYSHADOW */ + IMAGE1D = 466, /* IMAGE1D */ + IIMAGE1D = 467, /* IIMAGE1D */ + UIMAGE1D = 468, /* UIMAGE1D */ + IMAGE2D = 469, /* IMAGE2D */ + IIMAGE2D = 470, /* IIMAGE2D */ + UIMAGE2D = 471, /* UIMAGE2D */ + IMAGE3D = 472, /* IMAGE3D */ + IIMAGE3D = 473, /* IIMAGE3D */ + UIMAGE3D = 474, /* UIMAGE3D */ + IMAGE2DRECT = 475, /* IMAGE2DRECT */ + IIMAGE2DRECT = 476, /* IIMAGE2DRECT */ + UIMAGE2DRECT = 477, /* UIMAGE2DRECT */ + IMAGECUBE = 478, /* IMAGECUBE */ + IIMAGECUBE = 479, /* IIMAGECUBE */ + UIMAGECUBE = 480, /* UIMAGECUBE */ + IMAGEBUFFER = 481, /* IMAGEBUFFER */ + IIMAGEBUFFER = 482, /* IIMAGEBUFFER */ + UIMAGEBUFFER = 483, /* UIMAGEBUFFER */ + IMAGE1DARRAY = 484, /* IMAGE1DARRAY */ + IIMAGE1DARRAY = 485, /* IIMAGE1DARRAY */ + UIMAGE1DARRAY = 486, /* UIMAGE1DARRAY */ + IMAGE2DARRAY = 487, /* IMAGE2DARRAY */ + IIMAGE2DARRAY = 488, /* IIMAGE2DARRAY */ + UIMAGE2DARRAY = 489, /* UIMAGE2DARRAY */ + IMAGECUBEARRAY = 490, /* IMAGECUBEARRAY */ + IIMAGECUBEARRAY = 491, /* IIMAGECUBEARRAY */ + UIMAGECUBEARRAY = 492, /* UIMAGECUBEARRAY */ + IMAGE2DMS = 493, /* IMAGE2DMS */ + IIMAGE2DMS = 494, /* IIMAGE2DMS */ + UIMAGE2DMS = 495, /* UIMAGE2DMS */ + IMAGE2DMSARRAY = 496, /* IMAGE2DMSARRAY */ + IIMAGE2DMSARRAY = 497, /* IIMAGE2DMSARRAY */ + UIMAGE2DMSARRAY = 498, /* UIMAGE2DMSARRAY */ + F16IMAGE1D = 499, /* F16IMAGE1D */ + F16IMAGE2D = 500, /* F16IMAGE2D */ + F16IMAGE3D = 501, /* F16IMAGE3D */ + F16IMAGE2DRECT = 502, /* F16IMAGE2DRECT */ + F16IMAGECUBE = 503, /* F16IMAGECUBE */ + F16IMAGE1DARRAY = 504, /* F16IMAGE1DARRAY */ + F16IMAGE2DARRAY = 505, /* F16IMAGE2DARRAY */ + F16IMAGECUBEARRAY = 506, /* F16IMAGECUBEARRAY */ + F16IMAGEBUFFER = 507, /* F16IMAGEBUFFER */ + F16IMAGE2DMS = 508, /* F16IMAGE2DMS */ + F16IMAGE2DMSARRAY = 509, /* F16IMAGE2DMSARRAY */ + I64IMAGE1D = 510, /* I64IMAGE1D */ + U64IMAGE1D = 511, /* U64IMAGE1D */ + I64IMAGE2D = 512, /* I64IMAGE2D */ + U64IMAGE2D = 513, /* U64IMAGE2D */ + I64IMAGE3D = 514, /* I64IMAGE3D */ + U64IMAGE3D = 515, /* U64IMAGE3D */ + I64IMAGE2DRECT = 516, /* I64IMAGE2DRECT */ + U64IMAGE2DRECT = 517, /* U64IMAGE2DRECT */ + I64IMAGECUBE = 518, /* I64IMAGECUBE */ + U64IMAGECUBE = 519, /* U64IMAGECUBE */ + I64IMAGEBUFFER = 520, /* I64IMAGEBUFFER */ + U64IMAGEBUFFER = 521, /* U64IMAGEBUFFER */ + I64IMAGE1DARRAY = 522, /* I64IMAGE1DARRAY */ + U64IMAGE1DARRAY = 523, /* U64IMAGE1DARRAY */ + I64IMAGE2DARRAY = 524, /* I64IMAGE2DARRAY */ + U64IMAGE2DARRAY = 525, /* U64IMAGE2DARRAY */ + I64IMAGECUBEARRAY = 526, /* I64IMAGECUBEARRAY */ + U64IMAGECUBEARRAY = 527, /* U64IMAGECUBEARRAY */ + I64IMAGE2DMS = 528, /* I64IMAGE2DMS */ + U64IMAGE2DMS = 529, /* U64IMAGE2DMS */ + I64IMAGE2DMSARRAY = 530, /* I64IMAGE2DMSARRAY */ + U64IMAGE2DMSARRAY = 531, /* U64IMAGE2DMSARRAY */ + TEXTURECUBEARRAY = 532, /* TEXTURECUBEARRAY */ + ITEXTURECUBEARRAY = 533, /* ITEXTURECUBEARRAY */ + UTEXTURECUBEARRAY = 534, /* UTEXTURECUBEARRAY */ + TEXTURE1D = 535, /* TEXTURE1D */ + ITEXTURE1D = 536, /* ITEXTURE1D */ + UTEXTURE1D = 537, /* UTEXTURE1D */ + TEXTURE1DARRAY = 538, /* TEXTURE1DARRAY */ + ITEXTURE1DARRAY = 539, /* ITEXTURE1DARRAY */ + UTEXTURE1DARRAY = 540, /* UTEXTURE1DARRAY */ + TEXTURE2DRECT = 541, /* TEXTURE2DRECT */ + ITEXTURE2DRECT = 542, /* ITEXTURE2DRECT */ + UTEXTURE2DRECT = 543, /* UTEXTURE2DRECT */ + TEXTUREBUFFER = 544, /* TEXTUREBUFFER */ + ITEXTUREBUFFER = 545, /* ITEXTUREBUFFER */ + UTEXTUREBUFFER = 546, /* UTEXTUREBUFFER */ + TEXTURE2DMS = 547, /* TEXTURE2DMS */ + ITEXTURE2DMS = 548, /* ITEXTURE2DMS */ + UTEXTURE2DMS = 549, /* UTEXTURE2DMS */ + TEXTURE2DMSARRAY = 550, /* TEXTURE2DMSARRAY */ + ITEXTURE2DMSARRAY = 551, /* ITEXTURE2DMSARRAY */ + UTEXTURE2DMSARRAY = 552, /* UTEXTURE2DMSARRAY */ + F16TEXTURE1D = 553, /* F16TEXTURE1D */ + F16TEXTURE2D = 554, /* F16TEXTURE2D */ + F16TEXTURE3D = 555, /* F16TEXTURE3D */ + F16TEXTURE2DRECT = 556, /* F16TEXTURE2DRECT */ + F16TEXTURECUBE = 557, /* F16TEXTURECUBE */ + F16TEXTURE1DARRAY = 558, /* F16TEXTURE1DARRAY */ + F16TEXTURE2DARRAY = 559, /* F16TEXTURE2DARRAY */ + F16TEXTURECUBEARRAY = 560, /* F16TEXTURECUBEARRAY */ + F16TEXTUREBUFFER = 561, /* F16TEXTUREBUFFER */ + F16TEXTURE2DMS = 562, /* F16TEXTURE2DMS */ + F16TEXTURE2DMSARRAY = 563, /* F16TEXTURE2DMSARRAY */ + SUBPASSINPUT = 564, /* SUBPASSINPUT */ + SUBPASSINPUTMS = 565, /* SUBPASSINPUTMS */ + ISUBPASSINPUT = 566, /* ISUBPASSINPUT */ + ISUBPASSINPUTMS = 567, /* ISUBPASSINPUTMS */ + USUBPASSINPUT = 568, /* USUBPASSINPUT */ + USUBPASSINPUTMS = 569, /* USUBPASSINPUTMS */ + F16SUBPASSINPUT = 570, /* F16SUBPASSINPUT */ + F16SUBPASSINPUTMS = 571, /* F16SUBPASSINPUTMS */ + LEFT_OP = 572, /* LEFT_OP */ + RIGHT_OP = 573, /* RIGHT_OP */ + INC_OP = 574, /* INC_OP */ + DEC_OP = 575, /* DEC_OP */ + LE_OP = 576, /* LE_OP */ + GE_OP = 577, /* GE_OP */ + EQ_OP = 578, /* EQ_OP */ + NE_OP = 579, /* NE_OP */ + AND_OP = 580, /* AND_OP */ + OR_OP = 581, /* OR_OP */ + XOR_OP = 582, /* XOR_OP */ + MUL_ASSIGN = 583, /* MUL_ASSIGN */ + DIV_ASSIGN = 584, /* DIV_ASSIGN */ + ADD_ASSIGN = 585, /* ADD_ASSIGN */ + MOD_ASSIGN = 586, /* MOD_ASSIGN */ + LEFT_ASSIGN = 587, /* LEFT_ASSIGN */ + RIGHT_ASSIGN = 588, /* RIGHT_ASSIGN */ + AND_ASSIGN = 589, /* AND_ASSIGN */ + XOR_ASSIGN = 590, /* XOR_ASSIGN */ + OR_ASSIGN = 591, /* OR_ASSIGN */ + SUB_ASSIGN = 592, /* SUB_ASSIGN */ + STRING_LITERAL = 593, /* STRING_LITERAL */ + LEFT_PAREN = 594, /* LEFT_PAREN */ + RIGHT_PAREN = 595, /* RIGHT_PAREN */ + LEFT_BRACKET = 596, /* LEFT_BRACKET */ + RIGHT_BRACKET = 597, /* RIGHT_BRACKET */ + LEFT_BRACE = 598, /* LEFT_BRACE */ + RIGHT_BRACE = 599, /* RIGHT_BRACE */ + DOT = 600, /* DOT */ + COMMA = 601, /* COMMA */ + COLON = 602, /* COLON */ + EQUAL = 603, /* EQUAL */ + SEMICOLON = 604, /* SEMICOLON */ + BANG = 605, /* BANG */ + DASH = 606, /* DASH */ + TILDE = 607, /* TILDE */ + PLUS = 608, /* PLUS */ + STAR = 609, /* STAR */ + SLASH = 610, /* SLASH */ + PERCENT = 611, /* PERCENT */ + LEFT_ANGLE = 612, /* LEFT_ANGLE */ + RIGHT_ANGLE = 613, /* RIGHT_ANGLE */ + VERTICAL_BAR = 614, /* VERTICAL_BAR */ + CARET = 615, /* CARET */ + AMPERSAND = 616, /* AMPERSAND */ + QUESTION = 617, /* QUESTION */ + INVARIANT = 618, /* INVARIANT */ + HIGH_PRECISION = 619, /* HIGH_PRECISION */ + MEDIUM_PRECISION = 620, /* MEDIUM_PRECISION */ + LOW_PRECISION = 621, /* LOW_PRECISION */ + PRECISION = 622, /* PRECISION */ + PACKED = 623, /* PACKED */ + RESOURCE = 624, /* RESOURCE */ + SUPERP = 625, /* SUPERP */ + FLOATCONSTANT = 626, /* FLOATCONSTANT */ + INTCONSTANT = 627, /* INTCONSTANT */ + UINTCONSTANT = 628, /* UINTCONSTANT */ + BOOLCONSTANT = 629, /* BOOLCONSTANT */ + IDENTIFIER = 630, /* IDENTIFIER */ + TYPE_NAME = 631, /* TYPE_NAME */ + CENTROID = 632, /* CENTROID */ + IN = 633, /* IN */ + OUT = 634, /* OUT */ + INOUT = 635, /* INOUT */ + STRUCT = 636, /* STRUCT */ + VOID = 637, /* VOID */ + WHILE = 638, /* WHILE */ + BREAK = 639, /* BREAK */ + CONTINUE = 640, /* CONTINUE */ + DO = 641, /* DO */ + ELSE = 642, /* ELSE */ + FOR = 643, /* FOR */ + IF = 644, /* IF */ + DISCARD = 645, /* DISCARD */ + RETURN = 646, /* RETURN */ + SWITCH = 647, /* SWITCH */ + CASE = 648, /* CASE */ + DEFAULT = 649, /* DEFAULT */ + TERMINATE_INVOCATION = 650, /* TERMINATE_INVOCATION */ + UNIFORM = 651, /* UNIFORM */ + SHARED = 652, /* SHARED */ + BUFFER = 653, /* BUFFER */ + FLAT = 654, /* FLAT */ + SMOOTH = 655, /* SMOOTH */ + LAYOUT = 656, /* LAYOUT */ + DOUBLECONSTANT = 657, /* DOUBLECONSTANT */ + INT16CONSTANT = 658, /* INT16CONSTANT */ + UINT16CONSTANT = 659, /* UINT16CONSTANT */ + FLOAT16CONSTANT = 660, /* FLOAT16CONSTANT */ + INT32CONSTANT = 661, /* INT32CONSTANT */ + UINT32CONSTANT = 662, /* UINT32CONSTANT */ + INT64CONSTANT = 663, /* INT64CONSTANT */ + UINT64CONSTANT = 664, /* UINT64CONSTANT */ + SUBROUTINE = 665, /* SUBROUTINE */ + DEMOTE = 666, /* DEMOTE */ + PAYLOADNV = 667, /* PAYLOADNV */ + PAYLOADINNV = 668, /* PAYLOADINNV */ + HITATTRNV = 669, /* HITATTRNV */ + CALLDATANV = 670, /* CALLDATANV */ + CALLDATAINNV = 671, /* CALLDATAINNV */ + PAYLOADEXT = 672, /* PAYLOADEXT */ + PAYLOADINEXT = 673, /* PAYLOADINEXT */ + HITATTREXT = 674, /* HITATTREXT */ + CALLDATAEXT = 675, /* CALLDATAEXT */ + CALLDATAINEXT = 676, /* CALLDATAINEXT */ + PATCH = 677, /* PATCH */ + SAMPLE = 678, /* SAMPLE */ + NONUNIFORM = 679, /* NONUNIFORM */ + COHERENT = 680, /* COHERENT */ + VOLATILE = 681, /* VOLATILE */ + RESTRICT = 682, /* RESTRICT */ + READONLY = 683, /* READONLY */ + WRITEONLY = 684, /* WRITEONLY */ + DEVICECOHERENT = 685, /* DEVICECOHERENT */ + QUEUEFAMILYCOHERENT = 686, /* QUEUEFAMILYCOHERENT */ + WORKGROUPCOHERENT = 687, /* WORKGROUPCOHERENT */ + SUBGROUPCOHERENT = 688, /* SUBGROUPCOHERENT */ + NONPRIVATE = 689, /* NONPRIVATE */ + SHADERCALLCOHERENT = 690, /* SHADERCALLCOHERENT */ + NOPERSPECTIVE = 691, /* NOPERSPECTIVE */ + EXPLICITINTERPAMD = 692, /* EXPLICITINTERPAMD */ + PERVERTEXNV = 693, /* PERVERTEXNV */ + PERPRIMITIVENV = 694, /* PERPRIMITIVENV */ + PERVIEWNV = 695, /* PERVIEWNV */ + PERTASKNV = 696, /* PERTASKNV */ + PRECISE = 697 /* PRECISE */ }; + typedef enum yytokentype yytoken_kind_t; #endif /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED - union YYSTYPE { -#line 97 "MachineIndependent/glslang.y" /* yacc.c:1909 */ +#line 97 "glslang/MachineIndependent/glslang.y" struct { glslang::TSourceLoc loc; @@ -528,9 +538,9 @@ union YYSTYPE glslang::TArraySizes* typeParameters; } interm; -#line 532 "MachineIndependent/glslang_tab.cpp.h" /* yacc.c:1909 */ -}; +#line 542 "glslang/MachineIndependent/glslang_tab.cpp.h" +}; typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 @@ -540,4 +550,4 @@ typedef union YYSTYPE YYSTYPE; int yyparse (glslang::TParseContext* pParseContext); -#endif /* !YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED */ +#endif /* !YY_YY_GLSLANG_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED */ diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp index 0239e99c..ac862e63 100644 --- a/glslang/MachineIndependent/intermOut.cpp +++ b/glslang/MachineIndependent/intermOut.cpp @@ -1409,14 +1409,15 @@ bool TOutputTraverser::visitBranch(TVisit /* visit*/, TIntermBranch* node) OutputTreeText(out, node, depth); switch (node->getFlowOp()) { - case EOpKill: out.debug << "Branch: Kill"; break; - case EOpBreak: out.debug << "Branch: Break"; break; - case EOpContinue: out.debug << "Branch: Continue"; break; - case EOpReturn: out.debug << "Branch: Return"; break; - case EOpCase: out.debug << "case: "; break; - case EOpDemote: out.debug << "Demote"; break; - case EOpDefault: out.debug << "default: "; break; - default: out.debug << "Branch: Unknown Branch"; break; + case EOpKill: out.debug << "Branch: Kill"; break; + case EOpTerminateInvocation: out.debug << "Branch: TerminateInvocation"; break; + case EOpBreak: out.debug << "Branch: Break"; break; + case EOpContinue: out.debug << "Branch: Continue"; break; + case EOpReturn: out.debug << "Branch: Return"; break; + case EOpCase: out.debug << "case: "; break; + case EOpDemote: out.debug << "Demote"; break; + case EOpDefault: out.debug << "default: "; break; + default: out.debug << "Branch: Unknown Branch"; break; } if (node->getExpression()) { diff --git a/gtests/AST.FromFile.cpp b/gtests/AST.FromFile.cpp index a8e4da42..dc7fea38 100644 --- a/gtests/AST.FromFile.cpp +++ b/gtests/AST.FromFile.cpp @@ -278,6 +278,8 @@ INSTANTIATE_TEST_SUITE_P( "glsl.es320.subgroupShuffleRelative.comp", "glsl.es320.subgroupQuad.comp", "glsl.es320.subgroupVote.comp", + "terminate.frag", + "terminate.vert", })), FileNameAsCustomTestSuffix ); diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index fb3e28c6..9cb3dbab 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -436,6 +436,7 @@ INSTANTIATE_TEST_SUITE_P( "spv.specConstant.int16.comp", "spv.specConstant.int8.comp", "spv.storageBuffer.vert", + "spv.terminate.frag", "spv.precise.tese", "spv.precise.tesc", "spv.volatileAtomic.comp", From 639f5461e37e386a62edb7381563b3986741b0c2 Mon Sep 17 00:00:00 2001 From: greg-lunarg Date: Thu, 12 Nov 2020 11:10:07 -0700 Subject: [PATCH 41/57] New nonuniform analysis (#2457) This implements a new nonunifom analysis suggested by @jbolz. This change generates nonUniform decorations that were previously missing and avoids generation of incorrect decorations. Most notably, it now generates decorations for nonuniform functions and out params. It avoids generating decorations for lvalues which themselves are not nonuniform. --- SPIRV/GlslangToSpv.cpp | 70 +- SPIRV/SpvBuilder.cpp | 11 +- SPIRV/SpvBuilder.h | 6 +- Test/baseResults/spv.nonuniform.frag.out | 770 ++++++++++++---------- Test/baseResults/spv.nonuniform4.frag.out | 1 + Test/spv.nonuniform.frag | 11 + 6 files changed, 496 insertions(+), 373 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index e9c14df3..a24b5223 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -149,6 +149,7 @@ protected: spv::Decoration TranslateInterpolationDecoration(const glslang::TQualifier& qualifier); spv::Decoration TranslateAuxiliaryStorageDecoration(const glslang::TQualifier& qualifier); spv::Decoration TranslateNonUniformDecoration(const glslang::TQualifier& qualifier); + spv::Decoration TranslateNonUniformDecoration(const spv::Builder::AccessChain::CoherentFlags& coherentFlags); spv::Builder::AccessChain::CoherentFlags TranslateCoherent(const glslang::TType& type); spv::MemoryAccessMask TranslateMemoryAccess(const spv::Builder::AccessChain::CoherentFlags &coherentFlags); spv::ImageOperandsMask TranslateImageOperands(const spv::Builder::AccessChain::CoherentFlags &coherentFlags); @@ -539,6 +540,20 @@ spv::Decoration TGlslangToSpvTraverser::TranslateNonUniformDecoration(const glsl return spv::DecorationMax; } +// If lvalue flags contains nonUniform, return SPIR-V NonUniform decoration. +spv::Decoration TGlslangToSpvTraverser::TranslateNonUniformDecoration( + const spv::Builder::AccessChain::CoherentFlags& coherentFlags) +{ +#ifndef GLSLANG_WEB + if (coherentFlags.isNonUniform()) { + builder.addIncorporatedExtension("SPV_EXT_descriptor_indexing", spv::Spv_1_5); + builder.addCapability(spv::CapabilityShaderNonUniformEXT); + return spv::DecorationNonUniformEXT; + } else +#endif + return spv::DecorationMax; +} + spv::MemoryAccessMask TGlslangToSpvTraverser::TranslateMemoryAccess( const spv::Builder::AccessChain::CoherentFlags &coherentFlags) { @@ -614,6 +629,7 @@ spv::Builder::AccessChain::CoherentFlags TGlslangToSpvTraverser::TranslateCohere flags.volatil; flags.isImage = type.getBasicType() == glslang::EbtSampler; #endif + flags.nonUniform = type.getQualifier().nonUniform; return flags; } @@ -1376,6 +1392,8 @@ void InheritQualifiers(glslang::TQualifier& child, const glslang::TQualifier& pa if (parent.writeonly) child.writeonly = true; #endif + if (parent.nonUniform) + child.nonUniform = true; } bool HasNonLayoutQualifiers(const glslang::TType& type, const glslang::TQualifier& qualifier) @@ -1881,9 +1899,11 @@ bool TGlslangToSpvTraverser::visitBinary(glslang::TVisit /* visit */, glslang::T spv::Id leftRValue = accessChainLoad(node->getLeft()->getType()); // do the operation + spv::Builder::AccessChain::CoherentFlags coherentFlags = TranslateCoherent(node->getLeft()->getType()); + coherentFlags |= TranslateCoherent(node->getRight()->getType()); OpDecorations decorations = { TranslatePrecisionDecoration(node->getOperationPrecision()), TranslateNoContractionDecoration(node->getType().getQualifier()), - TranslateNonUniformDecoration(node->getType().getQualifier()) }; + TranslateNonUniformDecoration(coherentFlags) }; rValue = createBinaryOperation(node->getOp(), decorations, convertGlslangToSpvType(node->getType()), leftRValue, rValue, node->getType().getBasicType()); @@ -1914,13 +1934,16 @@ bool TGlslangToSpvTraverser::visitBinary(glslang::TVisit /* visit */, glslang::T if (! node->getLeft()->getType().isArray() && node->getLeft()->getType().isVector() && node->getOp() == glslang::EOpIndexDirect) { + // Swizzle is uniform so propagate uniform into access chain + spv::Builder::AccessChain::CoherentFlags coherentFlags = TranslateCoherent(node->getLeft()->getType()); + coherentFlags.nonUniform = 0; // This is essentially a hard-coded vector swizzle of size 1, // so short circuit the access-chain stuff with a swizzle. std::vector swizzle; swizzle.push_back(glslangIndex); int dummySize; builder.accessChainPushSwizzle(swizzle, convertGlslangToSpvType(node->getLeft()->getType()), - TranslateCoherent(node->getLeft()->getType()), + coherentFlags, glslangIntermediate->getBaseAlignmentScalar( node->getLeft()->getType(), dummySize)); } else { @@ -1951,9 +1974,14 @@ bool TGlslangToSpvTraverser::visitBinary(glslang::TVisit /* visit */, glslang::T } } + // Struct reference propagates uniform lvalue + spv::Builder::AccessChain::CoherentFlags coherentFlags = + TranslateCoherent(node->getLeft()->getType()); + coherentFlags.nonUniform = 0; + // normal case for indexing array or structure or block builder.accessChainPush(builder.makeIntConstant(spvIndex), - TranslateCoherent(node->getLeft()->getType()), + coherentFlags, node->getLeft()->getType().getBufferReferenceAlignment()); // Add capabilities here for accessing PointSize and clip/cull distance. @@ -1987,15 +2015,20 @@ bool TGlslangToSpvTraverser::visitBinary(glslang::TVisit /* visit */, glslang::T // restore the saved access chain builder.setAccessChain(partial); + // Only if index is nonUniform should we propagate nonUniform into access chain + spv::Builder::AccessChain::CoherentFlags index_flags = TranslateCoherent(node->getRight()->getType()); + spv::Builder::AccessChain::CoherentFlags coherent_flags = TranslateCoherent(node->getLeft()->getType()); + coherent_flags.nonUniform = index_flags.nonUniform; + if (! node->getLeft()->getType().isArray() && node->getLeft()->getType().isVector()) { int dummySize; - builder.accessChainPushComponent(index, convertGlslangToSpvType(node->getLeft()->getType()), - TranslateCoherent(node->getLeft()->getType()), + builder.accessChainPushComponent( + index, convertGlslangToSpvType(node->getLeft()->getType()), coherent_flags, glslangIntermediate->getBaseAlignmentScalar(node->getLeft()->getType(), dummySize)); } else - builder.accessChainPush(index, TranslateCoherent(node->getLeft()->getType()), - node->getLeft()->getType().getBufferReferenceAlignment()); + builder.accessChainPush(index, coherent_flags, + node->getLeft()->getType().getBufferReferenceAlignment()); } return false; case glslang::EOpVectorSwizzle: @@ -2119,7 +2152,7 @@ spv::Id TGlslangToSpvTraverser::translateForcedType(spv::Id object) // handle 32-bit v.xy* -> 64-bit builder.clearAccessChain(); builder.setAccessChainLValue(object); - object = builder.accessChainLoad(spv::NoPrecision, spv::DecorationMax, objectTypeId); + object = builder.accessChainLoad(spv::NoPrecision, spv::DecorationMax, spv::DecorationMax, objectTypeId); std::vector components; components.push_back(builder.createCompositeExtract(object, builder.getContainedTypeId(objectTypeId), 0)); components.push_back(builder.createCompositeExtract(object, builder.getContainedTypeId(objectTypeId), 1)); @@ -2135,7 +2168,7 @@ spv::Id TGlslangToSpvTraverser::translateForcedType(spv::Id object) // and we insert a transpose after loading the original non-transposed builtins builder.clearAccessChain(); builder.setAccessChainLValue(object); - object = builder.accessChainLoad(spv::NoPrecision, spv::DecorationMax, objectTypeId); + object = builder.accessChainLoad(spv::NoPrecision, spv::DecorationMax, spv::DecorationMax, objectTypeId); return builder.createUnaryOp(spv::OpTranspose, desiredTypeId, object); } else { @@ -2322,7 +2355,7 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI // The result of operation is always stored, but conditionally the // consumed result. The consumed result is always an r-value. builder.accessChainStore(result, - TranslateNonUniformDecoration(node->getOperand()->getType().getQualifier())); + TranslateNonUniformDecoration(builder.getAccessChain().coherentFlags)); builder.clearAccessChain(); if (node->getOp() == glslang::EOpPreIncrement || node->getOp() == glslang::EOpPreDecrement) @@ -2398,7 +2431,6 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt spv::Id invertedType = spv::NoType; // to use to override the natural type of the node std::vector complexLvalues; // for holding swizzling l-values too complex for // SPIR-V, for an out parameter - std::vector complexLValueQualifiers; std::vector temporaryLvalues; // temporaries to pass, as proxies for complexLValues auto resultType = [&invertedType, &node, this](){ return invertedType != spv::NoType ? @@ -3020,7 +3052,6 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt // receive the result, and must later swizzle that into the original // l-value. complexLvalues.push_back(builder.getAccessChain()); - complexLValueQualifiers.push_back(glslangOperands[arg]->getAsTyped()->getType().getQualifier()); temporaryLvalues.push_back(builder.createVariable( spv::NoPrecision, spv::StorageClassFunction, builder.accessChainGetInferredType(), "swizzleTemp")); @@ -3125,7 +3156,8 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt for (unsigned int i = 0; i < temporaryLvalues.size(); ++i) { builder.setAccessChain(complexLvalues[i]); - builder.accessChainStore(builder.createLoad(temporaryLvalues[i], spv::NoPrecision), TranslateNonUniformDecoration(complexLValueQualifiers[i])); + builder.accessChainStore(builder.createLoad(temporaryLvalues[i], spv::NoPrecision), + TranslateNonUniformDecoration(complexLvalues[i].coherentFlags)); } } @@ -4135,6 +4167,7 @@ spv::Id TGlslangToSpvTraverser::accessChainLoad(const glslang::TType& type) alignment |= type.getBufferReferenceAlignment(); spv::Id loadedId = builder.accessChainLoad(TranslatePrecisionDecoration(type), + TranslateNonUniformDecoration(builder.getAccessChain().coherentFlags), TranslateNonUniformDecoration(type.getQualifier()), nominalTypeId, spv::MemoryAccessMask(TranslateMemoryAccess(coherentFlags) & ~spv::MemoryAccessMakePointerAvailableKHRMask), @@ -4202,7 +4235,7 @@ void TGlslangToSpvTraverser::accessChainStore(const glslang::TType& type, spv::I unsigned int alignment = builder.getAccessChain().alignment; alignment |= type.getBufferReferenceAlignment(); - builder.accessChainStore(rvalue, TranslateNonUniformDecoration(type.getQualifier()), + builder.accessChainStore(rvalue, TranslateNonUniformDecoration(builder.getAccessChain().coherentFlags), spv::MemoryAccessMask(TranslateMemoryAccess(coherentFlags) & ~spv::MemoryAccessMakePointerVisibleKHRMask), TranslateMemoryScope(coherentFlags), alignment); @@ -4734,8 +4767,10 @@ void TGlslangToSpvTraverser::translateArguments(const glslang::TIntermAggregate& } if (lvalue) { - arguments.push_back(builder.accessChainGetLValue()); + spv::Id lvalue_id = builder.accessChainGetLValue(); + arguments.push_back(lvalue_id); lvalueCoherentFlags = builder.getAccessChain().coherentFlags; + builder.addDecoration(lvalue_id, TranslateNonUniformDecoration(lvalueCoherentFlags)); lvalueCoherentFlags |= TranslateCoherent(glslangArguments[i]->getAsTyped()->getType()); } else #endif @@ -5415,6 +5450,7 @@ spv::Id TGlslangToSpvTraverser::handleUserFunctionCall(const glslang::TIntermAgg // 3. Make the call. spv::Id result = builder.createFunctionCall(function, spvArgs); builder.setPrecision(result, TranslatePrecisionDecoration(node->getType())); + builder.addDecoration(result, TranslateNonUniformDecoration(node->getType().getQualifier())); // 4. Copy back out an "out" arguments. lValueCount = 0; @@ -5424,6 +5460,7 @@ spv::Id TGlslangToSpvTraverser::handleUserFunctionCall(const glslang::TIntermAgg else if (writableParam(qualifiers[a])) { if (qualifiers[a] == glslang::EvqOut || qualifiers[a] == glslang::EvqInOut) { spv::Id copy = builder.createLoad(spvArgs[a], spv::NoPrecision); + builder.addDecoration(copy, TranslateNonUniformDecoration(argTypes[a]->getQualifier())); builder.setAccessChain(lValues[lValueCount]); multiTypeStore(*argTypes[a], copy); } @@ -8228,9 +8265,6 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol builder.addDecoration(id, memory[i]); } - // nonuniform - builder.addDecoration(id, TranslateNonUniformDecoration(symbol->getType().getQualifier())); - if (builtIn == spv::BuiltInSampleMask) { spv::Decoration decoration; // GL_NV_sample_mask_override_coverage extension diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index 85ffe90a..390b18ad 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -2798,8 +2798,9 @@ void Builder::accessChainStore(Id rvalue, Decoration nonUniform, spv::MemoryAcce } // Comments in header -Id Builder::accessChainLoad(Decoration precision, Decoration nonUniform, Id resultType, - spv::MemoryAccessMask memoryAccess, spv::Scope scope, unsigned int alignment) +Id Builder::accessChainLoad(Decoration precision, Decoration l_nonUniform, + Decoration r_nonUniform, Id resultType, spv::MemoryAccessMask memoryAccess, + spv::Scope scope, unsigned int alignment) { Id id; @@ -2863,9 +2864,9 @@ Id Builder::accessChainLoad(Decoration precision, Decoration nonUniform, Id resu // Buffer accesses need the access chain decorated, and this is where // loaded image types get decorated. TODO: This should maybe move to // createImageTextureFunctionCall. - addDecoration(id, nonUniform); + addDecoration(id, l_nonUniform); id = createLoad(id, precision, memoryAccess, scope, alignment); - addDecoration(id, nonUniform); + addDecoration(id, r_nonUniform); } // Done, unless there are swizzles to do @@ -2886,7 +2887,7 @@ Id Builder::accessChainLoad(Decoration precision, Decoration nonUniform, Id resu if (accessChain.component != NoResult) id = setPrecision(createVectorExtractDynamic(id, resultType, accessChain.component), precision); - addDecoration(id, nonUniform); + addDecoration(id, r_nonUniform); return id; } diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index 873c0cd7..63dddcb8 100644 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -625,6 +625,7 @@ public: CoherentFlags operator |=(const CoherentFlags &other) { return *this; } #else bool isVolatile() const { return volatil; } + bool isNonUniform() const { return nonUniform; } bool anyCoherent() const { return coherent || devicecoherent || queuefamilycoherent || workgroupcoherent || subgroupcoherent || shadercallcoherent; @@ -639,6 +640,7 @@ public: unsigned nonprivate : 1; unsigned volatil : 1; unsigned isImage : 1; + unsigned nonUniform : 1; void clear() { coherent = 0; @@ -650,6 +652,7 @@ public: nonprivate = 0; volatil = 0; isImage = 0; + nonUniform = 0; } CoherentFlags operator |=(const CoherentFlags &other) { @@ -662,6 +665,7 @@ public: nonprivate |= other.nonprivate; volatil |= other.volatil; isImage |= other.isImage; + nonUniform |= other.nonUniform; return *this; } #endif @@ -727,7 +731,7 @@ public: spv::Scope scope = spv::ScopeMax, unsigned int alignment = 0); // use accessChain and swizzle to load an r-value - Id accessChainLoad(Decoration precision, Decoration nonUniform, Id ResultType, + Id accessChainLoad(Decoration precision, Decoration l_nonUniform, Decoration r_nonUniform, Id ResultType, spv::MemoryAccessMask memoryAccess = spv::MemoryAccessMaskNone, spv::Scope scope = spv::ScopeMax, unsigned int alignment = 0); diff --git a/Test/baseResults/spv.nonuniform.frag.out b/Test/baseResults/spv.nonuniform.frag.out index 66f53d5f..f6febc9b 100644 --- a/Test/baseResults/spv.nonuniform.frag.out +++ b/Test/baseResults/spv.nonuniform.frag.out @@ -1,7 +1,7 @@ spv.nonuniform.frag // Module Version 10000 // Generated by (magic number): 8000a -// Id's are bound by 235 +// Id's are bound by 289 Capability Shader Capability InputAttachment @@ -22,7 +22,7 @@ spv.nonuniform.frag Extension "SPV_EXT_descriptor_indexing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 35 92 182 + EntryPoint Fragment 4 "main" 41 98 188 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_nonuniform_qualifier" @@ -34,246 +34,268 @@ spv.nonuniform.frag Name 17 "nu_li" Name 18 "param" Name 20 "param" - Name 32 "b" - Name 35 "nu_inv4" - Name 41 "nu_gf" - Name 47 "inputAttachmentDyn" - Name 48 "dyn_i" - Name 64 "uniformTexelBufferDyn" - Name 78 "storageTexelBufferDyn" - Name 87 "uname" - MemberName 87(uname) 0 "a" - Name 90 "uniformBuffer" - Name 92 "nu_ii" - Name 99 "bname" - MemberName 99(bname) 0 "b" - Name 102 "storageBuffer" - Name 112 "sampledImage" - Name 127 "storageImage" - Name 139 "inputAttachment" - Name 149 "uniformTexelBuffer" - Name 160 "storageTexelBuffer" - Name 171 "uniformTexArr" - Name 178 "uniformSampler" - Name 182 "inTexcoord" - Name 190 "v" - Name 205 "uv" - Name 215 "m" - Name 223 "S" - MemberName 223(S) 0 "a" - Name 225 "s" - Decorate 9(nupi) DecorationNonUniformEXT + Name 30 "nu_li2" + Name 38 "b" + Name 41 "nu_inv4" + Name 47 "nu_gf" + Name 53 "inputAttachmentDyn" + Name 54 "dyn_i" + Name 70 "uniformTexelBufferDyn" + Name 84 "storageTexelBufferDyn" + Name 93 "uname" + MemberName 93(uname) 0 "a" + Name 96 "uniformBuffer" + Name 98 "nu_ii" + Name 105 "bname" + MemberName 105(bname) 0 "b" + Name 108 "storageBuffer" + Name 118 "sampledImage" + Name 133 "storageImage" + Name 145 "inputAttachment" + Name 155 "uniformTexelBuffer" + Name 166 "storageTexelBuffer" + Name 177 "uniformTexArr" + Name 184 "uniformSampler" + Name 188 "inTexcoord" + Name 207 "v" + Name 222 "uv" + Name 232 "m" + Name 240 "S" + MemberName 240(S) 0 "a" + Name 242 "s" + Name 252 "arr" + Name 259 "um" + Name 268 "US" + MemberName 268(US) 0 "a" + Name 270 "us" + Name 278 "uarr" Decorate 13 DecorationNonUniformEXT - Decorate 17(nu_li) DecorationNonUniformEXT - Decorate 17(nu_li) DecorationNonUniformEXT Decorate 19 DecorationNonUniformEXT - Decorate 18(param) DecorationNonUniformEXT - Decorate 17(nu_li) DecorationNonUniformEXT + Decorate 21 DecorationNonUniformEXT + Decorate 22 DecorationNonUniformEXT Decorate 24 DecorationNonUniformEXT Decorate 28 DecorationNonUniformEXT Decorate 29 DecorationNonUniformEXT - Decorate 17(nu_li) DecorationNonUniformEXT - Decorate 35(nu_inv4) Location 0 - Decorate 35(nu_inv4) DecorationNonUniformEXT - Decorate 39 DecorationNonUniformEXT - Decorate 40 DecorationNonUniformEXT - Decorate 41(nu_gf) DecorationNonUniformEXT - Decorate 41(nu_gf) DecorationNonUniformEXT - Decorate 42 DecorationNonUniformEXT - Decorate 43 DecorationNonUniformEXT - Decorate 47(inputAttachmentDyn) DescriptorSet 0 - Decorate 47(inputAttachmentDyn) Binding 0 - Decorate 47(inputAttachmentDyn) InputAttachmentIndex 0 - Decorate 64(uniformTexelBufferDyn) DescriptorSet 0 - Decorate 64(uniformTexelBufferDyn) Binding 1 - Decorate 78(storageTexelBufferDyn) DescriptorSet 0 - Decorate 78(storageTexelBufferDyn) Binding 2 - MemberDecorate 87(uname) 0 Offset 0 - Decorate 87(uname) Block - Decorate 90(uniformBuffer) DescriptorSet 0 - Decorate 90(uniformBuffer) Binding 3 - Decorate 92(nu_ii) Flat - Decorate 92(nu_ii) Location 1 - Decorate 92(nu_ii) DecorationNonUniformEXT - Decorate 92(nu_ii) DecorationNonUniformEXT - Decorate 93 DecorationNonUniformEXT - Decorate 95 DecorationNonUniformEXT - Decorate 96 DecorationNonUniformEXT - MemberDecorate 99(bname) 0 Offset 0 - Decorate 99(bname) BufferBlock - Decorate 102(storageBuffer) DescriptorSet 0 - Decorate 102(storageBuffer) Binding 4 - Decorate 92(nu_ii) DecorationNonUniformEXT - Decorate 103 DecorationNonUniformEXT + Decorate 34 DecorationNonUniformEXT + Decorate 35 DecorationNonUniformEXT + Decorate 41(nu_inv4) Location 0 + Decorate 46 DecorationNonUniformEXT + Decorate 48 DecorationNonUniformEXT + Decorate 49 DecorationNonUniformEXT + Decorate 53(inputAttachmentDyn) DescriptorSet 0 + Decorate 53(inputAttachmentDyn) Binding 0 + Decorate 53(inputAttachmentDyn) InputAttachmentIndex 0 + Decorate 70(uniformTexelBufferDyn) DescriptorSet 0 + Decorate 70(uniformTexelBufferDyn) Binding 1 + Decorate 84(storageTexelBufferDyn) DescriptorSet 0 + Decorate 84(storageTexelBufferDyn) Binding 2 + MemberDecorate 93(uname) 0 Offset 0 + Decorate 93(uname) Block + Decorate 96(uniformBuffer) DescriptorSet 0 + Decorate 96(uniformBuffer) Binding 3 + Decorate 98(nu_ii) Flat + Decorate 98(nu_ii) Location 1 + Decorate 99 DecorationNonUniformEXT + Decorate 101 DecorationNonUniformEXT + Decorate 102 DecorationNonUniformEXT Decorate 104 DecorationNonUniformEXT - Decorate 105 DecorationNonUniformEXT - Decorate 112(sampledImage) DescriptorSet 0 - Decorate 112(sampledImage) Binding 5 - Decorate 92(nu_ii) DecorationNonUniformEXT + MemberDecorate 105(bname) 0 Offset 0 + Decorate 105(bname) BufferBlock + Decorate 108(storageBuffer) DescriptorSet 0 + Decorate 108(storageBuffer) Binding 4 + Decorate 109 DecorationNonUniformEXT + Decorate 110 DecorationNonUniformEXT + Decorate 111 DecorationNonUniformEXT Decorate 113 DecorationNonUniformEXT - Decorate 115 DecorationNonUniformEXT - Decorate 116 DecorationNonUniformEXT - Decorate 127(storageImage) DescriptorSet 0 - Decorate 127(storageImage) Binding 6 - Decorate 92(nu_ii) DecorationNonUniformEXT - Decorate 128 DecorationNonUniformEXT - Decorate 130 DecorationNonUniformEXT - Decorate 131 DecorationNonUniformEXT - Decorate 139(inputAttachment) DescriptorSet 0 - Decorate 139(inputAttachment) Binding 7 - Decorate 139(inputAttachment) InputAttachmentIndex 1 - Decorate 92(nu_ii) DecorationNonUniformEXT - Decorate 140 DecorationNonUniformEXT - Decorate 141 DecorationNonUniformEXT - Decorate 142 DecorationNonUniformEXT - Decorate 149(uniformTexelBuffer) DescriptorSet 0 - Decorate 149(uniformTexelBuffer) Binding 8 - Decorate 92(nu_ii) DecorationNonUniformEXT - Decorate 150 DecorationNonUniformEXT - Decorate 151 DecorationNonUniformEXT - Decorate 152 DecorationNonUniformEXT - Decorate 153 DecorationNonUniformEXT - Decorate 160(storageTexelBuffer) DescriptorSet 0 - Decorate 160(storageTexelBuffer) Binding 9 - Decorate 92(nu_ii) DecorationNonUniformEXT - Decorate 161 DecorationNonUniformEXT - Decorate 162 DecorationNonUniformEXT - Decorate 163 DecorationNonUniformEXT - Decorate 171(uniformTexArr) DescriptorSet 0 - Decorate 171(uniformTexArr) Binding 10 - Decorate 92(nu_ii) DecorationNonUniformEXT - Decorate 172 DecorationNonUniformEXT - Decorate 174 DecorationNonUniformEXT - Decorate 175 DecorationNonUniformEXT - Decorate 178(uniformSampler) DescriptorSet 0 - Decorate 178(uniformSampler) Binding 11 - Decorate 182(inTexcoord) Location 2 - Decorate 190(v) DecorationNonUniformEXT - Decorate 192 DecorationNonUniformEXT - Decorate 193 DecorationNonUniformEXT + Decorate 118(sampledImage) DescriptorSet 0 + Decorate 118(sampledImage) Binding 5 + Decorate 119 DecorationNonUniformEXT + Decorate 121 DecorationNonUniformEXT + Decorate 122 DecorationNonUniformEXT + Decorate 133(storageImage) DescriptorSet 0 + Decorate 133(storageImage) Binding 6 + Decorate 134 DecorationNonUniformEXT + Decorate 136 DecorationNonUniformEXT + Decorate 137 DecorationNonUniformEXT + Decorate 145(inputAttachment) DescriptorSet 0 + Decorate 145(inputAttachment) Binding 7 + Decorate 145(inputAttachment) InputAttachmentIndex 1 + Decorate 146 DecorationNonUniformEXT + Decorate 147 DecorationNonUniformEXT + Decorate 148 DecorationNonUniformEXT + Decorate 155(uniformTexelBuffer) DescriptorSet 0 + Decorate 155(uniformTexelBuffer) Binding 8 + Decorate 156 DecorationNonUniformEXT + Decorate 157 DecorationNonUniformEXT + Decorate 158 DecorationNonUniformEXT + Decorate 159 DecorationNonUniformEXT + Decorate 166(storageTexelBuffer) DescriptorSet 0 + Decorate 166(storageTexelBuffer) Binding 9 + Decorate 167 DecorationNonUniformEXT + Decorate 168 DecorationNonUniformEXT + Decorate 169 DecorationNonUniformEXT + Decorate 177(uniformTexArr) DescriptorSet 0 + Decorate 177(uniformTexArr) Binding 10 + Decorate 178 DecorationNonUniformEXT + Decorate 180 DecorationNonUniformEXT + Decorate 181 DecorationNonUniformEXT + Decorate 184(uniformSampler) DescriptorSet 0 + Decorate 184(uniformSampler) Binding 11 + Decorate 188(inTexcoord) Location 2 Decorate 194 DecorationNonUniformEXT Decorate 195 DecorationNonUniformEXT + Decorate 196 DecorationNonUniformEXT Decorate 199 DecorationNonUniformEXT - Decorate 200 DecorationNonUniformEXT - Decorate 201 DecorationNonUniformEXT - Decorate 202 DecorationNonUniformEXT - Decorate 92(nu_ii) DecorationNonUniformEXT - Decorate 206 DecorationNonUniformEXT - Decorate 207 DecorationNonUniformEXT - Decorate 208 DecorationNonUniformEXT - Decorate 209 DecorationNonUniformEXT Decorate 210 DecorationNonUniformEXT - Decorate 215(m) DecorationNonUniformEXT - Decorate 216 DecorationNonUniformEXT + Decorate 211 DecorationNonUniformEXT + Decorate 212 DecorationNonUniformEXT + Decorate 214 DecorationNonUniformEXT Decorate 217 DecorationNonUniformEXT - Decorate 225(s) DecorationNonUniformEXT + Decorate 218 DecorationNonUniformEXT + Decorate 219 DecorationNonUniformEXT + Decorate 221 DecorationNonUniformEXT + Decorate 223 DecorationNonUniformEXT + Decorate 224 DecorationNonUniformEXT + Decorate 225 DecorationNonUniformEXT Decorate 226 DecorationNonUniformEXT Decorate 227 DecorationNonUniformEXT - Decorate 228 DecorationNonUniformEXT Decorate 229 DecorationNonUniformEXT - Decorate 92(nu_ii) DecorationNonUniformEXT - Decorate 232 DecorationNonUniformEXT Decorate 234 DecorationNonUniformEXT + Decorate 244 DecorationNonUniformEXT + Decorate 245 DecorationNonUniformEXT + Decorate 246 DecorationNonUniformEXT + Decorate 248 DecorationNonUniformEXT + Decorate 254 DecorationNonUniformEXT + Decorate 255 DecorationNonUniformEXT + Decorate 256 DecorationNonUniformEXT + Decorate 258 DecorationNonUniformEXT + Decorate 260 DecorationNonUniformEXT + Decorate 261 DecorationNonUniformEXT + Decorate 262 DecorationNonUniformEXT + Decorate 271 DecorationNonUniformEXT + Decorate 272 DecorationNonUniformEXT + Decorate 273 DecorationNonUniformEXT + Decorate 274 DecorationNonUniformEXT + Decorate 275 DecorationNonUniformEXT + Decorate 277 DecorationNonUniformEXT + Decorate 279 DecorationNonUniformEXT + Decorate 280 DecorationNonUniformEXT + Decorate 281 DecorationNonUniformEXT + Decorate 282 DecorationNonUniformEXT + Decorate 283 DecorationNonUniformEXT + Decorate 285 DecorationNonUniformEXT + Decorate 286 DecorationNonUniformEXT + Decorate 288 DecorationNonUniformEXT 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 7: TypePointer Function 6(int) 8: TypeFunction 6(int) 7(ptr) 7(ptr) 26: 6(int) Constant 2 - 30: TypeFloat 32 - 31: TypePointer Function 30(float) - 33: TypeVector 30(float) 4 - 34: TypePointer Input 33(fvec4) - 35(nu_inv4): 34(ptr) Variable Input - 36: TypeInt 32 0 - 37: 36(int) Constant 0 - 38: TypePointer Input 30(float) - 44: TypeImage 30(float) SubpassData nonsampled format:Unknown - 45: TypeRuntimeArray 44 - 46: TypePointer UniformConstant 45 -47(inputAttachmentDyn): 46(ptr) Variable UniformConstant - 50: TypePointer UniformConstant 44 - 53: 6(int) Constant 0 - 54: TypeVector 6(int) 2 - 55: 54(ivec2) ConstantComposite 53 53 - 60: TypeImage 30(float) Buffer sampled format:Unknown - 61: TypeSampledImage 60 - 62: TypeRuntimeArray 61 - 63: TypePointer UniformConstant 62 -64(uniformTexelBufferDyn): 63(ptr) Variable UniformConstant - 66: TypePointer UniformConstant 61 - 69: 6(int) Constant 1 - 75: TypeImage 30(float) Buffer nonsampled format:R32f - 76: TypeRuntimeArray 75 - 77: TypePointer UniformConstant 76 -78(storageTexelBufferDyn): 77(ptr) Variable UniformConstant - 80: TypePointer UniformConstant 75 - 87(uname): TypeStruct 30(float) - 88: TypeRuntimeArray 87(uname) - 89: TypePointer Uniform 88 -90(uniformBuffer): 89(ptr) Variable Uniform - 91: TypePointer Input 6(int) - 92(nu_ii): 91(ptr) Variable Input - 94: TypePointer Uniform 30(float) - 99(bname): TypeStruct 30(float) - 100: TypeRuntimeArray 99(bname) - 101: TypePointer Uniform 100 -102(storageBuffer): 101(ptr) Variable Uniform - 108: TypeImage 30(float) 2D sampled format:Unknown - 109: TypeSampledImage 108 - 110: TypeRuntimeArray 109 - 111: TypePointer UniformConstant 110 -112(sampledImage): 111(ptr) Variable UniformConstant - 114: TypePointer UniformConstant 109 - 117: TypeVector 30(float) 2 - 118: 30(float) Constant 1056964608 - 119: 117(fvec2) ConstantComposite 118 118 - 124: TypeImage 30(float) 2D nonsampled format:R32f - 125: TypeRuntimeArray 124 - 126: TypePointer UniformConstant 125 -127(storageImage): 126(ptr) Variable UniformConstant - 129: TypePointer UniformConstant 124 - 132: 54(ivec2) ConstantComposite 69 69 - 137: TypeRuntimeArray 44 - 138: TypePointer UniformConstant 137 -139(inputAttachment): 138(ptr) Variable UniformConstant - 147: TypeRuntimeArray 61 - 148: TypePointer UniformConstant 147 -149(uniformTexelBuffer): 148(ptr) Variable UniformConstant - 158: TypeRuntimeArray 75 - 159: TypePointer UniformConstant 158 -160(storageTexelBuffer): 159(ptr) Variable UniformConstant - 168: 36(int) Constant 8 - 169: TypeArray 108 168 - 170: TypePointer UniformConstant 169 -171(uniformTexArr): 170(ptr) Variable UniformConstant - 173: TypePointer UniformConstant 108 - 176: TypeSampler - 177: TypePointer UniformConstant 176 -178(uniformSampler): 177(ptr) Variable UniformConstant - 181: TypePointer Input 117(fvec2) - 182(inTexcoord): 181(ptr) Variable Input - 188: TypeVector 6(int) 4 - 189: TypePointer Function 188(ivec4) - 191: 36(int) Constant 1 - 198: 36(int) Constant 2 - 213: TypeMatrix 33(fvec4) 4 - 214: TypePointer Function 213 - 223(S): TypeStruct 6(int) - 224: TypePointer Function 223(S) + 36: TypeFloat 32 + 37: TypePointer Function 36(float) + 39: TypeVector 36(float) 4 + 40: TypePointer Input 39(fvec4) + 41(nu_inv4): 40(ptr) Variable Input + 42: TypeInt 32 0 + 43: 42(int) Constant 0 + 44: TypePointer Input 36(float) + 50: TypeImage 36(float) SubpassData nonsampled format:Unknown + 51: TypeRuntimeArray 50 + 52: TypePointer UniformConstant 51 +53(inputAttachmentDyn): 52(ptr) Variable UniformConstant + 56: TypePointer UniformConstant 50 + 59: 6(int) Constant 0 + 60: TypeVector 6(int) 2 + 61: 60(ivec2) ConstantComposite 59 59 + 66: TypeImage 36(float) Buffer sampled format:Unknown + 67: TypeSampledImage 66 + 68: TypeRuntimeArray 67 + 69: TypePointer UniformConstant 68 +70(uniformTexelBufferDyn): 69(ptr) Variable UniformConstant + 72: TypePointer UniformConstant 67 + 75: 6(int) Constant 1 + 81: TypeImage 36(float) Buffer nonsampled format:R32f + 82: TypeRuntimeArray 81 + 83: TypePointer UniformConstant 82 +84(storageTexelBufferDyn): 83(ptr) Variable UniformConstant + 86: TypePointer UniformConstant 81 + 93(uname): TypeStruct 36(float) + 94: TypeRuntimeArray 93(uname) + 95: TypePointer Uniform 94 +96(uniformBuffer): 95(ptr) Variable Uniform + 97: TypePointer Input 6(int) + 98(nu_ii): 97(ptr) Variable Input + 100: TypePointer Uniform 36(float) + 105(bname): TypeStruct 36(float) + 106: TypeRuntimeArray 105(bname) + 107: TypePointer Uniform 106 +108(storageBuffer): 107(ptr) Variable Uniform + 114: TypeImage 36(float) 2D sampled format:Unknown + 115: TypeSampledImage 114 + 116: TypeRuntimeArray 115 + 117: TypePointer UniformConstant 116 +118(sampledImage): 117(ptr) Variable UniformConstant + 120: TypePointer UniformConstant 115 + 123: TypeVector 36(float) 2 + 124: 36(float) Constant 1056964608 + 125: 123(fvec2) ConstantComposite 124 124 + 130: TypeImage 36(float) 2D nonsampled format:R32f + 131: TypeRuntimeArray 130 + 132: TypePointer UniformConstant 131 +133(storageImage): 132(ptr) Variable UniformConstant + 135: TypePointer UniformConstant 130 + 138: 60(ivec2) ConstantComposite 75 75 + 143: TypeRuntimeArray 50 + 144: TypePointer UniformConstant 143 +145(inputAttachment): 144(ptr) Variable UniformConstant + 153: TypeRuntimeArray 67 + 154: TypePointer UniformConstant 153 +155(uniformTexelBuffer): 154(ptr) Variable UniformConstant + 164: TypeRuntimeArray 81 + 165: TypePointer UniformConstant 164 +166(storageTexelBuffer): 165(ptr) Variable UniformConstant + 174: 42(int) Constant 8 + 175: TypeArray 114 174 + 176: TypePointer UniformConstant 175 +177(uniformTexArr): 176(ptr) Variable UniformConstant + 179: TypePointer UniformConstant 114 + 182: TypeSampler + 183: TypePointer UniformConstant 182 +184(uniformSampler): 183(ptr) Variable UniformConstant + 187: TypePointer Input 123(fvec2) + 188(inTexcoord): 187(ptr) Variable Input + 205: TypeVector 6(int) 4 + 206: TypePointer Function 205(ivec4) + 208: 42(int) Constant 1 + 215: 42(int) Constant 2 + 230: TypeMatrix 39(fvec4) 4 + 231: TypePointer Function 230 + 240(S): TypeStruct 6(int) + 241: TypePointer Function 240(S) + 249: 42(int) Constant 10 + 250: TypeArray 6(int) 249 + 251: TypePointer Function 250 + 268(US): TypeStruct 250 + 269: TypePointer Function 268(US) 4(main): 2 Function None 3 5: Label 16(a): 7(ptr) Variable Function 17(nu_li): 7(ptr) Variable Function 18(param): 7(ptr) Variable Function 20(param): 7(ptr) Variable Function - 32(b): 31(ptr) Variable Function - 41(nu_gf): 31(ptr) Variable Function - 48(dyn_i): 7(ptr) Variable Function - 190(v): 189(ptr) Variable Function - 205(uv): 189(ptr) Variable Function - 215(m): 214(ptr) Variable Function - 225(s): 224(ptr) Variable Function + 30(nu_li2): 7(ptr) Variable Function + 38(b): 37(ptr) Variable Function + 47(nu_gf): 37(ptr) Variable Function + 54(dyn_i): 7(ptr) Variable Function + 207(v): 206(ptr) Variable Function + 222(uv): 206(ptr) Variable Function + 232(m): 231(ptr) Variable Function + 242(s): 241(ptr) Variable Function + 252(arr): 251(ptr) Variable Function + 259(um): 231(ptr) Variable Function + 270(us): 269(ptr) Variable Function + 278(uarr): 251(ptr) Variable Function 19: 6(int) Load 17(nu_li) Store 18(param) 19 21: 6(int) FunctionCall 11(foo(i1;i1;) 18(param) 20(param) @@ -287,141 +309,191 @@ spv.nonuniform.frag 28: 6(int) CopyObject 27 29: 6(int) IAdd 24 28 Store 17(nu_li) 29 - 39: 38(ptr) AccessChain 35(nu_inv4) 37 - 40: 30(float) Load 39 - 42: 30(float) Load 41(nu_gf) - 43: 30(float) FMul 40 42 - Store 32(b) 43 - 49: 6(int) Load 48(dyn_i) - 51: 50(ptr) AccessChain 47(inputAttachmentDyn) 49 - 52: 44 Load 51 - 56: 33(fvec4) ImageRead 52 55 - 57: 30(float) CompositeExtract 56 0 - 58: 30(float) Load 32(b) - 59: 30(float) FAdd 58 57 - Store 32(b) 59 - 65: 6(int) Load 48(dyn_i) - 67: 66(ptr) AccessChain 64(uniformTexelBufferDyn) 65 - 68: 61 Load 67 - 70: 60 Image 68 - 71: 33(fvec4) ImageFetch 70 69 - 72: 30(float) CompositeExtract 71 0 - 73: 30(float) Load 32(b) - 74: 30(float) FAdd 73 72 - Store 32(b) 74 - 79: 6(int) Load 48(dyn_i) - 81: 80(ptr) AccessChain 78(storageTexelBufferDyn) 79 - 82: 75 Load 81 - 83: 33(fvec4) ImageRead 82 69 - 84: 30(float) CompositeExtract 83 0 - 85: 30(float) Load 32(b) - 86: 30(float) FAdd 85 84 - Store 32(b) 86 - 93: 6(int) Load 92(nu_ii) - 95: 94(ptr) AccessChain 90(uniformBuffer) 93 53 - 96: 30(float) Load 95 - 97: 30(float) Load 32(b) - 98: 30(float) FAdd 97 96 - Store 32(b) 98 - 103: 6(int) Load 92(nu_ii) - 104: 94(ptr) AccessChain 102(storageBuffer) 103 53 - 105: 30(float) Load 104 - 106: 30(float) Load 32(b) - 107: 30(float) FAdd 106 105 - Store 32(b) 107 - 113: 6(int) Load 92(nu_ii) - 115: 114(ptr) AccessChain 112(sampledImage) 113 - 116: 109 Load 115 - 120: 33(fvec4) ImageSampleImplicitLod 116 119 - 121: 30(float) CompositeExtract 120 0 - 122: 30(float) Load 32(b) - 123: 30(float) FAdd 122 121 - Store 32(b) 123 - 128: 6(int) Load 92(nu_ii) - 130: 129(ptr) AccessChain 127(storageImage) 128 - 131: 124 Load 130 - 133: 33(fvec4) ImageRead 131 132 - 134: 30(float) CompositeExtract 133 0 - 135: 30(float) Load 32(b) - 136: 30(float) FAdd 135 134 - Store 32(b) 136 - 140: 6(int) Load 92(nu_ii) - 141: 50(ptr) AccessChain 139(inputAttachment) 140 - 142: 44 Load 141 - 143: 33(fvec4) ImageRead 142 55 - 144: 30(float) CompositeExtract 143 0 - 145: 30(float) Load 32(b) - 146: 30(float) FAdd 145 144 - Store 32(b) 146 - 150: 6(int) Load 92(nu_ii) - 151: 66(ptr) AccessChain 149(uniformTexelBuffer) 150 - 152: 61 Load 151 - 153: 60 Image 152 - 154: 33(fvec4) ImageFetch 153 69 - 155: 30(float) CompositeExtract 154 0 - 156: 30(float) Load 32(b) - 157: 30(float) FAdd 156 155 - Store 32(b) 157 - 161: 6(int) Load 92(nu_ii) - 162: 80(ptr) AccessChain 160(storageTexelBuffer) 161 - 163: 75 Load 162 - 164: 33(fvec4) ImageRead 163 69 - 165: 30(float) CompositeExtract 164 0 - 166: 30(float) Load 32(b) - 167: 30(float) FAdd 166 165 - Store 32(b) 167 - 172: 6(int) Load 92(nu_ii) - 174: 173(ptr) AccessChain 171(uniformTexArr) 172 - 175: 108 Load 174 - 179: 176 Load 178(uniformSampler) - 180: 109 SampledImage 175 179 - 183: 117(fvec2) Load 182(inTexcoord) - 184: 33(fvec4) ImageSampleImplicitLod 180 183 - 185: 30(float) CompositeExtract 184 0 - 186: 30(float) Load 32(b) - 187: 30(float) FAdd 186 185 - Store 32(b) 187 - 192: 7(ptr) AccessChain 190(v) 191 - 193: 6(int) Load 192 - 194: 94(ptr) AccessChain 90(uniformBuffer) 193 53 - 195: 30(float) Load 194 - 196: 30(float) Load 32(b) - 197: 30(float) FAdd 196 195 - Store 32(b) 197 - 199: 7(ptr) AccessChain 190(v) 198 - 200: 6(int) Load 199 - 201: 94(ptr) AccessChain 90(uniformBuffer) 200 53 - 202: 30(float) Load 201 - 203: 30(float) Load 32(b) - 204: 30(float) FAdd 203 202 - Store 32(b) 204 - 206: 6(int) Load 92(nu_ii) - 207: 7(ptr) AccessChain 205(uv) 206 - 208: 6(int) Load 207 - 209: 94(ptr) AccessChain 90(uniformBuffer) 208 53 - 210: 30(float) Load 209 - 211: 30(float) Load 32(b) - 212: 30(float) FAdd 211 210 - Store 32(b) 212 - 216: 31(ptr) AccessChain 215(m) 26 198 - 217: 30(float) Load 216 - 218: 6(int) ConvertFToS 217 - 219: 94(ptr) AccessChain 90(uniformBuffer) 218 53 - 220: 30(float) Load 219 - 221: 30(float) Load 32(b) - 222: 30(float) FAdd 221 220 - Store 32(b) 222 - 226: 7(ptr) AccessChain 225(s) 53 - 227: 6(int) Load 226 - 228: 94(ptr) AccessChain 90(uniformBuffer) 227 53 - 229: 30(float) Load 228 - 230: 30(float) Load 32(b) - 231: 30(float) FAdd 230 229 - Store 32(b) 231 - 232: 6(int) Load 92(nu_ii) - 233: 30(float) Load 32(b) - 234: 94(ptr) AccessChain 102(storageBuffer) 232 53 - Store 234 233 + 31: 6(int) Load 16(a) + 32: 6(int) Load 16(a) + 33: 6(int) IMul 32 26 + 34: 6(int) CopyObject 33 + 35: 6(int) IAdd 31 34 + Store 30(nu_li2) 35 + 45: 44(ptr) AccessChain 41(nu_inv4) 43 + 46: 36(float) Load 45 + 48: 36(float) Load 47(nu_gf) + 49: 36(float) FMul 46 48 + Store 38(b) 49 + 55: 6(int) Load 54(dyn_i) + 57: 56(ptr) AccessChain 53(inputAttachmentDyn) 55 + 58: 50 Load 57 + 62: 39(fvec4) ImageRead 58 61 + 63: 36(float) CompositeExtract 62 0 + 64: 36(float) Load 38(b) + 65: 36(float) FAdd 64 63 + Store 38(b) 65 + 71: 6(int) Load 54(dyn_i) + 73: 72(ptr) AccessChain 70(uniformTexelBufferDyn) 71 + 74: 67 Load 73 + 76: 66 Image 74 + 77: 39(fvec4) ImageFetch 76 75 + 78: 36(float) CompositeExtract 77 0 + 79: 36(float) Load 38(b) + 80: 36(float) FAdd 79 78 + Store 38(b) 80 + 85: 6(int) Load 54(dyn_i) + 87: 86(ptr) AccessChain 84(storageTexelBufferDyn) 85 + 88: 81 Load 87 + 89: 39(fvec4) ImageRead 88 75 + 90: 36(float) CompositeExtract 89 0 + 91: 36(float) Load 38(b) + 92: 36(float) FAdd 91 90 + Store 38(b) 92 + 99: 6(int) Load 98(nu_ii) + 101: 100(ptr) AccessChain 96(uniformBuffer) 99 59 + 102: 36(float) Load 101 + 103: 36(float) Load 38(b) + 104: 36(float) FAdd 103 102 + Store 38(b) 104 + 109: 6(int) Load 98(nu_ii) + 110: 100(ptr) AccessChain 108(storageBuffer) 109 59 + 111: 36(float) Load 110 + 112: 36(float) Load 38(b) + 113: 36(float) FAdd 112 111 + Store 38(b) 113 + 119: 6(int) Load 98(nu_ii) + 121: 120(ptr) AccessChain 118(sampledImage) 119 + 122: 115 Load 121 + 126: 39(fvec4) ImageSampleImplicitLod 122 125 + 127: 36(float) CompositeExtract 126 0 + 128: 36(float) Load 38(b) + 129: 36(float) FAdd 128 127 + Store 38(b) 129 + 134: 6(int) Load 98(nu_ii) + 136: 135(ptr) AccessChain 133(storageImage) 134 + 137: 130 Load 136 + 139: 39(fvec4) ImageRead 137 138 + 140: 36(float) CompositeExtract 139 0 + 141: 36(float) Load 38(b) + 142: 36(float) FAdd 141 140 + Store 38(b) 142 + 146: 6(int) Load 98(nu_ii) + 147: 56(ptr) AccessChain 145(inputAttachment) 146 + 148: 50 Load 147 + 149: 39(fvec4) ImageRead 148 61 + 150: 36(float) CompositeExtract 149 0 + 151: 36(float) Load 38(b) + 152: 36(float) FAdd 151 150 + Store 38(b) 152 + 156: 6(int) Load 98(nu_ii) + 157: 72(ptr) AccessChain 155(uniformTexelBuffer) 156 + 158: 67 Load 157 + 159: 66 Image 158 + 160: 39(fvec4) ImageFetch 159 75 + 161: 36(float) CompositeExtract 160 0 + 162: 36(float) Load 38(b) + 163: 36(float) FAdd 162 161 + Store 38(b) 163 + 167: 6(int) Load 98(nu_ii) + 168: 86(ptr) AccessChain 166(storageTexelBuffer) 167 + 169: 81 Load 168 + 170: 39(fvec4) ImageRead 169 75 + 171: 36(float) CompositeExtract 170 0 + 172: 36(float) Load 38(b) + 173: 36(float) FAdd 172 171 + Store 38(b) 173 + 178: 6(int) Load 98(nu_ii) + 180: 179(ptr) AccessChain 177(uniformTexArr) 178 + 181: 114 Load 180 + 185: 182 Load 184(uniformSampler) + 186: 115 SampledImage 181 185 + 189: 123(fvec2) Load 188(inTexcoord) + 190: 39(fvec4) ImageSampleImplicitLod 186 189 + 191: 36(float) CompositeExtract 190 0 + 192: 36(float) Load 38(b) + 193: 36(float) FAdd 192 191 + Store 38(b) 193 + 194: 6(int) Load 98(nu_ii) + 195: 179(ptr) AccessChain 177(uniformTexArr) 194 + 196: 114 Load 195 + 197: 182 Load 184(uniformSampler) + 198: 115 SampledImage 196 197 + 199: 115 CopyObject 198 + 200: 123(fvec2) Load 188(inTexcoord) + 201: 39(fvec4) ImageSampleImplicitLod 199 200 + 202: 36(float) CompositeExtract 201 0 + 203: 36(float) Load 38(b) + 204: 36(float) FAdd 203 202 + Store 38(b) 204 + 209: 7(ptr) AccessChain 207(v) 208 + 210: 6(int) Load 209 + 211: 100(ptr) AccessChain 96(uniformBuffer) 210 59 + 212: 36(float) Load 211 + 213: 36(float) Load 38(b) + 214: 36(float) FAdd 213 212 + Store 38(b) 214 + 216: 7(ptr) AccessChain 207(v) 215 + 217: 6(int) Load 216 + 218: 100(ptr) AccessChain 96(uniformBuffer) 217 59 + 219: 36(float) Load 218 + 220: 36(float) Load 38(b) + 221: 36(float) FAdd 220 219 + Store 38(b) 221 + 223: 6(int) Load 98(nu_ii) + 224: 7(ptr) AccessChain 222(uv) 223 + 225: 6(int) Load 224 + 226: 100(ptr) AccessChain 96(uniformBuffer) 225 59 + 227: 36(float) Load 226 + 228: 36(float) Load 38(b) + 229: 36(float) FAdd 228 227 + Store 38(b) 229 + 233: 37(ptr) AccessChain 232(m) 26 215 + 234: 36(float) Load 233 + 235: 6(int) ConvertFToS 234 + 236: 100(ptr) AccessChain 96(uniformBuffer) 235 59 + 237: 36(float) Load 236 + 238: 36(float) Load 38(b) + 239: 36(float) FAdd 238 237 + Store 38(b) 239 + 243: 7(ptr) AccessChain 242(s) 59 + 244: 6(int) Load 243 + 245: 100(ptr) AccessChain 96(uniformBuffer) 244 59 + 246: 36(float) Load 245 + 247: 36(float) Load 38(b) + 248: 36(float) FAdd 247 246 + Store 38(b) 248 + 253: 7(ptr) AccessChain 252(arr) 26 + 254: 6(int) Load 253 + 255: 100(ptr) AccessChain 96(uniformBuffer) 254 59 + 256: 36(float) Load 255 + 257: 36(float) Load 38(b) + 258: 36(float) FAdd 257 256 + Store 38(b) 258 + 260: 6(int) Load 98(nu_ii) + 261: 37(ptr) AccessChain 259(um) 260 215 + 262: 36(float) Load 261 + 263: 6(int) ConvertFToS 262 + 264: 100(ptr) AccessChain 96(uniformBuffer) 263 59 + 265: 36(float) Load 264 + 266: 36(float) Load 38(b) + 267: 36(float) FAdd 266 265 + Store 38(b) 267 + 271: 6(int) Load 98(nu_ii) + 272: 7(ptr) AccessChain 270(us) 59 271 + 273: 6(int) Load 272 + 274: 100(ptr) AccessChain 96(uniformBuffer) 273 59 + 275: 36(float) Load 274 + 276: 36(float) Load 38(b) + 277: 36(float) FAdd 276 275 + Store 38(b) 277 + 279: 6(int) Load 98(nu_ii) + 280: 7(ptr) AccessChain 278(uarr) 279 + 281: 6(int) Load 280 + 282: 100(ptr) AccessChain 96(uniformBuffer) 281 59 + 283: 36(float) Load 282 + 284: 36(float) Load 38(b) + 285: 36(float) FAdd 284 283 + Store 38(b) 285 + 286: 6(int) Load 98(nu_ii) + 287: 36(float) Load 38(b) + 288: 100(ptr) AccessChain 108(storageBuffer) 286 59 + Store 288 287 Return FunctionEnd 11(foo(i1;i1;): 6(int) Function None 8 diff --git a/Test/baseResults/spv.nonuniform4.frag.out b/Test/baseResults/spv.nonuniform4.frag.out index 92cbd363..6bfc9575 100644 --- a/Test/baseResults/spv.nonuniform4.frag.out +++ b/Test/baseResults/spv.nonuniform4.frag.out @@ -23,6 +23,7 @@ spv.nonuniform4.frag Decorate 13(rIndex) Flat Decorate 13(rIndex) Location 3 Decorate 15 DecorationNonUniformEXT + Decorate 17 DecorationNonUniformEXT Decorate 21 DecorationNonUniformEXT 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/spv.nonuniform.frag b/Test/spv.nonuniform.frag index c136d256..cf7ebedc 100644 --- a/Test/spv.nonuniform.frag +++ b/Test/spv.nonuniform.frag @@ -28,10 +28,12 @@ nonuniformEXT int foo(nonuniformEXT int nupi, nonuniformEXT out int f) void main() { nonuniformEXT int nu_li; + nonuniformEXT int nu_li2; int dyn_i; int a = foo(nu_li, nu_li); nu_li = nonuniformEXT(a) + nonuniformEXT(a * 2); + nu_li2 = a + nonuniformEXT(a * 2); float b; b = nu_inv4.x * nu_gf; @@ -46,16 +48,25 @@ void main() b += texelFetch(uniformTexelBuffer[nu_ii], 1).x; b += imageLoad(storageTexelBuffer[nu_ii], 1).x; b += texture(sampler2D(uniformTexArr[nu_ii], uniformSampler), inTexcoord.xy).x; + b += texture(nonuniformEXT(sampler2D(uniformTexArr[nu_ii], uniformSampler)), inTexcoord.xy).x; nonuniformEXT ivec4 v; nonuniformEXT mat4 m; nonuniformEXT struct S { int a; } s; + nonuniformEXT int arr[10]; ivec4 uv; + mat4 um; + struct US { int a[10]; } us; + int uarr[10]; b += uniformBuffer[v.y].a; b += uniformBuffer[v[2]].a; b += uniformBuffer[uv[nu_ii]].a; b += uniformBuffer[int(m[2].z)].a; b += uniformBuffer[s.a].a; + b += uniformBuffer[arr[2]].a; + b += uniformBuffer[int(um[nu_ii].z)].a; + b += uniformBuffer[us.a[nu_ii]].a; + b += uniformBuffer[uarr[nu_ii]].a; storageBuffer[nu_ii].b = b; } From fb53f83503659b4977742fac832dc2defd3bacb4 Mon Sep 17 00:00:00 2001 From: David Neto Date: Thu, 12 Nov 2020 15:00:16 -0500 Subject: [PATCH 42/57] Avoid spuriously adding Geometry capability for vert, tesc, tese (#2462) Use of gl_Layer and gl_ViewportIndex in tessellation and vertex shaders should not trigger the addition of the Geometry capability. Fixes #2461 Added tests for use of gl_Layer and gl_ViewportIndex in a tessellation evaluation shader. Several tests for NVIDIA features for tessellation, vertex, or mesh shaders now lose the Geometry or MultiViewport capabilities. This is ok because the functionality is already covered by the ShaderViewportIndexLayerNV capability. The spv.meshShaderPerViewBuiltins.mesh test now fails validation because the validator does not know that PrimitiveId (and possibly other) builtins are enabled by the MeshShadingNV capability. I filed https://github.com/KhronosGroup/SPIRV-Headers/issues/179 to fix the grammar upstream. --- SPIRV/GlslangToSpv.cpp | 10 +++++-- Test/baseResults/spv.layer.tese.out | 30 +++++++++++++++++++ .../spv.meshShaderBuiltins.mesh.out | 1 - .../spv.meshShaderPerViewBuiltins.mesh.out | 2 +- .../spv.meshShaderRedeclBuiltins.mesh.out | 1 - .../spv.stereoViewRendering.tesc.out | 1 - .../spv.stereoViewRendering.vert.out | 1 - Test/baseResults/spv.viewportArray2.tesc.out | 2 -- Test/baseResults/spv.viewportArray2.vert.out | 2 -- Test/baseResults/spv.viewportindex.tese.out | 30 +++++++++++++++++++ Test/spv.layer.tese | 8 +++++ Test/spv.viewportindex.tese | 8 +++++ gtests/Spv.FromFile.cpp | 2 ++ 13 files changed, 87 insertions(+), 11 deletions(-) create mode 100644 Test/baseResults/spv.layer.tese.out create mode 100644 Test/baseResults/spv.viewportindex.tese.out create mode 100644 Test/spv.layer.tese create mode 100644 Test/spv.viewportindex.tese diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index a24b5223..e0b5a19f 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -725,7 +725,10 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI return spv::BuiltInCullDistance; case glslang::EbvViewportIndex: - builder.addCapability(spv::CapabilityMultiViewport); + if (glslangIntermediate->getStage() == EShLangGeometry || + glslangIntermediate->getStage() == EShLangFragment) { + builder.addCapability(spv::CapabilityMultiViewport); + } if (glslangIntermediate->getStage() == EShLangVertex || glslangIntermediate->getStage() == EShLangTessControl || glslangIntermediate->getStage() == EShLangTessEvaluation) { @@ -754,7 +757,10 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI if (glslangIntermediate->getStage() == EShLangMeshNV) { return spv::BuiltInLayer; } - builder.addCapability(spv::CapabilityGeometry); + if (glslangIntermediate->getStage() == EShLangGeometry || + glslangIntermediate->getStage() == EShLangFragment) { + builder.addCapability(spv::CapabilityGeometry); + } if (glslangIntermediate->getStage() == EShLangVertex || glslangIntermediate->getStage() == EShLangTessControl || glslangIntermediate->getStage() == EShLangTessEvaluation) { diff --git a/Test/baseResults/spv.layer.tese.out b/Test/baseResults/spv.layer.tese.out new file mode 100644 index 00000000..906340fe --- /dev/null +++ b/Test/baseResults/spv.layer.tese.out @@ -0,0 +1,30 @@ +spv.layer.tese +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 10 + + Capability Tessellation + Capability ShaderViewportIndexLayerNV + Extension "SPV_EXT_shader_viewport_index_layer" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint TessellationEvaluation 4 "main" 8 + ExecutionMode 4 Triangles + ExecutionMode 4 SpacingEqual + ExecutionMode 4 VertexOrderCcw + Source GLSL 450 + SourceExtension "GL_ARB_shader_viewport_layer_array" + Name 4 "main" + Name 8 "gl_Layer" + Decorate 8(gl_Layer) BuiltIn Layer + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypePointer Output 6(int) + 8(gl_Layer): 7(ptr) Variable Output + 9: 6(int) Constant 1 + 4(main): 2 Function None 3 + 5: Label + Store 8(gl_Layer) 9 + Return + FunctionEnd diff --git a/Test/baseResults/spv.meshShaderBuiltins.mesh.out b/Test/baseResults/spv.meshShaderBuiltins.mesh.out index f0c252a9..b26122ef 100644 --- a/Test/baseResults/spv.meshShaderBuiltins.mesh.out +++ b/Test/baseResults/spv.meshShaderBuiltins.mesh.out @@ -5,7 +5,6 @@ spv.meshShaderBuiltins.mesh Capability ClipDistance Capability CullDistance - Capability MultiViewport Capability DrawParameters Capability ShaderViewportMaskNV Capability MeshShadingNV diff --git a/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out b/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out index 907ae287..38a426cd 100644 --- a/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out +++ b/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out @@ -1,9 +1,9 @@ spv.meshShaderPerViewBuiltins.mesh +Validation failed // Module Version 10000 // Generated by (magic number): 8000a // Id's are bound by 126 - Capability MultiViewport Capability PerViewAttributesNV Capability MeshShadingNV Extension "SPV_NVX_multiview_per_view_attributes" diff --git a/Test/baseResults/spv.meshShaderRedeclBuiltins.mesh.out b/Test/baseResults/spv.meshShaderRedeclBuiltins.mesh.out index 66c3a0d0..bfd2d85b 100644 --- a/Test/baseResults/spv.meshShaderRedeclBuiltins.mesh.out +++ b/Test/baseResults/spv.meshShaderRedeclBuiltins.mesh.out @@ -5,7 +5,6 @@ spv.meshShaderRedeclBuiltins.mesh Capability ClipDistance Capability CullDistance - Capability MultiViewport Capability ShaderViewportMaskNV Capability MeshShadingNV Extension "SPV_NV_mesh_shader" diff --git a/Test/baseResults/spv.stereoViewRendering.tesc.out b/Test/baseResults/spv.stereoViewRendering.tesc.out index a357346d..f01e53bf 100644 --- a/Test/baseResults/spv.stereoViewRendering.tesc.out +++ b/Test/baseResults/spv.stereoViewRendering.tesc.out @@ -3,7 +3,6 @@ spv.stereoViewRendering.tesc // Generated by (magic number): 8000a // Id's are bound by 42 - Capability Geometry Capability Tessellation Capability ShaderViewportIndexLayerNV Capability ShaderViewportMaskNV diff --git a/Test/baseResults/spv.stereoViewRendering.vert.out b/Test/baseResults/spv.stereoViewRendering.vert.out index 0667cb8c..e74921af 100644 --- a/Test/baseResults/spv.stereoViewRendering.vert.out +++ b/Test/baseResults/spv.stereoViewRendering.vert.out @@ -4,7 +4,6 @@ spv.stereoViewRendering.vert // Id's are bound by 27 Capability Shader - Capability Geometry Capability ShaderViewportIndexLayerNV Capability ShaderViewportMaskNV Capability ShaderStereoViewNV diff --git a/Test/baseResults/spv.viewportArray2.tesc.out b/Test/baseResults/spv.viewportArray2.tesc.out index 6a9dcccc..74235a57 100644 --- a/Test/baseResults/spv.viewportArray2.tesc.out +++ b/Test/baseResults/spv.viewportArray2.tesc.out @@ -4,9 +4,7 @@ Validation failed // Generated by (magic number): 8000a // Id's are bound by 25 - Capability Geometry Capability Tessellation - Capability MultiViewport Capability ShaderViewportIndexLayerNV Capability ShaderViewportMaskNV Extension "SPV_EXT_shader_viewport_index_layer" diff --git a/Test/baseResults/spv.viewportArray2.vert.out b/Test/baseResults/spv.viewportArray2.vert.out index 96e5b078..cf29cd79 100644 --- a/Test/baseResults/spv.viewportArray2.vert.out +++ b/Test/baseResults/spv.viewportArray2.vert.out @@ -4,8 +4,6 @@ spv.viewportArray2.vert // Id's are bound by 19 Capability Shader - Capability Geometry - Capability MultiViewport Capability ShaderViewportIndexLayerNV Capability ShaderViewportMaskNV Extension "SPV_EXT_shader_viewport_index_layer" diff --git a/Test/baseResults/spv.viewportindex.tese.out b/Test/baseResults/spv.viewportindex.tese.out new file mode 100644 index 00000000..12a30cf4 --- /dev/null +++ b/Test/baseResults/spv.viewportindex.tese.out @@ -0,0 +1,30 @@ +spv.viewportindex.tese +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 10 + + Capability Tessellation + Capability ShaderViewportIndexLayerNV + Extension "SPV_EXT_shader_viewport_index_layer" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint TessellationEvaluation 4 "main" 8 + ExecutionMode 4 Triangles + ExecutionMode 4 SpacingEqual + ExecutionMode 4 VertexOrderCcw + Source GLSL 450 + SourceExtension "GL_ARB_shader_viewport_layer_array" + Name 4 "main" + Name 8 "gl_ViewportIndex" + Decorate 8(gl_ViewportIndex) BuiltIn ViewportIndex + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypePointer Output 6(int) +8(gl_ViewportIndex): 7(ptr) Variable Output + 9: 6(int) Constant 1 + 4(main): 2 Function None 3 + 5: Label + Store 8(gl_ViewportIndex) 9 + Return + FunctionEnd diff --git a/Test/spv.layer.tese b/Test/spv.layer.tese new file mode 100644 index 00000000..b0ce079d --- /dev/null +++ b/Test/spv.layer.tese @@ -0,0 +1,8 @@ +#version 450 + +#extension GL_ARB_shader_viewport_layer_array : require + +layout(triangles) in; +void main() { + gl_Layer = 1; +} diff --git a/Test/spv.viewportindex.tese b/Test/spv.viewportindex.tese new file mode 100644 index 00000000..0da4cc86 --- /dev/null +++ b/Test/spv.viewportindex.tese @@ -0,0 +1,8 @@ +#version 450 + +#extension GL_ARB_shader_viewport_layer_array : require + +layout(triangles) in; +void main() { + gl_ViewportIndex = 1; +} diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 9cb3dbab..0f6e9f81 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -352,6 +352,7 @@ INSTANTIATE_TEST_SUITE_P( "spv.int64.frag", "spv.intcoopmat.comp", "spv.intOps.vert", + "spv.layer.tese", "spv.layoutNested.vert", "spv.length.frag", "spv.localAggregates.frag", @@ -439,6 +440,7 @@ INSTANTIATE_TEST_SUITE_P( "spv.terminate.frag", "spv.precise.tese", "spv.precise.tesc", + "spv.viewportindex.tese", "spv.volatileAtomic.comp", "spv.vulkan100.subgroupArithmetic.comp", "spv.vulkan100.subgroupPartitioned.comp", From beec2e4a7c4d846eeb4097faebd74d020602faa3 Mon Sep 17 00:00:00 2001 From: Malcolm Bechard Date: Thu, 12 Nov 2020 15:55:50 -0500 Subject: [PATCH 43/57] tweak local_size comparison a bit (#2456) no longer causes an incorrect error if the current unit has local_size set, but the incoming unit does not --- glslang/MachineIndependent/linkValidate.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index 1796feda..63fb20a2 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -196,12 +196,14 @@ void TIntermediate::mergeModes(TInfoSink& infoSink, TIntermediate& unit) MERGE_TRUE(pointMode); for (int i = 0; i < 3; ++i) { - if (!localSizeNotDefault[i] && unit.localSizeNotDefault[i]) { - localSize[i] = unit.localSize[i]; - localSizeNotDefault[i] = true; + if (unit.localSizeNotDefault[i]) { + if (!localSizeNotDefault[i]) { + localSize[i] = unit.localSize[i]; + localSizeNotDefault[i] = true; + } + else if (localSize[i] != unit.localSize[i]) + error(infoSink, "Contradictory local size"); } - else if (localSize[i] != unit.localSize[i]) - error(infoSink, "Contradictory local size"); if (localSizeSpecId[i] == TQualifier::layoutNotSet) localSizeSpecId[i] = unit.localSizeSpecId[i]; From 7f6559d2802d0653541060f0909e33d137b9c8ba Mon Sep 17 00:00:00 2001 From: Shahbaz Youssefi Date: Mon, 16 Nov 2020 12:22:34 -0500 Subject: [PATCH 44/57] Compile out code for GL_EXT_shader_image_int64 for ANGLE (#2463) Fixes a crash in ANGLE. Closes: #2452 --- glslang/MachineIndependent/Initialize.cpp | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index c765199b..d073f606 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -5436,6 +5436,12 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } + if (version >= 300 /* both ES and non-ES */) { + stageBuiltins[EShLangFragment].append( + "flat in highp uint gl_ViewID_OVR;" // GL_OVR_multiview, GL_OVR_multiview2 + "\n"); + } + #ifndef GLSLANG_ANGLE // GL_ARB_shader_ballot if (profile != EEsProfile && version >= 450) { @@ -5707,14 +5713,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV commonBuiltins.append("const int gl_StorageSemanticsOutput = 0x1000;\n"); } -#endif // !GLSLANG_ANGLE - - if (version >= 300 /* both ES and non-ES */) { - stageBuiltins[EShLangFragment].append( - "flat in highp uint gl_ViewID_OVR;" // GL_OVR_multiview, GL_OVR_multiview2 - "\n"); - } - // Adding these to common built-ins triggers an assert due to a memory corruption in related code when testing // So instead add to each stage individually, avoiding the GLSLang bug if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 310)) { @@ -5764,6 +5762,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV } } } +#endif // !GLSLANG_ANGLE #endif // !GLSLANG_WEB From ffccefddfd9a02ec0c0b6dd04ef5e1042279c97f Mon Sep 17 00:00:00 2001 From: Daniel Koch Date: Mon, 23 Nov 2020 15:41:27 -0500 Subject: [PATCH 45/57] Updates for final Vulkan ray tracing extensions (#2466) * Fix traceRay/executeCallable to have id instead of constant. Update to final (non-provisional) SPIR-V capabilities (includes review feedback) - Change visibilty of findLinkerObjects. See merge request GLSL/glslang!78 * Add support for OpConvertUToAccelerationStructureKHR. GLSL : https://gitlab.khronos.org/GLSL/GLSL/-/merge_requests/60 SPV : https://gitlab.khronos.org/spirv/spirv-extensions/-/merge_requests/182 See merge request GLSL/glslang!77 * Add volatile qualifier to certain builtins for ray tracing. See merge request GLSL/glslang!81 * make gl_RayTmaxEXT volatile in intersection shader Vulkan Issue #2268 * Add testing for layouts on SBT vulkan/vulkan#2230 - no layout specified should be same as std430 - explicitly test std140, std430, scalar layouts See merge request GLSL/glslang!86 * Support for new opcodes OpIgnoreIntersectionKHR and OpTerminateRayKHR vulkan/vulkan#2374 Add support for ignoreIntersectionEXT and terminateRayEXT as block terminator statements. See merge request GLSL/glslang!87 * Fix code-generation issues with global ray query variables See merge request GLSL/glslang!88 * update dependencies for spirv-headers and tools And update mesh shader results * Fix indeterminate argument ordering Authored-by: David Neto Co-authored-by: Ashwin Lele (NVIDIA Corporation) Co-authored-by: Neslisah --- SPIRV/GlslangToSpv.cpp | 116 +- SPIRV/SpvBuilder.cpp | 21 +- SPIRV/SpvBuilder.h | 6 +- SPIRV/doc.cpp | 56 +- SPIRV/spirv.hpp | 27 +- Test/baseResults/glsl.460.subgroup.rcall.out | 36 +- Test/baseResults/glsl.460.subgroup.rchit.out | 36 +- Test/baseResults/glsl.460.subgroup.rgen.out | 36 +- Test/baseResults/glsl.460.subgroup.rint.out | 36 +- Test/baseResults/glsl.460.subgroup.rmiss.out | 36 +- Test/baseResults/rayQuery-allOps.comp.out | 8 +- Test/baseResults/rayQuery-allOps.frag.out | 6 +- Test/baseResults/rayQuery-allOps.rgen.out | 6 +- Test/baseResults/rayQuery-global.rgen.out | 76 + Test/baseResults/rayQuery-initialize.rgen.out | 6 +- Test/baseResults/rayQuery-no-cse.rgen.out | 8 +- Test/baseResults/rayQuery.rgen.out | 6 +- Test/baseResults/spv.AnyHitShader.rahit.out | 4 +- .../spv.ClosestHitShader.rchit.out | 2 +- Test/baseResults/spv.MissShader.rmiss.out | 2 +- Test/baseResults/spv.RayCallable.rcall.out | 2 +- Test/baseResults/spv.RayConstants.rgen.out | 2 +- Test/baseResults/spv.RayGenShader.rgen.out | 2 +- Test/baseResults/spv.RayGenShader11.rgen.out | 2 +- .../spv.RayGenShaderArray.rgen.out | 6 +- .../spv.ext.AnyHitShader.rahit.out | 30 +- .../spv.ext.ClosestHitShader.rchit.out | 20 +- .../spv.ext.ClosestHitShader_Errors.rchit.out | 14 +- ...pv.ext.ClosestHitShader_Subgroup.rchit.out | 114 + .../spv.ext.IntersectShader.rint.out | 4 +- Test/baseResults/spv.ext.MissShader.rmiss.out | 64 +- .../spv.ext.MissShader_Errors.rmiss.out | 4 +- .../baseResults/spv.ext.RayCallable.rcall.out | 4 +- .../spv.ext.RayCallable_Errors.rcall.out | 46 +- .../baseResults/spv.ext.RayConstants.rgen.out | 6 +- .../spv.ext.RayGenSBTlayout.rgen.out | 134 + .../spv.ext.RayGenSBTlayout140.rgen.out | 134 + .../spv.ext.RayGenSBTlayout430.rgen.out | 134 + .../spv.ext.RayGenSBTlayoutscalar.rgen.out | 135 + .../baseResults/spv.ext.RayGenShader.rgen.out | 38 +- .../spv.ext.RayGenShader11.rgen.out | 6 +- .../spv.ext.RayGenShaderArray.rgen.out | 196 +- .../spv.ext.RayGenShader_Errors.rgen.out | 15 +- Test/baseResults/spv.ext.World3x4.rahit.out | 2 +- .../spv.meshShaderPerViewBuiltins.mesh.out | 1 - Test/rayQuery-global.rgen | 31 + Test/spv.ext.AnyHitShader.rahit | 11 +- Test/spv.ext.ClosestHitShader_Errors.rchit | 8 +- Test/spv.ext.ClosestHitShader_Subgroup.rchit | 16 + Test/spv.ext.MissShader.rmiss | 5 + Test/spv.ext.MissShader_Errors.rmiss | 4 +- Test/spv.ext.RayCallable_Errors.rcall | 8 +- Test/spv.ext.RayConstants.rgen | 2 +- Test/spv.ext.RayGenSBTlayout.rgen | 28 + Test/spv.ext.RayGenSBTlayout140.rgen | 27 + Test/spv.ext.RayGenSBTlayout430.rgen | 27 + Test/spv.ext.RayGenSBTlayoutscalar.rgen | 28 + Test/spv.ext.RayGenShader.rgen | 2 +- Test/spv.ext.RayGenShader11.rgen | 2 +- Test/spv.ext.RayGenShaderArray.rgen | 7 +- Test/spv.ext.RayGenShader_Errors.rgen | 8 +- glslang/Include/Types.h | 6 + glslang/Include/intermediate.h | 19 +- glslang/MachineIndependent/Initialize.cpp | 66 +- glslang/MachineIndependent/Intermediate.cpp | 4 + glslang/MachineIndependent/ParseHelper.cpp | 39 +- glslang/MachineIndependent/Scan.cpp | 8 + glslang/MachineIndependent/glslang.m4 | 11 + glslang/MachineIndependent/glslang.y | 11 + glslang/MachineIndependent/glslang_tab.cpp | 6394 +++++++++-------- glslang/MachineIndependent/glslang_tab.cpp.h | 108 +- glslang/MachineIndependent/intermOut.cpp | 36 +- glslang/MachineIndependent/linkValidate.cpp | 34 +- .../MachineIndependent/localintermediate.h | 8 +- gtests/Spv.FromFile.cpp | 7 + known_good.json | 4 +- 76 files changed, 4951 insertions(+), 3663 deletions(-) create mode 100644 Test/baseResults/rayQuery-global.rgen.out create mode 100644 Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out create mode 100644 Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out create mode 100644 Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out create mode 100644 Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out create mode 100644 Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out create mode 100644 Test/rayQuery-global.rgen create mode 100644 Test/spv.ext.ClosestHitShader_Subgroup.rchit create mode 100644 Test/spv.ext.RayGenSBTlayout.rgen create mode 100644 Test/spv.ext.RayGenSBTlayout140.rgen create mode 100644 Test/spv.ext.RayGenSBTlayout430.rgen create mode 100644 Test/spv.ext.RayGenSBTlayoutscalar.rgen diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index e0b5a19f..18ef64f4 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -190,6 +190,7 @@ protected: bool originalParam(glslang::TStorageQualifier, const glslang::TType&, bool implicitThisParam); void makeFunctions(const glslang::TIntermSequence&); void makeGlobalInitializers(const glslang::TIntermSequence&); + void collectRayTracingLinkerObjects(); void visitFunctions(const glslang::TIntermSequence&); void handleFunctionEntry(const glslang::TIntermAggregate* node); void translateArguments(const glslang::TIntermAggregate& node, std::vector& arguments, @@ -273,6 +274,9 @@ protected: // requiring local translation to and from SPIR-V type on every access. // Maps AST-required-type-id> std::unordered_map forceType; + + // Used later for generating OpTraceKHR/OpExecuteCallableKHR + std::unordered_map locationToSymbol[2]; }; // @@ -1232,7 +1236,7 @@ spv::LoopControlMask TGlslangToSpvTraverser::TranslateLoopControl(const glslang: spv::StorageClass TGlslangToSpvTraverser::TranslateStorageClass(const glslang::TType& type) { if (type.getBasicType() == glslang::EbtRayQuery) - return spv::StorageClassFunction; + return spv::StorageClassPrivate; if (type.getQualifier().isPipeInput()) return spv::StorageClassInput; if (type.getQualifier().isPipeOutput()) @@ -1501,7 +1505,7 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, } if (glslangIntermediate->getLayoutPrimitiveCulling()) { - builder.addCapability(spv::CapabilityRayTraversalPrimitiveCullingProvisionalKHR); + builder.addCapability(spv::CapabilityRayTraversalPrimitiveCullingKHR); } unsigned int mode; @@ -1668,7 +1672,7 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, { auto& extensions = glslangIntermediate->getRequestedExtensions(); if (extensions.find("GL_NV_ray_tracing") == extensions.end()) { - builder.addCapability(spv::CapabilityRayTracingProvisionalKHR); + builder.addCapability(spv::CapabilityRayTracingKHR); builder.addExtension("SPV_KHR_ray_tracing"); } else { @@ -2118,8 +2122,9 @@ std::pair TGlslangToSpvTraverser::getForcedType(glslang::TBuil // these require changing a 64-bit scaler -> a vector of 32-bit components if (glslangType.isVector()) break; - std::pair ret(builder.makeVectorType(builder.makeUintType(32), 4), - builder.makeUintType(64)); + spv::Id ivec4_type = builder.makeVectorType(builder.makeUintType(32), 4); + spv::Id uint64_type = builder.makeUintType(64); + std::pair ret(ivec4_type, uint64_type); return ret; } // There are no SPIR-V builtins defined for these and map onto original non-transposed @@ -2490,6 +2495,10 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt // anything else gets there, so visit out of order, doing them all now. makeGlobalInitializers(node->getAsAggregate()->getSequence()); + //Pre process linker objects for ray tracing stages + if (glslangIntermediate->isRayTracingStage()) + collectRayTracingLinkerObjects(); + // Initializers are done, don't want to visit again, but functions and link objects need to be processed, // so do them manually. visitFunctions(node->getAsAggregate()->getSequence()); @@ -2799,10 +2808,12 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt binOp = node->getOp(); break; - case glslang::EOpIgnoreIntersection: - case glslang::EOpTerminateRay: - case glslang::EOpTrace: - case glslang::EOpExecuteCallable: + case glslang::EOpIgnoreIntersectionNV: + case glslang::EOpTerminateRayNV: + case glslang::EOpTraceNV: + case glslang::EOpTraceKHR: + case glslang::EOpExecuteCallableNV: + case glslang::EOpExecuteCallableKHR: case glslang::EOpWritePackedPrimitiveIndices4x8NV: noReturnValue = true; break; @@ -2811,7 +2822,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt case glslang::EOpRayQueryGenerateIntersection: case glslang::EOpRayQueryConfirmIntersection: builder.addExtension("SPV_KHR_ray_query"); - builder.addCapability(spv::CapabilityRayQueryProvisionalKHR); + builder.addCapability(spv::CapabilityRayQueryKHR); noReturnValue = true; break; case glslang::EOpRayQueryProceed: @@ -2834,7 +2845,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt case glslang::EOpRayQueryGetIntersectionObjectToWorld: case glslang::EOpRayQueryGetIntersectionWorldToObject: builder.addExtension("SPV_KHR_ray_query"); - builder.addCapability(spv::CapabilityRayQueryProvisionalKHR); + builder.addCapability(spv::CapabilityRayQueryKHR); break; case glslang::EOpCooperativeMatrixLoad: case glslang::EOpCooperativeMatrixStore: @@ -3087,11 +3098,18 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt )) { bool cond = glslangOperands[arg]->getAsConstantUnion()->getConstArray()[0].getBConst(); operands.push_back(builder.makeIntConstant(cond ? 1 : 0)); - } - else { + } else if ((arg == 10 && glslangOp == glslang::EOpTraceKHR) || + (arg == 1 && glslangOp == glslang::EOpExecuteCallableKHR)) { + const int opdNum = glslangOp == glslang::EOpTraceKHR ? 10 : 1; + const int set = glslangOp == glslang::EOpTraceKHR ? 0 : 1; + const int location = glslangOperands[opdNum]->getAsConstantUnion()->getConstArray()[0].getUConst(); + auto itNode = locationToSymbol[set].find(location); + visitSymbol(itNode->second); + spv::Id symId = getSymbolId(itNode->second); + operands.push_back(symId); + } else { operands.push_back(accessChainLoad(glslangOperands[arg]->getAsTyped()->getType())); - } - + } } } @@ -3494,11 +3512,11 @@ bool TGlslangToSpvTraverser::visitBranch(glslang::TVisit /* visit */, glslang::T switch (node->getFlowOp()) { case glslang::EOpKill: - builder.makeDiscard(); + builder.makeStatementTerminator(spv::OpKill, "post-discard"); break; case glslang::EOpTerminateInvocation: builder.addExtension(spv::E_SPV_KHR_terminate_invocation); - builder.makeTerminateInvocation(); + builder.makeStatementTerminator(spv::OpTerminateInvocation, "post-terminate-invocation"); break; case glslang::EOpBreak: if (breakForLoop.top()) @@ -3535,6 +3553,12 @@ bool TGlslangToSpvTraverser::visitBranch(glslang::TVisit /* visit */, glslang::T builder.addExtension(spv::E_SPV_EXT_demote_to_helper_invocation); builder.addCapability(spv::CapabilityDemoteToHelperInvocationEXT); break; + case glslang::EOpTerminateRayKHR: + builder.makeStatementTerminator(spv::OpTerminateRayKHR, "post-terminateRayKHR"); + break; + case glslang::EOpIgnoreIntersectionKHR: + builder.makeStatementTerminator(spv::OpIgnoreIntersectionKHR, "post-ignoreIntersectionKHR"); + break; #endif default: @@ -4629,7 +4653,39 @@ void TGlslangToSpvTraverser::makeGlobalInitializers(const glslang::TIntermSequen } } } +// Walk over all linker objects to create a map for payload and callable data linker objects +// and their location to be used during codegen for OpTraceKHR and OpExecuteCallableKHR +// This is done here since it is possible that these linker objects are not be referenced in the AST +void TGlslangToSpvTraverser::collectRayTracingLinkerObjects() +{ + glslang::TIntermAggregate* linkerObjects = glslangIntermediate->findLinkerObjects(); + for (auto& objSeq : linkerObjects->getSequence()) { + auto objNode = objSeq->getAsSymbolNode(); + if (objNode != nullptr) { + if (objNode->getQualifier().hasLocation()) { + unsigned int location = objNode->getQualifier().layoutLocation; + auto st = objNode->getQualifier().storage; + int set; + switch (st) + { + case glslang::EvqPayload: + case glslang::EvqPayloadIn: + set = 0; + break; + case glslang::EvqCallableData: + case glslang::EvqCallableDataIn: + set = 1; + break; + default: + set = -1; + } + if (set != -1) + locationToSymbol[set].insert(std::make_pair(location, objNode)); + } + } + } +} // Process all the functions, while skipping initializers. void TGlslangToSpvTraverser::visitFunctions(const glslang::TIntermSequence& glslFunctions) { @@ -6254,6 +6310,11 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, OpDe case glslang::EOpConstructReference: unaryOp = spv::OpBitcast; break; + + case glslang::EOpConvUint64ToAccStruct: + case glslang::EOpConvUvec2ToAccStruct: + unaryOp = spv::OpConvertUToAccelerationStructureKHR; + break; #endif case glslang::EOpCopyObject: @@ -7840,10 +7901,16 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: typeId = builder.makeBoolType(); opCode = spv::OpReportIntersectionKHR; break; - case glslang::EOpTrace: + case glslang::EOpTraceNV: + builder.createNoResultOp(spv::OpTraceNV, operands); + return 0; + case glslang::EOpTraceKHR: builder.createNoResultOp(spv::OpTraceRayKHR, operands); return 0; - case glslang::EOpExecuteCallable: + case glslang::EOpExecuteCallableNV: + builder.createNoResultOp(spv::OpExecuteCallableNV, operands); + return 0; + case glslang::EOpExecuteCallableKHR: builder.createNoResultOp(spv::OpExecuteCallableKHR, operands); return 0; @@ -8131,11 +8198,11 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op, spv: spv::Id id = builder.createBuiltinCall(typeId, getExtBuiltins(spv::E_SPV_AMD_gcn_shader), spv::TimeAMD, args); return builder.setPrecision(id, precision); } - case glslang::EOpIgnoreIntersection: - builder.createNoResultOp(spv::OpIgnoreIntersectionKHR); + case glslang::EOpIgnoreIntersectionNV: + builder.createNoResultOp(spv::OpIgnoreIntersectionNV); return 0; - case glslang::EOpTerminateRay: - builder.createNoResultOp(spv::OpTerminateRayKHR); + case glslang::EOpTerminateRayNV: + builder.createNoResultOp(spv::OpTerminateRayNV); return 0; case glslang::EOpRayQueryInitialize: builder.createNoResultOp(spv::OpRayQueryInitializeKHR); @@ -8263,7 +8330,8 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol } #ifndef GLSLANG_WEB - if (symbol->getType().isImage()) { + // Subgroup builtins which have input storage class are volatile for ray tracing stages. + if (symbol->getType().isImage() || symbol->getQualifier().isPipeInput()) { std::vector memory; TranslateMemoryDecoration(symbol->getType().getQualifier(), memory, glslangIntermediate->usingVulkanMemoryModel()); diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index 390b18ad..c8fbcc45 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -621,13 +621,13 @@ Id Builder::makeAccelerationStructureType() Id Builder::makeRayQueryType() { Instruction *type; - if (groupedTypes[OpTypeRayQueryProvisionalKHR].size() == 0) { - type = new Instruction(getUniqueId(), NoType, OpTypeRayQueryProvisionalKHR); - groupedTypes[OpTypeRayQueryProvisionalKHR].push_back(type); + if (groupedTypes[OpTypeRayQueryKHR].size() == 0) { + type = new Instruction(getUniqueId(), NoType, OpTypeRayQueryKHR); + groupedTypes[OpTypeRayQueryKHR].push_back(type); constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); } else { - type = groupedTypes[OpTypeRayQueryProvisionalKHR].back(); + type = groupedTypes[OpTypeRayQueryKHR].back(); } return type->getResultId(); @@ -1447,17 +1447,10 @@ void Builder::leaveFunction() } // Comments in header -void Builder::makeDiscard() +void Builder::makeStatementTerminator(spv::Op opcode, const char *name) { - buildPoint->addInstruction(std::unique_ptr(new Instruction(OpKill))); - createAndSetNoPredecessorBlock("post-discard"); -} - -// Comments in header -void Builder::makeTerminateInvocation() -{ - buildPoint->addInstruction(std::unique_ptr(new Instruction(OpTerminateInvocation))); - createAndSetNoPredecessorBlock("post-terminate-invocation"); + buildPoint->addInstruction(std::unique_ptr(new Instruction(opcode))); + createAndSetNoPredecessorBlock(name); } // Comments in header diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index 63dddcb8..911ea58b 100644 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -357,9 +357,9 @@ public: // Generate all the code needed to finish up a function. void leaveFunction(); - // Create a discard or terminate-invocation. - void makeDiscard(); - void makeTerminateInvocation(); + // Create block terminator instruction for certain statements like + // discard, terminate-invocation, terminateRayEXT, or ignoreIntersectionEXT + void makeStatementTerminator(spv::Op opcode, const char *name); // Create a global or function local or IO variable. Id createVariable(Decoration precision, StorageClass, Id type, const char* name = nullptr, diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index 3d08204f..e6ad4c1a 100644 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -915,9 +915,9 @@ const char* CapabilityString(int info) case CapabilityPerViewAttributesNV: return "PerViewAttributesNV"; case CapabilityGroupNonUniformPartitionedNV: return "GroupNonUniformPartitionedNV"; case CapabilityRayTracingNV: return "RayTracingNV"; - case CapabilityRayTracingProvisionalKHR: return "RayTracingProvisionalKHR"; - case CapabilityRayQueryProvisionalKHR: return "RayQueryProvisionalKHR"; - case CapabilityRayTraversalPrimitiveCullingProvisionalKHR: return "RayTraversalPrimitiveCullingProvisionalKHR"; + case CapabilityRayTracingKHR: return "RayTracingKHR"; + case CapabilityRayQueryKHR: return "RayQueryKHR"; + case CapabilityRayTraversalPrimitiveCullingKHR: return "RayTraversalPrimitiveCullingKHR"; case CapabilityComputeDerivativeGroupQuadsNV: return "ComputeDerivativeGroupQuadsNV"; case CapabilityComputeDerivativeGroupLinearNV: return "ComputeDerivativeGroupLinearNV"; case CapabilityFragmentBarycentricNV: return "FragmentBarycentricNV"; @@ -1364,17 +1364,23 @@ const char* OpcodeString(int op) case OpDecorateStringGOOGLE: return "OpDecorateStringGOOGLE"; case OpMemberDecorateStringGOOGLE: return "OpMemberDecorateStringGOOGLE"; + case OpReportIntersectionKHR: return "OpReportIntersectionKHR"; + case OpIgnoreIntersectionNV: return "OpIgnoreIntersectionNV"; + case OpIgnoreIntersectionKHR: return "OpIgnoreIntersectionKHR"; + case OpTerminateRayNV: return "OpTerminateRayNV"; + case OpTerminateRayKHR: return "OpTerminateRayKHR"; + case OpTraceNV: return "OpTraceNV"; + case OpTraceRayKHR: return "OpTraceRayKHR"; + case OpTypeAccelerationStructureKHR: return "OpTypeAccelerationStructureKHR"; + case OpExecuteCallableNV: return "OpExecuteCallableNV"; + case OpExecuteCallableKHR: return "OpExecuteCallableKHR"; + case OpConvertUToAccelerationStructureKHR: return "OpConvertUToAccelerationStructureKHR"; + case OpGroupNonUniformPartitionNV: return "OpGroupNonUniformPartitionNV"; - case OpReportIntersectionKHR: return "OpReportIntersectionKHR"; - case OpIgnoreIntersectionKHR: return "OpIgnoreIntersectionKHR"; - case OpTerminateRayKHR: return "OpTerminateRayKHR"; - case OpTraceRayKHR: return "OpTraceRayKHR"; - case OpTypeAccelerationStructureKHR: return "OpTypeAccelerationStructureKHR"; - case OpExecuteCallableKHR: return "OpExecuteCallableKHR"; case OpImageSampleFootprintNV: return "OpImageSampleFootprintNV"; case OpWritePackedPrimitiveIndices4x8NV: return "OpWritePackedPrimitiveIndices4x8NV"; - case OpTypeRayQueryProvisionalKHR: return "OpTypeRayQueryProvisionalKHR"; + case OpTypeRayQueryKHR: return "OpTypeRayQueryProvisionalKHR"; case OpRayQueryInitializeKHR: return "OpRayQueryInitializeKHR"; case OpRayQueryTerminateKHR: return "OpRayQueryTerminateKHR"; case OpRayQueryGenerateIntersectionKHR: return "OpRayQueryGenerateIntersectionKHR"; @@ -2771,7 +2777,20 @@ void Parameterize() InstructionDesc[OpTypeAccelerationStructureKHR].setResultAndType(true, false); - InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'NV Acceleration Structure'"); + InstructionDesc[OpTraceNV].operands.push(OperandId, "'Acceleration Structure'"); + InstructionDesc[OpTraceNV].operands.push(OperandId, "'Ray Flags'"); + InstructionDesc[OpTraceNV].operands.push(OperandId, "'Cull Mask'"); + InstructionDesc[OpTraceNV].operands.push(OperandId, "'SBT Record Offset'"); + InstructionDesc[OpTraceNV].operands.push(OperandId, "'SBT Record Stride'"); + InstructionDesc[OpTraceNV].operands.push(OperandId, "'Miss Index'"); + InstructionDesc[OpTraceNV].operands.push(OperandId, "'Ray Origin'"); + InstructionDesc[OpTraceNV].operands.push(OperandId, "'TMin'"); + InstructionDesc[OpTraceNV].operands.push(OperandId, "'Ray Direction'"); + InstructionDesc[OpTraceNV].operands.push(OperandId, "'TMax'"); + InstructionDesc[OpTraceNV].operands.push(OperandId, "'Payload'"); + InstructionDesc[OpTraceNV].setResultAndType(false, false); + + InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Acceleration Structure'"); InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Ray Flags'"); InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Cull Mask'"); InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'SBT Record Offset'"); @@ -2787,17 +2806,28 @@ void Parameterize() InstructionDesc[OpReportIntersectionKHR].operands.push(OperandId, "'Hit Parameter'"); InstructionDesc[OpReportIntersectionKHR].operands.push(OperandId, "'Hit Kind'"); + InstructionDesc[OpIgnoreIntersectionNV].setResultAndType(false, false); + InstructionDesc[OpIgnoreIntersectionKHR].setResultAndType(false, false); + InstructionDesc[OpTerminateRayNV].setResultAndType(false, false); + InstructionDesc[OpTerminateRayKHR].setResultAndType(false, false); + InstructionDesc[OpExecuteCallableNV].operands.push(OperandId, "SBT Record Index"); + InstructionDesc[OpExecuteCallableNV].operands.push(OperandId, "CallableData ID"); + InstructionDesc[OpExecuteCallableNV].setResultAndType(false, false); + InstructionDesc[OpExecuteCallableKHR].operands.push(OperandId, "SBT Record Index"); - InstructionDesc[OpExecuteCallableKHR].operands.push(OperandId, "CallableData ID"); + InstructionDesc[OpExecuteCallableKHR].operands.push(OperandId, "CallableData"); InstructionDesc[OpExecuteCallableKHR].setResultAndType(false, false); + InstructionDesc[OpConvertUToAccelerationStructureKHR].operands.push(OperandId, "Value"); + InstructionDesc[OpConvertUToAccelerationStructureKHR].setResultAndType(true, true); + // Ray Query InstructionDesc[OpTypeAccelerationStructureKHR].setResultAndType(true, false); - InstructionDesc[OpTypeRayQueryProvisionalKHR].setResultAndType(true, false); + InstructionDesc[OpTypeRayQueryKHR].setResultAndType(true, false); InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'RayQuery'"); InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'AccelerationS'"); diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp index ef5670e3..a5383de5 100644 --- a/SPIRV/spirv.hpp +++ b/SPIRV/spirv.hpp @@ -50,11 +50,11 @@ namespace spv { typedef unsigned int Id; #define SPV_VERSION 0x10500 -#define SPV_REVISION 3 +#define SPV_REVISION 4 static const unsigned int MagicNumber = 0x07230203; static const unsigned int Version = 0x00010500; -static const unsigned int Revision = 3; +static const unsigned int Revision = 4; static const unsigned int OpCodeMask = 0xffff; static const unsigned int WordCountShift = 16; @@ -899,7 +899,9 @@ enum Capability { CapabilityRoundingModeRTE = 4467, CapabilityRoundingModeRTZ = 4468, CapabilityRayQueryProvisionalKHR = 4471, - CapabilityRayTraversalPrimitiveCullingProvisionalKHR = 4478, + CapabilityRayQueryKHR = 4472, + CapabilityRayTraversalPrimitiveCullingKHR = 4478, + CapabilityRayTracingKHR = 4479, CapabilityFloat16ImageAMD = 5008, CapabilityImageGatherBiasLodAMD = 5009, CapabilityFragmentMaskAMD = 5010, @@ -1398,7 +1400,12 @@ enum Op { OpSubgroupAnyKHR = 4429, OpSubgroupAllEqualKHR = 4430, OpSubgroupReadInvocationKHR = 4432, - OpTypeRayQueryProvisionalKHR = 4472, + OpTraceRayKHR = 4445, + OpExecuteCallableKHR = 4446, + OpConvertUToAccelerationStructureKHR = 4447, + OpIgnoreIntersectionKHR = 4448, + OpTerminateRayKHR = 4449, + OpTypeRayQueryKHR = 4472, OpRayQueryInitializeKHR = 4473, OpRayQueryTerminateKHR = 4474, OpRayQueryGenerateIntersectionKHR = 4475, @@ -1421,15 +1428,11 @@ enum Op { OpWritePackedPrimitiveIndices4x8NV = 5299, OpReportIntersectionKHR = 5334, OpReportIntersectionNV = 5334, - OpIgnoreIntersectionKHR = 5335, OpIgnoreIntersectionNV = 5335, - OpTerminateRayKHR = 5336, OpTerminateRayNV = 5336, OpTraceNV = 5337, - OpTraceRayKHR = 5337, OpTypeAccelerationStructureKHR = 5341, OpTypeAccelerationStructureNV = 5341, - OpExecuteCallableKHR = 5344, OpExecuteCallableNV = 5344, OpTypeCooperativeMatrixNV = 5358, OpCooperativeMatrixLoadNV = 5359, @@ -1849,7 +1852,6 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case OpBranchConditional: *hasResult = false; *hasResultType = false; break; case OpSwitch: *hasResult = false; *hasResultType = false; break; case OpKill: *hasResult = false; *hasResultType = false; break; - case OpTerminateInvocation: *hasResult = false; *hasResultType = false; break; case OpReturn: *hasResult = false; *hasResultType = false; break; case OpReturnValue: *hasResult = false; *hasResultType = false; break; case OpUnreachable: *hasResult = false; *hasResultType = false; break; @@ -1970,7 +1972,12 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case OpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break; case OpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break; case OpSubgroupReadInvocationKHR: *hasResult = true; *hasResultType = true; break; - case OpTypeRayQueryProvisionalKHR: *hasResult = true; *hasResultType = false; break; + case OpTraceRayKHR: *hasResult = false; *hasResultType = false; break; + case OpExecuteCallableKHR: *hasResult = false; *hasResultType = false; break; + case OpConvertUToAccelerationStructureKHR: *hasResult = true; *hasResultType = true; break; + case OpIgnoreIntersectionKHR: *hasResult = false; *hasResultType = false; break; + case OpTerminateRayKHR: *hasResult = false; *hasResultType = false; break; + case OpTypeRayQueryKHR: *hasResult = true; *hasResultType = false; break; case OpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break; case OpRayQueryTerminateKHR: *hasResult = false; *hasResultType = false; break; case OpRayQueryGenerateIntersectionKHR: *hasResult = false; *hasResultType = false; break; diff --git a/Test/baseResults/glsl.460.subgroup.rcall.out b/Test/baseResults/glsl.460.subgroup.rcall.out index 6bffdc9c..2b2d89b1 100644 --- a/Test/baseResults/glsl.460.subgroup.rcall.out +++ b/Test/baseResults/glsl.460.subgroup.rcall.out @@ -109,8 +109,8 @@ ERROR: node is still EOpNull! 0:4 Function Parameters: 0:4 'f4' ( in 4-component vector of float) 0:? Sequence -0:7 'gl_SubgroupSize' ( in uint SubgroupSize) -0:8 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) +0:7 'gl_SubgroupSize' ( volatile in uint SubgroupSize) +0:8 'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID) 0:9 subgroupBarrier ( global void) 0:10 subgroupMemoryBarrier ( global void) 0:11 subgroupMemoryBarrierBuffer ( global void) @@ -128,11 +128,11 @@ ERROR: node is still EOpNull! 0:19 false (const bool) 0:20 subgroupAllEqual ( global bool) 0:20 'f4' ( in 4-component vector of float) -0:22 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask) -0:23 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask) -0:24 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask) -0:25 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask) -0:26 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask) +0:22 'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask) +0:23 'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask) +0:24 'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask) +0:25 'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask) +0:26 'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask) 0:27 subgroupBroadcast ( global 4-component vector of float) 0:27 'f4' ( in 4-component vector of float) 0:27 Constant: @@ -359,8 +359,8 @@ ERROR: node is still EOpNull! 0:119 Function Definition: basic_works( ( global void) 0:119 Function Parameters: 0:121 Sequence -0:121 'gl_SubgroupSize' ( in uint SubgroupSize) -0:122 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) +0:121 'gl_SubgroupSize' ( volatile in uint SubgroupSize) +0:122 'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID) 0:123 subgroupBarrier ( global void) 0:124 subgroupMemoryBarrier ( global void) 0:125 subgroupMemoryBarrierBuffer ( global void) @@ -370,11 +370,11 @@ ERROR: node is still EOpNull! 0:131 Function Parameters: 0:131 'f4' ( in 4-component vector of float) 0:132 Sequence -0:132 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask) -0:133 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask) -0:134 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask) -0:135 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask) -0:136 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask) +0:132 'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask) +0:133 'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask) +0:134 'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask) +0:135 'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask) +0:136 'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask) 0:137 subgroupBroadcast ( global 4-component vector of float) 0:137 'f4' ( in 4-component vector of float) 0:137 Constant: @@ -624,15 +624,15 @@ ERROR: node is still EOpNull! 0:247 Sequence 0:247 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) 0:248 'gl_SMCountNV' ( in uint SMCountNV) -0:249 'gl_WarpIDNV' ( in uint WarpIDNV) -0:250 'gl_SMIDNV' ( in uint SMIDNV) +0:249 'gl_WarpIDNV' ( volatile in uint WarpIDNV) +0:250 'gl_SMIDNV' ( volatile in uint SMIDNV) 0:257 Function Definition: sm_builtins( ( global void) 0:257 Function Parameters: 0:259 Sequence 0:259 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) 0:260 'gl_SMCountNV' ( in uint SMCountNV) -0:261 'gl_WarpIDNV' ( in uint WarpIDNV) -0:262 'gl_SMIDNV' ( in uint SMIDNV) +0:261 'gl_WarpIDNV' ( volatile in uint WarpIDNV) +0:262 'gl_SMIDNV' ( volatile in uint SMIDNV) 0:? Linker Objects 0:? 'data0' (layout( location=0) callableDataNV 4-component vector of float) 0:? 'anon@0' (layout( location=1) callableDataInNV block{ callableDataInNV uint data1}) diff --git a/Test/baseResults/glsl.460.subgroup.rchit.out b/Test/baseResults/glsl.460.subgroup.rchit.out index 1ea9e69d..f5083e04 100644 --- a/Test/baseResults/glsl.460.subgroup.rchit.out +++ b/Test/baseResults/glsl.460.subgroup.rchit.out @@ -109,8 +109,8 @@ ERROR: node is still EOpNull! 0:4 Function Parameters: 0:4 'f4' ( in 4-component vector of float) 0:? Sequence -0:7 'gl_SubgroupSize' ( in uint SubgroupSize) -0:8 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) +0:7 'gl_SubgroupSize' ( volatile in uint SubgroupSize) +0:8 'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID) 0:9 subgroupBarrier ( global void) 0:10 subgroupMemoryBarrier ( global void) 0:11 subgroupMemoryBarrierBuffer ( global void) @@ -128,11 +128,11 @@ ERROR: node is still EOpNull! 0:19 false (const bool) 0:20 subgroupAllEqual ( global bool) 0:20 'f4' ( in 4-component vector of float) -0:22 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask) -0:23 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask) -0:24 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask) -0:25 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask) -0:26 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask) +0:22 'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask) +0:23 'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask) +0:24 'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask) +0:25 'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask) +0:26 'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask) 0:27 subgroupBroadcast ( global 4-component vector of float) 0:27 'f4' ( in 4-component vector of float) 0:27 Constant: @@ -425,8 +425,8 @@ ERROR: node is still EOpNull! 0:129 Function Definition: basic_works( ( global void) 0:129 Function Parameters: 0:131 Sequence -0:131 'gl_SubgroupSize' ( in uint SubgroupSize) -0:132 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) +0:131 'gl_SubgroupSize' ( volatile in uint SubgroupSize) +0:132 'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID) 0:133 subgroupBarrier ( global void) 0:134 subgroupMemoryBarrier ( global void) 0:135 subgroupMemoryBarrierBuffer ( global void) @@ -436,11 +436,11 @@ ERROR: node is still EOpNull! 0:141 Function Parameters: 0:141 'f4' ( in 4-component vector of float) 0:142 Sequence -0:142 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask) -0:143 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask) -0:144 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask) -0:145 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask) -0:146 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask) +0:142 'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask) +0:143 'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask) +0:144 'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask) +0:145 'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask) +0:146 'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask) 0:147 subgroupBroadcast ( global 4-component vector of float) 0:147 'f4' ( in 4-component vector of float) 0:147 Constant: @@ -690,15 +690,15 @@ ERROR: node is still EOpNull! 0:257 Sequence 0:257 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) 0:258 'gl_SMCountNV' ( in uint SMCountNV) -0:259 'gl_WarpIDNV' ( in uint WarpIDNV) -0:260 'gl_SMIDNV' ( in uint SMIDNV) +0:259 'gl_WarpIDNV' ( volatile in uint WarpIDNV) +0:260 'gl_SMIDNV' ( volatile in uint SMIDNV) 0:267 Function Definition: sm_builtins( ( global void) 0:267 Function Parameters: 0:269 Sequence 0:269 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) 0:270 'gl_SMCountNV' ( in uint SMCountNV) -0:271 'gl_WarpIDNV' ( in uint WarpIDNV) -0:272 'gl_SMIDNV' ( in uint SMIDNV) +0:271 'gl_WarpIDNV' ( volatile in uint WarpIDNV) +0:272 'gl_SMIDNV' ( volatile in uint SMIDNV) 0:? Linker Objects 0:? 'accNV' (layout( set=0 binding=0) uniform accelerationStructureNV) 0:? 'localPayload' (layout( location=0) rayPayloadNV 4-component vector of float) diff --git a/Test/baseResults/glsl.460.subgroup.rgen.out b/Test/baseResults/glsl.460.subgroup.rgen.out index dfe1e2bb..56283bbd 100644 --- a/Test/baseResults/glsl.460.subgroup.rgen.out +++ b/Test/baseResults/glsl.460.subgroup.rgen.out @@ -109,8 +109,8 @@ ERROR: node is still EOpNull! 0:4 Function Parameters: 0:4 'f4' ( in 4-component vector of float) 0:? Sequence -0:7 'gl_SubgroupSize' ( in uint SubgroupSize) -0:8 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) +0:7 'gl_SubgroupSize' ( volatile in uint SubgroupSize) +0:8 'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID) 0:9 subgroupBarrier ( global void) 0:10 subgroupMemoryBarrier ( global void) 0:11 subgroupMemoryBarrierBuffer ( global void) @@ -128,11 +128,11 @@ ERROR: node is still EOpNull! 0:19 false (const bool) 0:20 subgroupAllEqual ( global bool) 0:20 'f4' ( in 4-component vector of float) -0:22 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask) -0:23 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask) -0:24 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask) -0:25 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask) -0:26 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask) +0:22 'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask) +0:23 'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask) +0:24 'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask) +0:25 'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask) +0:26 'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask) 0:27 subgroupBroadcast ( global 4-component vector of float) 0:27 'f4' ( in 4-component vector of float) 0:27 Constant: @@ -389,8 +389,8 @@ ERROR: node is still EOpNull! 0:123 Function Definition: basic_works( ( global void) 0:123 Function Parameters: 0:125 Sequence -0:125 'gl_SubgroupSize' ( in uint SubgroupSize) -0:126 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) +0:125 'gl_SubgroupSize' ( volatile in uint SubgroupSize) +0:126 'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID) 0:127 subgroupBarrier ( global void) 0:128 subgroupMemoryBarrier ( global void) 0:129 subgroupMemoryBarrierBuffer ( global void) @@ -400,11 +400,11 @@ ERROR: node is still EOpNull! 0:135 Function Parameters: 0:135 'f4' ( in 4-component vector of float) 0:136 Sequence -0:136 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask) -0:137 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask) -0:138 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask) -0:139 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask) -0:140 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask) +0:136 'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask) +0:137 'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask) +0:138 'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask) +0:139 'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask) +0:140 'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask) 0:141 subgroupBroadcast ( global 4-component vector of float) 0:141 'f4' ( in 4-component vector of float) 0:141 Constant: @@ -654,15 +654,15 @@ ERROR: node is still EOpNull! 0:251 Sequence 0:251 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) 0:252 'gl_SMCountNV' ( in uint SMCountNV) -0:253 'gl_WarpIDNV' ( in uint WarpIDNV) -0:254 'gl_SMIDNV' ( in uint SMIDNV) +0:253 'gl_WarpIDNV' ( volatile in uint WarpIDNV) +0:254 'gl_SMIDNV' ( volatile in uint SMIDNV) 0:261 Function Definition: sm_builtins( ( global void) 0:261 Function Parameters: 0:263 Sequence 0:263 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) 0:264 'gl_SMCountNV' ( in uint SMCountNV) -0:265 'gl_WarpIDNV' ( in uint WarpIDNV) -0:266 'gl_SMIDNV' ( in uint SMIDNV) +0:265 'gl_WarpIDNV' ( volatile in uint WarpIDNV) +0:266 'gl_SMIDNV' ( volatile in uint SMIDNV) 0:? Linker Objects 0:? 'accNV0' (layout( set=0 binding=0) uniform accelerationStructureNV) 0:? 'accNV1' (layout( set=0 binding=1) uniform accelerationStructureNV) diff --git a/Test/baseResults/glsl.460.subgroup.rint.out b/Test/baseResults/glsl.460.subgroup.rint.out index 9915ecf7..a7de7d35 100644 --- a/Test/baseResults/glsl.460.subgroup.rint.out +++ b/Test/baseResults/glsl.460.subgroup.rint.out @@ -109,8 +109,8 @@ ERROR: node is still EOpNull! 0:5 Function Parameters: 0:5 'f4' ( in 4-component vector of float) 0:? Sequence -0:8 'gl_SubgroupSize' ( in uint SubgroupSize) -0:9 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) +0:8 'gl_SubgroupSize' ( volatile in uint SubgroupSize) +0:9 'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID) 0:10 subgroupBarrier ( global void) 0:11 subgroupMemoryBarrier ( global void) 0:12 subgroupMemoryBarrierBuffer ( global void) @@ -128,11 +128,11 @@ ERROR: node is still EOpNull! 0:20 false (const bool) 0:21 subgroupAllEqual ( global bool) 0:21 'f4' ( in 4-component vector of float) -0:23 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask) -0:24 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask) -0:25 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask) -0:26 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask) -0:27 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask) +0:23 'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask) +0:24 'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask) +0:25 'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask) +0:26 'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask) +0:27 'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask) 0:28 subgroupBroadcast ( global 4-component vector of float) 0:28 'f4' ( in 4-component vector of float) 0:28 Constant: @@ -403,8 +403,8 @@ ERROR: node is still EOpNull! 0:129 Function Definition: basic_works( ( global void) 0:129 Function Parameters: 0:131 Sequence -0:131 'gl_SubgroupSize' ( in uint SubgroupSize) -0:132 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) +0:131 'gl_SubgroupSize' ( volatile in uint SubgroupSize) +0:132 'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID) 0:133 subgroupBarrier ( global void) 0:134 subgroupMemoryBarrier ( global void) 0:135 subgroupMemoryBarrierBuffer ( global void) @@ -414,11 +414,11 @@ ERROR: node is still EOpNull! 0:141 Function Parameters: 0:141 'f4' ( in 4-component vector of float) 0:142 Sequence -0:142 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask) -0:143 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask) -0:144 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask) -0:145 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask) -0:146 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask) +0:142 'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask) +0:143 'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask) +0:144 'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask) +0:145 'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask) +0:146 'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask) 0:147 subgroupBroadcast ( global 4-component vector of float) 0:147 'f4' ( in 4-component vector of float) 0:147 Constant: @@ -668,15 +668,15 @@ ERROR: node is still EOpNull! 0:257 Sequence 0:257 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) 0:258 'gl_SMCountNV' ( in uint SMCountNV) -0:259 'gl_WarpIDNV' ( in uint WarpIDNV) -0:260 'gl_SMIDNV' ( in uint SMIDNV) +0:259 'gl_WarpIDNV' ( volatile in uint WarpIDNV) +0:260 'gl_SMIDNV' ( volatile in uint SMIDNV) 0:267 Function Definition: sm_builtins( ( global void) 0:267 Function Parameters: 0:269 Sequence 0:269 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) 0:270 'gl_SMCountNV' ( in uint SMCountNV) -0:271 'gl_WarpIDNV' ( in uint WarpIDNV) -0:272 'gl_SMIDNV' ( in uint SMIDNV) +0:271 'gl_WarpIDNV' ( volatile in uint WarpIDNV) +0:272 'gl_SMIDNV' ( volatile in uint SMIDNV) 0:? Linker Objects 0:? 'iAttr' ( hitAttributeNV 4-component vector of float) diff --git a/Test/baseResults/glsl.460.subgroup.rmiss.out b/Test/baseResults/glsl.460.subgroup.rmiss.out index ddf7d1b3..865d88c5 100644 --- a/Test/baseResults/glsl.460.subgroup.rmiss.out +++ b/Test/baseResults/glsl.460.subgroup.rmiss.out @@ -109,8 +109,8 @@ ERROR: node is still EOpNull! 0:5 Function Parameters: 0:5 'f4' ( in 4-component vector of float) 0:? Sequence -0:8 'gl_SubgroupSize' ( in uint SubgroupSize) -0:9 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) +0:8 'gl_SubgroupSize' ( volatile in uint SubgroupSize) +0:9 'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID) 0:10 subgroupBarrier ( global void) 0:11 subgroupMemoryBarrier ( global void) 0:12 subgroupMemoryBarrierBuffer ( global void) @@ -128,11 +128,11 @@ ERROR: node is still EOpNull! 0:20 false (const bool) 0:21 subgroupAllEqual ( global bool) 0:21 'f4' ( in 4-component vector of float) -0:23 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask) -0:24 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask) -0:25 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask) -0:26 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask) -0:27 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask) +0:23 'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask) +0:24 'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask) +0:25 'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask) +0:26 'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask) +0:27 'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask) 0:28 subgroupBroadcast ( global 4-component vector of float) 0:28 'f4' ( in 4-component vector of float) 0:28 Constant: @@ -397,8 +397,8 @@ ERROR: node is still EOpNull! 0:123 Function Definition: basic_works( ( global void) 0:123 Function Parameters: 0:125 Sequence -0:125 'gl_SubgroupSize' ( in uint SubgroupSize) -0:126 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) +0:125 'gl_SubgroupSize' ( volatile in uint SubgroupSize) +0:126 'gl_SubgroupInvocationID' ( volatile in uint SubgroupInvocationID) 0:127 subgroupBarrier ( global void) 0:128 subgroupMemoryBarrier ( global void) 0:129 subgroupMemoryBarrierBuffer ( global void) @@ -408,11 +408,11 @@ ERROR: node is still EOpNull! 0:135 Function Parameters: 0:135 'f4' ( in 4-component vector of float) 0:136 Sequence -0:136 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask) -0:137 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask) -0:138 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask) -0:139 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask) -0:140 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask) +0:136 'gl_SubgroupEqMask' ( volatile in 4-component vector of uint SubgroupEqMask) +0:137 'gl_SubgroupGeMask' ( volatile in 4-component vector of uint SubgroupGeMask) +0:138 'gl_SubgroupGtMask' ( volatile in 4-component vector of uint SubgroupGtMask) +0:139 'gl_SubgroupLeMask' ( volatile in 4-component vector of uint SubgroupLeMask) +0:140 'gl_SubgroupLtMask' ( volatile in 4-component vector of uint SubgroupLtMask) 0:141 subgroupBroadcast ( global 4-component vector of float) 0:141 'f4' ( in 4-component vector of float) 0:141 Constant: @@ -662,15 +662,15 @@ ERROR: node is still EOpNull! 0:251 Sequence 0:251 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) 0:252 'gl_SMCountNV' ( in uint SMCountNV) -0:253 'gl_WarpIDNV' ( in uint WarpIDNV) -0:254 'gl_SMIDNV' ( in uint SMIDNV) +0:253 'gl_WarpIDNV' ( volatile in uint WarpIDNV) +0:254 'gl_SMIDNV' ( volatile in uint SMIDNV) 0:261 Function Definition: sm_builtins( ( global void) 0:261 Function Parameters: 0:263 Sequence 0:263 'gl_WarpsPerSMNV' ( in uint WarpsPerSMNV) 0:264 'gl_SMCountNV' ( in uint SMCountNV) -0:265 'gl_WarpIDNV' ( in uint WarpIDNV) -0:266 'gl_SMIDNV' ( in uint SMIDNV) +0:265 'gl_WarpIDNV' ( volatile in uint WarpIDNV) +0:266 'gl_SMIDNV' ( volatile in uint SMIDNV) 0:? Linker Objects 0:? 'accNV' (layout( set=0 binding=0) uniform accelerationStructureNV) 0:? 'localPayload' (layout( location=0) rayPayloadNV 4-component vector of float) diff --git a/Test/baseResults/rayQuery-allOps.comp.out b/Test/baseResults/rayQuery-allOps.comp.out index c0cc8aa7..9c49e2e3 100644 --- a/Test/baseResults/rayQuery-allOps.comp.out +++ b/Test/baseResults/rayQuery-allOps.comp.out @@ -4,8 +4,8 @@ rayQuery-allOps.comp // Id's are bound by 258 Capability Shader - Capability RayQueryProvisionalKHR - Capability RayTraversalPrimitiveCullingProvisionalKHR + Capability RayQueryKHR + Capability RayTraversalPrimitiveCullingKHR Extension "SPV_KHR_ray_query" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 @@ -87,7 +87,8 @@ rayQuery-allOps.comp 37: 18(int) Constant 3 38: 8(float) Constant 1176255488 45: TypeRayQueryProvisionalKHR - 46: TypePointer Function 45 + 46: TypePointer Private 45 + 47(rayQuery): 46(ptr) Variable Private 48: TypeAccelerationStructureKHR 49: TypePointer UniformConstant 48 50(rtas): 49(ptr) Variable UniformConstant @@ -114,7 +115,6 @@ rayQuery-allOps.comp 4(main): 2 Function None 3 5: Label 43(ray): 25(ptr) Variable Function - 47(rayQuery): 46(ptr) Variable Function 69(candidateType): 68(ptr) Variable Function 78(_mat4x3): 77(ptr) Variable Function 83(_mat3x4): 82(ptr) Variable Function diff --git a/Test/baseResults/rayQuery-allOps.frag.out b/Test/baseResults/rayQuery-allOps.frag.out index 8182da3c..cff8fb0e 100644 --- a/Test/baseResults/rayQuery-allOps.frag.out +++ b/Test/baseResults/rayQuery-allOps.frag.out @@ -4,7 +4,7 @@ rayQuery-allOps.frag // Id's are bound by 257 Capability Shader - Capability RayQueryProvisionalKHR + Capability RayQueryKHR Extension "SPV_KHR_ray_query" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 @@ -86,7 +86,8 @@ rayQuery-allOps.frag 37: 18(int) Constant 3 38: 8(float) Constant 1176255488 45: TypeRayQueryProvisionalKHR - 46: TypePointer Function 45 + 46: TypePointer Private 45 + 47(rayQuery): 46(ptr) Variable Private 48: TypeAccelerationStructureKHR 49: TypePointer UniformConstant 48 50(rtas): 49(ptr) Variable UniformConstant @@ -112,7 +113,6 @@ rayQuery-allOps.frag 4(main): 2 Function None 3 5: Label 43(ray): 25(ptr) Variable Function - 47(rayQuery): 46(ptr) Variable Function 69(candidateType): 68(ptr) Variable Function 78(_mat4x3): 77(ptr) Variable Function 83(_mat3x4): 82(ptr) Variable Function diff --git a/Test/baseResults/rayQuery-allOps.rgen.out b/Test/baseResults/rayQuery-allOps.rgen.out index 01b8f1d1..418dad18 100644 --- a/Test/baseResults/rayQuery-allOps.rgen.out +++ b/Test/baseResults/rayQuery-allOps.rgen.out @@ -3,7 +3,7 @@ rayQuery-allOps.rgen // Generated by (magic number): 8000a // Id's are bound by 257 - Capability RayQueryProvisionalKHR + Capability RayQueryKHR Capability RayTracingNV Extension "SPV_KHR_ray_query" Extension "SPV_NV_ray_tracing" @@ -86,7 +86,8 @@ rayQuery-allOps.rgen 37: 18(int) Constant 3 38: 8(float) Constant 1176255488 45: TypeRayQueryProvisionalKHR - 46: TypePointer Function 45 + 46: TypePointer Private 45 + 47(rayQuery): 46(ptr) Variable Private 48: TypeAccelerationStructureKHR 49: TypePointer UniformConstant 48 50(rtas): 49(ptr) Variable UniformConstant @@ -112,7 +113,6 @@ rayQuery-allOps.rgen 4(main): 2 Function None 3 5: Label 43(ray): 25(ptr) Variable Function - 47(rayQuery): 46(ptr) Variable Function 69(candidateType): 68(ptr) Variable Function 78(_mat4x3): 77(ptr) Variable Function 83(_mat3x4): 82(ptr) Variable Function diff --git a/Test/baseResults/rayQuery-global.rgen.out b/Test/baseResults/rayQuery-global.rgen.out new file mode 100644 index 00000000..637b7528 --- /dev/null +++ b/Test/baseResults/rayQuery-global.rgen.out @@ -0,0 +1,76 @@ +rayQuery-global.rgen +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 44 + + Capability RayQueryKHR + Capability RayTracingKHR + Extension "SPV_KHR_ray_query" + Extension "SPV_KHR_ray_tracing" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint RayGenerationKHR 4 "main" + Source GLSL 460 + SourceExtension "GL_EXT_ray_flags_primitive_culling" + SourceExtension "GL_EXT_ray_query" + Name 4 "main" + Name 10 "otherWrapper(rq1;" + Name 9 "rq" + Name 13 "wrapper(rq1;" + Name 12 "rq" + Name 17 "rqGlobal" + Name 22 "rq2" + Name 27 "rtas" + Name 40 "rq2" + Decorate 27(rtas) DescriptorSet 0 + Decorate 27(rtas) Binding 1 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeRayQueryProvisionalKHR + 7: TypePointer Private 6 + 8: TypeFunction 2 7(ptr) + 15: TypeBool + 17(rqGlobal): 7(ptr) Variable Private + 22(rq2): 7(ptr) Variable Private + 25: TypeAccelerationStructureKHR + 26: TypePointer UniformConstant 25 + 27(rtas): 26(ptr) Variable UniformConstant + 29: TypeInt 32 0 + 30: 29(int) Constant 0 + 31: 29(int) Constant 255 + 32: TypeFloat 32 + 33: TypeVector 32(float) 3 + 34: 32(float) Constant 0 + 35: 33(fvec3) ConstantComposite 34 34 34 + 36: 32(float) Constant 1065353216 + 37: 33(fvec3) ConstantComposite 36 34 34 + 40(rq2): 7(ptr) Variable Private + 4(main): 2 Function None 3 + 5: Label + 28: 25 Load 27(rtas) + RayQueryInitializeKHR 17(rqGlobal) 28 30 31 35 34 37 36 + 38: 2 FunctionCall 13(wrapper(rq1;) 17(rqGlobal) + 39: 2 FunctionCall 10(otherWrapper(rq1;) 17(rqGlobal) + 41: 25 Load 27(rtas) + RayQueryInitializeKHR 40(rq2) 41 30 31 35 34 37 36 + 42: 2 FunctionCall 13(wrapper(rq1;) 40(rq2) + 43: 2 FunctionCall 10(otherWrapper(rq1;) 40(rq2) + Return + FunctionEnd +10(otherWrapper(rq1;): 2 Function None 8 + 9(rq): 7(ptr) FunctionParameter + 11: Label + 16: 15(bool) RayQueryProceedKHR 9(rq) + 18: 15(bool) RayQueryProceedKHR 17(rqGlobal) + Return + FunctionEnd +13(wrapper(rq1;): 2 Function None 8 + 12(rq): 7(ptr) FunctionParameter + 14: Label + 19: 15(bool) RayQueryProceedKHR 12(rq) + 20: 15(bool) RayQueryProceedKHR 17(rqGlobal) + 21: 2 FunctionCall 10(otherWrapper(rq1;) 12(rq) + 23: 2 FunctionCall 10(otherWrapper(rq1;) 22(rq2) + 24: 2 FunctionCall 10(otherWrapper(rq1;) 17(rqGlobal) + Return + FunctionEnd diff --git a/Test/baseResults/rayQuery-initialize.rgen.out b/Test/baseResults/rayQuery-initialize.rgen.out index f97287f1..3b833332 100644 --- a/Test/baseResults/rayQuery-initialize.rgen.out +++ b/Test/baseResults/rayQuery-initialize.rgen.out @@ -3,7 +3,7 @@ rayQuery-initialize.rgen // Generated by (magic number): 8000a // Id's are bound by 103 - Capability RayQueryProvisionalKHR + Capability RayQueryKHR Capability RayTracingNV Extension "SPV_KHR_ray_query" Extension "SPV_NV_ray_tracing" @@ -56,7 +56,7 @@ rayQuery-initialize.rgen 6: TypeInt 32 0 7: TypeFunction 6(int) 10: TypeRayQueryProvisionalKHR - 11: TypePointer Function 10 + 11: TypePointer Private 10 12: TypeFloat 32 13: TypeVector 12(float) 3 14(Ray): TypeStruct 13(fvec3) 12(float) 13(fvec3) 12(float) @@ -88,12 +88,12 @@ rayQuery-initialize.rgen 75: TypePointer Uniform 74(Rays) 76: 75(ptr) Variable Uniform 78: TypePointer Uniform 72(Ray) + 89(rayQuery): 11(ptr) Variable Private 94: 6(int) Constant 32 4(main): 2 Function None 3 5: Label 69(index): 68(ptr) Variable Function 71(ray): 15(ptr) Variable Function - 89(rayQuery): 11(ptr) Variable Function 90(param): 15(ptr) Variable Function 70: 6(int) FunctionCall 8(launchIndex() Store 69(index) 70 diff --git a/Test/baseResults/rayQuery-no-cse.rgen.out b/Test/baseResults/rayQuery-no-cse.rgen.out index 23c8b51c..2f46f078 100644 --- a/Test/baseResults/rayQuery-no-cse.rgen.out +++ b/Test/baseResults/rayQuery-no-cse.rgen.out @@ -3,7 +3,7 @@ rayQuery-no-cse.rgen // Generated by (magic number): 8000a // Id's are bound by 107 - Capability RayQueryProvisionalKHR + Capability RayQueryKHR Capability RayTracingNV Extension "SPV_KHR_ray_query" Extension "SPV_NV_ray_tracing" @@ -58,7 +58,7 @@ rayQuery-no-cse.rgen 6: TypeInt 32 0 7: TypeFunction 6(int) 10: TypeRayQueryProvisionalKHR - 11: TypePointer Function 10 + 11: TypePointer Private 10 12: TypeFloat 32 13: TypeVector 12(float) 3 14(Ray): TypeStruct 13(fvec3) 12(float) 13(fvec3) 12(float) @@ -90,14 +90,14 @@ rayQuery-no-cse.rgen 75: TypePointer Uniform 74(Rays) 76: 75(ptr) Variable Uniform 78: TypePointer Uniform 72(Ray) + 89(rayQuery1): 11(ptr) Variable Private 94: 6(int) Constant 32 + 103(rayQuery2): 11(ptr) Variable Private 4(main): 2 Function None 3 5: Label 69(index): 68(ptr) Variable Function 71(ray): 15(ptr) Variable Function - 89(rayQuery1): 11(ptr) Variable Function 90(param): 15(ptr) Variable Function - 103(rayQuery2): 11(ptr) Variable Function 104(param): 15(ptr) Variable Function 70: 6(int) FunctionCall 8(launchIndex() Store 69(index) 70 diff --git a/Test/baseResults/rayQuery.rgen.out b/Test/baseResults/rayQuery.rgen.out index bf142a33..36809733 100644 --- a/Test/baseResults/rayQuery.rgen.out +++ b/Test/baseResults/rayQuery.rgen.out @@ -3,7 +3,7 @@ rayQuery.rgen // Generated by (magic number): 8000a // Id's are bound by 44 - Capability RayQueryProvisionalKHR + Capability RayQueryKHR Capability RayTracingNV Extension "SPV_KHR_ray_query" Extension "SPV_NV_ray_tracing" @@ -40,7 +40,8 @@ rayQuery.rgen 13: 10(float) Constant 0 15: 10(float) Constant 1148846080 16: TypeRayQueryProvisionalKHR - 17: TypePointer Function 16 + 17: TypePointer Private 16 +18(localRayQuery): 17(ptr) Variable Private 19: TypeAccelerationStructureKHR 20: TypePointer UniformConstant 19 21(acc0): 20(ptr) Variable UniformConstant @@ -59,7 +60,6 @@ rayQuery.rgen 8(rayFlags): 7(ptr) Variable Function 12(tMin): 11(ptr) Variable Function 14(tMax): 11(ptr) Variable Function -18(localRayQuery): 17(ptr) Variable Function Store 8(rayFlags) 9 Store 12(tMin) 13 Store 14(tMax) 15 diff --git a/Test/baseResults/spv.AnyHitShader.rahit.out b/Test/baseResults/spv.AnyHitShader.rahit.out index 755d60e8..f33a1bdc 100644 --- a/Test/baseResults/spv.AnyHitShader.rahit.out +++ b/Test/baseResults/spv.AnyHitShader.rahit.out @@ -153,10 +153,10 @@ spv.AnyHitShader.rahit SelectionMerge 79 None BranchConditional 77 78 80 78: Label - IgnoreIntersectionKHR + IgnoreIntersectionNV Branch 79 80: Label - TerminateRayKHR + TerminateRayNV Branch 79 79: Label Return diff --git a/Test/baseResults/spv.ClosestHitShader.rchit.out b/Test/baseResults/spv.ClosestHitShader.rchit.out index 63039ddf..4a8e65d2 100644 --- a/Test/baseResults/spv.ClosestHitShader.rchit.out +++ b/Test/baseResults/spv.ClosestHitShader.rchit.out @@ -164,6 +164,6 @@ spv.ClosestHitShader.rchit 68: 60 Load 67(gl_WorldToObjectNV) Store 66(v14) 68 72: 69 Load 71(accNV) - TraceRayKHR 72 73 74 75 76 73 78 77 80 81 82 + TraceNV 72 73 74 75 76 73 78 77 80 81 82 Return FunctionEnd diff --git a/Test/baseResults/spv.MissShader.rmiss.out b/Test/baseResults/spv.MissShader.rmiss.out index d0eeb015..563e53ff 100644 --- a/Test/baseResults/spv.MissShader.rmiss.out +++ b/Test/baseResults/spv.MissShader.rmiss.out @@ -108,6 +108,6 @@ spv.MissShader.rmiss 39: 16(float) Load 38(gl_RayTmaxNV) Store 37(v7) 39 43: 40 Load 42(accNV) - TraceRayKHR 43 44 45 46 47 44 49 48 51 52 54 + TraceNV 43 44 45 46 47 44 49 48 51 52 54 Return FunctionEnd diff --git a/Test/baseResults/spv.RayCallable.rcall.out b/Test/baseResults/spv.RayCallable.rcall.out index f59d36fc..75698fcb 100644 --- a/Test/baseResults/spv.RayCallable.rcall.out +++ b/Test/baseResults/spv.RayCallable.rcall.out @@ -55,6 +55,6 @@ spv.RayCallable.rcall Store 13(size) 15 23: 22(ptr) AccessChain 18 20 Store 23 21 - ExecuteCallableKHR 24 25 + ExecuteCallableNV 24 25 Return FunctionEnd diff --git a/Test/baseResults/spv.RayConstants.rgen.out b/Test/baseResults/spv.RayConstants.rgen.out index c4085fe3..962aeb7d 100644 --- a/Test/baseResults/spv.RayConstants.rgen.out +++ b/Test/baseResults/spv.RayConstants.rgen.out @@ -41,6 +41,6 @@ spv.RayConstants.rgen 4(main): 2 Function None 3 5: Label 9: 6 Load 8(accNV) - TraceRayKHR 9 11 12 13 13 12 17 18 20 21 23 + TraceNV 9 11 12 13 13 12 17 18 20 21 23 Return FunctionEnd diff --git a/Test/baseResults/spv.RayGenShader.rgen.out b/Test/baseResults/spv.RayGenShader.rgen.out index 363b3dd0..f8f3fd65 100644 --- a/Test/baseResults/spv.RayGenShader.rgen.out +++ b/Test/baseResults/spv.RayGenShader.rgen.out @@ -92,6 +92,6 @@ spv.RayGenShader.rgen 44: 36(fvec3) Load 43 47: 42(ptr) AccessChain 39 46 48: 36(fvec3) Load 47 - TraceRayKHR 30 31 32 33 34 12 44 45 48 49 41 + TraceNV 30 31 32 33 34 12 44 45 48 49 41 Return FunctionEnd diff --git a/Test/baseResults/spv.RayGenShader11.rgen.out b/Test/baseResults/spv.RayGenShader11.rgen.out index 195071ff..f6b79c57 100644 --- a/Test/baseResults/spv.RayGenShader11.rgen.out +++ b/Test/baseResults/spv.RayGenShader11.rgen.out @@ -88,6 +88,6 @@ spv.RayGenShader11.rgen 44: 36(fvec3) Load 43 47: 42(ptr) AccessChain 39 46 48: 36(fvec3) Load 47 - TraceRayKHR 30 31 32 33 34 12 44 45 48 49 41 + TraceNV 30 31 32 33 34 12 44 45 48 49 41 Return FunctionEnd diff --git a/Test/baseResults/spv.RayGenShaderArray.rgen.out b/Test/baseResults/spv.RayGenShaderArray.rgen.out index fef54aa7..63a04b3e 100644 --- a/Test/baseResults/spv.RayGenShaderArray.rgen.out +++ b/Test/baseResults/spv.RayGenShaderArray.rgen.out @@ -111,7 +111,7 @@ spv.RayGenShaderArray.rgen 51: 32(fvec3) Load 50 54: 49(ptr) AccessChain 36 53 55: 32(fvec3) Load 54 - TraceRayKHR 43 44 45 46 47 12 51 52 55 56 48 + TraceNV 43 44 45 46 47 12 51 52 55 56 48 61: 38(ptr) AccessChain 36 37 62: 33(int) Load 61 63: 41(ptr) AccessChain 60(accNV1) 62 @@ -124,7 +124,7 @@ spv.RayGenShaderArray.rgen 70: 32(fvec3) Load 69 71: 49(ptr) AccessChain 36 53 72: 32(fvec3) Load 71 - TraceRayKHR 64 65 66 67 68 12 70 52 72 56 48 + TraceNV 64 65 66 67 68 12 70 52 72 56 48 73: 38(ptr) AccessChain 36 37 74: 33(int) Load 73 75: 33(int) CopyObject 74 @@ -138,6 +138,6 @@ spv.RayGenShaderArray.rgen 83: 32(fvec3) Load 82 84: 49(ptr) AccessChain 36 53 85: 32(fvec3) Load 84 - TraceRayKHR 77 78 79 80 81 12 83 52 85 56 48 + TraceNV 77 78 79 80 81 12 83 52 85 56 48 Return FunctionEnd diff --git a/Test/baseResults/spv.ext.AnyHitShader.rahit.out b/Test/baseResults/spv.ext.AnyHitShader.rahit.out index 39e43a7b..133fd639 100644 --- a/Test/baseResults/spv.ext.AnyHitShader.rahit.out +++ b/Test/baseResults/spv.ext.AnyHitShader.rahit.out @@ -1,15 +1,17 @@ spv.ext.AnyHitShader.rahit // Module Version 10400 // Generated by (magic number): 8000a -// Id's are bound by 94 +// Id's are bound by 107 - Capability RayTracingProvisionalKHR + Capability GroupNonUniform + Capability RayTracingKHR Extension "SPV_KHR_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint AnyHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67 70 76 80 84 + EntryPoint AnyHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67 70 76 80 84 98 Source GLSL 460 SourceExtension "GL_EXT_ray_tracing" + SourceExtension "GL_KHR_shader_subgroup_basic" Name 4 "main" Name 9 "v0" Name 11 "gl_LaunchIDEXT" @@ -48,6 +50,7 @@ spv.ext.AnyHitShader.rahit Name 79 "v17" Name 80 "gl_WorldToObject3x4EXT" Name 84 "incomingPayload" + Name 98 "gl_SubgroupSize" Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId @@ -67,6 +70,9 @@ spv.ext.AnyHitShader.rahit Decorate 76(gl_ObjectToWorld3x4EXT) BuiltIn ObjectToWorldKHR Decorate 80(gl_WorldToObject3x4EXT) BuiltIn WorldToObjectKHR Decorate 84(incomingPayload) Location 1 + Decorate 98(gl_SubgroupSize) RelaxedPrecision + Decorate 98(gl_SubgroupSize) BuiltIn SubgroupSize + Decorate 99 RelaxedPrecision 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 @@ -114,6 +120,9 @@ spv.ext.AnyHitShader.rahit 86: 72(fvec4) ConstantComposite 85 85 85 85 88: 16(int) Constant 1 89: TypeBool + 94: 6(int) Constant 0 +98(gl_SubgroupSize): 57(ptr) Variable Input + 101: TypePointer IncomingRayPayloadKHR 28(float) 4(main): 2 Function None 3 5: Label 9(v0): 8(ptr) Variable Function @@ -176,13 +185,16 @@ spv.ext.AnyHitShader.rahit 87: 16(int) Load 18(v2) 90: 89(bool) IEqual 87 88 SelectionMerge 92 None - BranchConditional 90 91 93 + BranchConditional 90 91 92 91: Label IgnoreIntersectionKHR - Branch 92 - 93: Label - TerminateRayKHR - Branch 92 92: Label - Return + 99: 6(int) Load 98(gl_SubgroupSize) + 100: 28(float) ConvertUToF 99 + 102: 101(ptr) AccessChain 84(incomingPayload) 94 + 103: 28(float) Load 102 + 104: 28(float) FAdd 103 100 + 105: 101(ptr) AccessChain 84(incomingPayload) 94 + Store 105 104 + TerminateRayKHR FunctionEnd diff --git a/Test/baseResults/spv.ext.ClosestHitShader.rchit.out b/Test/baseResults/spv.ext.ClosestHitShader.rchit.out index 7077ea4a..559ba002 100644 --- a/Test/baseResults/spv.ext.ClosestHitShader.rchit.out +++ b/Test/baseResults/spv.ext.ClosestHitShader.rchit.out @@ -3,7 +3,7 @@ spv.ext.ClosestHitShader.rchit // Generated by (magic number): 8000a // Id's are bound by 101 - Capability RayTracingProvisionalKHR + Capability RayTracingKHR Extension "SPV_KHR_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 @@ -48,8 +48,8 @@ spv.ext.ClosestHitShader.rchit Name 79 "v17" Name 80 "gl_WorldToObject3x4EXT" Name 85 "accEXT" - Name 98 "localPayload" - Name 100 "incomingPayload" + Name 98 "incomingPayload" + Name 100 "localPayload" Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId @@ -70,8 +70,8 @@ spv.ext.ClosestHitShader.rchit Decorate 80(gl_WorldToObject3x4EXT) BuiltIn WorldToObjectKHR Decorate 85(accEXT) DescriptorSet 0 Decorate 85(accEXT) Binding 0 - Decorate 98(localPayload) Location 0 - Decorate 100(incomingPayload) Location 1 + Decorate 98(incomingPayload) Location 1 + Decorate 100(localPayload) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 @@ -126,10 +126,10 @@ spv.ext.ClosestHitShader.rchit 94: 29(fvec3) ConstantComposite 93 93 93 95: 28(float) Constant 1061158912 96: 16(int) Constant 1 - 97: TypePointer RayPayloadKHR 72(fvec4) -98(localPayload): 97(ptr) Variable RayPayloadKHR - 99: TypePointer IncomingRayPayloadKHR 72(fvec4) -100(incomingPayload): 99(ptr) Variable IncomingRayPayloadKHR + 97: TypePointer IncomingRayPayloadKHR 72(fvec4) +98(incomingPayload): 97(ptr) Variable IncomingRayPayloadKHR + 99: TypePointer RayPayloadKHR 72(fvec4) +100(localPayload): 99(ptr) Variable RayPayloadKHR 4(main): 2 Function None 3 5: Label 9(v0): 8(ptr) Variable Function @@ -189,6 +189,6 @@ spv.ext.ClosestHitShader.rchit 82: 73 Transpose 81 Store 79(v17) 82 86: 83 Load 85(accEXT) - TraceRayKHR 86 87 88 89 90 87 92 91 94 95 96 + TraceRayKHR 86 87 88 89 90 87 92 91 94 95 98(incomingPayload) Return FunctionEnd diff --git a/Test/baseResults/spv.ext.ClosestHitShader_Errors.rchit.out b/Test/baseResults/spv.ext.ClosestHitShader_Errors.rchit.out index 6c87d1ca..9f945a2d 100644 --- a/Test/baseResults/spv.ext.ClosestHitShader_Errors.rchit.out +++ b/Test/baseResults/spv.ext.ClosestHitShader_Errors.rchit.out @@ -1,10 +1,12 @@ spv.ext.ClosestHitShader_Errors.rchit -ERROR: 0:8: 'assign' : l-value required "payload" (cannot modify hitAttributeNV in this stage) -ERROR: 0:9: 'reportIntersectionEXT' : no matching overloaded function found -ERROR: 0:10: 'terminateRayEXT' : no matching overloaded function found -ERROR: 0:11: 'ignoreIntersectionEXT' : no matching overloaded function found -ERROR: 0:12: 'gl_RayFlagsSkipAABBEXT' : required extension not requested: GL_EXT_ray_flags_primitive_culling -ERROR: 5 compilation errors. No code generated. +ERROR: 0:6: 'location' : overlapping use of location 2 +ERROR: 0:9: 'assign' : l-value required "payload" (cannot modify hitAttributeNV in this stage) +ERROR: 0:10: 'reportIntersectionEXT' : no matching overloaded function found +ERROR: 0:11: 'terminateRayEXT' : not supported in this stage: closest-hit +ERROR: 0:12: 'ignoreIntersectionEXT' : not supported in this stage: closest-hit +ERROR: 0:13: 'gl_RayFlagsSkipAABBEXT' : required extension not requested: GL_EXT_ray_flags_primitive_culling +ERROR: 0:14: 'no rayPayloadEXT/rayPayloadInEXT declared' : with layout(location = 0) +ERROR: 7 compilation errors. No code generated. SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out b/Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out new file mode 100644 index 00000000..14ec09b8 --- /dev/null +++ b/Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out @@ -0,0 +1,114 @@ +spv.ext.ClosestHitShader_Subgroup.rchit +// Module Version 10400 +// Generated by (magic number): 8000a +// Id's are bound by 67 + + Capability Int64 + Capability GroupNonUniform + Capability GroupNonUniformBallot + Capability SubgroupBallotKHR + Capability RayTracingKHR + Capability VulkanMemoryModelKHR + Capability ShaderSMBuiltinsNV + Extension "SPV_KHR_ray_tracing" + Extension "SPV_KHR_shader_ballot" + Extension "SPV_KHR_vulkan_memory_model" + Extension "SPV_NV_shader_sm_builtins" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical VulkanKHR + EntryPoint ClosestHitKHR 4 "main" 8 26 28 34 43 48 53 61 + Source GLSL 460 + SourceExtension "GL_ARB_shader_ballot" + SourceExtension "GL_EXT_ray_tracing" + SourceExtension "GL_KHR_shader_subgroup_ballot" + SourceExtension "GL_KHR_shader_subgroup_basic" + SourceExtension "GL_NV_shader_sm_builtins" + Name 4 "main" + Name 8 "accEXT" + Name 26 "incomingPayload" + Name 28 "gl_SubgroupInvocationID" + Name 34 "gl_SubGroupGeMaskARB" + Name 43 "gl_SubgroupGtMask" + Name 48 "gl_SubgroupLeMask" + Name 53 "gl_SubGroupLtMaskARB" + Name 61 "gl_SMIDNV" + Decorate 8(accEXT) DescriptorSet 0 + Decorate 8(accEXT) Binding 0 + Decorate 26(incomingPayload) Location 1 + Decorate 28(gl_SubgroupInvocationID) RelaxedPrecision + Decorate 28(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId + Decorate 29 RelaxedPrecision + Decorate 34(gl_SubGroupGeMaskARB) BuiltIn SubgroupGeMaskKHR + Decorate 43(gl_SubgroupGtMask) BuiltIn SubgroupGtMaskKHR + Decorate 48(gl_SubgroupLeMask) BuiltIn SubgroupLeMaskKHR + Decorate 53(gl_SubGroupLtMaskARB) BuiltIn SubgroupLtMaskKHR + Decorate 61(gl_SMIDNV) BuiltIn SMIDNV + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeAccelerationStructureKHR + 7: TypePointer UniformConstant 6 + 8(accEXT): 7(ptr) Variable UniformConstant + 10: TypeInt 32 0 + 11: 10(int) Constant 0 + 12: 10(int) Constant 1 + 13: 10(int) Constant 2 + 14: 10(int) Constant 3 + 15: TypeFloat 32 + 16: TypeVector 15(float) 3 + 17: 15(float) Constant 1056964608 + 18: 16(fvec3) ConstantComposite 17 17 17 + 19: 15(float) Constant 1065353216 + 20: 16(fvec3) ConstantComposite 19 19 19 + 21: 15(float) Constant 1061158912 + 22: TypeInt 32 1 + 23: 22(int) Constant 1 + 24: TypeVector 15(float) 4 + 25: TypePointer IncomingRayPayloadKHR 24(fvec4) +26(incomingPayload): 25(ptr) Variable IncomingRayPayloadKHR + 27: TypePointer Input 10(int) +28(gl_SubgroupInvocationID): 27(ptr) Variable Input + 31: TypeVector 10(int) 4 + 32: TypeInt 64 0 + 33: TypePointer Input 31(ivec4) +34(gl_SubGroupGeMaskARB): 33(ptr) Variable Input + 38: TypeVector 10(int) 2 +43(gl_SubgroupGtMask): 33(ptr) Variable Input +48(gl_SubgroupLeMask): 33(ptr) Variable Input +53(gl_SubGroupLtMaskARB): 33(ptr) Variable Input + 61(gl_SMIDNV): 27(ptr) Variable Input + 65: TypePointer IncomingRayPayloadKHR 15(float) + 4(main): 2 Function None 3 + 5: Label + 9: 6 Load 8(accEXT) + TraceRayKHR 9 11 12 13 14 11 18 17 20 21 26(incomingPayload) + 29: 10(int) Load 28(gl_SubgroupInvocationID) Volatile + 30: 15(float) ConvertUToF 29 + 35: 31(ivec4) Load 34(gl_SubGroupGeMaskARB) + 36: 10(int) CompositeExtract 35 0 + 37: 10(int) CompositeExtract 35 1 + 39: 38(ivec2) CompositeConstruct 36 37 + 40: 32(int64_t) Bitcast 39 + 41: 15(float) ConvertUToF 40 + 42: 15(float) FAdd 30 41 + 44: 31(ivec4) Load 43(gl_SubgroupGtMask) Volatile + 45: 24(fvec4) ConvertUToF 44 + 46: 15(float) CompositeExtract 45 0 + 47: 15(float) FAdd 42 46 + 49: 31(ivec4) Load 48(gl_SubgroupLeMask) Volatile + 50: 24(fvec4) ConvertUToF 49 + 51: 15(float) CompositeExtract 50 0 + 52: 15(float) FAdd 47 51 + 54: 31(ivec4) Load 53(gl_SubGroupLtMaskARB) + 55: 10(int) CompositeExtract 54 0 + 56: 10(int) CompositeExtract 54 1 + 57: 38(ivec2) CompositeConstruct 55 56 + 58: 32(int64_t) Bitcast 57 + 59: 15(float) ConvertUToF 58 + 60: 15(float) FAdd 52 59 + 62: 10(int) Load 61(gl_SMIDNV) Volatile + 63: 15(float) ConvertUToF 62 + 64: 15(float) FAdd 60 63 + 66: 65(ptr) AccessChain 26(incomingPayload) 11 + Store 66 64 + Return + FunctionEnd diff --git a/Test/baseResults/spv.ext.IntersectShader.rint.out b/Test/baseResults/spv.ext.IntersectShader.rint.out index 4a4a34a5..2d389a0c 100644 --- a/Test/baseResults/spv.ext.IntersectShader.rint.out +++ b/Test/baseResults/spv.ext.IntersectShader.rint.out @@ -3,7 +3,7 @@ spv.ext.IntersectShader.rint // Generated by (magic number): 8000a // Id's are bound by 81 - Capability RayTracingProvisionalKHR + Capability RayTracingKHR Extension "SPV_KHR_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 @@ -53,6 +53,8 @@ spv.ext.IntersectShader.rint Decorate 42(gl_ObjectRayDirectionEXT) BuiltIn ObjectRayDirectionKHR Decorate 47(gl_RayTminEXT) BuiltIn RayTminKHR Decorate 50(gl_RayTmaxEXT) BuiltIn RayTmaxKHR + Decorate 50(gl_RayTmaxEXT) Volatile + Decorate 50(gl_RayTmaxEXT) Coherent Decorate 56(gl_ObjectToWorldEXT) BuiltIn ObjectToWorldKHR Decorate 59(gl_WorldToObjectEXT) BuiltIn WorldToObjectKHR Decorate 65(gl_ObjectToWorld3x4EXT) BuiltIn ObjectToWorldKHR diff --git a/Test/baseResults/spv.ext.MissShader.rmiss.out b/Test/baseResults/spv.ext.MissShader.rmiss.out index 544901bc..bc29ccca 100644 --- a/Test/baseResults/spv.ext.MissShader.rmiss.out +++ b/Test/baseResults/spv.ext.MissShader.rmiss.out @@ -1,15 +1,25 @@ spv.ext.MissShader.rmiss // Module Version 10400 // Generated by (magic number): 8000a -// Id's are bound by 54 +// Id's are bound by 71 - Capability RayTracingProvisionalKHR + Capability GroupNonUniform + Capability GroupNonUniformBallot + Capability SubgroupBallotKHR + Capability RayTracingKHR + Capability ShaderSMBuiltinsNV Extension "SPV_KHR_ray_tracing" + Extension "SPV_KHR_shader_ballot" + Extension "SPV_NV_shader_sm_builtins" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint MissKHR 4 "main" 11 14 21 24 29 32 36 51 53 + EntryPoint MissKHR 4 "main" 11 14 21 24 29 32 36 51 53 58 63 70 Source GLSL 460 + SourceExtension "GL_ARB_shader_ballot" SourceExtension "GL_EXT_ray_tracing" + SourceExtension "GL_KHR_shader_subgroup_ballot" + SourceExtension "GL_KHR_shader_subgroup_basic" + SourceExtension "GL_NV_shader_sm_builtins" Name 4 "main" Name 9 "v0" Name 11 "gl_LaunchIDEXT" @@ -24,8 +34,11 @@ spv.ext.MissShader.rmiss Name 31 "v5" Name 32 "gl_RayTmaxEXT" Name 36 "accEXT" - Name 51 "localPayload" - Name 53 "incomingPayload" + Name 51 "incomingPayload" + Name 53 "gl_SubGroupSizeARB" + Name 58 "gl_SubgroupEqMask" + Name 63 "gl_WarpIDNV" + Name 70 "localPayload" Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR Decorate 21(gl_WorldRayOriginEXT) BuiltIn WorldRayOriginKHR @@ -34,8 +47,17 @@ spv.ext.MissShader.rmiss Decorate 32(gl_RayTmaxEXT) BuiltIn RayTmaxKHR Decorate 36(accEXT) DescriptorSet 0 Decorate 36(accEXT) Binding 0 - Decorate 51(localPayload) Location 0 - Decorate 53(incomingPayload) Location 1 + Decorate 51(incomingPayload) Location 1 + Decorate 53(gl_SubGroupSizeARB) BuiltIn SubgroupSize + Decorate 53(gl_SubGroupSizeARB) Volatile + Decorate 53(gl_SubGroupSizeARB) Coherent + Decorate 58(gl_SubgroupEqMask) BuiltIn SubgroupEqMaskKHR + Decorate 58(gl_SubgroupEqMask) Volatile + Decorate 58(gl_SubgroupEqMask) Coherent + Decorate 63(gl_WarpIDNV) BuiltIn WarpIDNV + Decorate 63(gl_WarpIDNV) Volatile + Decorate 63(gl_WarpIDNV) Coherent + Decorate 70(localPayload) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 @@ -69,10 +91,17 @@ spv.ext.MissShader.rmiss 47: TypeInt 32 1 48: 47(int) Constant 1 49: TypeVector 16(float) 4 - 50: TypePointer RayPayloadKHR 49(fvec4) -51(localPayload): 50(ptr) Variable RayPayloadKHR - 52: TypePointer IncomingRayPayloadKHR 49(fvec4) -53(incomingPayload): 52(ptr) Variable IncomingRayPayloadKHR + 50: TypePointer IncomingRayPayloadKHR 49(fvec4) +51(incomingPayload): 50(ptr) Variable IncomingRayPayloadKHR + 52: TypePointer Input 6(int) +53(gl_SubGroupSizeARB): 52(ptr) Variable Input + 56: TypeVector 6(int) 4 + 57: TypePointer Input 56(ivec4) +58(gl_SubgroupEqMask): 57(ptr) Variable Input + 63(gl_WarpIDNV): 52(ptr) Variable Input + 67: TypePointer IncomingRayPayloadKHR 16(float) + 69: TypePointer RayPayloadKHR 49(fvec4) +70(localPayload): 69(ptr) Variable RayPayloadKHR 4(main): 2 Function None 3 5: Label 9(v0): 8(ptr) Variable Function @@ -94,6 +123,17 @@ spv.ext.MissShader.rmiss 33: 16(float) Load 32(gl_RayTmaxEXT) Store 31(v5) 33 37: 34 Load 36(accEXT) - TraceRayKHR 37 38 39 40 41 38 43 42 45 46 48 + TraceRayKHR 37 38 39 40 41 38 43 42 45 46 51(incomingPayload) + 54: 6(int) Load 53(gl_SubGroupSizeARB) + 55: 16(float) ConvertUToF 54 + 59: 56(ivec4) Load 58(gl_SubgroupEqMask) + 60: 49(fvec4) ConvertUToF 59 + 61: 16(float) CompositeExtract 60 0 + 62: 16(float) FAdd 55 61 + 64: 6(int) Load 63(gl_WarpIDNV) + 65: 16(float) ConvertUToF 64 + 66: 16(float) FAdd 62 65 + 68: 67(ptr) AccessChain 51(incomingPayload) 38 + Store 68 66 Return FunctionEnd diff --git a/Test/baseResults/spv.ext.MissShader_Errors.rmiss.out b/Test/baseResults/spv.ext.MissShader_Errors.rmiss.out index 929a2a7e..50d3c83e 100644 --- a/Test/baseResults/spv.ext.MissShader_Errors.rmiss.out +++ b/Test/baseResults/spv.ext.MissShader_Errors.rmiss.out @@ -13,8 +13,8 @@ ERROR: 0:10: '=' : cannot convert from ' temp float' to ' temp highp 4X3 matrix ERROR: 0:11: 'gl_HitTEXT' : undeclared identifier ERROR: 0:12: 'gl_HitKindEXT' : undeclared identifier ERROR: 0:13: 'reportIntersectionEXT' : no matching overloaded function found -ERROR: 0:14: 'ignoreIntersectionEXT' : no matching overloaded function found -ERROR: 0:15: 'terminateRayEXT' : no matching overloaded function found +ERROR: 0:14: 'ignoreIntersectionEXT' : not supported in this stage: miss +ERROR: 0:15: 'terminateRayEXT' : not supported in this stage: miss ERROR: 16 compilation errors. No code generated. diff --git a/Test/baseResults/spv.ext.RayCallable.rcall.out b/Test/baseResults/spv.ext.RayCallable.rcall.out index e87b5faf..d429116c 100644 --- a/Test/baseResults/spv.ext.RayCallable.rcall.out +++ b/Test/baseResults/spv.ext.RayCallable.rcall.out @@ -3,7 +3,7 @@ spv.ext.RayCallable.rcall // Generated by (magic number): 8000a // Id's are bound by 30 - Capability RayTracingProvisionalKHR + Capability RayTracingKHR Extension "SPV_KHR_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 @@ -55,6 +55,6 @@ spv.ext.RayCallable.rcall Store 13(size) 15 23: 22(ptr) AccessChain 18 20 Store 23 21 - ExecuteCallableKHR 24 25 + ExecuteCallableKHR 24 18 Return FunctionEnd diff --git a/Test/baseResults/spv.ext.RayCallable_Errors.rcall.out b/Test/baseResults/spv.ext.RayCallable_Errors.rcall.out index 46993426..e6238744 100644 --- a/Test/baseResults/spv.ext.RayCallable_Errors.rcall.out +++ b/Test/baseResults/spv.ext.RayCallable_Errors.rcall.out @@ -2,34 +2,36 @@ spv.ext.RayCallable_Errors.rcall ERROR: 0:3: 'hitAttributeEXT' : not supported in this stage: callable ERROR: 0:4: 'rayPayloadEXT' : not supported in this stage: callable ERROR: 0:5: 'rayPayloadInEXT' : not supported in this stage: callable -ERROR: 0:9: 'gl_PrimitiveID' : undeclared identifier -ERROR: 0:9: '=' : cannot convert from ' temp float' to ' temp highp int' -ERROR: 0:10: 'gl_InstanceID' : undeclared identifier (Did you mean gl_InstanceIndex?) +ERROR: 0:7: 'location' : overlapping use of location 0 +ERROR: 0:10: 'gl_PrimitiveID' : undeclared identifier ERROR: 0:10: '=' : cannot convert from ' temp float' to ' temp highp int' -ERROR: 0:11: 'gl_InstanceCustomIndexEXT' : undeclared identifier +ERROR: 0:11: 'gl_InstanceID' : undeclared identifier (Did you mean gl_InstanceIndex?) ERROR: 0:11: '=' : cannot convert from ' temp float' to ' temp highp int' -ERROR: 0:12: 'gl_WorldRayOriginEXT' : undeclared identifier -ERROR: 0:12: '=' : cannot convert from ' temp float' to ' temp highp 3-component vector of float' -ERROR: 0:13: 'gl_WorldRayDirectionEXT' : undeclared identifier +ERROR: 0:12: 'gl_InstanceCustomIndexEXT' : undeclared identifier +ERROR: 0:12: '=' : cannot convert from ' temp float' to ' temp highp int' +ERROR: 0:13: 'gl_WorldRayOriginEXT' : undeclared identifier ERROR: 0:13: '=' : cannot convert from ' temp float' to ' temp highp 3-component vector of float' -ERROR: 0:14: 'gl_ObjectRayOriginEXT' : undeclared identifier +ERROR: 0:14: 'gl_WorldRayDirectionEXT' : undeclared identifier ERROR: 0:14: '=' : cannot convert from ' temp float' to ' temp highp 3-component vector of float' -ERROR: 0:15: 'gl_ObjectRayDirectionEXT' : undeclared identifier +ERROR: 0:15: 'gl_ObjectRayOriginEXT' : undeclared identifier ERROR: 0:15: '=' : cannot convert from ' temp float' to ' temp highp 3-component vector of float' -ERROR: 0:16: 'gl_RayTminEXT' : undeclared identifier -ERROR: 0:17: 'gl_RayTmaxEXT' : undeclared identifier -ERROR: 0:18: 'gl_ObjectToWorldEXT' : undeclared identifier -ERROR: 0:18: '=' : cannot convert from ' temp float' to ' temp highp 4X3 matrix of float' -ERROR: 0:19: 'gl_WorldToObjectEXT' : undeclared identifier +ERROR: 0:16: 'gl_ObjectRayDirectionEXT' : undeclared identifier +ERROR: 0:16: '=' : cannot convert from ' temp float' to ' temp highp 3-component vector of float' +ERROR: 0:17: 'gl_RayTminEXT' : undeclared identifier +ERROR: 0:18: 'gl_RayTmaxEXT' : undeclared identifier +ERROR: 0:19: 'gl_ObjectToWorldEXT' : undeclared identifier ERROR: 0:19: '=' : cannot convert from ' temp float' to ' temp highp 4X3 matrix of float' -ERROR: 0:20: 'gl_HitTEXT' : undeclared identifier -ERROR: 0:21: 'gl_HitKindEXT' : undeclared identifier -ERROR: 0:22: 'gl_IncomingRayFlagsEXT' : undeclared identifier -ERROR: 0:22: '=' : cannot convert from ' temp float' to ' temp highp uint' -ERROR: 0:23: 'reportIntersectionEXT' : no matching overloaded function found -ERROR: 0:24: 'ignoreIntersectionEXT' : no matching overloaded function found -ERROR: 0:25: 'terminateRayEXT' : no matching overloaded function found -ERROR: 30 compilation errors. No code generated. +ERROR: 0:20: 'gl_WorldToObjectEXT' : undeclared identifier +ERROR: 0:20: '=' : cannot convert from ' temp float' to ' temp highp 4X3 matrix of float' +ERROR: 0:21: 'gl_HitTEXT' : undeclared identifier +ERROR: 0:22: 'gl_HitKindEXT' : undeclared identifier +ERROR: 0:23: 'gl_IncomingRayFlagsEXT' : undeclared identifier +ERROR: 0:23: '=' : cannot convert from ' temp float' to ' temp highp uint' +ERROR: 0:24: 'reportIntersectionEXT' : no matching overloaded function found +ERROR: 0:25: 'ignoreIntersectionEXT' : not supported in this stage: callable +ERROR: 0:26: 'terminateRayEXT' : not supported in this stage: callable +ERROR: 0:27: 'no callableDataEXT/callableDataInEXT declared' : with layout(location = 1) +ERROR: 32 compilation errors. No code generated. SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/spv.ext.RayConstants.rgen.out b/Test/baseResults/spv.ext.RayConstants.rgen.out index 5d7079a6..afd50833 100644 --- a/Test/baseResults/spv.ext.RayConstants.rgen.out +++ b/Test/baseResults/spv.ext.RayConstants.rgen.out @@ -3,7 +3,7 @@ spv.ext.RayConstants.rgen // Generated by (magic number): 8000a // Id's are bound by 27 - Capability RayTracingProvisionalKHR + Capability RayTracingKHR Extension "SPV_KHR_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 @@ -15,7 +15,7 @@ spv.ext.RayConstants.rgen Name 26 "payload" Decorate 8(accEXT) DescriptorSet 0 Decorate 8(accEXT) Binding 0 - Decorate 26(payload) Location 0 + Decorate 26(payload) Location 1 2: TypeVoid 3: TypeFunction 2 6: TypeAccelerationStructureKHR @@ -41,6 +41,6 @@ spv.ext.RayConstants.rgen 4(main): 2 Function None 3 5: Label 9: 6 Load 8(accEXT) - TraceRayKHR 9 11 12 13 13 12 17 18 20 21 23 + TraceRayKHR 9 11 12 13 13 12 17 18 20 21 26(payload) Return FunctionEnd diff --git a/Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out new file mode 100644 index 00000000..60b5e937 --- /dev/null +++ b/Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out @@ -0,0 +1,134 @@ +spv.ext.RayGenSBTlayout.rgen +// Module Version 10400 +// Generated by (magic number): 8000a +// Id's are bound by 74 + + Capability Int64 + Capability RayTracingKHR + Extension "SPV_KHR_ray_tracing" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint RayGenerationKHR 4 "main" 11 21 38 60 + Source GLSL 460 + SourceExtension "GL_ARB_gpu_shader_int64" + SourceExtension "GL_EXT_ray_tracing" + Name 4 "main" + Name 8 "lx" + Name 11 "gl_LaunchIDEXT" + Name 16 "ly" + Name 20 "sx" + Name 21 "gl_LaunchSizeEXT" + Name 24 "sy" + Name 36 "block" + MemberName 36(block) 0 "dir" + MemberName 36(block) 1 "origin" + MemberName 36(block) 2 "i" + MemberName 36(block) 3 "aHandle32" + MemberName 36(block) 4 "aHandle64" + MemberName 36(block) 5 "arr2" + MemberName 36(block) 6 "a" + MemberName 36(block) 7 "arr3" + MemberName 36(block) 8 "packme" + MemberName 36(block) 9 "b" + MemberName 36(block) 10 "c" + Name 38 "" + Name 60 "payload" + Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR + Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR + Decorate 34 ArrayStride 8 + Decorate 35 ArrayStride 16 + MemberDecorate 36(block) 0 Offset 0 + MemberDecorate 36(block) 1 Offset 16 + MemberDecorate 36(block) 2 Offset 28 + MemberDecorate 36(block) 3 Offset 32 + MemberDecorate 36(block) 4 Offset 40 + MemberDecorate 36(block) 5 Offset 48 + MemberDecorate 36(block) 6 Offset 64 + MemberDecorate 36(block) 7 Offset 80 + MemberDecorate 36(block) 8 Offset 112 + MemberDecorate 36(block) 9 Offset 120 + MemberDecorate 36(block) 10 Offset 128 + Decorate 36(block) Block + Decorate 38 DescriptorSet 0 + Decorate 38 Binding 0 + Decorate 60(payload) Location 1 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 9: TypeVector 6(int) 3 + 10: TypePointer Input 9(ivec3) +11(gl_LaunchIDEXT): 10(ptr) Variable Input + 12: 6(int) Constant 0 + 13: TypePointer Input 6(int) + 17: 6(int) Constant 1 +21(gl_LaunchSizeEXT): 10(ptr) Variable Input + 27: TypeFloat 32 + 28: TypeVector 27(float) 3 + 29: TypeInt 32 1 + 30: TypeVector 6(int) 2 + 31: TypeInt 64 0 + 32: TypeVector 27(float) 2 + 33: 6(int) Constant 2 + 34: TypeArray 32(fvec2) 33 + 35: TypeArray 28(fvec3) 33 + 36(block): TypeStruct 28(fvec3) 28(fvec3) 29(int) 30(ivec2) 31(int64_t) 34 27(float) 35 27(float) 32(fvec2) 27(float) + 37: TypePointer ShaderRecordBufferKHR 36(block) + 38: 37(ptr) Variable ShaderRecordBufferKHR + 39: 29(int) Constant 3 + 40: TypePointer ShaderRecordBufferKHR 30(ivec2) + 43: TypeAccelerationStructureKHR + 49: 29(int) Constant 1 + 50: TypePointer ShaderRecordBufferKHR 28(fvec3) + 53: 27(float) Constant 1056964608 + 54: 29(int) Constant 0 + 57: 27(float) Constant 1061158912 + 58: TypeVector 27(float) 4 + 59: TypePointer RayPayloadKHR 58(fvec4) + 60(payload): 59(ptr) Variable RayPayloadKHR + 61: 29(int) Constant 4 + 62: TypePointer ShaderRecordBufferKHR 31(int64_t) + 4(main): 2 Function None 3 + 5: Label + 8(lx): 7(ptr) Variable Function + 16(ly): 7(ptr) Variable Function + 20(sx): 7(ptr) Variable Function + 24(sy): 7(ptr) Variable Function + 14: 13(ptr) AccessChain 11(gl_LaunchIDEXT) 12 + 15: 6(int) Load 14 + Store 8(lx) 15 + 18: 13(ptr) AccessChain 11(gl_LaunchIDEXT) 17 + 19: 6(int) Load 18 + Store 16(ly) 19 + 22: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 12 + 23: 6(int) Load 22 + Store 20(sx) 23 + 25: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 17 + 26: 6(int) Load 25 + Store 24(sy) 26 + 41: 40(ptr) AccessChain 38 39 + 42: 30(ivec2) Load 41 + 44: 43 ConvertUToAccelerationStructureKHR 42 + 45: 6(int) Load 8(lx) + 46: 6(int) Load 16(ly) + 47: 6(int) Load 20(sx) + 48: 6(int) Load 24(sy) + 51: 50(ptr) AccessChain 38 49 + 52: 28(fvec3) Load 51 + 55: 50(ptr) AccessChain 38 54 + 56: 28(fvec3) Load 55 + TraceRayKHR 44 45 46 47 48 12 52 53 56 57 60(payload) + 63: 62(ptr) AccessChain 38 61 + 64: 31(int64_t) Load 63 + 65: 43 ConvertUToAccelerationStructureKHR 64 + 66: 6(int) Load 8(lx) + 67: 6(int) Load 16(ly) + 68: 6(int) Load 20(sx) + 69: 6(int) Load 24(sy) + 70: 50(ptr) AccessChain 38 49 + 71: 28(fvec3) Load 70 + 72: 50(ptr) AccessChain 38 54 + 73: 28(fvec3) Load 72 + TraceRayKHR 65 66 67 68 69 12 71 53 73 57 60(payload) + Return + FunctionEnd diff --git a/Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out new file mode 100644 index 00000000..cc175f71 --- /dev/null +++ b/Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out @@ -0,0 +1,134 @@ +spv.ext.RayGenSBTlayout140.rgen +// Module Version 10400 +// Generated by (magic number): 8000a +// Id's are bound by 74 + + Capability Int64 + Capability RayTracingKHR + Extension "SPV_KHR_ray_tracing" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint RayGenerationKHR 4 "main" 11 21 38 60 + Source GLSL 460 + SourceExtension "GL_ARB_gpu_shader_int64" + SourceExtension "GL_EXT_ray_tracing" + Name 4 "main" + Name 8 "lx" + Name 11 "gl_LaunchIDEXT" + Name 16 "ly" + Name 20 "sx" + Name 21 "gl_LaunchSizeEXT" + Name 24 "sy" + Name 36 "block" + MemberName 36(block) 0 "dir" + MemberName 36(block) 1 "origin" + MemberName 36(block) 2 "i" + MemberName 36(block) 3 "aHandle32" + MemberName 36(block) 4 "aHandle64" + MemberName 36(block) 5 "arr" + MemberName 36(block) 6 "a" + MemberName 36(block) 7 "arr3" + MemberName 36(block) 8 "packme" + MemberName 36(block) 9 "b" + MemberName 36(block) 10 "c" + Name 38 "" + Name 60 "payload" + Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR + Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR + Decorate 34 ArrayStride 16 + Decorate 35 ArrayStride 16 + MemberDecorate 36(block) 0 Offset 0 + MemberDecorate 36(block) 1 Offset 16 + MemberDecorate 36(block) 2 Offset 28 + MemberDecorate 36(block) 3 Offset 32 + MemberDecorate 36(block) 4 Offset 40 + MemberDecorate 36(block) 5 Offset 48 + MemberDecorate 36(block) 6 Offset 80 + MemberDecorate 36(block) 7 Offset 96 + MemberDecorate 36(block) 8 Offset 128 + MemberDecorate 36(block) 9 Offset 136 + MemberDecorate 36(block) 10 Offset 144 + Decorate 36(block) Block + Decorate 38 DescriptorSet 0 + Decorate 38 Binding 0 + Decorate 60(payload) Location 1 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 9: TypeVector 6(int) 3 + 10: TypePointer Input 9(ivec3) +11(gl_LaunchIDEXT): 10(ptr) Variable Input + 12: 6(int) Constant 0 + 13: TypePointer Input 6(int) + 17: 6(int) Constant 1 +21(gl_LaunchSizeEXT): 10(ptr) Variable Input + 27: TypeFloat 32 + 28: TypeVector 27(float) 3 + 29: TypeInt 32 1 + 30: TypeVector 6(int) 2 + 31: TypeInt 64 0 + 32: TypeVector 27(float) 2 + 33: 6(int) Constant 2 + 34: TypeArray 32(fvec2) 33 + 35: TypeArray 28(fvec3) 33 + 36(block): TypeStruct 28(fvec3) 28(fvec3) 29(int) 30(ivec2) 31(int64_t) 34 27(float) 35 27(float) 32(fvec2) 27(float) + 37: TypePointer ShaderRecordBufferKHR 36(block) + 38: 37(ptr) Variable ShaderRecordBufferKHR + 39: 29(int) Constant 3 + 40: TypePointer ShaderRecordBufferKHR 30(ivec2) + 43: TypeAccelerationStructureKHR + 49: 29(int) Constant 1 + 50: TypePointer ShaderRecordBufferKHR 28(fvec3) + 53: 27(float) Constant 1056964608 + 54: 29(int) Constant 0 + 57: 27(float) Constant 1061158912 + 58: TypeVector 27(float) 4 + 59: TypePointer RayPayloadKHR 58(fvec4) + 60(payload): 59(ptr) Variable RayPayloadKHR + 61: 29(int) Constant 4 + 62: TypePointer ShaderRecordBufferKHR 31(int64_t) + 4(main): 2 Function None 3 + 5: Label + 8(lx): 7(ptr) Variable Function + 16(ly): 7(ptr) Variable Function + 20(sx): 7(ptr) Variable Function + 24(sy): 7(ptr) Variable Function + 14: 13(ptr) AccessChain 11(gl_LaunchIDEXT) 12 + 15: 6(int) Load 14 + Store 8(lx) 15 + 18: 13(ptr) AccessChain 11(gl_LaunchIDEXT) 17 + 19: 6(int) Load 18 + Store 16(ly) 19 + 22: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 12 + 23: 6(int) Load 22 + Store 20(sx) 23 + 25: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 17 + 26: 6(int) Load 25 + Store 24(sy) 26 + 41: 40(ptr) AccessChain 38 39 + 42: 30(ivec2) Load 41 + 44: 43 ConvertUToAccelerationStructureKHR 42 + 45: 6(int) Load 8(lx) + 46: 6(int) Load 16(ly) + 47: 6(int) Load 20(sx) + 48: 6(int) Load 24(sy) + 51: 50(ptr) AccessChain 38 49 + 52: 28(fvec3) Load 51 + 55: 50(ptr) AccessChain 38 54 + 56: 28(fvec3) Load 55 + TraceRayKHR 44 45 46 47 48 12 52 53 56 57 60(payload) + 63: 62(ptr) AccessChain 38 61 + 64: 31(int64_t) Load 63 + 65: 43 ConvertUToAccelerationStructureKHR 64 + 66: 6(int) Load 8(lx) + 67: 6(int) Load 16(ly) + 68: 6(int) Load 20(sx) + 69: 6(int) Load 24(sy) + 70: 50(ptr) AccessChain 38 49 + 71: 28(fvec3) Load 70 + 72: 50(ptr) AccessChain 38 54 + 73: 28(fvec3) Load 72 + TraceRayKHR 65 66 67 68 69 12 71 53 73 57 60(payload) + Return + FunctionEnd diff --git a/Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out new file mode 100644 index 00000000..afcfa9cd --- /dev/null +++ b/Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out @@ -0,0 +1,134 @@ +spv.ext.RayGenSBTlayout430.rgen +// Module Version 10400 +// Generated by (magic number): 8000a +// Id's are bound by 74 + + Capability Int64 + Capability RayTracingKHR + Extension "SPV_KHR_ray_tracing" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint RayGenerationKHR 4 "main" 11 21 38 60 + Source GLSL 460 + SourceExtension "GL_ARB_gpu_shader_int64" + SourceExtension "GL_EXT_ray_tracing" + Name 4 "main" + Name 8 "lx" + Name 11 "gl_LaunchIDEXT" + Name 16 "ly" + Name 20 "sx" + Name 21 "gl_LaunchSizeEXT" + Name 24 "sy" + Name 36 "block" + MemberName 36(block) 0 "dir" + MemberName 36(block) 1 "origin" + MemberName 36(block) 2 "i" + MemberName 36(block) 3 "aHandle32" + MemberName 36(block) 4 "aHandle64" + MemberName 36(block) 5 "arr" + MemberName 36(block) 6 "a" + MemberName 36(block) 7 "arr3" + MemberName 36(block) 8 "packme" + MemberName 36(block) 9 "b" + MemberName 36(block) 10 "c" + Name 38 "" + Name 60 "payload" + Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR + Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR + Decorate 34 ArrayStride 8 + Decorate 35 ArrayStride 16 + MemberDecorate 36(block) 0 Offset 0 + MemberDecorate 36(block) 1 Offset 16 + MemberDecorate 36(block) 2 Offset 28 + MemberDecorate 36(block) 3 Offset 32 + MemberDecorate 36(block) 4 Offset 40 + MemberDecorate 36(block) 5 Offset 48 + MemberDecorate 36(block) 6 Offset 64 + MemberDecorate 36(block) 7 Offset 80 + MemberDecorate 36(block) 8 Offset 112 + MemberDecorate 36(block) 9 Offset 120 + MemberDecorate 36(block) 10 Offset 128 + Decorate 36(block) Block + Decorate 38 DescriptorSet 0 + Decorate 38 Binding 0 + Decorate 60(payload) Location 1 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 9: TypeVector 6(int) 3 + 10: TypePointer Input 9(ivec3) +11(gl_LaunchIDEXT): 10(ptr) Variable Input + 12: 6(int) Constant 0 + 13: TypePointer Input 6(int) + 17: 6(int) Constant 1 +21(gl_LaunchSizeEXT): 10(ptr) Variable Input + 27: TypeFloat 32 + 28: TypeVector 27(float) 3 + 29: TypeInt 32 1 + 30: TypeVector 6(int) 2 + 31: TypeInt 64 0 + 32: TypeVector 27(float) 2 + 33: 6(int) Constant 2 + 34: TypeArray 32(fvec2) 33 + 35: TypeArray 28(fvec3) 33 + 36(block): TypeStruct 28(fvec3) 28(fvec3) 29(int) 30(ivec2) 31(int64_t) 34 27(float) 35 27(float) 32(fvec2) 27(float) + 37: TypePointer ShaderRecordBufferKHR 36(block) + 38: 37(ptr) Variable ShaderRecordBufferKHR + 39: 29(int) Constant 3 + 40: TypePointer ShaderRecordBufferKHR 30(ivec2) + 43: TypeAccelerationStructureKHR + 49: 29(int) Constant 1 + 50: TypePointer ShaderRecordBufferKHR 28(fvec3) + 53: 27(float) Constant 1056964608 + 54: 29(int) Constant 0 + 57: 27(float) Constant 1061158912 + 58: TypeVector 27(float) 4 + 59: TypePointer RayPayloadKHR 58(fvec4) + 60(payload): 59(ptr) Variable RayPayloadKHR + 61: 29(int) Constant 4 + 62: TypePointer ShaderRecordBufferKHR 31(int64_t) + 4(main): 2 Function None 3 + 5: Label + 8(lx): 7(ptr) Variable Function + 16(ly): 7(ptr) Variable Function + 20(sx): 7(ptr) Variable Function + 24(sy): 7(ptr) Variable Function + 14: 13(ptr) AccessChain 11(gl_LaunchIDEXT) 12 + 15: 6(int) Load 14 + Store 8(lx) 15 + 18: 13(ptr) AccessChain 11(gl_LaunchIDEXT) 17 + 19: 6(int) Load 18 + Store 16(ly) 19 + 22: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 12 + 23: 6(int) Load 22 + Store 20(sx) 23 + 25: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 17 + 26: 6(int) Load 25 + Store 24(sy) 26 + 41: 40(ptr) AccessChain 38 39 + 42: 30(ivec2) Load 41 + 44: 43 ConvertUToAccelerationStructureKHR 42 + 45: 6(int) Load 8(lx) + 46: 6(int) Load 16(ly) + 47: 6(int) Load 20(sx) + 48: 6(int) Load 24(sy) + 51: 50(ptr) AccessChain 38 49 + 52: 28(fvec3) Load 51 + 55: 50(ptr) AccessChain 38 54 + 56: 28(fvec3) Load 55 + TraceRayKHR 44 45 46 47 48 12 52 53 56 57 60(payload) + 63: 62(ptr) AccessChain 38 61 + 64: 31(int64_t) Load 63 + 65: 43 ConvertUToAccelerationStructureKHR 64 + 66: 6(int) Load 8(lx) + 67: 6(int) Load 16(ly) + 68: 6(int) Load 20(sx) + 69: 6(int) Load 24(sy) + 70: 50(ptr) AccessChain 38 49 + 71: 28(fvec3) Load 70 + 72: 50(ptr) AccessChain 38 54 + 73: 28(fvec3) Load 72 + TraceRayKHR 65 66 67 68 69 12 71 53 73 57 60(payload) + Return + FunctionEnd diff --git a/Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out new file mode 100644 index 00000000..eac481ac --- /dev/null +++ b/Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out @@ -0,0 +1,135 @@ +spv.ext.RayGenSBTlayoutscalar.rgen +// Module Version 10400 +// Generated by (magic number): 8000a +// Id's are bound by 74 + + Capability Int64 + Capability RayTracingKHR + Extension "SPV_KHR_ray_tracing" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint RayGenerationKHR 4 "main" 11 21 38 60 + Source GLSL 460 + SourceExtension "GL_ARB_gpu_shader_int64" + SourceExtension "GL_EXT_ray_tracing" + SourceExtension "GL_EXT_scalar_block_layout" + Name 4 "main" + Name 8 "lx" + Name 11 "gl_LaunchIDEXT" + Name 16 "ly" + Name 20 "sx" + Name 21 "gl_LaunchSizeEXT" + Name 24 "sy" + Name 36 "block" + MemberName 36(block) 0 "dir" + MemberName 36(block) 1 "origin" + MemberName 36(block) 2 "i" + MemberName 36(block) 3 "aHandle32" + MemberName 36(block) 4 "aHandle64" + MemberName 36(block) 5 "arr" + MemberName 36(block) 6 "a" + MemberName 36(block) 7 "arr3" + MemberName 36(block) 8 "packme" + MemberName 36(block) 9 "b" + MemberName 36(block) 10 "c" + Name 38 "" + Name 60 "payload" + Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR + Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR + Decorate 34 ArrayStride 8 + Decorate 35 ArrayStride 12 + MemberDecorate 36(block) 0 Offset 0 + MemberDecorate 36(block) 1 Offset 12 + MemberDecorate 36(block) 2 Offset 24 + MemberDecorate 36(block) 3 Offset 28 + MemberDecorate 36(block) 4 Offset 40 + MemberDecorate 36(block) 5 Offset 48 + MemberDecorate 36(block) 6 Offset 64 + MemberDecorate 36(block) 7 Offset 68 + MemberDecorate 36(block) 8 Offset 92 + MemberDecorate 36(block) 9 Offset 96 + MemberDecorate 36(block) 10 Offset 104 + Decorate 36(block) Block + Decorate 38 DescriptorSet 0 + Decorate 38 Binding 0 + Decorate 60(payload) Location 1 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 9: TypeVector 6(int) 3 + 10: TypePointer Input 9(ivec3) +11(gl_LaunchIDEXT): 10(ptr) Variable Input + 12: 6(int) Constant 0 + 13: TypePointer Input 6(int) + 17: 6(int) Constant 1 +21(gl_LaunchSizeEXT): 10(ptr) Variable Input + 27: TypeFloat 32 + 28: TypeVector 27(float) 3 + 29: TypeInt 32 1 + 30: TypeVector 6(int) 2 + 31: TypeInt 64 0 + 32: TypeVector 27(float) 2 + 33: 6(int) Constant 2 + 34: TypeArray 32(fvec2) 33 + 35: TypeArray 28(fvec3) 33 + 36(block): TypeStruct 28(fvec3) 28(fvec3) 29(int) 30(ivec2) 31(int64_t) 34 27(float) 35 27(float) 32(fvec2) 27(float) + 37: TypePointer ShaderRecordBufferKHR 36(block) + 38: 37(ptr) Variable ShaderRecordBufferKHR + 39: 29(int) Constant 3 + 40: TypePointer ShaderRecordBufferKHR 30(ivec2) + 43: TypeAccelerationStructureKHR + 49: 29(int) Constant 1 + 50: TypePointer ShaderRecordBufferKHR 28(fvec3) + 53: 27(float) Constant 1056964608 + 54: 29(int) Constant 0 + 57: 27(float) Constant 1061158912 + 58: TypeVector 27(float) 4 + 59: TypePointer RayPayloadKHR 58(fvec4) + 60(payload): 59(ptr) Variable RayPayloadKHR + 61: 29(int) Constant 4 + 62: TypePointer ShaderRecordBufferKHR 31(int64_t) + 4(main): 2 Function None 3 + 5: Label + 8(lx): 7(ptr) Variable Function + 16(ly): 7(ptr) Variable Function + 20(sx): 7(ptr) Variable Function + 24(sy): 7(ptr) Variable Function + 14: 13(ptr) AccessChain 11(gl_LaunchIDEXT) 12 + 15: 6(int) Load 14 + Store 8(lx) 15 + 18: 13(ptr) AccessChain 11(gl_LaunchIDEXT) 17 + 19: 6(int) Load 18 + Store 16(ly) 19 + 22: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 12 + 23: 6(int) Load 22 + Store 20(sx) 23 + 25: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 17 + 26: 6(int) Load 25 + Store 24(sy) 26 + 41: 40(ptr) AccessChain 38 39 + 42: 30(ivec2) Load 41 + 44: 43 ConvertUToAccelerationStructureKHR 42 + 45: 6(int) Load 8(lx) + 46: 6(int) Load 16(ly) + 47: 6(int) Load 20(sx) + 48: 6(int) Load 24(sy) + 51: 50(ptr) AccessChain 38 49 + 52: 28(fvec3) Load 51 + 55: 50(ptr) AccessChain 38 54 + 56: 28(fvec3) Load 55 + TraceRayKHR 44 45 46 47 48 12 52 53 56 57 60(payload) + 63: 62(ptr) AccessChain 38 61 + 64: 31(int64_t) Load 63 + 65: 43 ConvertUToAccelerationStructureKHR 64 + 66: 6(int) Load 8(lx) + 67: 6(int) Load 16(ly) + 68: 6(int) Load 20(sx) + 69: 6(int) Load 24(sy) + 70: 50(ptr) AccessChain 38 49 + 71: 28(fvec3) Load 70 + 72: 50(ptr) AccessChain 38 54 + 73: 28(fvec3) Load 72 + TraceRayKHR 65 66 67 68 69 12 71 53 73 57 60(payload) + Return + FunctionEnd diff --git a/Test/baseResults/spv.ext.RayGenShader.rgen.out b/Test/baseResults/spv.ext.RayGenShader.rgen.out index b1904aca..da516f38 100644 --- a/Test/baseResults/spv.ext.RayGenShader.rgen.out +++ b/Test/baseResults/spv.ext.RayGenShader.rgen.out @@ -3,12 +3,12 @@ spv.ext.RayGenShader.rgen // Generated by (magic number): 8000a // Id's are bound by 58 - Capability RayTraversalPrimitiveCullingProvisionalKHR - Capability RayTracingProvisionalKHR + Capability RayTraversalPrimitiveCullingKHR + Capability RayTracingKHR Extension "SPV_KHR_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint RayGenerationKHR 4 "main" 11 21 29 40 51 54 57 + EntryPoint RayGenerationKHR 4 "main" 11 21 29 40 53 54 57 Source GLSL 460 SourceExtension "GL_EXT_ray_flags_primitive_culling" SourceExtension "GL_EXT_ray_tracing" @@ -24,9 +24,9 @@ spv.ext.RayGenShader.rgen MemberName 38(block) 0 "dir" MemberName 38(block) 1 "origin" Name 40 "" - Name 51 "accEXT1" - Name 54 "imageu" - Name 57 "payload" + Name 53 "payload" + Name 54 "accEXT1" + Name 57 "imageu" Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR Decorate 29(accEXT0) DescriptorSet 0 @@ -36,11 +36,11 @@ spv.ext.RayGenShader.rgen Decorate 38(block) Block Decorate 40 DescriptorSet 0 Decorate 40 Binding 3 - Decorate 51(accEXT1) DescriptorSet 0 - Decorate 51(accEXT1) Binding 1 - Decorate 54(imageu) DescriptorSet 0 - Decorate 54(imageu) Binding 2 - Decorate 57(payload) Location 0 + Decorate 53(payload) Location 1 + Decorate 54(accEXT1) DescriptorSet 0 + Decorate 54(accEXT1) Binding 1 + Decorate 57(imageu) DescriptorSet 0 + Decorate 57(imageu) Binding 2 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 @@ -67,13 +67,13 @@ spv.ext.RayGenShader.rgen 46: 36(float) Constant 1056964608 47: 41(int) Constant 0 50: 36(float) Constant 1061158912 - 51(accEXT1): 28(ptr) Variable UniformConstant - 52: TypeImage 6(int) 2D nonsampled format:R32ui - 53: TypePointer UniformConstant 52 - 54(imageu): 53(ptr) Variable UniformConstant - 55: TypeVector 36(float) 4 - 56: TypePointer RayPayloadKHR 55(fvec4) - 57(payload): 56(ptr) Variable RayPayloadKHR + 51: TypeVector 36(float) 4 + 52: TypePointer RayPayloadKHR 51(fvec4) + 53(payload): 52(ptr) Variable RayPayloadKHR + 54(accEXT1): 28(ptr) Variable UniformConstant + 55: TypeImage 6(int) 2D nonsampled format:R32ui + 56: TypePointer UniformConstant 55 + 57(imageu): 56(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 8(lx): 7(ptr) Variable Function @@ -101,6 +101,6 @@ spv.ext.RayGenShader.rgen 45: 37(fvec3) Load 44 48: 43(ptr) AccessChain 40 47 49: 37(fvec3) Load 48 - TraceRayKHR 30 31 32 33 34 35 45 46 49 50 42 + TraceRayKHR 30 31 32 33 34 35 45 46 49 50 53(payload) Return FunctionEnd diff --git a/Test/baseResults/spv.ext.RayGenShader11.rgen.out b/Test/baseResults/spv.ext.RayGenShader11.rgen.out index cfaf5293..00262ac2 100644 --- a/Test/baseResults/spv.ext.RayGenShader11.rgen.out +++ b/Test/baseResults/spv.ext.RayGenShader11.rgen.out @@ -3,7 +3,7 @@ spv.ext.RayGenShader11.rgen // Generated by (magic number): 8000a // Id's are bound by 53 - Capability RayTracingProvisionalKHR + Capability RayTracingKHR Extension "SPV_KHR_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 @@ -32,7 +32,7 @@ spv.ext.RayGenShader11.rgen Decorate 37(block) Block Decorate 39 DescriptorSet 0 Decorate 39 Binding 1 - Decorate 52(payload) Location 0 + Decorate 52(payload) Location 1 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 @@ -88,6 +88,6 @@ spv.ext.RayGenShader11.rgen 44: 36(fvec3) Load 43 47: 42(ptr) AccessChain 39 46 48: 36(fvec3) Load 47 - TraceRayKHR 30 31 32 33 34 12 44 45 48 49 41 + TraceRayKHR 30 31 32 33 34 12 44 45 48 49 52(payload) Return FunctionEnd diff --git a/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out b/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out index 25d46a68..473937df 100644 --- a/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out +++ b/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out @@ -1,17 +1,19 @@ spv.ext.RayGenShaderArray.rgen // Module Version 10400 // Generated by (magic number): 8000a -// Id's are bound by 89 +// Id's are bound by 117 + Capability Int64 + Capability RayTracingKHR Capability ShaderNonUniformEXT Capability RuntimeDescriptorArrayEXT - Capability RayTracingProvisionalKHR Extension "SPV_EXT_descriptor_indexing" Extension "SPV_KHR_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint RayGenerationKHR 4 "main" 11 21 30 36 60 88 + EntryPoint RayGenerationKHR 4 "main" 11 21 30 38 61 65 Source GLSL 460 + SourceExtension "GL_ARB_gpu_shader_int64" SourceExtension "GL_EXT_nonuniform_qualifier" SourceExtension "GL_EXT_ray_tracing" Name 4 "main" @@ -22,29 +24,33 @@ spv.ext.RayGenShaderArray.rgen Name 21 "gl_LaunchSizeEXT" Name 24 "sy" Name 30 "accEXT0" - Name 34 "block" - MemberName 34(block) 0 "dir" - MemberName 34(block) 1 "origin" - MemberName 34(block) 2 "i" - Name 36 "" - Name 60 "accEXT1" - Name 88 "payload" + Name 36 "block" + MemberName 36(block) 0 "dir" + MemberName 36(block) 1 "origin" + MemberName 36(block) 2 "i" + MemberName 36(block) 3 "aHandle32" + MemberName 36(block) 4 "aHandle64" + Name 38 "" + Name 61 "payload" + Name 65 "accEXT1" Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR Decorate 30(accEXT0) DescriptorSet 0 Decorate 30(accEXT0) Binding 0 - MemberDecorate 34(block) 0 Offset 0 - MemberDecorate 34(block) 1 Offset 16 - MemberDecorate 34(block) 2 Offset 28 - Decorate 34(block) Block - Decorate 36 DescriptorSet 0 - Decorate 36 Binding 2 - Decorate 60(accEXT1) DescriptorSet 0 - Decorate 60(accEXT1) Binding 1 - Decorate 75 DecorationNonUniformEXT - Decorate 76 DecorationNonUniformEXT - Decorate 77 DecorationNonUniformEXT - Decorate 88(payload) Location 0 + MemberDecorate 36(block) 0 Offset 0 + MemberDecorate 36(block) 1 Offset 16 + MemberDecorate 36(block) 2 Offset 28 + MemberDecorate 36(block) 3 Offset 32 + MemberDecorate 36(block) 4 Offset 40 + Decorate 36(block) Block + Decorate 38 DescriptorSet 0 + Decorate 38 Binding 2 + Decorate 61(payload) Location 1 + Decorate 65(accEXT1) DescriptorSet 0 + Decorate 65(accEXT1) Binding 1 + Decorate 80 DecorationNonUniformEXT + Decorate 81 DecorationNonUniformEXT + Decorate 82 DecorationNonUniformEXT 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 @@ -63,24 +69,30 @@ spv.ext.RayGenShaderArray.rgen 31: TypeFloat 32 32: TypeVector 31(float) 3 33: TypeInt 32 1 - 34(block): TypeStruct 32(fvec3) 32(fvec3) 33(int) - 35: TypePointer ShaderRecordBufferKHR 34(block) - 36: 35(ptr) Variable ShaderRecordBufferKHR - 37: 33(int) Constant 2 - 38: TypePointer ShaderRecordBufferKHR 33(int) - 41: TypePointer UniformConstant 27 - 48: 33(int) Constant 1 - 49: TypePointer ShaderRecordBufferKHR 32(fvec3) - 52: 31(float) Constant 1056964608 - 53: 33(int) Constant 0 - 56: 31(float) Constant 1061158912 - 57: 6(int) Constant 2 - 58: TypeArray 27 57 - 59: TypePointer UniformConstant 58 - 60(accEXT1): 59(ptr) Variable UniformConstant - 86: TypeVector 31(float) 4 - 87: TypePointer RayPayloadKHR 86(fvec4) - 88(payload): 87(ptr) Variable RayPayloadKHR + 34: TypeVector 6(int) 2 + 35: TypeInt 64 0 + 36(block): TypeStruct 32(fvec3) 32(fvec3) 33(int) 34(ivec2) 35(int64_t) + 37: TypePointer ShaderRecordBufferKHR 36(block) + 38: 37(ptr) Variable ShaderRecordBufferKHR + 39: 33(int) Constant 2 + 40: TypePointer ShaderRecordBufferKHR 33(int) + 43: TypePointer UniformConstant 27 + 50: 33(int) Constant 1 + 51: TypePointer ShaderRecordBufferKHR 32(fvec3) + 54: 31(float) Constant 1056964608 + 55: 33(int) Constant 0 + 58: 31(float) Constant 1061158912 + 59: TypeVector 31(float) 4 + 60: TypePointer RayPayloadKHR 59(fvec4) + 61(payload): 60(ptr) Variable RayPayloadKHR + 62: 6(int) Constant 2 + 63: TypeArray 27 62 + 64: TypePointer UniformConstant 63 + 65(accEXT1): 64(ptr) Variable UniformConstant + 91: 33(int) Constant 3 + 92: TypePointer ShaderRecordBufferKHR 34(ivec2) + 104: 33(int) Constant 4 + 105: TypePointer ShaderRecordBufferKHR 35(int64_t) 4(main): 2 Function None 3 5: Label 8(lx): 7(ptr) Variable Function @@ -99,45 +111,69 @@ spv.ext.RayGenShaderArray.rgen 25: 13(ptr) AccessChain 21(gl_LaunchSizeEXT) 17 26: 6(int) Load 25 Store 24(sy) 26 - 39: 38(ptr) AccessChain 36 37 - 40: 33(int) Load 39 - 42: 41(ptr) AccessChain 30(accEXT0) 40 - 43: 27 Load 42 - 44: 6(int) Load 8(lx) - 45: 6(int) Load 16(ly) - 46: 6(int) Load 20(sx) - 47: 6(int) Load 24(sy) - 50: 49(ptr) AccessChain 36 48 - 51: 32(fvec3) Load 50 - 54: 49(ptr) AccessChain 36 53 - 55: 32(fvec3) Load 54 - TraceRayKHR 43 44 45 46 47 12 51 52 55 56 48 - 61: 38(ptr) AccessChain 36 37 - 62: 33(int) Load 61 - 63: 41(ptr) AccessChain 60(accEXT1) 62 - 64: 27 Load 63 - 65: 6(int) Load 8(lx) - 66: 6(int) Load 16(ly) - 67: 6(int) Load 20(sx) - 68: 6(int) Load 24(sy) - 69: 49(ptr) AccessChain 36 48 - 70: 32(fvec3) Load 69 - 71: 49(ptr) AccessChain 36 53 - 72: 32(fvec3) Load 71 - TraceRayKHR 64 65 66 67 68 12 70 52 72 56 48 - 73: 38(ptr) AccessChain 36 37 - 74: 33(int) Load 73 - 75: 33(int) CopyObject 74 - 76: 41(ptr) AccessChain 30(accEXT0) 75 - 77: 27 Load 76 - 78: 6(int) Load 8(lx) - 79: 6(int) Load 16(ly) - 80: 6(int) Load 20(sx) - 81: 6(int) Load 24(sy) - 82: 49(ptr) AccessChain 36 48 - 83: 32(fvec3) Load 82 - 84: 49(ptr) AccessChain 36 53 - 85: 32(fvec3) Load 84 - TraceRayKHR 77 78 79 80 81 12 83 52 85 56 48 + 41: 40(ptr) AccessChain 38 39 + 42: 33(int) Load 41 + 44: 43(ptr) AccessChain 30(accEXT0) 42 + 45: 27 Load 44 + 46: 6(int) Load 8(lx) + 47: 6(int) Load 16(ly) + 48: 6(int) Load 20(sx) + 49: 6(int) Load 24(sy) + 52: 51(ptr) AccessChain 38 50 + 53: 32(fvec3) Load 52 + 56: 51(ptr) AccessChain 38 55 + 57: 32(fvec3) Load 56 + TraceRayKHR 45 46 47 48 49 12 53 54 57 58 61(payload) + 66: 40(ptr) AccessChain 38 39 + 67: 33(int) Load 66 + 68: 43(ptr) AccessChain 65(accEXT1) 67 + 69: 27 Load 68 + 70: 6(int) Load 8(lx) + 71: 6(int) Load 16(ly) + 72: 6(int) Load 20(sx) + 73: 6(int) Load 24(sy) + 74: 51(ptr) AccessChain 38 50 + 75: 32(fvec3) Load 74 + 76: 51(ptr) AccessChain 38 55 + 77: 32(fvec3) Load 76 + TraceRayKHR 69 70 71 72 73 12 75 54 77 58 61(payload) + 78: 40(ptr) AccessChain 38 39 + 79: 33(int) Load 78 + 80: 33(int) CopyObject 79 + 81: 43(ptr) AccessChain 30(accEXT0) 80 + 82: 27 Load 81 + 83: 6(int) Load 8(lx) + 84: 6(int) Load 16(ly) + 85: 6(int) Load 20(sx) + 86: 6(int) Load 24(sy) + 87: 51(ptr) AccessChain 38 50 + 88: 32(fvec3) Load 87 + 89: 51(ptr) AccessChain 38 55 + 90: 32(fvec3) Load 89 + TraceRayKHR 82 83 84 85 86 12 88 54 90 58 61(payload) + 93: 92(ptr) AccessChain 38 91 + 94: 34(ivec2) Load 93 + 95: 27 ConvertUToAccelerationStructureKHR 94 + 96: 6(int) Load 8(lx) + 97: 6(int) Load 16(ly) + 98: 6(int) Load 20(sx) + 99: 6(int) Load 24(sy) + 100: 51(ptr) AccessChain 38 50 + 101: 32(fvec3) Load 100 + 102: 51(ptr) AccessChain 38 55 + 103: 32(fvec3) Load 102 + TraceRayKHR 95 96 97 98 99 12 101 54 103 58 61(payload) + 106: 105(ptr) AccessChain 38 104 + 107: 35(int64_t) Load 106 + 108: 27 ConvertUToAccelerationStructureKHR 107 + 109: 6(int) Load 8(lx) + 110: 6(int) Load 16(ly) + 111: 6(int) Load 20(sx) + 112: 6(int) Load 24(sy) + 113: 51(ptr) AccessChain 38 50 + 114: 32(fvec3) Load 113 + 115: 51(ptr) AccessChain 38 55 + 116: 32(fvec3) Load 115 + TraceRayKHR 108 109 110 111 112 12 114 54 116 58 61(payload) Return FunctionEnd diff --git a/Test/baseResults/spv.ext.RayGenShader_Errors.rgen.out b/Test/baseResults/spv.ext.RayGenShader_Errors.rgen.out index 6dc7480b..3f336bb7 100644 --- a/Test/baseResults/spv.ext.RayGenShader_Errors.rgen.out +++ b/Test/baseResults/spv.ext.RayGenShader_Errors.rgen.out @@ -4,8 +4,9 @@ ERROR: 0:4: 'rayPayloadInEXT' : not supported in this stage: ray-generation ERROR: 0:5: 'shaderRecordNV' : can only be used with a buffer ERROR: 0:9: 'binding' : cannot be used with shaderRecordNV ERROR: 0:12: 'set' : cannot be used with shaderRecordNV +ERROR: 0:23: ' temp accelerationStructureNV' : cannot construct with these arguments ERROR: 0:23: 'accelerationStructureNV' : accelerationStructureNV can only be used in uniform variables or function parameters: a -ERROR: 0:23: '=' : cannot convert from ' const int' to ' temp accelerationStructureNV' +ERROR: 0:23: '=' : cannot convert from ' const float' to ' temp accelerationStructureNV' ERROR: 0:24: 'gl_PrimitiveID' : undeclared identifier ERROR: 0:24: '=' : cannot convert from ' temp float' to ' temp highp int' ERROR: 0:25: 'gl_InstanceID' : undeclared identifier (Did you mean gl_InstanceIndex?) @@ -28,11 +29,13 @@ ERROR: 0:34: 'gl_WorldToObjectEXT' : undeclared identifier ERROR: 0:34: '=' : cannot convert from ' temp float' to ' temp highp 4X3 matrix of float' ERROR: 0:35: 'gl_HitTEXT' : undeclared identifier ERROR: 0:36: 'gl_HitKindEXT' : undeclared identifier -ERROR: 0:37: 'reportIntersectionEXT' : no matching overloaded function found -ERROR: 0:38: 'ignoreIntersectionEXT' : no matching overloaded function found -ERROR: 0:39: 'terminateRayEXT' : no matching overloaded function found -ERROR: 0:40: 'assign' : l-value required "anon@3" (can't modify a shaderrecordnv qualified buffer) -ERROR: 33 compilation errors. No code generated. +ERROR: 0:37: 'gl_RayFlagsSkipAABBEXT' : required extension not requested: GL_EXT_ray_flags_primitive_culling +ERROR: 0:37: '=' : cannot convert from ' const uint' to ' temp highp int' +ERROR: 0:38: 'reportIntersectionEXT' : no matching overloaded function found +ERROR: 0:39: 'ignoreIntersectionEXT' : not supported in this stage: ray-generation +ERROR: 0:40: 'terminateRayEXT' : not supported in this stage: ray-generation +ERROR: 0:41: 'assign' : l-value required "anon@3" (can't modify a shaderrecordnv qualified buffer) +ERROR: 36 compilation errors. No code generated. ERROR: Linking ray-generation stage: Only one shaderRecordNV buffer block is allowed per stage diff --git a/Test/baseResults/spv.ext.World3x4.rahit.out b/Test/baseResults/spv.ext.World3x4.rahit.out index ad877bd0..40d73d1b 100644 --- a/Test/baseResults/spv.ext.World3x4.rahit.out +++ b/Test/baseResults/spv.ext.World3x4.rahit.out @@ -3,7 +3,7 @@ spv.ext.World3x4.rahit // Generated by (magic number): 8000a // Id's are bound by 90 - Capability RayTracingProvisionalKHR + Capability RayTracingKHR Extension "SPV_KHR_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 diff --git a/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out b/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out index 38a426cd..86a4fd2e 100644 --- a/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out +++ b/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out @@ -1,5 +1,4 @@ spv.meshShaderPerViewBuiltins.mesh -Validation failed // Module Version 10000 // Generated by (magic number): 8000a // Id's are bound by 126 diff --git a/Test/rayQuery-global.rgen b/Test/rayQuery-global.rgen new file mode 100644 index 00000000..3a57e743 --- /dev/null +++ b/Test/rayQuery-global.rgen @@ -0,0 +1,31 @@ +#version 460 +#extension GL_EXT_ray_query : enable +#extension GL_EXT_ray_flags_primitive_culling : enable + +layout(binding = 1, set = 0) uniform accelerationStructureEXT rtas; + +rayQueryEXT rqGlobal; + +void otherWrapper(rayQueryEXT rq) { + rayQueryProceedEXT(rq); + rayQueryProceedEXT(rqGlobal); +} + +void wrapper(rayQueryEXT rq) { + rayQueryEXT rq2; + rayQueryProceedEXT(rq); + rayQueryProceedEXT(rqGlobal); + otherWrapper(rq); + otherWrapper(rq2); + otherWrapper(rqGlobal); +} + +void main() { + rayQueryInitializeEXT(rqGlobal, rtas, gl_RayFlagsNoneEXT, 0xFF, vec3(0,0,0), 0.0, vec3(1,0,0), 1.0); + wrapper(rqGlobal); + otherWrapper(rqGlobal); + rayQueryEXT rq2; + rayQueryInitializeEXT(rq2, rtas, gl_RayFlagsNoneEXT, 0xFF, vec3(0,0,0), 0.0, vec3(1,0,0), 1.0); + wrapper(rq2); + otherWrapper(rq2); +} diff --git a/Test/spv.ext.AnyHitShader.rahit b/Test/spv.ext.AnyHitShader.rahit index ee7d9c7a..871f8fea 100644 --- a/Test/spv.ext.AnyHitShader.rahit +++ b/Test/spv.ext.AnyHitShader.rahit @@ -1,5 +1,6 @@ #version 460 #extension GL_EXT_ray_tracing : enable +#extension GL_KHR_shader_subgroup_basic : enable layout(location = 1) rayPayloadInEXT vec4 incomingPayload; void main() { @@ -22,8 +23,10 @@ void main() mat3x4 v16 = gl_ObjectToWorld3x4EXT; mat3x4 v17 = gl_WorldToObject3x4EXT; incomingPayload = vec4(0.5f); - if (v2 == 1) - ignoreIntersectionEXT(); - else - terminateRayEXT(); + if (v2 == 1) { + ignoreIntersectionEXT; + v0.x++; + } + incomingPayload.x += float(gl_SubgroupSize); + terminateRayEXT; } diff --git a/Test/spv.ext.ClosestHitShader_Errors.rchit b/Test/spv.ext.ClosestHitShader_Errors.rchit index 05e05fe9..6416f1ff 100644 --- a/Test/spv.ext.ClosestHitShader_Errors.rchit +++ b/Test/spv.ext.ClosestHitShader_Errors.rchit @@ -2,12 +2,14 @@ #extension GL_EXT_ray_tracing : enable hitAttributeEXT vec4 payload; layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT; - +layout(location = 2) rayPayloadEXT vec4 payload0; +layout(location = 2) rayPayloadInEXT block { vec4 data; }; // ERROR : location already used void main() { payload.x = 1.0f; // ERROR, cannot write to hitattributeEXT in stage reportIntersectionEXT(1.0, 1U); // ERROR, unsupported builtin in stage - terminateRayEXT(); - ignoreIntersectionEXT(); + terminateRayEXT; + ignoreIntersectionEXT; bool e1 = gl_IncomingRayFlagsEXT == gl_RayFlagsSkipAABBEXT; + traceRayEXT(accEXT, 0, 0, 0, 0, 0, vec3(0.0), 0.0, vec3(1.0), 1.0, 0); //ERROR no payload variable with location = 0 } diff --git a/Test/spv.ext.ClosestHitShader_Subgroup.rchit b/Test/spv.ext.ClosestHitShader_Subgroup.rchit new file mode 100644 index 00000000..ce2091a0 --- /dev/null +++ b/Test/spv.ext.ClosestHitShader_Subgroup.rchit @@ -0,0 +1,16 @@ +#version 460 +#pragma use_vulkan_memory_model +#extension GL_EXT_ray_tracing : enable +#extension GL_NV_shader_sm_builtins : enable +#extension GL_KHR_shader_subgroup_ballot : enable +#extension GL_ARB_shader_ballot : enable +#extension GL_NV_shader_sm_builtins : enable +layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT; +layout(location = 1) rayPayloadInEXT vec4 incomingPayload; +void main() +{ + traceRayEXT(accEXT, 0u, 1u, 2u, 3u, 0u, vec3(0.5f), 0.5f, vec3(1.0f), 0.75f, 1); + incomingPayload.x = float(gl_SubgroupInvocationID) + float(gl_SubGroupGeMaskARB) + + float(gl_SubgroupGtMask) + float(gl_SubgroupLeMask) + + float(gl_SubGroupLtMaskARB) + float(gl_SMIDNV); +} diff --git a/Test/spv.ext.MissShader.rmiss b/Test/spv.ext.MissShader.rmiss index e7743348..982bd840 100644 --- a/Test/spv.ext.MissShader.rmiss +++ b/Test/spv.ext.MissShader.rmiss @@ -1,5 +1,9 @@ #version 460 #extension GL_EXT_ray_tracing : enable +#extension GL_NV_shader_sm_builtins : enable +#extension GL_KHR_shader_subgroup_ballot : enable +#extension GL_ARB_shader_ballot : enable +#extension GL_NV_shader_sm_builtins : enable layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT; layout(location = 0) rayPayloadEXT vec4 localPayload; layout(location = 1) rayPayloadInEXT vec4 incomingPayload; @@ -12,4 +16,5 @@ void main() float v4 = gl_RayTminEXT; float v5 = gl_RayTmaxEXT; traceRayEXT(accEXT, 0u, 1u, 2u, 3u, 0u, vec3(0.5f), 0.5f, vec3(1.0f), 0.75f, 1); + incomingPayload.x = float(gl_SubGroupSizeARB) + float(gl_SubgroupEqMask) + float(gl_WarpIDNV); } diff --git a/Test/spv.ext.MissShader_Errors.rmiss b/Test/spv.ext.MissShader_Errors.rmiss index 2391211a..c921f231 100644 --- a/Test/spv.ext.MissShader_Errors.rmiss +++ b/Test/spv.ext.MissShader_Errors.rmiss @@ -11,6 +11,6 @@ void main() float e12 = gl_HitTEXT; // ERROR, unsupported builtin in stage float e13 = gl_HitKindEXT; // ERROR, unsupported builtin in stage reportIntersectionEXT(1.0, 1U); // ERROR, unsupported builtin in stage - ignoreIntersectionEXT(); // ERROR, unsupported builtin in stage - terminateRayEXT(); // ERROR, unsupported builtin in stage + ignoreIntersectionEXT; // ERROR, unsupported in stage + terminateRayEXT; // ERROR, unsupported in stage } diff --git a/Test/spv.ext.RayCallable_Errors.rcall b/Test/spv.ext.RayCallable_Errors.rcall index d35672e9..660ea751 100644 --- a/Test/spv.ext.RayCallable_Errors.rcall +++ b/Test/spv.ext.RayCallable_Errors.rcall @@ -3,7 +3,8 @@ hitAttributeEXT vec4 hitattr; // ERROR, hitattributeEXT unsupported in this stage rayPayloadEXT vec4 payload; // ERROR, rayPayloadEXT unsupported in this stage rayPayloadInEXT vec4 payloadIn; // ERROR, rayPayloadInEXT unsupported in this stage - +layout(location = 0) callableDataEXT vec4 cd0; +layout(location = 0) callableDataEXT float cd1; // ERROR, location already used void main() { int e0 = gl_PrimitiveID; // ERROR, unsupported builtin in stage @@ -21,6 +22,7 @@ void main() float e13 = gl_HitKindEXT; // ERROR, unsupported builtin in stage uint curFlags = gl_IncomingRayFlagsEXT; // ERROR, unsupported builtin in stage reportIntersectionEXT(1.0, 1U); // ERROR, unsupported builtin in stage - ignoreIntersectionEXT(); // ERROR, unsupported builtin in stage - terminateRayEXT(); // ERROR, unsupported builtin in stage + ignoreIntersectionEXT; // ERROR, unsupported in stage + terminateRayEXT; // ERROR, unsupported in stage + executeCallableEXT(1,1); // ERROR, no callable data with location 1 } diff --git a/Test/spv.ext.RayConstants.rgen b/Test/spv.ext.RayConstants.rgen index 73cb0c18..8e681bac 100644 --- a/Test/spv.ext.RayConstants.rgen +++ b/Test/spv.ext.RayConstants.rgen @@ -1,7 +1,7 @@ #version 460 #extension GL_EXT_ray_tracing : enable layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT; -layout(location = 0) rayPayloadEXT vec4 payload; +layout(location = 1) rayPayloadEXT vec4 payload; void main() { const uint rayFlags = gl_RayFlagsNoneEXT | gl_RayFlagsOpaqueEXT | diff --git a/Test/spv.ext.RayGenSBTlayout.rgen b/Test/spv.ext.RayGenSBTlayout.rgen new file mode 100644 index 00000000..a5fa2b63 --- /dev/null +++ b/Test/spv.ext.RayGenSBTlayout.rgen @@ -0,0 +1,28 @@ +#version 460 +#extension GL_EXT_ray_tracing : enable +#extension GL_ARB_gpu_shader_int64 : enable +layout(location = 1) rayPayloadEXT vec4 payload; +// should get std430 layout +layout(shaderRecordEXT) buffer block +{ + vec3 dir; + vec3 origin; + int i; + uvec2 aHandle32; + uint64_t aHandle64; + vec2 arr2[2]; + float a; + vec3 arr3[2]; + float packme; + vec2 b; + float c; +}; +void main() +{ + uint lx = gl_LaunchIDEXT.x; + uint ly = gl_LaunchIDEXT.y; + uint sx = gl_LaunchSizeEXT.x; + uint sy = gl_LaunchSizeEXT.y; + traceRayEXT(accelerationStructureEXT(aHandle32), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1); + traceRayEXT(accelerationStructureEXT(aHandle64), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1); +} diff --git a/Test/spv.ext.RayGenSBTlayout140.rgen b/Test/spv.ext.RayGenSBTlayout140.rgen new file mode 100644 index 00000000..7d673a82 --- /dev/null +++ b/Test/spv.ext.RayGenSBTlayout140.rgen @@ -0,0 +1,27 @@ +#version 460 +#extension GL_EXT_ray_tracing : enable +#extension GL_ARB_gpu_shader_int64 : enable +layout(location = 1) rayPayloadEXT vec4 payload; +layout(shaderRecordEXT, std140) buffer block +{ + vec3 dir; + vec3 origin; + int i; + uvec2 aHandle32; + uint64_t aHandle64; + vec2 arr[2]; + float a; + vec3 arr3[2]; + float packme; + vec2 b; + float c; +}; +void main() +{ + uint lx = gl_LaunchIDEXT.x; + uint ly = gl_LaunchIDEXT.y; + uint sx = gl_LaunchSizeEXT.x; + uint sy = gl_LaunchSizeEXT.y; + traceRayEXT(accelerationStructureEXT(aHandle32), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1); + traceRayEXT(accelerationStructureEXT(aHandle64), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1); +} diff --git a/Test/spv.ext.RayGenSBTlayout430.rgen b/Test/spv.ext.RayGenSBTlayout430.rgen new file mode 100644 index 00000000..bd308b45 --- /dev/null +++ b/Test/spv.ext.RayGenSBTlayout430.rgen @@ -0,0 +1,27 @@ +#version 460 +#extension GL_EXT_ray_tracing : enable +#extension GL_ARB_gpu_shader_int64 : enable +layout(location = 1) rayPayloadEXT vec4 payload; +layout(shaderRecordEXT, std430) buffer block +{ + vec3 dir; + vec3 origin; + int i; + uvec2 aHandle32; + uint64_t aHandle64; + vec2 arr[2]; + float a; + vec3 arr3[2]; + float packme; + vec2 b; + float c; +}; +void main() +{ + uint lx = gl_LaunchIDEXT.x; + uint ly = gl_LaunchIDEXT.y; + uint sx = gl_LaunchSizeEXT.x; + uint sy = gl_LaunchSizeEXT.y; + traceRayEXT(accelerationStructureEXT(aHandle32), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1); + traceRayEXT(accelerationStructureEXT(aHandle64), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1); +} diff --git a/Test/spv.ext.RayGenSBTlayoutscalar.rgen b/Test/spv.ext.RayGenSBTlayoutscalar.rgen new file mode 100644 index 00000000..16bcb13e --- /dev/null +++ b/Test/spv.ext.RayGenSBTlayoutscalar.rgen @@ -0,0 +1,28 @@ +#version 460 +#extension GL_EXT_ray_tracing : enable +#extension GL_ARB_gpu_shader_int64 : enable +#extension GL_EXT_scalar_block_layout : enable +layout(location = 1) rayPayloadEXT vec4 payload; +layout(shaderRecordEXT, scalar) buffer block +{ + vec3 dir; + vec3 origin; + int i; + uvec2 aHandle32; + uint64_t aHandle64; + vec2 arr[2]; + float a; + vec3 arr3[2]; + float packme; + vec2 b; + float c; +}; +void main() +{ + uint lx = gl_LaunchIDEXT.x; + uint ly = gl_LaunchIDEXT.y; + uint sx = gl_LaunchSizeEXT.x; + uint sy = gl_LaunchSizeEXT.y; + traceRayEXT(accelerationStructureEXT(aHandle32), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1); + traceRayEXT(accelerationStructureEXT(aHandle64), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1); +} diff --git a/Test/spv.ext.RayGenShader.rgen b/Test/spv.ext.RayGenShader.rgen index 9fedf3a5..e9eb2cbb 100644 --- a/Test/spv.ext.RayGenShader.rgen +++ b/Test/spv.ext.RayGenShader.rgen @@ -4,7 +4,7 @@ layout(binding = 0) uniform accelerationStructureEXT accEXT0; layout(binding = 1, set = 0) uniform accelerationStructureEXT accEXT1; // Unused layout(binding = 2, r32ui) shadercallcoherent uniform uimage2D imageu; -layout(location = 0) rayPayloadEXT vec4 payload; +layout(location = 1) rayPayloadEXT vec4 payload; layout(shaderRecordEXT) buffer block { vec3 dir; diff --git a/Test/spv.ext.RayGenShader11.rgen b/Test/spv.ext.RayGenShader11.rgen index 48170264..50853d49 100644 --- a/Test/spv.ext.RayGenShader11.rgen +++ b/Test/spv.ext.RayGenShader11.rgen @@ -1,7 +1,7 @@ #version 460 #extension GL_EXT_ray_tracing : enable layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT; -layout(location = 0) rayPayloadEXT vec4 payload; +layout(location = 1) rayPayloadEXT vec4 payload; layout(shaderRecordEXT) buffer block { vec3 dir; diff --git a/Test/spv.ext.RayGenShaderArray.rgen b/Test/spv.ext.RayGenShaderArray.rgen index d3f99de2..66286d92 100644 --- a/Test/spv.ext.RayGenShaderArray.rgen +++ b/Test/spv.ext.RayGenShaderArray.rgen @@ -1,14 +1,17 @@ #version 460 #extension GL_EXT_ray_tracing : enable #extension GL_EXT_nonuniform_qualifier : enable +#extension GL_ARB_gpu_shader_int64 : enable layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT0[]; layout(binding = 1, set = 0) uniform accelerationStructureEXT accEXT1[2]; -layout(location = 0) rayPayloadEXT vec4 payload; +layout(location = 1) rayPayloadEXT vec4 payload; layout(shaderRecordEXT) buffer block { vec3 dir; vec3 origin; int i; + uvec2 aHandle32; + uint64_t aHandle64; }; void main() { @@ -19,4 +22,6 @@ void main() traceRayEXT(accEXT0[i], lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1); traceRayEXT(accEXT1[i], lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1); traceRayEXT(accEXT0[nonuniformEXT(i)], lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1); + traceRayEXT(accelerationStructureEXT(aHandle32), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1); + traceRayEXT(accelerationStructureEXT(aHandle64), lx, ly, sx, sy, 0u, origin, 0.5f, dir, 0.75f, 1); } diff --git a/Test/spv.ext.RayGenShader_Errors.rgen b/Test/spv.ext.RayGenShader_Errors.rgen index 34983424..107df0f4 100644 --- a/Test/spv.ext.RayGenShader_Errors.rgen +++ b/Test/spv.ext.RayGenShader_Errors.rgen @@ -20,7 +20,7 @@ layout(shaderRecordEXT) buffer bblock4 { // ERROR, cannot ha }; void main() { - accelerationStructureEXT a = 0; + accelerationStructureEXT a = accelerationStructureEXT(c); int e0 = gl_PrimitiveID; // ERROR, unsupported builtin in stage int e1 = gl_InstanceID; // ERROR, unsupported builtin in stage int e3 = gl_InstanceCustomIndexEXT; // ERROR, unsupported builtin in stage @@ -36,7 +36,7 @@ void main() float e13 = gl_HitKindEXT; // ERROR, unsupported builtin in stage int e14 = gl_RayFlagsSkipAABBEXT; // ERROR, unsupported builtin in stage reportIntersectionEXT(1.0, 1U); // ERROR, unsupported builtin in stage - ignoreIntersectionEXT(); // ERROR, unsupported builtin in stage - terminateRayEXT(); // ERROR, unsupported builtin in stage - d = 1.0f; // ERROR, can't modify shaderRecordEXT block + ignoreIntersectionEXT; // ERROR, unsupported builtin in stage + terminateRayEXT; // ERROR, unsupported builtin in stage + d = 1.0f; // ERROR, can't modify shaderRecordEXT block } diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index a3043f8a..696daf6d 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -757,6 +757,12 @@ public: bool isPerPrimitive() const { return perPrimitiveNV; } bool isPerView() const { return perViewNV; } bool isTaskMemory() const { return perTaskNV; } + bool isAnyPayload() const { + return storage == EvqPayload || storage == EvqPayloadIn; + } + bool isAnyCallable() const { + return storage == EvqCallableData || storage == EvqCallableDataIn; + } // True if this type of IO is supposed to be arrayed with extra level for per-vertex data bool isArrayedIo(EShLanguage language) const diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index f0411ebb..19cd32e9 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -280,6 +280,12 @@ enum TOperator { EOpConvUvec2ToPtr, EOpConvPtrToUvec2, + // uint64_t -> accelerationStructureEXT + EOpConvUint64ToAccStruct, + + // uvec2 -> accelerationStructureEXT + EOpConvUvec2ToAccStruct, + // // binary operations // @@ -631,6 +637,8 @@ enum TOperator { EOpKill, // Fragment only EOpTerminateInvocation, // Fragment only EOpDemote, // Fragment only + EOpTerminateRayKHR, // Any-hit only + EOpIgnoreIntersectionKHR, // Any-hit only EOpReturn, EOpBreak, EOpContinue, @@ -752,6 +760,7 @@ enum TOperator { EOpConstructNonuniform, // expected to be transformed away, not present in final AST EOpConstructReference, EOpConstructCooperativeMatrix, + EOpConstructAccStruct, EOpConstructGuardEnd, // @@ -912,11 +921,13 @@ enum TOperator { EOpAverageRounded, EOpMul32x16, - EOpTrace, + EOpTraceNV, + EOpTraceKHR, EOpReportIntersection, - EOpIgnoreIntersection, - EOpTerminateRay, - EOpExecuteCallable, + EOpIgnoreIntersectionNV, + EOpTerminateRayNV, + EOpExecuteCallableNV, + EOpExecuteCallableKHR, EOpWritePackedPrimitiveIndices4x8NV, // diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index d073f606..a5ef6cca 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -4421,9 +4421,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); stageBuiltins[EShLangAnyHit].append( "void ignoreIntersectionNV();" - "void ignoreIntersectionEXT();" "void terminateRayNV();" - "void terminateRayEXT();" "\n"); stageBuiltins[EShLangClosestHit].append( "void traceNV(accelerationStructureNV,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);" @@ -5454,6 +5452,15 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "in uint64_t gl_SubGroupLeMaskARB;" "in uint64_t gl_SubGroupLtMaskARB;" "\n"; + const char* rtBallotDecls = + "uniform volatile uint gl_SubGroupSizeARB;" + "in volatile uint gl_SubGroupInvocationARB;" + "in volatile uint64_t gl_SubGroupEqMaskARB;" + "in volatile uint64_t gl_SubGroupGeMaskARB;" + "in volatile uint64_t gl_SubGroupGtMaskARB;" + "in volatile uint64_t gl_SubGroupLeMaskARB;" + "in volatile uint64_t gl_SubGroupLtMaskARB;" + "\n"; const char* fragmentBallotDecls = "uniform uint gl_SubGroupSizeARB;" "flat in uint gl_SubGroupInvocationARB;" @@ -5471,6 +5478,13 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV stageBuiltins[EShLangFragment] .append(fragmentBallotDecls); stageBuiltins[EShLangMeshNV] .append(ballotDecls); stageBuiltins[EShLangTaskNV] .append(ballotDecls); + stageBuiltins[EShLangRayGen] .append(rtBallotDecls); + stageBuiltins[EShLangIntersect] .append(rtBallotDecls); + // No volatile qualifier on these builtins in any-hit + stageBuiltins[EShLangAnyHit] .append(ballotDecls); + stageBuiltins[EShLangClosestHit] .append(rtBallotDecls); + stageBuiltins[EShLangMiss] .append(rtBallotDecls); + stageBuiltins[EShLangCallable] .append(rtBallotDecls); } // GL_KHR_shader_subgroup @@ -5508,6 +5522,21 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "in highp uint gl_NumSubgroups;" "in highp uint gl_SubgroupID;" "\n"; + // These builtins are volatile for RT stages + const char* rtSubgroupDecls = + "in mediump volatile uint gl_SubgroupSize;" + "in mediump volatile uint gl_SubgroupInvocationID;" + "in highp volatile uvec4 gl_SubgroupEqMask;" + "in highp volatile uvec4 gl_SubgroupGeMask;" + "in highp volatile uvec4 gl_SubgroupGtMask;" + "in highp volatile uvec4 gl_SubgroupLeMask;" + "in highp volatile uvec4 gl_SubgroupLtMask;" + // GL_NV_shader_sm_builtins + "in highp uint gl_WarpsPerSMNV;" + "in highp uint gl_SMCountNV;" + "in highp volatile uint gl_WarpIDNV;" + "in highp volatile uint gl_SMIDNV;" + "\n"; stageBuiltins[EShLangVertex] .append(subgroupDecls); stageBuiltins[EShLangTessControl] .append(subgroupDecls); @@ -5520,12 +5549,13 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV stageBuiltins[EShLangMeshNV] .append(computeSubgroupDecls); stageBuiltins[EShLangTaskNV] .append(subgroupDecls); stageBuiltins[EShLangTaskNV] .append(computeSubgroupDecls); - stageBuiltins[EShLangRayGen] .append(subgroupDecls); - stageBuiltins[EShLangIntersect] .append(subgroupDecls); + stageBuiltins[EShLangRayGen] .append(rtSubgroupDecls); + stageBuiltins[EShLangIntersect] .append(rtSubgroupDecls); + // No volatile qualifier on these builtins in any-hit stageBuiltins[EShLangAnyHit] .append(subgroupDecls); - stageBuiltins[EShLangClosestHit] .append(subgroupDecls); - stageBuiltins[EShLangMiss] .append(subgroupDecls); - stageBuiltins[EShLangCallable] .append(subgroupDecls); + stageBuiltins[EShLangClosestHit] .append(rtSubgroupDecls); + stageBuiltins[EShLangMiss] .append(rtSubgroupDecls); + stageBuiltins[EShLangCallable] .append(rtSubgroupDecls); } // GL_NV_ray_tracing/GL_EXT_ray_tracing @@ -5593,7 +5623,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "in float gl_RayTminNV;" "in float gl_RayTminEXT;" "in float gl_RayTmaxNV;" - "in float gl_RayTmaxEXT;" + "in volatile float gl_RayTmaxEXT;" "in mat4x3 gl_ObjectToWorldNV;" "in mat4x3 gl_ObjectToWorldEXT;" "in mat3x4 gl_ObjectToWorld3x4EXT;" @@ -8454,9 +8484,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("reportIntersectionNV", 1, &E_GL_NV_ray_tracing); symbolTable.setFunctionExtensions("reportIntersectionEXT", 1, &E_GL_EXT_ray_tracing); symbolTable.setFunctionExtensions("ignoreIntersectionNV", 1, &E_GL_NV_ray_tracing); - symbolTable.setFunctionExtensions("ignoreIntersectionEXT", 1, &E_GL_EXT_ray_tracing); symbolTable.setFunctionExtensions("terminateRayNV", 1, &E_GL_NV_ray_tracing); - symbolTable.setFunctionExtensions("terminateRayEXT", 1, &E_GL_EXT_ray_tracing); symbolTable.setFunctionExtensions("executeCallableNV", 1, &E_GL_NV_ray_tracing); symbolTable.setFunctionExtensions("executeCallableEXT", 1, &E_GL_EXT_ray_tracing); @@ -9286,10 +9314,10 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion case EShLangClosestHit: case EShLangMiss: if (profile != EEsProfile && version >= 460) { - symbolTable.relateToOperator("traceNV", EOpTrace); - symbolTable.relateToOperator("traceRayEXT", EOpTrace); - symbolTable.relateToOperator("executeCallableNV", EOpExecuteCallable); - symbolTable.relateToOperator("executeCallableEXT", EOpExecuteCallable); + symbolTable.relateToOperator("traceNV", EOpTraceNV); + symbolTable.relateToOperator("traceRayEXT", EOpTraceKHR); + symbolTable.relateToOperator("executeCallableNV", EOpExecuteCallableNV); + symbolTable.relateToOperator("executeCallableEXT", EOpExecuteCallableKHR); } break; case EShLangIntersect: @@ -9300,16 +9328,14 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion break; case EShLangAnyHit: if (profile != EEsProfile && version >= 460) { - symbolTable.relateToOperator("ignoreIntersectionNV", EOpIgnoreIntersection); - symbolTable.relateToOperator("ignoreIntersectionEXT", EOpIgnoreIntersection); - symbolTable.relateToOperator("terminateRayNV", EOpTerminateRay); - symbolTable.relateToOperator("terminateRayEXT", EOpTerminateRay); + symbolTable.relateToOperator("ignoreIntersectionNV", EOpIgnoreIntersectionNV); + symbolTable.relateToOperator("terminateRayNV", EOpTerminateRayNV); } break; case EShLangCallable: if (profile != EEsProfile && version >= 460) { - symbolTable.relateToOperator("executeCallableNV", EOpExecuteCallable); - symbolTable.relateToOperator("executeCallableEXT", EOpExecuteCallable); + symbolTable.relateToOperator("executeCallableNV", EOpExecuteCallableNV); + symbolTable.relateToOperator("executeCallableEXT", EOpExecuteCallableKHR); } break; case EShLangMeshNV: diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index b8c220d7..f6172a2b 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -2298,6 +2298,10 @@ TOperator TIntermediate::mapTypeToConstructorOp(const TType& type) const case EbtReference: op = EOpConstructReference; break; + + case EbtAccStruct: + op = EOpConstructAccStruct; + break; #endif default: break; diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 63fb957c..9c42a204 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -2076,14 +2076,32 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan } #ifndef GLSLANG_WEB - case EOpTrace: + case EOpTraceNV: if (!(*argp)[10]->getAsConstantUnion()) - error(loc, "argument must be compile-time constant", "payload number", ""); + error(loc, "argument must be compile-time constant", "payload number", "a"); break; - case EOpExecuteCallable: + case EOpTraceKHR: + if (!(*argp)[10]->getAsConstantUnion()) + error(loc, "argument must be compile-time constant", "payload number", "a"); + else { + unsigned int location = (*argp)[10]->getAsConstantUnion()->getAsConstantUnion()->getConstArray()[0].getUConst(); + if (intermediate.checkLocationRT(0, location) < 0) + error(loc, "with layout(location =", "no rayPayloadEXT/rayPayloadInEXT declared", "%d)", location); + } + break; + case EOpExecuteCallableNV: if (!(*argp)[1]->getAsConstantUnion()) error(loc, "argument must be compile-time constant", "callable data number", ""); break; + case EOpExecuteCallableKHR: + if (!(*argp)[1]->getAsConstantUnion()) + error(loc, "argument must be compile-time constant", "callable data number", ""); + else { + unsigned int location = (*argp)[1]->getAsConstantUnion()->getAsConstantUnion()->getConstArray()[0].getUConst(); + if (intermediate.checkLocationRT(1, location) < 0) + error(loc, "with layout(location =", "no callableDataEXT/callableDataInEXT declared", "%d)", location); + } + break; case EOpRayQueryGetIntersectionType: case EOpRayQueryGetIntersectionT: @@ -3440,7 +3458,7 @@ void TParseContext::globalQualifierTypeCheck(const TSourceLoc& loc, const TQuali if (! symbolTable.atGlobalLevel()) return; - if (!(publicType.userDef && publicType.userDef->isReference())) { + if (!(publicType.userDef && publicType.userDef->isReference()) && !parsingBuiltins) { if (qualifier.isMemoryQualifierImageAndSSBOOnly() && ! publicType.isImage() && publicType.qualifier.storage != EvqBuffer) { error(loc, "memory qualifiers cannot be used on this type", "", ""); } else if (qualifier.isMemory() && (publicType.basicType != EbtSampler) && !publicType.qualifier.isUniformOrBuffer()) { @@ -7460,6 +7478,19 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T return node; + case EOpConstructAccStruct: + if ((node->getType().isScalar() && node->getType().getBasicType() == EbtUint64)) { + // construct acceleration structure from uint64 + requireExtensions(loc, 1, &E_GL_EXT_ray_tracing, "uint64_t conversion to acclerationStructureEXT"); + return intermediate.addBuiltInFunctionCall(node->getLoc(), EOpConvUint64ToAccStruct, true, node, + type); + } else if (node->getType().isVector() && node->getType().getBasicType() == EbtUint && node->getVectorSize() == 2) { + // construct acceleration structure from uint64 + requireExtensions(loc, 1, &E_GL_EXT_ray_tracing, "uvec2 conversion to accelerationStructureEXT"); + return intermediate.addBuiltInFunctionCall(node->getLoc(), EOpConvUvec2ToAccStruct, true, node, + type); + } else + return nullptr; #endif // GLSLANG_WEB default: diff --git a/glslang/MachineIndependent/Scan.cpp b/glslang/MachineIndependent/Scan.cpp index bcf4047e..78c8a365 100644 --- a/glslang/MachineIndependent/Scan.cpp +++ b/glslang/MachineIndependent/Scan.cpp @@ -366,6 +366,8 @@ void TScanContext::fillInKeywordMap() (*KeywordMap)["else"] = ELSE; (*KeywordMap)["discard"] = DISCARD; (*KeywordMap)["terminateInvocation"] = TERMINATE_INVOCATION; + (*KeywordMap)["terminateRayEXT"] = TERMINATE_RAY; + (*KeywordMap)["ignoreIntersectionEXT"] = IGNORE_INTERSECTION; (*KeywordMap)["return"] = RETURN; (*KeywordMap)["void"] = VOID; (*KeywordMap)["bool"] = BOOL; @@ -942,6 +944,12 @@ int TScanContext::tokenizeIdentifier() return identifierOrType(); return keyword; + case TERMINATE_RAY: + case IGNORE_INTERSECTION: + if (!parseContext.extensionTurnedOn(E_GL_EXT_ray_tracing)) + return identifierOrType(); + return keyword; + case BUFFER: afterBuffer = true; if ((parseContext.isEsProfile() && parseContext.version < 310) || diff --git a/glslang/MachineIndependent/glslang.m4 b/glslang/MachineIndependent/glslang.m4 index 5b0adb0f..8884b268 100644 --- a/glslang/MachineIndependent/glslang.m4 +++ b/glslang/MachineIndependent/glslang.m4 @@ -294,6 +294,7 @@ GLSLANG_WEB_EXCLUDE_OFF %token STRUCT VOID WHILE %token BREAK CONTINUE DO ELSE FOR IF DISCARD RETURN SWITCH CASE DEFAULT %token TERMINATE_INVOCATION +%token TERMINATE_RAY IGNORE_INTERSECTION %token UNIFORM SHARED BUFFER %token FLAT SMOOTH LAYOUT @@ -3932,6 +3933,16 @@ jump_statement parseContext.requireStage($1.loc, EShLangFragment, "terminateInvocation"); $$ = parseContext.intermediate.addBranch(EOpTerminateInvocation, $1.loc); } +GLSLANG_WEB_EXCLUDE_ON + | TERMINATE_RAY SEMICOLON { + parseContext.requireStage($1.loc, EShLangAnyHit, "terminateRayEXT"); + $$ = parseContext.intermediate.addBranch(EOpTerminateRayKHR, $1.loc); + } + | IGNORE_INTERSECTION SEMICOLON { + parseContext.requireStage($1.loc, EShLangAnyHit, "ignoreIntersectionEXT"); + $$ = parseContext.intermediate.addBranch(EOpIgnoreIntersectionKHR, $1.loc); + } +GLSLANG_WEB_EXCLUDE_OFF ; // Grammar Note: No 'goto'. Gotos are not supported. diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index 4093b7d8..2681d48f 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -294,6 +294,7 @@ extern int yylex(YYSTYPE*, TParseContext&); %token STRUCT VOID WHILE %token BREAK CONTINUE DO ELSE FOR IF DISCARD RETURN SWITCH CASE DEFAULT %token TERMINATE_INVOCATION +%token TERMINATE_RAY IGNORE_INTERSECTION %token UNIFORM SHARED BUFFER %token FLAT SMOOTH LAYOUT @@ -3932,6 +3933,16 @@ jump_statement parseContext.requireStage($1.loc, EShLangFragment, "terminateInvocation"); $$ = parseContext.intermediate.addBranch(EOpTerminateInvocation, $1.loc); } + + | TERMINATE_RAY SEMICOLON { + parseContext.requireStage($1.loc, EShLangAnyHit, "terminateRayEXT"); + $$ = parseContext.intermediate.addBranch(EOpTerminateRayKHR, $1.loc); + } + | IGNORE_INTERSECTION SEMICOLON { + parseContext.requireStage($1.loc, EShLangAnyHit, "ignoreIntersectionEXT"); + $$ = parseContext.intermediate.addBranch(EOpIgnoreIntersectionKHR, $1.loc); + } + ; // Grammar Note: No 'goto'. Gotos are not supported. diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp index ad7deb30..feecc982 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -1,4 +1,4 @@ -/* A Bison parser, made by GNU Bison 3.7.2. */ +/* A Bison parser, made by GNU Bison 3.7.4. */ /* Bison implementation for Yacc-like parsers in C @@ -45,11 +45,11 @@ define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ -/* Identify Bison output. */ -#define YYBISON 1 +/* Identify Bison output, and Bison version. */ +#define YYBISON 30704 -/* Bison version. */ -#define YYBISON_VERSION "3.7.2" +/* Bison version string. */ +#define YYBISON_VERSION "3.7.4" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -67,7 +67,7 @@ /* First part of user prologue. */ -#line 69 "glslang/MachineIndependent/glslang.y" +#line 69 "MachineIndependent/glslang.y" /* Based on: @@ -93,7 +93,7 @@ Jutta Degener, 1995 using namespace glslang; -#line 97 "glslang/MachineIndependent/glslang_tab.cpp" +#line 97 "MachineIndependent/glslang_tab.cpp" # ifndef YY_CAST # ifdef __cplusplus @@ -517,170 +517,172 @@ enum yysymbol_kind_t YYSYMBOL_CASE = 393, /* CASE */ YYSYMBOL_DEFAULT = 394, /* DEFAULT */ YYSYMBOL_TERMINATE_INVOCATION = 395, /* TERMINATE_INVOCATION */ - YYSYMBOL_UNIFORM = 396, /* UNIFORM */ - YYSYMBOL_SHARED = 397, /* SHARED */ - YYSYMBOL_BUFFER = 398, /* BUFFER */ - YYSYMBOL_FLAT = 399, /* FLAT */ - YYSYMBOL_SMOOTH = 400, /* SMOOTH */ - YYSYMBOL_LAYOUT = 401, /* LAYOUT */ - YYSYMBOL_DOUBLECONSTANT = 402, /* DOUBLECONSTANT */ - YYSYMBOL_INT16CONSTANT = 403, /* INT16CONSTANT */ - YYSYMBOL_UINT16CONSTANT = 404, /* UINT16CONSTANT */ - YYSYMBOL_FLOAT16CONSTANT = 405, /* FLOAT16CONSTANT */ - YYSYMBOL_INT32CONSTANT = 406, /* INT32CONSTANT */ - YYSYMBOL_UINT32CONSTANT = 407, /* UINT32CONSTANT */ - YYSYMBOL_INT64CONSTANT = 408, /* INT64CONSTANT */ - YYSYMBOL_UINT64CONSTANT = 409, /* UINT64CONSTANT */ - YYSYMBOL_SUBROUTINE = 410, /* SUBROUTINE */ - YYSYMBOL_DEMOTE = 411, /* DEMOTE */ - YYSYMBOL_PAYLOADNV = 412, /* PAYLOADNV */ - YYSYMBOL_PAYLOADINNV = 413, /* PAYLOADINNV */ - YYSYMBOL_HITATTRNV = 414, /* HITATTRNV */ - YYSYMBOL_CALLDATANV = 415, /* CALLDATANV */ - YYSYMBOL_CALLDATAINNV = 416, /* CALLDATAINNV */ - YYSYMBOL_PAYLOADEXT = 417, /* PAYLOADEXT */ - YYSYMBOL_PAYLOADINEXT = 418, /* PAYLOADINEXT */ - YYSYMBOL_HITATTREXT = 419, /* HITATTREXT */ - YYSYMBOL_CALLDATAEXT = 420, /* CALLDATAEXT */ - YYSYMBOL_CALLDATAINEXT = 421, /* CALLDATAINEXT */ - YYSYMBOL_PATCH = 422, /* PATCH */ - YYSYMBOL_SAMPLE = 423, /* SAMPLE */ - YYSYMBOL_NONUNIFORM = 424, /* NONUNIFORM */ - YYSYMBOL_COHERENT = 425, /* COHERENT */ - YYSYMBOL_VOLATILE = 426, /* VOLATILE */ - YYSYMBOL_RESTRICT = 427, /* RESTRICT */ - YYSYMBOL_READONLY = 428, /* READONLY */ - YYSYMBOL_WRITEONLY = 429, /* WRITEONLY */ - YYSYMBOL_DEVICECOHERENT = 430, /* DEVICECOHERENT */ - YYSYMBOL_QUEUEFAMILYCOHERENT = 431, /* QUEUEFAMILYCOHERENT */ - YYSYMBOL_WORKGROUPCOHERENT = 432, /* WORKGROUPCOHERENT */ - YYSYMBOL_SUBGROUPCOHERENT = 433, /* SUBGROUPCOHERENT */ - YYSYMBOL_NONPRIVATE = 434, /* NONPRIVATE */ - YYSYMBOL_SHADERCALLCOHERENT = 435, /* SHADERCALLCOHERENT */ - YYSYMBOL_NOPERSPECTIVE = 436, /* NOPERSPECTIVE */ - YYSYMBOL_EXPLICITINTERPAMD = 437, /* EXPLICITINTERPAMD */ - YYSYMBOL_PERVERTEXNV = 438, /* PERVERTEXNV */ - YYSYMBOL_PERPRIMITIVENV = 439, /* PERPRIMITIVENV */ - YYSYMBOL_PERVIEWNV = 440, /* PERVIEWNV */ - YYSYMBOL_PERTASKNV = 441, /* PERTASKNV */ - YYSYMBOL_PRECISE = 442, /* PRECISE */ - YYSYMBOL_YYACCEPT = 443, /* $accept */ - YYSYMBOL_variable_identifier = 444, /* variable_identifier */ - YYSYMBOL_primary_expression = 445, /* primary_expression */ - YYSYMBOL_postfix_expression = 446, /* postfix_expression */ - YYSYMBOL_integer_expression = 447, /* integer_expression */ - YYSYMBOL_function_call = 448, /* function_call */ - YYSYMBOL_function_call_or_method = 449, /* function_call_or_method */ - YYSYMBOL_function_call_generic = 450, /* function_call_generic */ - YYSYMBOL_function_call_header_no_parameters = 451, /* function_call_header_no_parameters */ - YYSYMBOL_function_call_header_with_parameters = 452, /* function_call_header_with_parameters */ - YYSYMBOL_function_call_header = 453, /* function_call_header */ - YYSYMBOL_function_identifier = 454, /* function_identifier */ - YYSYMBOL_unary_expression = 455, /* unary_expression */ - YYSYMBOL_unary_operator = 456, /* unary_operator */ - YYSYMBOL_multiplicative_expression = 457, /* multiplicative_expression */ - YYSYMBOL_additive_expression = 458, /* additive_expression */ - YYSYMBOL_shift_expression = 459, /* shift_expression */ - YYSYMBOL_relational_expression = 460, /* relational_expression */ - YYSYMBOL_equality_expression = 461, /* equality_expression */ - YYSYMBOL_and_expression = 462, /* and_expression */ - YYSYMBOL_exclusive_or_expression = 463, /* exclusive_or_expression */ - YYSYMBOL_inclusive_or_expression = 464, /* inclusive_or_expression */ - YYSYMBOL_logical_and_expression = 465, /* logical_and_expression */ - YYSYMBOL_logical_xor_expression = 466, /* logical_xor_expression */ - YYSYMBOL_logical_or_expression = 467, /* logical_or_expression */ - YYSYMBOL_conditional_expression = 468, /* conditional_expression */ - YYSYMBOL_469_1 = 469, /* $@1 */ - YYSYMBOL_assignment_expression = 470, /* assignment_expression */ - YYSYMBOL_assignment_operator = 471, /* assignment_operator */ - YYSYMBOL_expression = 472, /* expression */ - YYSYMBOL_constant_expression = 473, /* constant_expression */ - YYSYMBOL_declaration = 474, /* declaration */ - YYSYMBOL_block_structure = 475, /* block_structure */ - YYSYMBOL_476_2 = 476, /* $@2 */ - YYSYMBOL_identifier_list = 477, /* identifier_list */ - YYSYMBOL_function_prototype = 478, /* function_prototype */ - YYSYMBOL_function_declarator = 479, /* function_declarator */ - YYSYMBOL_function_header_with_parameters = 480, /* function_header_with_parameters */ - YYSYMBOL_function_header = 481, /* function_header */ - YYSYMBOL_parameter_declarator = 482, /* parameter_declarator */ - YYSYMBOL_parameter_declaration = 483, /* parameter_declaration */ - YYSYMBOL_parameter_type_specifier = 484, /* parameter_type_specifier */ - YYSYMBOL_init_declarator_list = 485, /* init_declarator_list */ - YYSYMBOL_single_declaration = 486, /* single_declaration */ - YYSYMBOL_fully_specified_type = 487, /* fully_specified_type */ - YYSYMBOL_invariant_qualifier = 488, /* invariant_qualifier */ - YYSYMBOL_interpolation_qualifier = 489, /* interpolation_qualifier */ - YYSYMBOL_layout_qualifier = 490, /* layout_qualifier */ - YYSYMBOL_layout_qualifier_id_list = 491, /* layout_qualifier_id_list */ - YYSYMBOL_layout_qualifier_id = 492, /* layout_qualifier_id */ - YYSYMBOL_precise_qualifier = 493, /* precise_qualifier */ - YYSYMBOL_type_qualifier = 494, /* type_qualifier */ - YYSYMBOL_single_type_qualifier = 495, /* single_type_qualifier */ - YYSYMBOL_storage_qualifier = 496, /* storage_qualifier */ - YYSYMBOL_non_uniform_qualifier = 497, /* non_uniform_qualifier */ - YYSYMBOL_type_name_list = 498, /* type_name_list */ - YYSYMBOL_type_specifier = 499, /* type_specifier */ - YYSYMBOL_array_specifier = 500, /* array_specifier */ - YYSYMBOL_type_parameter_specifier_opt = 501, /* type_parameter_specifier_opt */ - YYSYMBOL_type_parameter_specifier = 502, /* type_parameter_specifier */ - YYSYMBOL_type_parameter_specifier_list = 503, /* type_parameter_specifier_list */ - YYSYMBOL_type_specifier_nonarray = 504, /* type_specifier_nonarray */ - YYSYMBOL_precision_qualifier = 505, /* precision_qualifier */ - YYSYMBOL_struct_specifier = 506, /* struct_specifier */ - YYSYMBOL_507_3 = 507, /* $@3 */ - YYSYMBOL_508_4 = 508, /* $@4 */ - YYSYMBOL_struct_declaration_list = 509, /* struct_declaration_list */ - YYSYMBOL_struct_declaration = 510, /* struct_declaration */ - YYSYMBOL_struct_declarator_list = 511, /* struct_declarator_list */ - YYSYMBOL_struct_declarator = 512, /* struct_declarator */ - YYSYMBOL_initializer = 513, /* initializer */ - YYSYMBOL_initializer_list = 514, /* initializer_list */ - YYSYMBOL_declaration_statement = 515, /* declaration_statement */ - YYSYMBOL_statement = 516, /* statement */ - YYSYMBOL_simple_statement = 517, /* simple_statement */ - YYSYMBOL_demote_statement = 518, /* demote_statement */ - YYSYMBOL_compound_statement = 519, /* compound_statement */ - YYSYMBOL_520_5 = 520, /* $@5 */ - YYSYMBOL_521_6 = 521, /* $@6 */ - YYSYMBOL_statement_no_new_scope = 522, /* statement_no_new_scope */ - YYSYMBOL_statement_scoped = 523, /* statement_scoped */ - YYSYMBOL_524_7 = 524, /* $@7 */ - YYSYMBOL_525_8 = 525, /* $@8 */ - YYSYMBOL_compound_statement_no_new_scope = 526, /* compound_statement_no_new_scope */ - YYSYMBOL_statement_list = 527, /* statement_list */ - YYSYMBOL_expression_statement = 528, /* expression_statement */ - YYSYMBOL_selection_statement = 529, /* selection_statement */ - YYSYMBOL_selection_statement_nonattributed = 530, /* selection_statement_nonattributed */ - YYSYMBOL_selection_rest_statement = 531, /* selection_rest_statement */ - YYSYMBOL_condition = 532, /* condition */ - YYSYMBOL_switch_statement = 533, /* switch_statement */ - YYSYMBOL_switch_statement_nonattributed = 534, /* switch_statement_nonattributed */ - YYSYMBOL_535_9 = 535, /* $@9 */ - YYSYMBOL_switch_statement_list = 536, /* switch_statement_list */ - YYSYMBOL_case_label = 537, /* case_label */ - YYSYMBOL_iteration_statement = 538, /* iteration_statement */ - YYSYMBOL_iteration_statement_nonattributed = 539, /* iteration_statement_nonattributed */ - YYSYMBOL_540_10 = 540, /* $@10 */ - YYSYMBOL_541_11 = 541, /* $@11 */ - YYSYMBOL_542_12 = 542, /* $@12 */ - YYSYMBOL_for_init_statement = 543, /* for_init_statement */ - YYSYMBOL_conditionopt = 544, /* conditionopt */ - YYSYMBOL_for_rest_statement = 545, /* for_rest_statement */ - YYSYMBOL_jump_statement = 546, /* jump_statement */ - YYSYMBOL_translation_unit = 547, /* translation_unit */ - YYSYMBOL_external_declaration = 548, /* external_declaration */ - YYSYMBOL_function_definition = 549, /* function_definition */ - YYSYMBOL_550_13 = 550, /* $@13 */ - YYSYMBOL_attribute = 551, /* attribute */ - YYSYMBOL_attribute_list = 552, /* attribute_list */ - YYSYMBOL_single_attribute = 553 /* single_attribute */ + YYSYMBOL_TERMINATE_RAY = 396, /* TERMINATE_RAY */ + YYSYMBOL_IGNORE_INTERSECTION = 397, /* IGNORE_INTERSECTION */ + YYSYMBOL_UNIFORM = 398, /* UNIFORM */ + YYSYMBOL_SHARED = 399, /* SHARED */ + YYSYMBOL_BUFFER = 400, /* BUFFER */ + YYSYMBOL_FLAT = 401, /* FLAT */ + YYSYMBOL_SMOOTH = 402, /* SMOOTH */ + YYSYMBOL_LAYOUT = 403, /* LAYOUT */ + YYSYMBOL_DOUBLECONSTANT = 404, /* DOUBLECONSTANT */ + YYSYMBOL_INT16CONSTANT = 405, /* INT16CONSTANT */ + YYSYMBOL_UINT16CONSTANT = 406, /* UINT16CONSTANT */ + YYSYMBOL_FLOAT16CONSTANT = 407, /* FLOAT16CONSTANT */ + YYSYMBOL_INT32CONSTANT = 408, /* INT32CONSTANT */ + YYSYMBOL_UINT32CONSTANT = 409, /* UINT32CONSTANT */ + YYSYMBOL_INT64CONSTANT = 410, /* INT64CONSTANT */ + YYSYMBOL_UINT64CONSTANT = 411, /* UINT64CONSTANT */ + YYSYMBOL_SUBROUTINE = 412, /* SUBROUTINE */ + YYSYMBOL_DEMOTE = 413, /* DEMOTE */ + YYSYMBOL_PAYLOADNV = 414, /* PAYLOADNV */ + YYSYMBOL_PAYLOADINNV = 415, /* PAYLOADINNV */ + YYSYMBOL_HITATTRNV = 416, /* HITATTRNV */ + YYSYMBOL_CALLDATANV = 417, /* CALLDATANV */ + YYSYMBOL_CALLDATAINNV = 418, /* CALLDATAINNV */ + YYSYMBOL_PAYLOADEXT = 419, /* PAYLOADEXT */ + YYSYMBOL_PAYLOADINEXT = 420, /* PAYLOADINEXT */ + YYSYMBOL_HITATTREXT = 421, /* HITATTREXT */ + YYSYMBOL_CALLDATAEXT = 422, /* CALLDATAEXT */ + YYSYMBOL_CALLDATAINEXT = 423, /* CALLDATAINEXT */ + YYSYMBOL_PATCH = 424, /* PATCH */ + YYSYMBOL_SAMPLE = 425, /* SAMPLE */ + YYSYMBOL_NONUNIFORM = 426, /* NONUNIFORM */ + YYSYMBOL_COHERENT = 427, /* COHERENT */ + YYSYMBOL_VOLATILE = 428, /* VOLATILE */ + YYSYMBOL_RESTRICT = 429, /* RESTRICT */ + YYSYMBOL_READONLY = 430, /* READONLY */ + YYSYMBOL_WRITEONLY = 431, /* WRITEONLY */ + YYSYMBOL_DEVICECOHERENT = 432, /* DEVICECOHERENT */ + YYSYMBOL_QUEUEFAMILYCOHERENT = 433, /* QUEUEFAMILYCOHERENT */ + YYSYMBOL_WORKGROUPCOHERENT = 434, /* WORKGROUPCOHERENT */ + YYSYMBOL_SUBGROUPCOHERENT = 435, /* SUBGROUPCOHERENT */ + YYSYMBOL_NONPRIVATE = 436, /* NONPRIVATE */ + YYSYMBOL_SHADERCALLCOHERENT = 437, /* SHADERCALLCOHERENT */ + YYSYMBOL_NOPERSPECTIVE = 438, /* NOPERSPECTIVE */ + YYSYMBOL_EXPLICITINTERPAMD = 439, /* EXPLICITINTERPAMD */ + YYSYMBOL_PERVERTEXNV = 440, /* PERVERTEXNV */ + YYSYMBOL_PERPRIMITIVENV = 441, /* PERPRIMITIVENV */ + YYSYMBOL_PERVIEWNV = 442, /* PERVIEWNV */ + YYSYMBOL_PERTASKNV = 443, /* PERTASKNV */ + YYSYMBOL_PRECISE = 444, /* PRECISE */ + YYSYMBOL_YYACCEPT = 445, /* $accept */ + YYSYMBOL_variable_identifier = 446, /* variable_identifier */ + YYSYMBOL_primary_expression = 447, /* primary_expression */ + YYSYMBOL_postfix_expression = 448, /* postfix_expression */ + YYSYMBOL_integer_expression = 449, /* integer_expression */ + YYSYMBOL_function_call = 450, /* function_call */ + YYSYMBOL_function_call_or_method = 451, /* function_call_or_method */ + YYSYMBOL_function_call_generic = 452, /* function_call_generic */ + YYSYMBOL_function_call_header_no_parameters = 453, /* function_call_header_no_parameters */ + YYSYMBOL_function_call_header_with_parameters = 454, /* function_call_header_with_parameters */ + YYSYMBOL_function_call_header = 455, /* function_call_header */ + YYSYMBOL_function_identifier = 456, /* function_identifier */ + YYSYMBOL_unary_expression = 457, /* unary_expression */ + YYSYMBOL_unary_operator = 458, /* unary_operator */ + YYSYMBOL_multiplicative_expression = 459, /* multiplicative_expression */ + YYSYMBOL_additive_expression = 460, /* additive_expression */ + YYSYMBOL_shift_expression = 461, /* shift_expression */ + YYSYMBOL_relational_expression = 462, /* relational_expression */ + YYSYMBOL_equality_expression = 463, /* equality_expression */ + YYSYMBOL_and_expression = 464, /* and_expression */ + YYSYMBOL_exclusive_or_expression = 465, /* exclusive_or_expression */ + YYSYMBOL_inclusive_or_expression = 466, /* inclusive_or_expression */ + YYSYMBOL_logical_and_expression = 467, /* logical_and_expression */ + YYSYMBOL_logical_xor_expression = 468, /* logical_xor_expression */ + YYSYMBOL_logical_or_expression = 469, /* logical_or_expression */ + YYSYMBOL_conditional_expression = 470, /* conditional_expression */ + YYSYMBOL_471_1 = 471, /* $@1 */ + YYSYMBOL_assignment_expression = 472, /* assignment_expression */ + YYSYMBOL_assignment_operator = 473, /* assignment_operator */ + YYSYMBOL_expression = 474, /* expression */ + YYSYMBOL_constant_expression = 475, /* constant_expression */ + YYSYMBOL_declaration = 476, /* declaration */ + YYSYMBOL_block_structure = 477, /* block_structure */ + YYSYMBOL_478_2 = 478, /* $@2 */ + YYSYMBOL_identifier_list = 479, /* identifier_list */ + YYSYMBOL_function_prototype = 480, /* function_prototype */ + YYSYMBOL_function_declarator = 481, /* function_declarator */ + YYSYMBOL_function_header_with_parameters = 482, /* function_header_with_parameters */ + YYSYMBOL_function_header = 483, /* function_header */ + YYSYMBOL_parameter_declarator = 484, /* parameter_declarator */ + YYSYMBOL_parameter_declaration = 485, /* parameter_declaration */ + YYSYMBOL_parameter_type_specifier = 486, /* parameter_type_specifier */ + YYSYMBOL_init_declarator_list = 487, /* init_declarator_list */ + YYSYMBOL_single_declaration = 488, /* single_declaration */ + YYSYMBOL_fully_specified_type = 489, /* fully_specified_type */ + YYSYMBOL_invariant_qualifier = 490, /* invariant_qualifier */ + YYSYMBOL_interpolation_qualifier = 491, /* interpolation_qualifier */ + YYSYMBOL_layout_qualifier = 492, /* layout_qualifier */ + YYSYMBOL_layout_qualifier_id_list = 493, /* layout_qualifier_id_list */ + YYSYMBOL_layout_qualifier_id = 494, /* layout_qualifier_id */ + YYSYMBOL_precise_qualifier = 495, /* precise_qualifier */ + YYSYMBOL_type_qualifier = 496, /* type_qualifier */ + YYSYMBOL_single_type_qualifier = 497, /* single_type_qualifier */ + YYSYMBOL_storage_qualifier = 498, /* storage_qualifier */ + YYSYMBOL_non_uniform_qualifier = 499, /* non_uniform_qualifier */ + YYSYMBOL_type_name_list = 500, /* type_name_list */ + YYSYMBOL_type_specifier = 501, /* type_specifier */ + YYSYMBOL_array_specifier = 502, /* array_specifier */ + YYSYMBOL_type_parameter_specifier_opt = 503, /* type_parameter_specifier_opt */ + YYSYMBOL_type_parameter_specifier = 504, /* type_parameter_specifier */ + YYSYMBOL_type_parameter_specifier_list = 505, /* type_parameter_specifier_list */ + YYSYMBOL_type_specifier_nonarray = 506, /* type_specifier_nonarray */ + YYSYMBOL_precision_qualifier = 507, /* precision_qualifier */ + YYSYMBOL_struct_specifier = 508, /* struct_specifier */ + YYSYMBOL_509_3 = 509, /* $@3 */ + YYSYMBOL_510_4 = 510, /* $@4 */ + YYSYMBOL_struct_declaration_list = 511, /* struct_declaration_list */ + YYSYMBOL_struct_declaration = 512, /* struct_declaration */ + YYSYMBOL_struct_declarator_list = 513, /* struct_declarator_list */ + YYSYMBOL_struct_declarator = 514, /* struct_declarator */ + YYSYMBOL_initializer = 515, /* initializer */ + YYSYMBOL_initializer_list = 516, /* initializer_list */ + YYSYMBOL_declaration_statement = 517, /* declaration_statement */ + YYSYMBOL_statement = 518, /* statement */ + YYSYMBOL_simple_statement = 519, /* simple_statement */ + YYSYMBOL_demote_statement = 520, /* demote_statement */ + YYSYMBOL_compound_statement = 521, /* compound_statement */ + YYSYMBOL_522_5 = 522, /* $@5 */ + YYSYMBOL_523_6 = 523, /* $@6 */ + YYSYMBOL_statement_no_new_scope = 524, /* statement_no_new_scope */ + YYSYMBOL_statement_scoped = 525, /* statement_scoped */ + YYSYMBOL_526_7 = 526, /* $@7 */ + YYSYMBOL_527_8 = 527, /* $@8 */ + YYSYMBOL_compound_statement_no_new_scope = 528, /* compound_statement_no_new_scope */ + YYSYMBOL_statement_list = 529, /* statement_list */ + YYSYMBOL_expression_statement = 530, /* expression_statement */ + YYSYMBOL_selection_statement = 531, /* selection_statement */ + YYSYMBOL_selection_statement_nonattributed = 532, /* selection_statement_nonattributed */ + YYSYMBOL_selection_rest_statement = 533, /* selection_rest_statement */ + YYSYMBOL_condition = 534, /* condition */ + YYSYMBOL_switch_statement = 535, /* switch_statement */ + YYSYMBOL_switch_statement_nonattributed = 536, /* switch_statement_nonattributed */ + YYSYMBOL_537_9 = 537, /* $@9 */ + YYSYMBOL_switch_statement_list = 538, /* switch_statement_list */ + YYSYMBOL_case_label = 539, /* case_label */ + YYSYMBOL_iteration_statement = 540, /* iteration_statement */ + YYSYMBOL_iteration_statement_nonattributed = 541, /* iteration_statement_nonattributed */ + YYSYMBOL_542_10 = 542, /* $@10 */ + YYSYMBOL_543_11 = 543, /* $@11 */ + YYSYMBOL_544_12 = 544, /* $@12 */ + YYSYMBOL_for_init_statement = 545, /* for_init_statement */ + YYSYMBOL_conditionopt = 546, /* conditionopt */ + YYSYMBOL_for_rest_statement = 547, /* for_rest_statement */ + YYSYMBOL_jump_statement = 548, /* jump_statement */ + YYSYMBOL_translation_unit = 549, /* translation_unit */ + YYSYMBOL_external_declaration = 550, /* external_declaration */ + YYSYMBOL_function_definition = 551, /* function_definition */ + YYSYMBOL_552_13 = 552, /* $@13 */ + YYSYMBOL_attribute = 553, /* attribute */ + YYSYMBOL_attribute_list = 554, /* attribute_list */ + YYSYMBOL_single_attribute = 555 /* single_attribute */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; /* Second part of user prologue. */ -#line 133 "glslang/MachineIndependent/glslang.y" +#line 133 "MachineIndependent/glslang.y" /* windows only pragma */ @@ -696,7 +698,7 @@ typedef enum yysymbol_kind_t yysymbol_kind_t; extern int yylex(YYSTYPE*, TParseContext&); -#line 700 "glslang/MachineIndependent/glslang_tab.cpp" +#line 702 "MachineIndependent/glslang_tab.cpp" #ifdef short @@ -1002,19 +1004,19 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 416 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 10058 +#define YYLAST 10112 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 443 +#define YYNTOKENS 445 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 111 /* YYNRULES -- Number of rules. */ -#define YYNRULES 614 +#define YYNRULES 616 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 760 +#define YYNSTATES 764 /* YYMAXUTOK -- Last valid token kind. */ -#define YYMAXUTOK 697 +#define YYMAXUTOK 699 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -1097,75 +1099,75 @@ static const yytype_int16 yytranslate[] = 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442 + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 370, 370, 376, 379, 384, 387, 390, 394, 398, - 401, 405, 409, 413, 417, 421, 425, 431, 439, 442, - 445, 448, 451, 456, 464, 471, 478, 484, 488, 495, - 498, 504, 511, 521, 529, 534, 562, 571, 577, 581, - 585, 605, 606, 607, 608, 614, 615, 620, 625, 634, - 635, 640, 648, 649, 655, 664, 665, 670, 675, 680, - 688, 689, 698, 710, 711, 720, 721, 730, 731, 740, - 741, 749, 750, 758, 759, 767, 768, 768, 786, 787, - 803, 807, 811, 815, 820, 824, 828, 832, 836, 840, - 844, 851, 854, 865, 872, 877, 882, 889, 893, 897, - 901, 906, 911, 920, 920, 931, 935, 942, 949, 952, - 959, 967, 987, 1010, 1025, 1050, 1061, 1071, 1081, 1091, - 1100, 1103, 1107, 1111, 1116, 1124, 1131, 1136, 1141, 1146, - 1155, 1165, 1192, 1201, 1208, 1216, 1223, 1230, 1238, 1248, - 1255, 1266, 1272, 1275, 1282, 1286, 1290, 1299, 1309, 1312, - 1323, 1326, 1329, 1333, 1337, 1342, 1346, 1353, 1357, 1362, - 1368, 1374, 1381, 1386, 1394, 1400, 1412, 1426, 1432, 1437, - 1445, 1453, 1461, 1469, 1477, 1485, 1493, 1501, 1508, 1515, - 1519, 1524, 1529, 1534, 1539, 1544, 1549, 1553, 1557, 1561, - 1565, 1571, 1582, 1589, 1592, 1601, 1606, 1616, 1621, 1629, - 1633, 1643, 1646, 1652, 1658, 1665, 1675, 1679, 1683, 1687, - 1692, 1696, 1701, 1706, 1711, 1716, 1721, 1726, 1731, 1736, - 1741, 1747, 1753, 1759, 1764, 1769, 1774, 1779, 1784, 1789, - 1794, 1799, 1804, 1809, 1814, 1820, 1827, 1832, 1837, 1842, - 1847, 1852, 1857, 1862, 1867, 1872, 1877, 1882, 1890, 1898, - 1906, 1912, 1918, 1924, 1930, 1936, 1942, 1948, 1954, 1960, - 1966, 1972, 1978, 1984, 1990, 1996, 2002, 2008, 2014, 2020, - 2026, 2032, 2038, 2044, 2050, 2056, 2062, 2068, 2074, 2080, - 2086, 2092, 2098, 2104, 2112, 2120, 2128, 2136, 2144, 2152, - 2160, 2168, 2176, 2184, 2192, 2200, 2206, 2212, 2218, 2224, - 2230, 2236, 2242, 2248, 2254, 2260, 2266, 2272, 2278, 2284, - 2290, 2296, 2302, 2308, 2314, 2320, 2326, 2332, 2338, 2344, - 2350, 2356, 2362, 2368, 2374, 2380, 2386, 2392, 2398, 2404, - 2410, 2416, 2420, 2424, 2428, 2433, 2439, 2444, 2449, 2454, - 2459, 2464, 2469, 2475, 2480, 2485, 2490, 2495, 2500, 2506, - 2512, 2518, 2524, 2530, 2536, 2542, 2548, 2554, 2560, 2566, - 2572, 2578, 2584, 2589, 2594, 2599, 2604, 2609, 2614, 2620, - 2625, 2630, 2635, 2640, 2645, 2650, 2655, 2661, 2666, 2671, - 2676, 2681, 2686, 2691, 2696, 2701, 2706, 2711, 2716, 2721, - 2726, 2731, 2737, 2742, 2747, 2753, 2759, 2764, 2769, 2774, - 2780, 2785, 2790, 2795, 2801, 2806, 2811, 2816, 2822, 2827, - 2832, 2837, 2843, 2849, 2855, 2861, 2866, 2872, 2878, 2884, - 2889, 2894, 2899, 2904, 2909, 2915, 2920, 2925, 2930, 2936, - 2941, 2946, 2951, 2957, 2962, 2967, 2972, 2978, 2983, 2988, - 2993, 2999, 3004, 3009, 3014, 3020, 3025, 3030, 3035, 3041, - 3046, 3051, 3056, 3062, 3067, 3072, 3077, 3083, 3088, 3093, - 3098, 3104, 3109, 3114, 3119, 3125, 3130, 3135, 3140, 3146, - 3151, 3156, 3161, 3167, 3172, 3177, 3182, 3188, 3193, 3198, - 3203, 3209, 3214, 3219, 3224, 3229, 3234, 3239, 3244, 3249, - 3254, 3259, 3264, 3269, 3274, 3279, 3284, 3289, 3294, 3299, - 3304, 3309, 3314, 3319, 3324, 3329, 3335, 3341, 3347, 3353, - 3360, 3367, 3373, 3379, 3385, 3391, 3397, 3403, 3410, 3415, - 3431, 3436, 3441, 3449, 3449, 3460, 3460, 3470, 3473, 3486, - 3508, 3535, 3539, 3545, 3550, 3561, 3565, 3571, 3582, 3585, - 3592, 3596, 3597, 3603, 3604, 3605, 3606, 3607, 3608, 3609, - 3611, 3617, 3626, 3627, 3631, 3627, 3643, 3644, 3648, 3648, - 3655, 3655, 3669, 3672, 3680, 3688, 3699, 3700, 3704, 3708, - 3715, 3722, 3726, 3734, 3738, 3751, 3755, 3762, 3762, 3782, - 3785, 3791, 3803, 3815, 3819, 3826, 3826, 3841, 3841, 3857, - 3857, 3878, 3881, 3887, 3890, 3896, 3900, 3907, 3912, 3917, - 3924, 3927, 3931, 3940, 3944, 3953, 3956, 3960, 3969, 3969, - 4011, 4017, 4020, 4025, 4028 + 0, 371, 371, 377, 380, 385, 388, 391, 395, 399, + 402, 406, 410, 414, 418, 422, 426, 432, 440, 443, + 446, 449, 452, 457, 465, 472, 479, 485, 489, 496, + 499, 505, 512, 522, 530, 535, 563, 572, 578, 582, + 586, 606, 607, 608, 609, 615, 616, 621, 626, 635, + 636, 641, 649, 650, 656, 665, 666, 671, 676, 681, + 689, 690, 699, 711, 712, 721, 722, 731, 732, 741, + 742, 750, 751, 759, 760, 768, 769, 769, 787, 788, + 804, 808, 812, 816, 821, 825, 829, 833, 837, 841, + 845, 852, 855, 866, 873, 878, 883, 890, 894, 898, + 902, 907, 912, 921, 921, 932, 936, 943, 950, 953, + 960, 968, 988, 1011, 1026, 1051, 1062, 1072, 1082, 1092, + 1101, 1104, 1108, 1112, 1117, 1125, 1132, 1137, 1142, 1147, + 1156, 1166, 1193, 1202, 1209, 1217, 1224, 1231, 1239, 1249, + 1256, 1267, 1273, 1276, 1283, 1287, 1291, 1300, 1310, 1313, + 1324, 1327, 1330, 1334, 1338, 1343, 1347, 1354, 1358, 1363, + 1369, 1375, 1382, 1387, 1395, 1401, 1413, 1427, 1433, 1438, + 1446, 1454, 1462, 1470, 1478, 1486, 1494, 1502, 1509, 1516, + 1520, 1525, 1530, 1535, 1540, 1545, 1550, 1554, 1558, 1562, + 1566, 1572, 1583, 1590, 1593, 1602, 1607, 1617, 1622, 1630, + 1634, 1644, 1647, 1653, 1659, 1666, 1676, 1680, 1684, 1688, + 1693, 1697, 1702, 1707, 1712, 1717, 1722, 1727, 1732, 1737, + 1742, 1748, 1754, 1760, 1765, 1770, 1775, 1780, 1785, 1790, + 1795, 1800, 1805, 1810, 1815, 1821, 1828, 1833, 1838, 1843, + 1848, 1853, 1858, 1863, 1868, 1873, 1878, 1883, 1891, 1899, + 1907, 1913, 1919, 1925, 1931, 1937, 1943, 1949, 1955, 1961, + 1967, 1973, 1979, 1985, 1991, 1997, 2003, 2009, 2015, 2021, + 2027, 2033, 2039, 2045, 2051, 2057, 2063, 2069, 2075, 2081, + 2087, 2093, 2099, 2105, 2113, 2121, 2129, 2137, 2145, 2153, + 2161, 2169, 2177, 2185, 2193, 2201, 2207, 2213, 2219, 2225, + 2231, 2237, 2243, 2249, 2255, 2261, 2267, 2273, 2279, 2285, + 2291, 2297, 2303, 2309, 2315, 2321, 2327, 2333, 2339, 2345, + 2351, 2357, 2363, 2369, 2375, 2381, 2387, 2393, 2399, 2405, + 2411, 2417, 2421, 2425, 2429, 2434, 2440, 2445, 2450, 2455, + 2460, 2465, 2470, 2476, 2481, 2486, 2491, 2496, 2501, 2507, + 2513, 2519, 2525, 2531, 2537, 2543, 2549, 2555, 2561, 2567, + 2573, 2579, 2585, 2590, 2595, 2600, 2605, 2610, 2615, 2621, + 2626, 2631, 2636, 2641, 2646, 2651, 2656, 2662, 2667, 2672, + 2677, 2682, 2687, 2692, 2697, 2702, 2707, 2712, 2717, 2722, + 2727, 2732, 2738, 2743, 2748, 2754, 2760, 2765, 2770, 2775, + 2781, 2786, 2791, 2796, 2802, 2807, 2812, 2817, 2823, 2828, + 2833, 2838, 2844, 2850, 2856, 2862, 2867, 2873, 2879, 2885, + 2890, 2895, 2900, 2905, 2910, 2916, 2921, 2926, 2931, 2937, + 2942, 2947, 2952, 2958, 2963, 2968, 2973, 2979, 2984, 2989, + 2994, 3000, 3005, 3010, 3015, 3021, 3026, 3031, 3036, 3042, + 3047, 3052, 3057, 3063, 3068, 3073, 3078, 3084, 3089, 3094, + 3099, 3105, 3110, 3115, 3120, 3126, 3131, 3136, 3141, 3147, + 3152, 3157, 3162, 3168, 3173, 3178, 3183, 3189, 3194, 3199, + 3204, 3210, 3215, 3220, 3225, 3230, 3235, 3240, 3245, 3250, + 3255, 3260, 3265, 3270, 3275, 3280, 3285, 3290, 3295, 3300, + 3305, 3310, 3315, 3320, 3325, 3330, 3336, 3342, 3348, 3354, + 3361, 3368, 3374, 3380, 3386, 3392, 3398, 3404, 3411, 3416, + 3432, 3437, 3442, 3450, 3450, 3461, 3461, 3471, 3474, 3487, + 3509, 3536, 3540, 3546, 3551, 3562, 3566, 3572, 3583, 3586, + 3593, 3597, 3598, 3604, 3605, 3606, 3607, 3608, 3609, 3610, + 3612, 3618, 3627, 3628, 3632, 3628, 3644, 3645, 3649, 3649, + 3656, 3656, 3670, 3673, 3681, 3689, 3700, 3701, 3705, 3709, + 3716, 3723, 3727, 3735, 3739, 3752, 3756, 3763, 3763, 3783, + 3786, 3792, 3804, 3816, 3820, 3827, 3827, 3842, 3842, 3858, + 3858, 3879, 3882, 3888, 3891, 3897, 3901, 3908, 3913, 3918, + 3925, 3928, 3932, 3937, 3941, 3951, 3955, 3964, 3967, 3971, + 3980, 3980, 4022, 4028, 4031, 4036, 4039 }; #endif @@ -1266,19 +1268,20 @@ static const char *const yytname[] = "IDENTIFIER", "TYPE_NAME", "CENTROID", "IN", "OUT", "INOUT", "STRUCT", "VOID", "WHILE", "BREAK", "CONTINUE", "DO", "ELSE", "FOR", "IF", "DISCARD", "RETURN", "SWITCH", "CASE", "DEFAULT", "TERMINATE_INVOCATION", - "UNIFORM", "SHARED", "BUFFER", "FLAT", "SMOOTH", "LAYOUT", - "DOUBLECONSTANT", "INT16CONSTANT", "UINT16CONSTANT", "FLOAT16CONSTANT", - "INT32CONSTANT", "UINT32CONSTANT", "INT64CONSTANT", "UINT64CONSTANT", - "SUBROUTINE", "DEMOTE", "PAYLOADNV", "PAYLOADINNV", "HITATTRNV", - "CALLDATANV", "CALLDATAINNV", "PAYLOADEXT", "PAYLOADINEXT", "HITATTREXT", - "CALLDATAEXT", "CALLDATAINEXT", "PATCH", "SAMPLE", "NONUNIFORM", - "COHERENT", "VOLATILE", "RESTRICT", "READONLY", "WRITEONLY", - "DEVICECOHERENT", "QUEUEFAMILYCOHERENT", "WORKGROUPCOHERENT", - "SUBGROUPCOHERENT", "NONPRIVATE", "SHADERCALLCOHERENT", "NOPERSPECTIVE", - "EXPLICITINTERPAMD", "PERVERTEXNV", "PERPRIMITIVENV", "PERVIEWNV", - "PERTASKNV", "PRECISE", "$accept", "variable_identifier", - "primary_expression", "postfix_expression", "integer_expression", - "function_call", "function_call_or_method", "function_call_generic", + "TERMINATE_RAY", "IGNORE_INTERSECTION", "UNIFORM", "SHARED", "BUFFER", + "FLAT", "SMOOTH", "LAYOUT", "DOUBLECONSTANT", "INT16CONSTANT", + "UINT16CONSTANT", "FLOAT16CONSTANT", "INT32CONSTANT", "UINT32CONSTANT", + "INT64CONSTANT", "UINT64CONSTANT", "SUBROUTINE", "DEMOTE", "PAYLOADNV", + "PAYLOADINNV", "HITATTRNV", "CALLDATANV", "CALLDATAINNV", "PAYLOADEXT", + "PAYLOADINEXT", "HITATTREXT", "CALLDATAEXT", "CALLDATAINEXT", "PATCH", + "SAMPLE", "NONUNIFORM", "COHERENT", "VOLATILE", "RESTRICT", "READONLY", + "WRITEONLY", "DEVICECOHERENT", "QUEUEFAMILYCOHERENT", + "WORKGROUPCOHERENT", "SUBGROUPCOHERENT", "NONPRIVATE", + "SHADERCALLCOHERENT", "NOPERSPECTIVE", "EXPLICITINTERPAMD", + "PERVERTEXNV", "PERPRIMITIVENV", "PERVIEWNV", "PERTASKNV", "PRECISE", + "$accept", "variable_identifier", "primary_expression", + "postfix_expression", "integer_expression", "function_call", + "function_call_or_method", "function_call_generic", "function_call_header_no_parameters", "function_call_header_with_parameters", "function_call_header", "function_identifier", "unary_expression", "unary_operator", @@ -1373,11 +1376,11 @@ static const yytype_int16 yytoknum[] = 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, - 695, 696, 697 + 695, 696, 697, 698, 699 }; #endif -#define YYPACT_NINF (-728) +#define YYPACT_NINF (-732) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) @@ -1391,82 +1394,83 @@ static const yytype_int16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - 4283, -728, -728, -728, -728, -728, -728, -728, -728, -728, - -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, - -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, - -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, - -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, - -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, - -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, - -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, - -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, - -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, - -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, - -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, - -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, - -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, - -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, - -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, - -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, - -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, - -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, - -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, - -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, - -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, - -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, - -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, - -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, - -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, - -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, - -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, - -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, - -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, - -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, - -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, - 109, -728, -728, -728, -728, -728, 1, -728, -728, -728, - -728, -728, -728, -327, -323, -728, -728, -728, -728, -728, - -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, - -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, - -728, -728, -728, -728, -728, -728, -728, 11, -271, 12, - 19, 6483, 8, -728, 57, -728, -728, -728, -728, 4723, - -728, -728, -728, -728, 37, -728, -728, 763, -728, -728, - 16, -728, 107, -29, 92, -728, -336, -728, 136, -728, - 6483, -728, -728, -728, 6483, 110, 117, -728, 54, -728, - 68, -728, -728, 9027, 140, -728, -728, -728, 134, 6483, - -728, 146, -728, 13, -728, -728, 59, 7343, -728, -335, - 1203, -728, -728, -728, -728, 140, -331, -728, 7764, -330, - -728, 126, -728, 85, 9027, 9027, -728, 9027, -728, -728, - -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, - -728, -728, -728, -728, -728, -728, -728, 36, -728, -728, - -728, 170, 66, 9448, 173, -728, 9027, -728, -728, -343, - 172, -728, 6483, 141, 5163, -728, 6483, 9027, -728, -29, - -728, 145, -728, -728, 142, 93, 108, 26, 114, 154, - 157, 159, 196, 195, 23, 181, 8185, -728, 183, 182, - -728, -728, 186, 178, 180, -728, 191, 192, 184, 8606, - 193, 9027, 187, 188, 194, 129, -728, -728, 99, -728, - -271, 197, 202, -728, -728, -728, -728, -728, 1643, -728, - -728, -728, -728, -728, -728, -728, -728, -728, -22, 172, - 7764, 21, 7764, -728, -728, 7764, 6483, -728, 160, -728, - -728, -728, 76, -728, -728, 9027, 167, -728, -728, 9027, - 204, -728, -728, -728, 9027, -728, 141, 140, 106, -728, - -728, -728, 5603, -728, -728, -728, -728, 9027, 9027, 9027, - 9027, 9027, 9027, 9027, 9027, 9027, 9027, 9027, 9027, 9027, - 9027, 9027, 9027, 9027, 9027, 9027, -728, -728, -728, 207, - 171, -728, 2083, -728, -728, -728, 2083, -728, 9027, -728, - -728, 122, 9027, 143, -728, -728, -728, -728, -728, -728, - -728, -728, -728, -728, -728, -728, -728, -728, 9027, 9027, - -728, -728, -728, -728, -728, -728, -728, 7764, -728, 132, - -728, 6043, -728, -728, 208, 205, -728, -728, -728, 123, - 172, 141, -728, -728, -728, -728, -728, 142, 142, 93, - 93, 108, 108, 108, 108, 26, 26, 114, 154, 157, - 159, 196, 195, 9027, -728, 213, 61, -728, 2083, 3843, - 174, 3403, 78, -728, 81, -728, -728, -728, -728, -728, - 6922, -728, -728, -728, -728, 153, 9027, 211, 171, 210, - 205, 185, 6483, 218, 220, -728, -728, 3843, 219, -728, - -728, -728, 9027, 221, -728, -728, -728, 215, 2523, 9027, - -728, 217, 224, 189, 225, 2963, -728, 226, -728, -728, - 7764, -728, -728, -728, 83, 9027, 2523, 219, -728, -728, - 2083, -728, 222, 205, -728, -728, 2083, 223, -728, -728 + 4303, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + 109, -732, -732, -732, -732, -732, 1, -732, -732, -732, + -732, -732, -732, -324, -261, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, 11, 44, 22, + 7, 6513, -332, -732, -10, -732, -732, -732, -732, 4745, + -732, -732, -732, -732, 46, -732, -732, 767, -732, -732, + 16, -732, 69, -5, 47, -732, -338, -732, 91, -732, + 6513, -732, -732, -732, 6513, 72, 80, -732, 13, -732, + 74, -732, -732, 9069, 126, -732, -732, -732, 127, 6513, + -732, 144, -732, 17, -732, -732, 61, 7377, -732, 10, + 1209, -732, -732, -732, -732, 126, 25, -732, 7800, 26, + -732, 119, -732, 78, 9069, 9069, -732, 9069, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, 36, -732, -732, + -732, 164, 65, 9492, 171, -732, 9069, -732, -732, -340, + 173, -732, 6513, 140, 5187, -732, 6513, 9069, -732, -5, + -732, 141, -732, -732, 124, 130, 179, 27, 117, 156, + 158, 160, 195, 194, 20, 181, 8223, -732, 183, 182, + -732, -732, 186, 178, 180, -732, 189, 192, 184, 8646, + 193, 9069, 187, 188, 190, 196, 197, 129, -732, -732, + 89, -732, 44, 199, 204, -732, -732, -732, -732, -732, + 1651, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -376, 173, 7800, 54, 7800, -732, -732, 7800, 6513, -732, + 161, -732, -732, -732, 70, -732, -732, 9069, 169, -732, + -732, 9069, 207, -732, -732, -732, 9069, -732, 140, 126, + 103, -732, -732, -732, 5629, -732, -732, -732, -732, 9069, + 9069, 9069, 9069, 9069, 9069, 9069, 9069, 9069, 9069, 9069, + 9069, 9069, 9069, 9069, 9069, 9069, 9069, 9069, -732, -732, + -732, 209, 177, -732, 2093, -732, -732, -732, 2093, -732, + 9069, -732, -732, 122, 9069, 152, -732, -732, -732, -732, + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, 9069, 9069, -732, -732, -732, -732, -732, -732, + -732, 7800, -732, 143, -732, 6071, -732, -732, 211, 208, + -732, -732, -732, 123, 173, 140, -732, -732, -732, -732, + -732, 124, 124, 130, 130, 179, 179, 179, 179, 27, + 27, 117, 156, 158, 160, 195, 194, 9069, -732, 216, + 87, -732, 2093, 3861, 174, 3419, 75, -732, 85, -732, + -732, -732, -732, -732, 6954, -732, -732, -732, -732, 154, + 9069, 217, 177, 191, 208, 185, 6513, 221, 223, -732, + -732, 3861, 220, -732, -732, -732, 9069, 224, -732, -732, + -732, 218, 2535, 9069, -732, 219, 225, 198, 226, 2977, + -732, 227, -732, -732, 7800, -732, -732, -732, 86, 9069, + 2535, 220, -732, -732, 2093, -732, 222, 208, -732, -732, + 2093, 228, -732, -732 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1505,19 +1509,19 @@ static const yytype_int16 yydefact[] = 421, 415, 420, 422, 423, 425, 426, 427, 429, 430, 431, 433, 434, 435, 437, 438, 411, 412, 413, 424, 414, 416, 417, 418, 428, 432, 436, 507, 508, 511, - 512, 513, 514, 509, 510, 607, 132, 520, 521, 522, + 512, 513, 514, 509, 510, 609, 132, 520, 521, 522, 0, 519, 161, 159, 160, 158, 0, 206, 162, 163, 164, 134, 133, 0, 190, 171, 173, 169, 175, 177, 172, 174, 170, 176, 178, 167, 168, 192, 179, 186, 187, 188, 189, 180, 181, 182, 183, 184, 185, 135, - 136, 137, 138, 139, 140, 147, 606, 0, 608, 0, + 136, 137, 138, 139, 140, 147, 608, 0, 610, 0, 109, 108, 0, 120, 125, 154, 153, 151, 155, 0, - 148, 150, 156, 130, 202, 152, 518, 0, 603, 605, + 148, 150, 156, 130, 202, 152, 518, 0, 605, 607, 0, 525, 0, 0, 0, 97, 0, 94, 0, 107, 0, 116, 110, 118, 0, 119, 0, 95, 126, 100, - 0, 149, 131, 0, 195, 201, 1, 604, 0, 0, + 0, 149, 131, 0, 195, 201, 1, 606, 0, 0, 523, 144, 146, 0, 142, 193, 0, 0, 98, 0, - 0, 609, 111, 115, 117, 113, 121, 112, 0, 127, + 0, 611, 111, 115, 117, 113, 121, 112, 0, 127, 103, 0, 101, 0, 0, 0, 9, 0, 43, 42, 44, 41, 5, 6, 7, 8, 2, 16, 14, 15, 17, 10, 11, 12, 13, 3, 18, 37, 20, 25, @@ -1526,64 +1530,65 @@ static const yytype_int16 yydefact[] = 191, 0, 197, 45, 49, 52, 55, 60, 63, 65, 67, 69, 71, 73, 75, 0, 0, 99, 0, 553, 562, 566, 0, 0, 0, 587, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 45, 78, 91, 0, 540, - 0, 156, 130, 543, 564, 542, 550, 541, 0, 544, - 545, 568, 546, 575, 547, 548, 583, 549, 0, 114, - 0, 122, 0, 535, 129, 0, 0, 105, 0, 102, - 38, 39, 0, 22, 23, 0, 0, 28, 27, 0, - 206, 31, 33, 40, 0, 203, 0, 533, 0, 531, - 526, 528, 0, 93, 145, 143, 194, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 45, 78, 91, + 0, 540, 0, 156, 130, 543, 564, 542, 550, 541, + 0, 544, 545, 568, 546, 575, 547, 548, 583, 549, + 0, 114, 0, 122, 0, 535, 129, 0, 0, 105, + 0, 102, 38, 39, 0, 22, 23, 0, 0, 28, + 27, 0, 206, 31, 33, 40, 0, 203, 0, 533, + 0, 531, 526, 528, 0, 93, 145, 143, 194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 76, 198, 199, 0, - 0, 552, 0, 585, 598, 597, 0, 589, 0, 601, - 599, 0, 0, 0, 582, 602, 551, 81, 82, 84, - 83, 86, 87, 88, 89, 90, 85, 80, 0, 0, - 567, 563, 565, 569, 576, 584, 124, 0, 538, 0, - 128, 0, 106, 4, 0, 24, 21, 32, 205, 0, - 534, 0, 529, 524, 46, 47, 48, 51, 50, 53, - 54, 58, 59, 56, 57, 61, 62, 64, 66, 68, - 70, 72, 74, 0, 200, 613, 0, 611, 554, 0, - 0, 0, 0, 600, 0, 581, 79, 92, 123, 536, - 0, 104, 19, 530, 532, 0, 0, 0, 0, 0, - 573, 0, 0, 0, 0, 592, 591, 594, 560, 577, - 537, 539, 0, 0, 610, 612, 555, 0, 0, 0, - 593, 0, 0, 572, 0, 0, 570, 0, 77, 614, - 0, 557, 586, 556, 0, 595, 0, 560, 559, 561, - 579, 574, 0, 596, 590, 571, 580, 0, 588, 578 + 0, 0, 0, 0, 0, 0, 0, 0, 76, 198, + 199, 0, 0, 552, 0, 585, 598, 597, 0, 589, + 0, 601, 599, 0, 0, 0, 582, 602, 603, 604, + 551, 81, 82, 84, 83, 86, 87, 88, 89, 90, + 85, 80, 0, 0, 567, 563, 565, 569, 576, 584, + 124, 0, 538, 0, 128, 0, 106, 4, 0, 24, + 21, 32, 205, 0, 534, 0, 529, 524, 46, 47, + 48, 51, 50, 53, 54, 58, 59, 56, 57, 61, + 62, 64, 66, 68, 70, 72, 74, 0, 200, 615, + 0, 613, 554, 0, 0, 0, 0, 600, 0, 581, + 79, 92, 123, 536, 0, 104, 19, 530, 532, 0, + 0, 0, 0, 0, 573, 0, 0, 0, 0, 592, + 591, 594, 560, 577, 537, 539, 0, 0, 612, 614, + 555, 0, 0, 0, 593, 0, 0, 572, 0, 0, + 570, 0, 77, 616, 0, 557, 586, 556, 0, 595, + 0, 560, 559, 561, 579, 574, 0, 596, 590, 571, + 580, 0, 588, 578 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -728, -728, -728, -728, -728, -728, -728, -728, -728, -728, - -728, -728, 9352, -728, -87, -84, -154, -93, -30, -28, - -27, -26, -25, -31, -728, -86, -728, -99, -728, -111, - -126, 2, -728, -728, -728, 4, -728, -728, -728, 177, - 190, 179, -728, -728, -339, -728, -728, -728, -728, 95, - -728, -37, -46, -728, 9, -728, 0, -63, -728, -728, - -728, -728, 265, -728, -728, -728, -479, -149, 10, -74, - -212, -728, -103, -201, -727, -728, -145, -728, -728, -153, - -155, -728, -728, 198, -270, -97, -728, 47, -728, -120, - -728, 50, -728, -728, -728, -728, 51, -728, -728, -728, - -728, -728, -728, -728, -728, 216, -728, -728, -728, -728, - -108 + -732, -732, -732, -732, -732, -732, -732, -732, -732, -732, + -732, -732, 9402, -732, -90, -89, -153, -92, -29, -28, + -27, -26, -30, -25, -732, -88, -732, -101, -732, -113, + -132, 2, -732, -732, -732, 4, -732, -732, -732, 200, + 201, 202, -732, -732, -343, -732, -732, -732, -732, 92, + -732, -36, -46, -732, 9, -732, 0, -67, -732, -732, + -732, -732, 263, -732, -732, -732, -481, -142, 8, -78, + -214, -732, -107, -204, -731, -732, -149, -732, -732, -160, + -159, -732, -732, 212, -269, -104, -732, 45, -732, -127, + -732, 48, -732, -732, -732, -732, 49, -732, -732, -732, + -732, -732, -732, -732, -732, 210, -732, -732, -732, -732, + -116 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 465, 466, 467, 654, 468, 469, 470, 471, 472, - 473, 474, 525, 476, 494, 495, 496, 497, 498, 499, - 500, 501, 502, 503, 504, 526, 683, 527, 638, 528, - 584, 529, 367, 556, 443, 530, 369, 370, 371, 401, + -1, 465, 466, 467, 658, 468, 469, 470, 471, 472, + 473, 474, 527, 476, 494, 495, 496, 497, 498, 499, + 500, 501, 502, 503, 504, 528, 687, 529, 642, 530, + 586, 531, 367, 558, 443, 532, 369, 370, 371, 401, 402, 403, 372, 373, 374, 375, 376, 377, 423, 424, 378, 379, 380, 381, 477, 426, 478, 429, 414, 415, - 479, 384, 385, 386, 486, 419, 484, 485, 578, 579, - 554, 649, 533, 534, 535, 536, 537, 612, 709, 742, - 733, 734, 735, 743, 538, 539, 540, 541, 736, 713, - 542, 543, 737, 757, 544, 545, 546, 689, 616, 691, - 717, 731, 732, 547, 387, 388, 389, 398, 548, 686, - 687 + 479, 384, 385, 386, 486, 419, 484, 485, 580, 581, + 556, 653, 535, 536, 537, 538, 539, 614, 713, 746, + 737, 738, 739, 747, 540, 541, 542, 543, 740, 717, + 544, 545, 741, 761, 546, 547, 548, 693, 618, 695, + 721, 735, 736, 549, 387, 388, 389, 398, 550, 690, + 691 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1591,14 +1596,14 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 383, 741, 366, 574, 368, 427, 506, 582, 749, 382, - 427, 506, 393, 428, 507, 575, 394, 550, 555, 741, + 383, 745, 366, 427, 368, 584, 576, 512, 753, 382, + 515, 428, 516, 517, 406, 393, 520, 407, 577, 745, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 651, 397, 61, + 52, 53, 54, 55, 56, 57, 58, 655, 394, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, @@ -1624,179 +1629,180 @@ static const yytype_int16 yytable[] = 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 411, 404, 581, 562, 642, 646, 553, - 648, 505, 688, 650, 391, 439, 421, 594, 595, 605, - 711, 480, 399, 488, 406, 563, 564, 407, 411, 489, - 395, 512, 506, 404, 515, 400, 516, 517, 422, 647, - 520, 405, 549, 551, 571, -35, 392, 565, 711, 412, - 382, 566, 482, 596, 597, 606, 396, 383, 382, 366, - 418, 368, 321, 437, 413, 427, 382, 326, 327, 490, - 405, 583, 438, 707, 405, 491, 568, 708, 621, 382, - 623, 440, 569, 382, 441, 690, 653, 442, 718, 483, - 609, 719, 639, 752, 639, 592, 593, 639, 382, 639, - 532, 558, 408, 581, 559, 698, 411, 598, 599, 531, - 671, 672, 673, 674, 590, 639, 591, 482, 640, 482, - 420, 553, 661, 553, 655, 662, 553, 627, 628, 629, - 630, 631, 632, 633, 634, 635, 636, 425, 639, 661, - 657, 693, 703, 317, 318, 319, 699, 637, 700, 430, - 756, 427, 576, 481, 483, 435, 483, 642, 721, 639, - 695, 382, 436, 382, 487, 382, 587, 588, 589, 639, - 722, 557, 581, 667, 668, 675, 676, 692, 669, 670, - 567, 694, 572, 506, 660, 600, 577, 601, 602, 482, - 586, 603, 604, 607, 610, 613, 611, 614, 751, 615, - 617, 618, 622, 619, 624, 652, -36, 625, 532, 696, - 697, -34, 656, 626, -29, 482, 685, 531, 553, 684, - 702, 639, 706, 724, 726, 642, 483, 714, 728, 729, - 727, 739, -558, 740, 746, 382, 745, 759, 509, 750, - 677, 758, 705, 678, 682, 679, 747, 680, 710, 681, - 723, 433, 483, 434, 585, 390, 659, 704, 715, 748, - 432, 382, 755, 754, 716, 643, 431, 730, 644, 645, - 725, 553, 0, 417, 0, 0, 710, 0, 0, 0, - 0, 0, 532, 0, 482, 0, 532, 0, 744, 0, - 583, 531, 0, 738, 0, 531, 0, 0, 0, 0, - 0, 0, 0, 0, 753, 0, 0, 0, 0, 0, - 0, 553, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 483, 712, 0, 0, 0, 0, 0, 0, 0, - 382, 0, 0, 0, 0, 0, 411, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 712, 0, 0, 0, 0, 0, 0, 0, 532, 532, - 0, 532, 0, 0, 0, 0, 0, 531, 531, 0, - 531, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 412, 0, 0, 0, 0, 532, 0, 0, - 0, 382, 0, 0, 0, 0, 531, 0, 532, 0, - 0, 0, 0, 0, 0, 532, 0, 531, 0, 0, - 0, 0, 0, 0, 531, 0, 532, 0, 0, 0, - 532, 0, 0, 0, 0, 531, 532, 0, 0, 531, - 0, 0, 0, 416, 0, 531, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 312, 313, 314, 411, 564, 404, 646, 555, 650, 505, + 652, 439, 583, 654, 391, 692, 607, 480, 596, 597, + 715, 506, 437, 400, 427, 565, 566, 488, 411, 507, + 395, 438, 399, 489, 404, 408, 427, 506, 551, 553, + 421, 405, 573, 552, 557, -35, 392, 567, 715, 412, + 382, 568, 608, 482, 598, 599, 396, 383, 382, 366, + 418, 368, 321, 397, 422, 506, 382, 326, 327, 585, + 405, 490, 651, 413, 405, 570, 623, 491, 625, 382, + 657, 571, 420, 382, 694, 722, 643, 440, 611, 483, + 441, 643, 425, 442, 560, 723, 756, 561, 382, 711, + 534, 643, 643, 712, 430, 643, 411, 702, 644, 533, + 600, 601, 583, 675, 676, 677, 678, 435, 482, 665, + 482, 555, 666, 555, 659, 436, 555, 631, 632, 633, + 634, 635, 636, 637, 638, 639, 640, 427, 643, 665, + 661, 697, 707, 317, 318, 319, 481, 641, 589, 590, + 591, 592, 578, 593, 483, 760, 483, 703, 646, 704, + 725, 382, 487, 382, 559, 382, 594, 595, 643, 699, + 643, 726, 671, 672, 569, 673, 674, 696, 679, 680, + 574, 698, 664, 583, 506, 579, 588, 602, 603, 604, + 605, 606, 482, 609, 612, 615, 613, 616, 619, 617, + 755, 620, 624, 621, 626, 730, 656, 627, -36, 628, + 534, 700, 701, -34, 660, 629, 630, -29, 482, 533, + 555, 688, 689, 706, 643, 710, 646, 718, 483, 728, + 731, 732, 733, -558, 743, 750, 744, 382, 749, 509, + 754, 762, 763, 681, 709, 682, 685, 683, 727, 684, + 714, 587, 686, 390, 483, 751, 663, 708, 719, 752, + 758, 720, 759, 382, 734, 647, 729, 417, 648, 649, + 0, 432, 0, 555, 433, 0, 434, 0, 714, 0, + 431, 0, 0, 0, 534, 0, 0, 0, 534, 482, + 748, 0, 585, 533, 0, 742, 0, 533, 0, 0, + 0, 0, 0, 0, 0, 0, 757, 0, 0, 0, + 0, 0, 0, 555, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 483, 0, 716, 0, 0, + 0, 0, 0, 0, 382, 0, 0, 0, 0, 0, + 411, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 716, 0, 0, 0, 0, + 0, 0, 534, 534, 0, 534, 0, 0, 0, 0, + 0, 533, 533, 0, 533, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 412, 0, 0, 0, + 0, 534, 0, 0, 0, 382, 0, 0, 0, 0, + 533, 0, 534, 0, 0, 0, 0, 0, 0, 534, + 0, 533, 0, 0, 0, 0, 0, 0, 533, 0, + 534, 0, 0, 0, 534, 0, 0, 0, 0, 533, + 534, 0, 0, 533, 0, 0, 0, 416, 0, 533, + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 315, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 315, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 316, 317, 318, 319, - 320, 0, 0, 0, 0, 0, 0, 0, 0, 321, - 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, - 329, 330, 331, 332, 333, 0, 0, 0, 0, 0, - 0, 0, 0, 334, 0, 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, 361, 362, 363, 364, 365, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 0, 0, 444, 445, 0, 0, 0, 0, 0, 0, + 316, 317, 318, 319, 320, 0, 0, 0, 0, 0, + 0, 0, 0, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 446, 447, 0, 508, 0, 509, 510, 0, 0, - 0, 0, 511, 448, 449, 450, 451, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 316, 317, 318, 319, - 320, 0, 0, 0, 452, 453, 454, 455, 456, 321, - 322, 323, 324, 325, 326, 327, 512, 513, 514, 515, - 0, 516, 517, 518, 519, 520, 521, 522, 523, 328, + 0, 0, 0, 0, 0, 328, 329, 330, 331, 332, + 333, 0, 0, 0, 0, 0, 0, 0, 0, 334, + 0, 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, 361, 362, 363, + 364, 365, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 0, 0, 444, 445, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 446, 447, 0, + 508, 0, 509, 510, 0, 0, 0, 0, 511, 448, + 449, 450, 451, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 316, 317, 318, 319, 320, 0, 0, 0, + 452, 453, 454, 455, 456, 321, 322, 323, 324, 325, + 326, 327, 512, 513, 514, 515, 0, 516, 517, 518, + 519, 520, 521, 522, 523, 524, 525, 328, 329, 330, + 331, 332, 333, 457, 458, 459, 460, 461, 462, 463, + 464, 334, 526, 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, 361, + 362, 363, 364, 365, 1, 2, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 0, 0, + 444, 445, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 446, + 447, 0, 508, 0, 509, 645, 0, 0, 0, 0, + 511, 448, 449, 450, 451, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 316, 317, 318, 319, 320, 0, + 0, 0, 452, 453, 454, 455, 456, 321, 322, 323, + 324, 325, 326, 327, 512, 513, 514, 515, 0, 516, + 517, 518, 519, 520, 521, 522, 523, 524, 525, 328, 329, 330, 331, 332, 333, 457, 458, 459, 460, 461, - 462, 463, 464, 334, 524, 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, 361, 362, 363, 364, 365, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 0, 0, 444, 445, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 446, 447, 0, 508, 0, 509, 641, 0, 0, - 0, 0, 511, 448, 449, 450, 451, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 316, 317, 318, 319, - 320, 0, 0, 0, 452, 453, 454, 455, 456, 321, - 322, 323, 324, 325, 326, 327, 512, 513, 514, 515, - 0, 516, 517, 518, 519, 520, 521, 522, 523, 328, - 329, 330, 331, 332, 333, 457, 458, 459, 460, 461, - 462, 463, 464, 334, 524, 335, 336, 337, 338, 339, + 462, 463, 464, 334, 526, 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, 361, 362, 363, 364, 365, 1, 2, 3, 4, @@ -1838,182 +1844,183 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 316, 317, 318, 319, 320, 0, 0, 0, 452, 453, 454, 455, 456, 321, 322, 323, 324, 325, 326, 327, 512, 513, 514, 515, - 0, 516, 517, 518, 519, 520, 521, 522, 523, 328, - 329, 330, 331, 332, 333, 457, 458, 459, 460, 461, - 462, 463, 464, 334, 524, 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, 361, 362, 363, 364, 365, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 0, 0, 444, 445, 0, 0, 0, 0, 0, 0, + 0, 516, 517, 518, 519, 520, 521, 522, 523, 524, + 525, 328, 329, 330, 331, 332, 333, 457, 458, 459, + 460, 461, 462, 463, 464, 334, 526, 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, 361, 362, 363, 364, 365, 1, 2, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 0, 0, 444, 445, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 446, 447, 0, 508, 0, 430, 0, 0, 0, - 0, 0, 511, 448, 449, 450, 451, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 316, 317, 318, 319, - 320, 0, 0, 0, 452, 453, 454, 455, 456, 321, - 322, 323, 324, 325, 326, 327, 512, 513, 514, 515, - 0, 516, 517, 518, 519, 520, 521, 522, 523, 328, - 329, 330, 331, 332, 333, 457, 458, 459, 460, 461, - 462, 463, 464, 334, 524, 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, 361, 362, 363, 364, 365, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 0, 0, 444, 445, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 446, 447, 0, 508, 0, 430, 0, + 0, 0, 0, 0, 511, 448, 449, 450, 451, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 316, 317, + 318, 319, 320, 0, 0, 0, 452, 453, 454, 455, + 456, 321, 322, 323, 324, 325, 326, 327, 512, 513, + 514, 515, 0, 516, 517, 518, 519, 520, 521, 522, + 523, 524, 525, 328, 329, 330, 331, 332, 333, 457, + 458, 459, 460, 461, 462, 463, 464, 334, 526, 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, 361, 362, 363, 364, 365, + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 0, 0, 444, 445, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 446, 447, 0, 508, 0, 0, 0, 0, 0, - 0, 0, 511, 448, 449, 450, 451, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 316, 317, 318, 319, - 320, 0, 0, 0, 452, 453, 454, 455, 456, 321, - 322, 323, 324, 325, 326, 327, 512, 513, 514, 515, - 0, 516, 517, 518, 519, 520, 521, 522, 523, 328, - 329, 330, 331, 332, 333, 457, 458, 459, 460, 461, - 462, 463, 464, 334, 524, 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, 361, 362, 363, 364, 365, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 0, 0, 444, 445, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 446, 447, 0, 508, 0, + 0, 0, 0, 0, 0, 0, 511, 448, 449, 450, + 451, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 316, 317, 318, 319, 320, 0, 0, 0, 452, 453, + 454, 455, 456, 321, 322, 323, 324, 325, 326, 327, + 512, 513, 514, 515, 0, 516, 517, 518, 519, 520, + 521, 522, 523, 524, 525, 328, 329, 330, 331, 332, + 333, 457, 458, 459, 460, 461, 462, 463, 464, 334, + 526, 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, 361, 362, 363, + 364, 365, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 0, 0, 444, 445, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 446, 447, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 511, 448, 449, 450, 451, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 316, 317, 318, 319, - 320, 0, 0, 0, 452, 453, 454, 455, 456, 321, - 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, - 329, 330, 331, 332, 333, 457, 458, 459, 460, 461, - 462, 463, 464, 334, 0, 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, 361, 362, 363, 364, 365, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 0, 0, 444, 445, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 446, 447, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 448, 449, 450, 451, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 316, 317, 318, 319, - 0, 0, 0, 0, 452, 453, 454, 455, 456, 321, - 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 446, 447, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 511, 448, + 449, 450, 451, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 316, 317, 318, 319, 320, 0, 0, 0, + 452, 453, 454, 455, 456, 321, 322, 323, 324, 325, + 326, 327, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 328, 329, 330, + 331, 332, 333, 457, 458, 459, 460, 461, 462, 463, + 464, 334, 0, 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, 361, + 362, 363, 364, 365, 1, 2, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 0, 0, + 444, 445, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 446, + 447, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 448, 449, 450, 451, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 316, 317, 318, 319, 0, 0, + 0, 0, 452, 453, 454, 455, 456, 321, 322, 323, + 324, 325, 326, 327, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, 329, 330, 331, 332, 333, 457, 458, 459, 460, 461, 462, 463, 464, 334, 0, 335, 336, 337, 338, 339, @@ -2058,182 +2065,183 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 316, 317, 318, 319, 320, 0, 0, 0, 0, 0, 0, 0, 0, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, - 329, 330, 331, 332, 333, 0, 0, 0, 0, 0, - 0, 0, 0, 334, 0, 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, 361, 362, 363, 364, 365, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 328, 329, 330, 331, 332, 333, 0, 0, 0, + 0, 0, 0, 0, 0, 334, 0, 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, 361, 362, 363, 364, 365, 1, 2, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 409, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 316, 317, + 318, 319, 0, 0, 0, 0, 0, 0, 0, 0, + 410, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 409, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 316, 317, 318, 319, - 0, 0, 0, 0, 0, 0, 0, 0, 410, 321, - 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, - 329, 330, 331, 332, 333, 0, 0, 0, 0, 0, - 0, 0, 0, 334, 0, 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, 361, 362, 363, 364, 365, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 0, 0, 0, 328, 329, 330, 331, 332, 333, 0, + 0, 0, 0, 0, 0, 0, 0, 334, 0, 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, 361, 362, 363, 364, 365, + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 580, 0, 0, + 0, 582, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 316, 317, 318, 319, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, - 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, - 329, 330, 331, 332, 333, 0, 0, 0, 0, 0, - 0, 0, 0, 334, 0, 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, 361, 362, 363, 364, 365, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 316, 317, 318, 319, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 321, 322, 323, 324, 325, 326, 327, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 328, 329, 330, 331, 332, + 333, 0, 0, 0, 0, 0, 0, 0, 0, 334, + 0, 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, 361, 362, 363, + 364, 365, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 663, 0, 0, + 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 316, 317, 318, 319, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, - 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, - 329, 330, 331, 332, 333, 0, 0, 0, 0, 0, - 0, 0, 0, 334, 0, 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, 361, 362, 363, 364, 365, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 0, 0, 316, 317, 318, 319, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 321, 322, 323, 324, 325, + 326, 327, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 328, 329, 330, + 331, 332, 333, 0, 0, 0, 0, 0, 0, 0, + 0, 334, 0, 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, 361, + 362, 363, 364, 365, 1, 2, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 701, 0, 0, + 0, 0, 0, 0, 0, 705, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 316, 317, 318, 319, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, - 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, + 0, 0, 0, 0, 316, 317, 318, 319, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 321, 322, 323, + 324, 325, 326, 327, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, 329, 330, 331, 332, 333, 0, 0, 0, 0, 0, 0, 0, 0, 334, 0, 335, 336, 337, 338, 339, @@ -2278,50 +2286,135 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 316, 317, 318, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, 322, 323, 324, 325, 326, 327, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 328, - 329, 330, 331, 332, 333, 0, 0, 0, 0, 0, - 0, 0, 0, 334, 0, 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, 361, 362, 363, 364, 365, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 0, 0, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 0, - 0, 444, 445, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 446, 447, 0, 0, 0, 552, 720, 0, 0, 0, - 0, 0, 448, 449, 450, 451, 0, 0, 0, 0, + 0, 328, 329, 330, 331, 332, 333, 0, 0, 0, + 0, 0, 0, 0, 0, 334, 0, 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, 361, 362, 363, 364, 365, 2, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 0, 0, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 0, 0, 444, 445, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 452, 453, 454, 455, 456, 321, 0, - 0, 0, 0, 326, 327, 0, 0, 0, 0, 0, + 0, 0, 446, 447, 0, 0, 0, 554, 724, 0, + 0, 0, 0, 0, 448, 449, 450, 451, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 452, 453, 454, 455, 456, + 321, 0, 0, 0, 0, 326, 327, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 457, 458, + 459, 460, 461, 462, 463, 464, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 347, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 0, 0, 444, 445, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 446, 447, 0, 0, 492, + 0, 0, 0, 0, 0, 0, 0, 448, 449, 450, + 451, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 452, 453, + 454, 455, 456, 321, 0, 0, 0, 0, 326, 327, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 457, 458, 459, 460, 461, 462, 463, 464, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 347, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 0, 0, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 0, 0, 444, + 445, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 446, 447, + 0, 0, 0, 554, 0, 0, 0, 0, 0, 0, + 448, 449, 450, 451, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 452, 453, 454, 455, 456, 321, 0, 0, 0, + 0, 326, 327, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 457, 458, 459, 460, 461, 462, 463, 464, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2359,95 +2452,11 @@ static const yytype_int16 yytable[] = 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 0, 0, 444, 445, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 446, 447, 0, 0, 492, 0, 0, 0, 0, + 0, 446, 447, 0, 0, 610, 0, 0, 0, 0, 0, 0, 0, 448, 449, 450, 451, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 452, 453, 454, 455, 456, 321, 0, 0, 0, 0, 326, 327, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 457, 458, 459, 460, 461, - 462, 463, 464, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 347, 2, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 0, 0, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 0, 0, 444, 445, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 446, 447, 0, 0, 0, 552, 0, 0, - 0, 0, 0, 0, 448, 449, 450, 451, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 452, 453, 454, 455, 456, - 321, 0, 0, 0, 0, 326, 327, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 457, 458, 459, 460, - 461, 462, 463, 464, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 347, 2, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 0, 0, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 0, 0, 444, 445, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 446, 447, 0, 0, 608, 0, 0, - 0, 0, 0, 0, 0, 448, 449, 450, 451, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 452, 453, 454, 455, - 456, 321, 0, 0, 0, 0, 326, 327, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 457, 458, 459, 460, 461, 462, 463, 464, 0, 0, 0, 0, 0, @@ -2486,107 +2495,108 @@ static const yytype_int16 yytable[] = 312, 313, 314, 0, 0, 444, 445, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 446, 447, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 620, 448, 449, 450, 451, + 0, 0, 0, 0, 0, 622, 448, 449, 450, 451, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 452, 453, 454, 455, 456, 321, 0, 0, 0, 0, 326, 327, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 457, 458, - 459, 460, 461, 462, 463, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 347, 2, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 0, 0, 444, 445, 0, 0, + 457, 458, 459, 460, 461, 462, 463, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 446, 447, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 448, 449, 450, - 451, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 452, 453, - 454, 455, 456, 321, 0, 0, 0, 0, 326, 327, + 0, 0, 347, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 0, 0, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 0, 0, 444, 445, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 457, - 458, 459, 460, 461, 462, 463, 464, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 446, 447, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 448, + 449, 450, 451, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 347, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, - 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 475, 0, 444, 445, 0, + 452, 453, 454, 455, 456, 321, 0, 0, 0, 0, + 326, 327, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 457, 458, 459, 460, 461, 462, 463, + 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 347, 2, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 0, 0, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 0, + 0, 444, 445, 0, 0, 475, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 493, - 0, 0, 0, 0, 0, 0, 446, 447, 0, 0, - 0, 0, 0, 0, 0, 0, 560, 561, 448, 449, - 450, 451, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 452, - 453, 454, 455, 456, 321, 0, 0, 0, 573, 326, - 570, 0, 0, 0, 0, 0, 0, 0, 0, 493, + 446, 447, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 448, 449, 450, 451, 562, 563, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 457, 458, 459, 460, 461, 462, 463, 464, 493, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 347, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 452, 453, 454, 455, 456, 321, 0, + 0, 0, 0, 326, 572, 0, 0, 0, 575, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 493, + 0, 0, 0, 0, 0, 0, 457, 458, 459, 460, + 461, 462, 463, 464, 0, 0, 0, 0, 493, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 347, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 658, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 664, - 665, 666, 493, 493, 493, 493, 493, 493, 493, 493, - 493, 493, 493, 493, 493, 493, 493, 493, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 662, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 668, 669, 670, 493, 493, 493, 493, 493, 493, + 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2596,19 +2606,20 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 493 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 493 }; static const yytype_int16 yycheck[] = { - 0, 728, 0, 346, 0, 341, 341, 486, 735, 0, - 341, 341, 339, 349, 349, 358, 339, 348, 348, 746, + 0, 732, 0, 341, 0, 486, 346, 383, 739, 0, + 386, 349, 388, 389, 346, 339, 392, 349, 358, 750, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 556, 349, 63, + 54, 55, 56, 57, 58, 59, 60, 558, 339, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, @@ -2634,182 +2645,183 @@ static const yytype_int16 yycheck[] = 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 379, 371, 484, 447, 538, 550, 438, - 552, 427, 612, 555, 343, 408, 375, 321, 322, 326, - 689, 414, 340, 340, 346, 319, 320, 349, 404, 346, - 349, 383, 341, 400, 386, 346, 388, 389, 397, 348, - 392, 371, 435, 436, 473, 339, 375, 341, 717, 379, - 371, 345, 419, 357, 358, 362, 375, 387, 379, 387, - 390, 387, 376, 339, 357, 341, 387, 381, 382, 340, - 400, 487, 348, 342, 404, 346, 340, 346, 519, 400, - 521, 343, 346, 404, 346, 616, 340, 349, 340, 419, - 506, 340, 346, 340, 346, 317, 318, 346, 419, 346, - 430, 346, 375, 582, 349, 647, 482, 323, 324, 430, - 594, 595, 596, 597, 351, 346, 353, 484, 349, 486, - 343, 550, 346, 552, 565, 349, 555, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 375, 346, 346, - 569, 349, 349, 364, 365, 366, 344, 348, 346, 343, - 750, 341, 482, 349, 484, 375, 486, 688, 700, 346, - 347, 482, 375, 484, 348, 486, 354, 355, 356, 346, - 347, 375, 651, 590, 591, 598, 599, 618, 592, 593, - 340, 622, 339, 341, 577, 361, 375, 360, 359, 556, - 375, 325, 327, 342, 341, 339, 344, 349, 740, 349, - 339, 339, 339, 349, 347, 375, 339, 349, 538, 638, - 639, 339, 375, 349, 340, 582, 375, 538, 647, 342, - 342, 346, 339, 342, 344, 756, 556, 383, 340, 339, - 375, 340, 343, 348, 340, 556, 349, 344, 343, 343, - 600, 349, 683, 601, 605, 602, 387, 603, 689, 604, - 706, 404, 582, 404, 489, 320, 576, 661, 691, 734, - 400, 582, 747, 746, 691, 548, 398, 717, 548, 548, - 708, 700, -1, 387, -1, -1, 717, -1, -1, -1, - -1, -1, 612, -1, 651, -1, 616, -1, 729, -1, - 706, 612, -1, 722, -1, 616, -1, -1, -1, -1, - -1, -1, -1, -1, 745, -1, -1, -1, -1, -1, - -1, 740, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 651, 689, -1, -1, -1, -1, -1, -1, -1, - 651, -1, -1, -1, -1, -1, 712, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 717, -1, -1, -1, -1, -1, -1, -1, 688, 689, - -1, 691, -1, -1, -1, -1, -1, 688, 689, -1, - 691, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 712, -1, -1, -1, -1, 717, -1, -1, - -1, 712, -1, -1, -1, -1, 717, -1, 728, -1, - -1, -1, -1, -1, -1, 735, -1, 728, -1, -1, - -1, -1, -1, -1, 735, -1, 746, -1, -1, -1, - 750, -1, -1, -1, -1, 746, 756, -1, -1, 750, - -1, -1, -1, 0, -1, 756, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 314, 315, 316, 379, 447, 371, 540, 438, 552, 427, + 554, 408, 484, 557, 343, 614, 326, 414, 321, 322, + 693, 341, 339, 346, 341, 319, 320, 340, 404, 349, + 349, 348, 340, 346, 400, 375, 341, 341, 435, 436, + 375, 371, 473, 348, 348, 339, 375, 341, 721, 379, + 371, 345, 362, 419, 357, 358, 375, 387, 379, 387, + 390, 387, 376, 349, 399, 341, 387, 381, 382, 487, + 400, 340, 348, 357, 404, 340, 519, 346, 521, 400, + 340, 346, 343, 404, 618, 340, 346, 343, 506, 419, + 346, 346, 375, 349, 346, 340, 340, 349, 419, 342, + 430, 346, 346, 346, 343, 346, 482, 651, 349, 430, + 323, 324, 584, 596, 597, 598, 599, 375, 484, 346, + 486, 552, 349, 554, 567, 375, 557, 328, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 341, 346, 346, + 571, 349, 349, 364, 365, 366, 349, 348, 354, 355, + 356, 351, 482, 353, 484, 754, 486, 344, 692, 346, + 704, 482, 348, 484, 375, 486, 317, 318, 346, 347, + 346, 347, 592, 593, 340, 594, 595, 620, 600, 601, + 339, 624, 579, 655, 341, 375, 375, 361, 360, 359, + 325, 327, 558, 342, 341, 339, 344, 349, 339, 349, + 744, 339, 339, 349, 347, 344, 375, 349, 339, 349, + 540, 642, 643, 339, 375, 349, 349, 340, 584, 540, + 651, 342, 375, 342, 346, 339, 760, 383, 558, 342, + 375, 340, 339, 343, 340, 340, 348, 558, 349, 343, + 343, 349, 344, 602, 687, 603, 606, 604, 710, 605, + 693, 489, 607, 320, 584, 387, 578, 665, 695, 738, + 750, 695, 751, 584, 721, 550, 712, 387, 550, 550, + -1, 400, -1, 704, 404, -1, 404, -1, 721, -1, + 398, -1, -1, -1, 614, -1, -1, -1, 618, 655, + 733, -1, 710, 614, -1, 726, -1, 618, -1, -1, + -1, -1, -1, -1, -1, -1, 749, -1, -1, -1, + -1, -1, -1, 744, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 655, -1, 693, -1, -1, + -1, -1, -1, -1, 655, -1, -1, -1, -1, -1, + 716, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 721, -1, -1, -1, -1, + -1, -1, 692, 693, -1, 695, -1, -1, -1, -1, + -1, 692, 693, -1, 695, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 716, -1, -1, -1, + -1, 721, -1, -1, -1, 716, -1, -1, -1, -1, + 721, -1, 732, -1, -1, -1, -1, -1, -1, 739, + -1, 732, -1, -1, -1, -1, -1, -1, 739, -1, + 750, -1, -1, -1, 754, -1, -1, -1, -1, 750, + 760, -1, -1, 754, -1, -1, -1, 0, -1, 760, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 349, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 349, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 363, 364, 365, 366, - 367, -1, -1, -1, -1, -1, -1, -1, -1, 376, - 377, 378, 379, 380, 381, 382, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 396, - 397, 398, 399, 400, 401, -1, -1, -1, -1, -1, - -1, -1, -1, 410, -1, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - -1, -1, 319, 320, -1, -1, -1, -1, -1, -1, + 363, 364, 365, 366, 367, -1, -1, -1, -1, -1, + -1, -1, -1, 376, 377, 378, 379, 380, 381, 382, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 338, 339, -1, 341, -1, 343, 344, -1, -1, - -1, -1, 349, 350, 351, 352, 353, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 363, 364, 365, 366, - 367, -1, -1, -1, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - -1, -1, 319, 320, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 398, 399, 400, 401, 402, + 403, -1, -1, -1, -1, -1, -1, -1, -1, 412, + -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, -1, -1, 319, 320, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 338, 339, -1, 341, -1, 343, 344, -1, -1, - -1, -1, 349, 350, 351, 352, 353, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 363, 364, 365, 366, - 367, -1, -1, -1, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 3, 4, 5, 6, + -1, -1, -1, -1, -1, -1, -1, 338, 339, -1, + 341, -1, 343, 344, -1, -1, -1, -1, 349, 350, + 351, 352, 353, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 363, 364, 365, 366, 367, -1, -1, -1, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 382, 383, 384, 385, 386, -1, 388, 389, 390, + 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, -1, -1, + 319, 320, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 338, + 339, -1, 341, -1, 343, 344, -1, -1, -1, -1, + 349, 350, 351, 352, 353, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 363, 364, 365, 366, 367, -1, + -1, -1, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 382, 383, 384, 385, 386, -1, 388, + 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, + 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, + 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, @@ -2853,183 +2865,184 @@ static const yytype_int16 yycheck[] = 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - -1, -1, 319, 320, -1, -1, -1, -1, -1, -1, + 437, 438, 439, 440, 441, 442, 443, 444, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, -1, -1, 319, 320, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 338, 339, -1, 341, -1, 343, -1, -1, -1, - -1, -1, 349, 350, 351, 352, 353, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 363, 364, 365, 366, - 367, -1, -1, -1, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - -1, -1, 319, 320, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 338, 339, -1, 341, -1, 343, -1, + -1, -1, -1, -1, 349, 350, 351, 352, 353, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 363, 364, + 365, 366, 367, -1, -1, -1, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, -1, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, -1, -1, 319, 320, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 338, 339, -1, 341, -1, -1, -1, -1, -1, - -1, -1, 349, 350, 351, 352, 353, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 363, 364, 365, 366, - 367, -1, -1, -1, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - -1, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - -1, -1, 319, 320, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 338, 339, -1, 341, -1, + -1, -1, -1, -1, -1, -1, 349, 350, 351, 352, + 353, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 363, 364, 365, 366, 367, -1, -1, -1, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, -1, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, -1, -1, 319, 320, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 338, 339, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 349, 350, 351, 352, 353, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 363, 364, 365, 366, - 367, -1, -1, -1, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 396, - 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, -1, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - -1, -1, 319, 320, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 338, 339, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 350, 351, 352, 353, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 363, 364, 365, 366, - -1, -1, -1, -1, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 396, - 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, -1, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 3, 4, 5, 6, + -1, -1, -1, -1, -1, -1, -1, 338, 339, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 349, 350, + 351, 352, 353, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 363, 364, 365, 366, 367, -1, -1, -1, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 382, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 398, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 412, -1, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, -1, -1, + 319, 320, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 338, + 339, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 350, 351, 352, 353, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 363, 364, 365, 366, -1, -1, + -1, -1, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 382, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 398, + 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 411, 412, -1, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, + 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, @@ -3068,188 +3081,189 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, 363, 364, 365, 366, 367, -1, -1, -1, -1, -1, -1, -1, -1, 376, 377, 378, 379, 380, 381, 382, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 396, - 397, 398, 399, 400, 401, -1, -1, -1, -1, -1, - -1, -1, -1, 410, -1, 412, 413, 414, 415, 416, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 398, 399, 400, 401, 402, 403, -1, -1, -1, + -1, -1, -1, -1, -1, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 437, 438, 439, 440, 441, 442, 443, 444, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 349, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 363, 364, + 365, 366, -1, -1, -1, -1, -1, -1, -1, -1, + 375, 376, 377, 378, 379, 380, 381, 382, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 349, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 363, 364, 365, 366, - -1, -1, -1, -1, -1, -1, -1, -1, 375, 376, - 377, 378, 379, 380, 381, 382, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 396, - 397, 398, 399, 400, 401, -1, -1, -1, -1, -1, - -1, -1, -1, 410, -1, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + -1, -1, -1, 398, 399, 400, 401, 402, 403, -1, + -1, -1, -1, -1, -1, -1, -1, 412, -1, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 344, -1, -1, + -1, 344, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 363, 364, 365, 366, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 376, - 377, 378, 379, 380, 381, 382, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 396, - 397, 398, 399, 400, 401, -1, -1, -1, -1, -1, - -1, -1, -1, 410, -1, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 363, 364, 365, 366, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 376, 377, 378, 379, 380, 381, 382, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 398, 399, 400, 401, 402, + 403, -1, -1, -1, -1, -1, -1, -1, -1, 412, + -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 344, -1, -1, + -1, -1, -1, 344, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 363, 364, 365, 366, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 376, - 377, 378, 379, 380, 381, 382, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 396, - 397, 398, 399, 400, 401, -1, -1, -1, -1, -1, - -1, -1, -1, 410, -1, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + -1, -1, 363, 364, 365, 366, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 376, 377, 378, 379, 380, + 381, 382, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 398, 399, 400, + 401, 402, 403, -1, -1, -1, -1, -1, -1, -1, + -1, 412, -1, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 344, -1, -1, + -1, -1, -1, -1, -1, 344, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 363, 364, 365, 366, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 376, - 377, 378, 379, 380, 381, 382, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 396, - 397, 398, 399, 400, 401, -1, -1, -1, -1, -1, - -1, -1, -1, 410, -1, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 3, 4, 5, 6, + -1, -1, -1, -1, 363, 364, 365, 366, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 376, 377, 378, + 379, 380, 381, 382, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 398, + 399, 400, 401, 402, 403, -1, -1, -1, -1, -1, + -1, -1, -1, 412, -1, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, + 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, @@ -3288,54 +3302,139 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, 363, 364, 365, 366, -1, -1, -1, -1, -1, -1, -1, -1, -1, 376, 377, 378, 379, 380, 381, 382, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 396, - 397, 398, 399, 400, 401, -1, -1, -1, -1, -1, - -1, -1, -1, 410, -1, 412, 413, 414, 415, 416, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 398, 399, 400, 401, 402, 403, -1, -1, -1, + -1, -1, -1, -1, -1, 412, -1, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, -1, -1, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - -1, 319, 320, -1, -1, -1, -1, -1, -1, -1, + 437, 438, 439, 440, 441, 442, 443, 444, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, -1, -1, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, -1, -1, 319, 320, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 338, 339, -1, -1, -1, 343, 344, -1, -1, -1, - -1, -1, 350, 351, 352, 353, -1, -1, -1, -1, + -1, -1, 338, 339, -1, -1, -1, 343, 344, -1, + -1, -1, -1, -1, 350, 351, 352, 353, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 371, 372, 373, 374, 375, 376, -1, - -1, -1, -1, 381, 382, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 371, 372, 373, 374, 375, + 376, -1, -1, -1, -1, 381, 382, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 402, 403, 404, 405, 406, 407, - 408, 409, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 424, 4, 5, 6, + -1, -1, -1, -1, -1, -1, -1, -1, 404, 405, + 406, 407, 408, 409, 410, 411, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 426, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, -1, -1, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, -1, -1, 319, 320, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 338, 339, -1, -1, 342, + -1, -1, -1, -1, -1, -1, -1, 350, 351, 352, + 353, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 371, 372, + 373, 374, 375, 376, -1, -1, -1, -1, 381, 382, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 404, 405, 406, 407, 408, 409, 410, 411, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 426, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, -1, -1, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, -1, -1, 319, + 320, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 338, 339, + -1, -1, -1, 343, -1, -1, -1, -1, -1, -1, + 350, 351, 352, 353, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 371, 372, 373, 374, 375, 376, -1, -1, -1, + -1, 381, 382, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 404, 405, 406, 407, 408, 409, + 410, 411, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 426, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, @@ -3375,93 +3474,9 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, 371, 372, 373, 374, 375, 376, -1, -1, -1, -1, 381, 382, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 402, 403, 404, 405, 406, - 407, 408, 409, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 424, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, -1, -1, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, -1, -1, 319, 320, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 338, 339, -1, -1, -1, 343, -1, -1, - -1, -1, -1, -1, 350, 351, 352, 353, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 371, 372, 373, 374, 375, - 376, -1, -1, -1, -1, 381, 382, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 402, 403, 404, 405, - 406, 407, 408, 409, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 424, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, -1, -1, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, -1, -1, 319, 320, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 338, 339, -1, -1, 342, -1, -1, - -1, -1, -1, -1, -1, 350, 351, 352, 353, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 371, 372, 373, 374, - 375, 376, -1, -1, -1, -1, 381, 382, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 402, 403, 404, - 405, 406, 407, 408, 409, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 424, + -1, -1, -1, -1, -1, -1, -1, 404, 405, 406, + 407, 408, 409, 410, 411, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 426, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, @@ -3501,102 +3516,103 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, -1, 371, 372, 373, 374, 375, 376, -1, -1, -1, -1, 381, 382, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 402, 403, - 404, 405, 406, 407, 408, 409, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 424, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, -1, -1, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, -1, 319, 320, -1, -1, + 404, 405, 406, 407, 408, 409, 410, 411, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 338, 339, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 350, 351, 352, - 353, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 371, 372, - 373, 374, 375, 376, -1, -1, -1, -1, 381, 382, + -1, -1, 426, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + -1, -1, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, -1, -1, 319, 320, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 402, - 403, 404, 405, 406, 407, 408, 409, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 338, 339, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 350, + 351, 352, 353, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 424, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, -1, - -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 413, -1, 319, 320, -1, + 371, 372, 373, 374, 375, 376, -1, -1, -1, -1, + 381, 382, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 404, 405, 406, 407, 408, 409, 410, + 411, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 426, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, -1, -1, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, + -1, 319, 320, -1, -1, 413, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 427, - -1, -1, -1, -1, -1, -1, 338, 339, -1, -1, - -1, -1, -1, -1, -1, -1, 444, 445, 350, 351, - 352, 353, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 371, - 372, 373, 374, 375, 376, -1, -1, -1, 476, 381, - 382, -1, -1, -1, -1, -1, -1, -1, -1, 487, + 338, 339, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 350, 351, 352, 353, 444, 445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 402, 403, 404, 405, 406, 407, 408, 409, 506, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 424, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 371, 372, 373, 374, 375, 376, -1, + -1, -1, -1, 381, 382, -1, -1, -1, 476, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 487, + -1, -1, -1, -1, -1, -1, 404, 405, 406, 407, + 408, 409, 410, 411, -1, -1, -1, -1, 506, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 426, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 574, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 587, - 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, - 598, 599, 600, 601, 602, 603, 604, 605, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 576, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 589, 590, 591, 592, 593, 594, 595, 596, 597, + 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -3606,7 +3622,8 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 706 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 710 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -3645,117 +3662,118 @@ static const yytype_int16 yystos[] = 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 349, 363, 364, 365, 366, - 367, 376, 377, 378, 379, 380, 381, 382, 396, 397, - 398, 399, 400, 401, 410, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 474, 475, 478, 479, - 480, 481, 485, 486, 487, 488, 489, 490, 493, 494, - 495, 496, 497, 499, 504, 505, 506, 547, 548, 549, - 505, 343, 375, 339, 339, 349, 375, 349, 550, 340, - 346, 482, 483, 484, 494, 499, 346, 349, 375, 349, - 375, 495, 499, 357, 501, 502, 0, 548, 499, 508, - 343, 375, 397, 491, 492, 375, 498, 341, 349, 500, - 343, 526, 483, 482, 484, 375, 375, 339, 348, 500, - 343, 346, 349, 477, 319, 320, 338, 339, 350, 351, - 352, 353, 371, 372, 373, 374, 375, 402, 403, 404, - 405, 406, 407, 408, 409, 444, 445, 446, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 497, 499, 503, - 500, 349, 494, 499, 509, 510, 507, 348, 340, 346, - 340, 346, 342, 455, 457, 458, 459, 460, 461, 462, - 463, 464, 465, 466, 467, 468, 341, 349, 341, 343, + 367, 376, 377, 378, 379, 380, 381, 382, 398, 399, + 400, 401, 402, 403, 412, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, + 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 476, 477, 480, 481, + 482, 483, 487, 488, 489, 490, 491, 492, 495, 496, + 497, 498, 499, 501, 506, 507, 508, 549, 550, 551, + 507, 343, 375, 339, 339, 349, 375, 349, 552, 340, + 346, 484, 485, 486, 496, 501, 346, 349, 375, 349, + 375, 497, 501, 357, 503, 504, 0, 550, 501, 510, + 343, 375, 399, 493, 494, 375, 500, 341, 349, 502, + 343, 528, 485, 484, 486, 375, 375, 339, 348, 502, + 343, 346, 349, 479, 319, 320, 338, 339, 350, 351, + 352, 353, 371, 372, 373, 374, 375, 404, 405, 406, + 407, 408, 409, 410, 411, 446, 447, 448, 450, 451, + 452, 453, 454, 455, 456, 457, 458, 499, 501, 505, + 502, 349, 496, 501, 511, 512, 509, 348, 340, 346, + 340, 346, 342, 457, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 341, 349, 341, 343, 344, 349, 383, 384, 385, 386, 388, 389, 390, 391, - 392, 393, 394, 395, 411, 455, 468, 470, 472, 474, - 478, 497, 499, 515, 516, 517, 518, 519, 527, 528, - 529, 530, 533, 534, 537, 538, 539, 546, 551, 500, - 348, 500, 343, 470, 513, 348, 476, 375, 346, 349, - 455, 455, 472, 319, 320, 341, 345, 340, 340, 346, - 382, 470, 339, 455, 346, 358, 499, 375, 511, 512, - 344, 510, 509, 468, 473, 492, 375, 354, 355, 356, - 351, 353, 317, 318, 321, 322, 357, 358, 323, 324, - 361, 360, 359, 325, 327, 326, 362, 342, 342, 468, - 341, 344, 520, 339, 349, 349, 541, 339, 339, 349, - 349, 472, 339, 472, 347, 349, 349, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 348, 471, 346, - 349, 344, 516, 530, 534, 539, 513, 348, 513, 514, - 513, 509, 375, 340, 447, 472, 375, 470, 455, 511, - 500, 346, 349, 344, 455, 455, 455, 457, 457, 458, - 458, 459, 459, 459, 459, 460, 460, 461, 462, 463, - 464, 465, 466, 469, 342, 375, 552, 553, 527, 540, - 516, 542, 472, 349, 472, 347, 470, 470, 513, 344, - 346, 344, 342, 349, 512, 472, 339, 342, 346, 521, - 472, 487, 494, 532, 383, 515, 528, 543, 340, 340, - 344, 513, 347, 473, 342, 553, 344, 375, 340, 339, - 532, 544, 545, 523, 524, 525, 531, 535, 470, 340, - 348, 517, 522, 526, 472, 349, 340, 387, 519, 517, - 343, 513, 340, 472, 522, 523, 527, 536, 349, 344 + 392, 393, 394, 395, 396, 397, 413, 457, 470, 472, + 474, 476, 480, 499, 501, 517, 518, 519, 520, 521, + 529, 530, 531, 532, 535, 536, 539, 540, 541, 548, + 553, 502, 348, 502, 343, 472, 515, 348, 478, 375, + 346, 349, 457, 457, 474, 319, 320, 341, 345, 340, + 340, 346, 382, 472, 339, 457, 346, 358, 501, 375, + 513, 514, 344, 512, 511, 470, 475, 494, 375, 354, + 355, 356, 351, 353, 317, 318, 321, 322, 357, 358, + 323, 324, 361, 360, 359, 325, 327, 326, 362, 342, + 342, 470, 341, 344, 522, 339, 349, 349, 543, 339, + 339, 349, 349, 474, 339, 474, 347, 349, 349, 349, + 349, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 348, 473, 346, 349, 344, 518, 532, 536, 541, + 515, 348, 515, 516, 515, 511, 375, 340, 449, 474, + 375, 472, 457, 513, 502, 346, 349, 344, 457, 457, + 457, 459, 459, 460, 460, 461, 461, 461, 461, 462, + 462, 463, 464, 465, 466, 467, 468, 471, 342, 375, + 554, 555, 529, 542, 518, 544, 474, 349, 474, 347, + 472, 472, 515, 344, 346, 344, 342, 349, 514, 474, + 339, 342, 346, 523, 474, 489, 496, 534, 383, 517, + 530, 545, 340, 340, 344, 515, 347, 475, 342, 555, + 344, 375, 340, 339, 534, 546, 547, 525, 526, 527, + 533, 537, 472, 340, 348, 519, 524, 528, 474, 349, + 340, 387, 521, 519, 343, 515, 340, 474, 524, 525, + 529, 538, 349, 344 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_int16 yyr1[] = { - 0, 443, 444, 445, 445, 445, 445, 445, 445, 445, - 445, 445, 445, 445, 445, 445, 445, 445, 446, 446, - 446, 446, 446, 446, 447, 448, 449, 450, 450, 451, - 451, 452, 452, 453, 454, 454, 454, 455, 455, 455, - 455, 456, 456, 456, 456, 457, 457, 457, 457, 458, - 458, 458, 459, 459, 459, 460, 460, 460, 460, 460, - 461, 461, 461, 462, 462, 463, 463, 464, 464, 465, - 465, 466, 466, 467, 467, 468, 469, 468, 470, 470, - 471, 471, 471, 471, 471, 471, 471, 471, 471, 471, - 471, 472, 472, 473, 474, 474, 474, 474, 474, 474, - 474, 474, 474, 476, 475, 477, 477, 478, 479, 479, - 480, 480, 481, 482, 482, 483, 483, 483, 483, 484, - 485, 485, 485, 485, 485, 486, 486, 486, 486, 486, - 487, 487, 488, 489, 489, 489, 489, 489, 489, 489, - 489, 490, 491, 491, 492, 492, 492, 493, 494, 494, - 495, 495, 495, 495, 495, 495, 495, 496, 496, 496, - 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, - 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, - 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, - 496, 496, 497, 498, 498, 499, 499, 500, 500, 500, - 500, 501, 501, 502, 503, 503, 504, 504, 504, 504, - 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, - 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, - 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, - 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, - 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, - 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, - 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, - 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, - 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, - 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, - 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, - 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, - 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, - 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, - 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, - 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, - 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, - 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, - 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, - 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, - 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, - 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, - 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, - 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, - 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, - 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, - 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, - 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, - 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, - 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, - 504, 504, 504, 504, 504, 504, 504, 504, 504, 504, - 505, 505, 505, 507, 506, 508, 506, 509, 509, 510, - 510, 511, 511, 512, 512, 513, 513, 513, 514, 514, - 515, 516, 516, 517, 517, 517, 517, 517, 517, 517, - 517, 518, 519, 520, 521, 519, 522, 522, 524, 523, - 525, 523, 526, 526, 527, 527, 528, 528, 529, 529, - 530, 531, 531, 532, 532, 533, 533, 535, 534, 536, - 536, 537, 537, 538, 538, 540, 539, 541, 539, 542, - 539, 543, 543, 544, 544, 545, 545, 546, 546, 546, - 546, 546, 546, 547, 547, 548, 548, 548, 550, 549, - 551, 552, 552, 553, 553 + 0, 445, 446, 447, 447, 447, 447, 447, 447, 447, + 447, 447, 447, 447, 447, 447, 447, 447, 448, 448, + 448, 448, 448, 448, 449, 450, 451, 452, 452, 453, + 453, 454, 454, 455, 456, 456, 456, 457, 457, 457, + 457, 458, 458, 458, 458, 459, 459, 459, 459, 460, + 460, 460, 461, 461, 461, 462, 462, 462, 462, 462, + 463, 463, 463, 464, 464, 465, 465, 466, 466, 467, + 467, 468, 468, 469, 469, 470, 471, 470, 472, 472, + 473, 473, 473, 473, 473, 473, 473, 473, 473, 473, + 473, 474, 474, 475, 476, 476, 476, 476, 476, 476, + 476, 476, 476, 478, 477, 479, 479, 480, 481, 481, + 482, 482, 483, 484, 484, 485, 485, 485, 485, 486, + 487, 487, 487, 487, 487, 488, 488, 488, 488, 488, + 489, 489, 490, 491, 491, 491, 491, 491, 491, 491, + 491, 492, 493, 493, 494, 494, 494, 495, 496, 496, + 497, 497, 497, 497, 497, 497, 497, 498, 498, 498, + 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, + 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, + 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, + 498, 498, 499, 500, 500, 501, 501, 502, 502, 502, + 502, 503, 503, 504, 505, 505, 506, 506, 506, 506, + 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, + 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, + 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, + 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, + 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, + 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, + 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, + 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, + 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, + 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, + 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, + 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, + 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, + 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, + 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, + 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, + 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, + 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, + 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, + 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, + 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, + 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, + 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, + 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, + 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, + 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, + 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, + 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, + 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, + 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, + 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, + 507, 507, 507, 509, 508, 510, 508, 511, 511, 512, + 512, 513, 513, 514, 514, 515, 515, 515, 516, 516, + 517, 518, 518, 519, 519, 519, 519, 519, 519, 519, + 519, 520, 521, 522, 523, 521, 524, 524, 526, 525, + 527, 525, 528, 528, 529, 529, 530, 530, 531, 531, + 532, 533, 533, 534, 534, 535, 535, 537, 536, 538, + 538, 539, 539, 540, 540, 542, 541, 543, 541, 544, + 541, 545, 545, 546, 546, 547, 547, 548, 548, 548, + 548, 548, 548, 548, 548, 549, 549, 550, 550, 550, + 552, 551, 553, 554, 554, 555, 555 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -3821,8 +3839,8 @@ static const yytype_int8 yyr2[] = 5, 3, 1, 1, 4, 1, 2, 0, 8, 0, 1, 3, 2, 1, 2, 0, 6, 0, 8, 0, 7, 1, 1, 1, 0, 2, 3, 2, 2, 2, - 3, 2, 2, 1, 2, 1, 1, 1, 0, 3, - 5, 1, 3, 1, 4 + 3, 2, 2, 2, 2, 1, 2, 1, 1, 1, + 0, 3, 5, 1, 3, 1, 4 }; @@ -4568,260 +4586,260 @@ yyreduce: switch (yyn) { case 2: /* variable_identifier: IDENTIFIER */ -#line 370 "glslang/MachineIndependent/glslang.y" +#line 371 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string); } -#line 4576 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4594 "MachineIndependent/glslang_tab.cpp" break; case 3: /* primary_expression: variable_identifier */ -#line 376 "glslang/MachineIndependent/glslang.y" +#line 377 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4584 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4602 "MachineIndependent/glslang_tab.cpp" break; case 4: /* primary_expression: LEFT_PAREN expression RIGHT_PAREN */ -#line 379 "glslang/MachineIndependent/glslang.y" +#line 380 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } -#line 4594 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4612 "MachineIndependent/glslang_tab.cpp" break; case 5: /* primary_expression: FLOATCONSTANT */ -#line 384 "glslang/MachineIndependent/glslang.y" +#line 385 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 4602 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4620 "MachineIndependent/glslang_tab.cpp" break; case 6: /* primary_expression: INTCONSTANT */ -#line 387 "glslang/MachineIndependent/glslang.y" +#line 388 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 4610 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4628 "MachineIndependent/glslang_tab.cpp" break; case 7: /* primary_expression: UINTCONSTANT */ -#line 390 "glslang/MachineIndependent/glslang.y" +#line 391 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 4619 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4637 "MachineIndependent/glslang_tab.cpp" break; case 8: /* primary_expression: BOOLCONSTANT */ -#line 394 "glslang/MachineIndependent/glslang.y" +#line 395 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 4627 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4645 "MachineIndependent/glslang_tab.cpp" break; case 9: /* primary_expression: STRING_LITERAL */ -#line 398 "glslang/MachineIndependent/glslang.y" +#line 399 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); } -#line 4635 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4653 "MachineIndependent/glslang_tab.cpp" break; case 10: /* primary_expression: INT32CONSTANT */ -#line 401 "glslang/MachineIndependent/glslang.y" +#line 402 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 4644 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4662 "MachineIndependent/glslang_tab.cpp" break; case 11: /* primary_expression: UINT32CONSTANT */ -#line 405 "glslang/MachineIndependent/glslang.y" +#line 406 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 4653 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4671 "MachineIndependent/glslang_tab.cpp" break; case 12: /* primary_expression: INT64CONSTANT */ -#line 409 "glslang/MachineIndependent/glslang.y" +#line 410 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i64, (yyvsp[0].lex).loc, true); } -#line 4662 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4680 "MachineIndependent/glslang_tab.cpp" break; case 13: /* primary_expression: UINT64CONSTANT */ -#line 413 "glslang/MachineIndependent/glslang.y" +#line 414 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u64, (yyvsp[0].lex).loc, true); } -#line 4671 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4689 "MachineIndependent/glslang_tab.cpp" break; case 14: /* primary_expression: INT16CONSTANT */ -#line 417 "glslang/MachineIndependent/glslang.y" +#line 418 "MachineIndependent/glslang.y" { parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((short)(yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 4680 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4698 "MachineIndependent/glslang_tab.cpp" break; case 15: /* primary_expression: UINT16CONSTANT */ -#line 421 "glslang/MachineIndependent/glslang.y" +#line 422 "MachineIndependent/glslang.y" { parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit unsigned integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((unsigned short)(yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 4689 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4707 "MachineIndependent/glslang_tab.cpp" break; case 16: /* primary_expression: DOUBLECONSTANT */ -#line 425 "glslang/MachineIndependent/glslang.y" +#line 426 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double literal"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtDouble, (yyvsp[0].lex).loc, true); } -#line 4700 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4718 "MachineIndependent/glslang_tab.cpp" break; case 17: /* primary_expression: FLOAT16CONSTANT */ -#line 431 "glslang/MachineIndependent/glslang.y" +#line 432 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat16, (yyvsp[0].lex).loc, true); } -#line 4709 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4727 "MachineIndependent/glslang_tab.cpp" break; case 18: /* postfix_expression: primary_expression */ -#line 439 "glslang/MachineIndependent/glslang.y" +#line 440 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4717 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4735 "MachineIndependent/glslang_tab.cpp" break; case 19: /* postfix_expression: postfix_expression LEFT_BRACKET integer_expression RIGHT_BRACKET */ -#line 442 "glslang/MachineIndependent/glslang.y" +#line 443 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode)); } -#line 4725 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4743 "MachineIndependent/glslang_tab.cpp" break; case 20: /* postfix_expression: function_call */ -#line 445 "glslang/MachineIndependent/glslang.y" +#line 446 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4733 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4751 "MachineIndependent/glslang_tab.cpp" break; case 21: /* postfix_expression: postfix_expression DOT IDENTIFIER */ -#line 448 "glslang/MachineIndependent/glslang.y" +#line 449 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string); } -#line 4741 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4759 "MachineIndependent/glslang_tab.cpp" break; case 22: /* postfix_expression: postfix_expression INC_OP */ -#line 451 "glslang/MachineIndependent/glslang.y" +#line 452 "MachineIndependent/glslang.y" { parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode)); parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "++", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "++", EOpPostIncrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 4751 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4769 "MachineIndependent/glslang_tab.cpp" break; case 23: /* postfix_expression: postfix_expression DEC_OP */ -#line 456 "glslang/MachineIndependent/glslang.y" +#line 457 "MachineIndependent/glslang.y" { parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode)); parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "--", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "--", EOpPostDecrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 4761 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4779 "MachineIndependent/glslang_tab.cpp" break; case 24: /* integer_expression: expression */ -#line 464 "glslang/MachineIndependent/glslang.y" +#line 465 "MachineIndependent/glslang.y" { parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]"); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4770 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4788 "MachineIndependent/glslang_tab.cpp" break; case 25: /* function_call: function_call_or_method */ -#line 471 "glslang/MachineIndependent/glslang.y" +#line 472 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode); delete (yyvsp[0].interm).function; } -#line 4779 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4797 "MachineIndependent/glslang_tab.cpp" break; case 26: /* function_call_or_method: function_call_generic */ -#line 478 "glslang/MachineIndependent/glslang.y" +#line 479 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); } -#line 4787 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4805 "MachineIndependent/glslang_tab.cpp" break; case 27: /* function_call_generic: function_call_header_with_parameters RIGHT_PAREN */ -#line 484 "glslang/MachineIndependent/glslang.y" +#line 485 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 4796 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4814 "MachineIndependent/glslang_tab.cpp" break; case 28: /* function_call_generic: function_call_header_no_parameters RIGHT_PAREN */ -#line 488 "glslang/MachineIndependent/glslang.y" +#line 489 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 4805 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4823 "MachineIndependent/glslang_tab.cpp" break; case 29: /* function_call_header_no_parameters: function_call_header VOID */ -#line 495 "glslang/MachineIndependent/glslang.y" +#line 496 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-1].interm); } -#line 4813 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4831 "MachineIndependent/glslang_tab.cpp" break; case 30: /* function_call_header_no_parameters: function_call_header */ -#line 498 "glslang/MachineIndependent/glslang.y" +#line 499 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); } -#line 4821 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4839 "MachineIndependent/glslang_tab.cpp" break; case 31: /* function_call_header_with_parameters: function_call_header assignment_expression */ -#line 504 "glslang/MachineIndependent/glslang.y" +#line 505 "MachineIndependent/glslang.y" { TParameter param = { 0, new TType }; param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); @@ -4829,11 +4847,11 @@ yyreduce: (yyval.interm).function = (yyvsp[-1].interm).function; (yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode); } -#line 4833 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4851 "MachineIndependent/glslang_tab.cpp" break; case 32: /* function_call_header_with_parameters: function_call_header_with_parameters COMMA assignment_expression */ -#line 511 "glslang/MachineIndependent/glslang.y" +#line 512 "MachineIndependent/glslang.y" { TParameter param = { 0, new TType }; param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); @@ -4841,29 +4859,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 4845 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4863 "MachineIndependent/glslang_tab.cpp" break; case 33: /* function_call_header: function_identifier LEFT_PAREN */ -#line 521 "glslang/MachineIndependent/glslang.y" +#line 522 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-1].interm); } -#line 4853 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4871 "MachineIndependent/glslang_tab.cpp" break; case 34: /* function_identifier: type_specifier */ -#line 529 "glslang/MachineIndependent/glslang.y" +#line 530 "MachineIndependent/glslang.y" { // Constructor (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 4863 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4881 "MachineIndependent/glslang_tab.cpp" break; case 35: /* function_identifier: postfix_expression */ -#line 534 "glslang/MachineIndependent/glslang.y" +#line 535 "MachineIndependent/glslang.y" { // // Should be a method or subroutine call, but we haven't recognized the arguments yet. @@ -4891,50 +4909,50 @@ yyreduce: (yyval.interm).function = new TFunction(empty, TType(EbtVoid), EOpNull); } } -#line 4895 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4913 "MachineIndependent/glslang_tab.cpp" break; case 36: /* function_identifier: non_uniform_qualifier */ -#line 562 "glslang/MachineIndependent/glslang.y" +#line 563 "MachineIndependent/glslang.y" { // Constructor (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 4905 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4923 "MachineIndependent/glslang_tab.cpp" break; case 37: /* unary_expression: postfix_expression */ -#line 571 "glslang/MachineIndependent/glslang.y" +#line 572 "MachineIndependent/glslang.y" { parseContext.variableCheck((yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); if (TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode()) parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), ""); } -#line 4916 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4934 "MachineIndependent/glslang_tab.cpp" break; case 38: /* unary_expression: INC_OP unary_expression */ -#line 577 "glslang/MachineIndependent/glslang.y" +#line 578 "MachineIndependent/glslang.y" { parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "++", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "++", EOpPreIncrement, (yyvsp[0].interm.intermTypedNode)); } -#line 4925 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4943 "MachineIndependent/glslang_tab.cpp" break; case 39: /* unary_expression: DEC_OP unary_expression */ -#line 581 "glslang/MachineIndependent/glslang.y" +#line 582 "MachineIndependent/glslang.y" { parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "--", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "--", EOpPreDecrement, (yyvsp[0].interm.intermTypedNode)); } -#line 4934 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4952 "MachineIndependent/glslang_tab.cpp" break; case 40: /* unary_expression: unary_operator unary_expression */ -#line 585 "glslang/MachineIndependent/glslang.y" +#line 586 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm).op != EOpNull) { char errorOp[2] = {0, 0}; @@ -4951,179 +4969,179 @@ yyreduce: (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } } -#line 4955 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4973 "MachineIndependent/glslang_tab.cpp" break; case 41: /* unary_operator: PLUS */ -#line 605 "glslang/MachineIndependent/glslang.y" +#line 606 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; } -#line 4961 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4979 "MachineIndependent/glslang_tab.cpp" break; case 42: /* unary_operator: DASH */ -#line 606 "glslang/MachineIndependent/glslang.y" +#line 607 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; } -#line 4967 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4985 "MachineIndependent/glslang_tab.cpp" break; case 43: /* unary_operator: BANG */ -#line 607 "glslang/MachineIndependent/glslang.y" +#line 608 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; } -#line 4973 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4991 "MachineIndependent/glslang_tab.cpp" break; case 44: /* unary_operator: TILDE */ -#line 608 "glslang/MachineIndependent/glslang.y" +#line 609 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot; parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); } -#line 4980 "glslang/MachineIndependent/glslang_tab.cpp" +#line 4998 "MachineIndependent/glslang_tab.cpp" break; case 45: /* multiplicative_expression: unary_expression */ -#line 614 "glslang/MachineIndependent/glslang.y" +#line 615 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4986 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5004 "MachineIndependent/glslang_tab.cpp" break; case 46: /* multiplicative_expression: multiplicative_expression STAR unary_expression */ -#line 615 "glslang/MachineIndependent/glslang.y" +#line 616 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "*", EOpMul, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4996 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5014 "MachineIndependent/glslang_tab.cpp" break; case 47: /* multiplicative_expression: multiplicative_expression SLASH unary_expression */ -#line 620 "glslang/MachineIndependent/glslang.y" +#line 621 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "/", EOpDiv, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5006 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5024 "MachineIndependent/glslang_tab.cpp" break; case 48: /* multiplicative_expression: multiplicative_expression PERCENT unary_expression */ -#line 625 "glslang/MachineIndependent/glslang.y" +#line 626 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "%"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "%", EOpMod, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5017 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5035 "MachineIndependent/glslang_tab.cpp" break; case 49: /* additive_expression: multiplicative_expression */ -#line 634 "glslang/MachineIndependent/glslang.y" +#line 635 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5023 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5041 "MachineIndependent/glslang_tab.cpp" break; case 50: /* additive_expression: additive_expression PLUS multiplicative_expression */ -#line 635 "glslang/MachineIndependent/glslang.y" +#line 636 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "+", EOpAdd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5033 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5051 "MachineIndependent/glslang_tab.cpp" break; case 51: /* additive_expression: additive_expression DASH multiplicative_expression */ -#line 640 "glslang/MachineIndependent/glslang.y" +#line 641 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "-", EOpSub, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5043 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5061 "MachineIndependent/glslang_tab.cpp" break; case 52: /* shift_expression: additive_expression */ -#line 648 "glslang/MachineIndependent/glslang.y" +#line 649 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5049 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5067 "MachineIndependent/glslang_tab.cpp" break; case 53: /* shift_expression: shift_expression LEFT_OP additive_expression */ -#line 649 "glslang/MachineIndependent/glslang.y" +#line 650 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift left"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<<", EOpLeftShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5060 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5078 "MachineIndependent/glslang_tab.cpp" break; case 54: /* shift_expression: shift_expression RIGHT_OP additive_expression */ -#line 655 "glslang/MachineIndependent/glslang.y" +#line 656 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift right"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">>", EOpRightShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5071 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5089 "MachineIndependent/glslang_tab.cpp" break; case 55: /* relational_expression: shift_expression */ -#line 664 "glslang/MachineIndependent/glslang.y" +#line 665 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5077 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5095 "MachineIndependent/glslang_tab.cpp" break; case 56: /* relational_expression: relational_expression LEFT_ANGLE shift_expression */ -#line 665 "glslang/MachineIndependent/glslang.y" +#line 666 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<", EOpLessThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5087 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5105 "MachineIndependent/glslang_tab.cpp" break; case 57: /* relational_expression: relational_expression RIGHT_ANGLE shift_expression */ -#line 670 "glslang/MachineIndependent/glslang.y" +#line 671 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">", EOpGreaterThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5097 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5115 "MachineIndependent/glslang_tab.cpp" break; case 58: /* relational_expression: relational_expression LE_OP shift_expression */ -#line 675 "glslang/MachineIndependent/glslang.y" +#line 676 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<=", EOpLessThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5107 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5125 "MachineIndependent/glslang_tab.cpp" break; case 59: /* relational_expression: relational_expression GE_OP shift_expression */ -#line 680 "glslang/MachineIndependent/glslang.y" +#line 681 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">=", EOpGreaterThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5117 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5135 "MachineIndependent/glslang_tab.cpp" break; case 60: /* equality_expression: relational_expression */ -#line 688 "glslang/MachineIndependent/glslang.y" +#line 689 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5123 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5141 "MachineIndependent/glslang_tab.cpp" break; case 61: /* equality_expression: equality_expression EQ_OP relational_expression */ -#line 689 "glslang/MachineIndependent/glslang.y" +#line 690 "MachineIndependent/glslang.y" { parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison"); parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=="); @@ -5133,11 +5151,11 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5137 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5155 "MachineIndependent/glslang_tab.cpp" break; case 62: /* equality_expression: equality_expression NE_OP relational_expression */ -#line 698 "glslang/MachineIndependent/glslang.y" +#line 699 "MachineIndependent/glslang.y" { parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison"); parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!="); @@ -5147,124 +5165,124 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5151 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5169 "MachineIndependent/glslang_tab.cpp" break; case 63: /* and_expression: equality_expression */ -#line 710 "glslang/MachineIndependent/glslang.y" +#line 711 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5157 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5175 "MachineIndependent/glslang_tab.cpp" break; case 64: /* and_expression: and_expression AMPERSAND equality_expression */ -#line 711 "glslang/MachineIndependent/glslang.y" +#line 712 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise and"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&", EOpAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5168 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5186 "MachineIndependent/glslang_tab.cpp" break; case 65: /* exclusive_or_expression: and_expression */ -#line 720 "glslang/MachineIndependent/glslang.y" +#line 721 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5174 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5192 "MachineIndependent/glslang_tab.cpp" break; case 66: /* exclusive_or_expression: exclusive_or_expression CARET and_expression */ -#line 721 "glslang/MachineIndependent/glslang.y" +#line 722 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise exclusive or"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^", EOpExclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5185 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5203 "MachineIndependent/glslang_tab.cpp" break; case 67: /* inclusive_or_expression: exclusive_or_expression */ -#line 730 "glslang/MachineIndependent/glslang.y" +#line 731 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5191 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5209 "MachineIndependent/glslang_tab.cpp" break; case 68: /* inclusive_or_expression: inclusive_or_expression VERTICAL_BAR exclusive_or_expression */ -#line 731 "glslang/MachineIndependent/glslang.y" +#line 732 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise inclusive or"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "|", EOpInclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5202 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5220 "MachineIndependent/glslang_tab.cpp" break; case 69: /* logical_and_expression: inclusive_or_expression */ -#line 740 "glslang/MachineIndependent/glslang.y" +#line 741 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5208 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5226 "MachineIndependent/glslang_tab.cpp" break; case 70: /* logical_and_expression: logical_and_expression AND_OP inclusive_or_expression */ -#line 741 "glslang/MachineIndependent/glslang.y" +#line 742 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&&", EOpLogicalAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5218 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5236 "MachineIndependent/glslang_tab.cpp" break; case 71: /* logical_xor_expression: logical_and_expression */ -#line 749 "glslang/MachineIndependent/glslang.y" +#line 750 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5224 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5242 "MachineIndependent/glslang_tab.cpp" break; case 72: /* logical_xor_expression: logical_xor_expression XOR_OP logical_and_expression */ -#line 750 "glslang/MachineIndependent/glslang.y" +#line 751 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^^", EOpLogicalXor, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5234 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5252 "MachineIndependent/glslang_tab.cpp" break; case 73: /* logical_or_expression: logical_xor_expression */ -#line 758 "glslang/MachineIndependent/glslang.y" +#line 759 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5240 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5258 "MachineIndependent/glslang_tab.cpp" break; case 74: /* logical_or_expression: logical_or_expression OR_OP logical_xor_expression */ -#line 759 "glslang/MachineIndependent/glslang.y" +#line 760 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "||", EOpLogicalOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5250 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5268 "MachineIndependent/glslang_tab.cpp" break; case 75: /* conditional_expression: logical_or_expression */ -#line 767 "glslang/MachineIndependent/glslang.y" +#line 768 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5256 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5274 "MachineIndependent/glslang_tab.cpp" break; case 76: /* $@1: %empty */ -#line 768 "glslang/MachineIndependent/glslang.y" +#line 769 "MachineIndependent/glslang.y" { ++parseContext.controlFlowNestingLevel; } -#line 5264 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5282 "MachineIndependent/glslang_tab.cpp" break; case 77: /* conditional_expression: logical_or_expression QUESTION $@1 expression COLON assignment_expression */ -#line 771 "glslang/MachineIndependent/glslang.y" +#line 772 "MachineIndependent/glslang.y" { --parseContext.controlFlowNestingLevel; parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-5].interm.intermTypedNode)); @@ -5277,17 +5295,17 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 5281 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5299 "MachineIndependent/glslang_tab.cpp" break; case 78: /* assignment_expression: conditional_expression */ -#line 786 "glslang/MachineIndependent/glslang.y" +#line 787 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5287 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5305 "MachineIndependent/glslang_tab.cpp" break; case 79: /* assignment_expression: unary_expression assignment_operator assignment_expression */ -#line 787 "glslang/MachineIndependent/glslang.y" +#line 788 "MachineIndependent/glslang.y" { parseContext.arrayObjectCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array assignment"); parseContext.opaqueCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "="); @@ -5301,119 +5319,119 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } } -#line 5305 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5323 "MachineIndependent/glslang_tab.cpp" break; case 80: /* assignment_operator: EQUAL */ -#line 803 "glslang/MachineIndependent/glslang.y" +#line 804 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAssign; } -#line 5314 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5332 "MachineIndependent/glslang_tab.cpp" break; case 81: /* assignment_operator: MUL_ASSIGN */ -#line 807 "glslang/MachineIndependent/glslang.y" +#line 808 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpMulAssign; } -#line 5323 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5341 "MachineIndependent/glslang_tab.cpp" break; case 82: /* assignment_operator: DIV_ASSIGN */ -#line 811 "glslang/MachineIndependent/glslang.y" +#line 812 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpDivAssign; } -#line 5332 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5350 "MachineIndependent/glslang_tab.cpp" break; case 83: /* assignment_operator: MOD_ASSIGN */ -#line 815 "glslang/MachineIndependent/glslang.y" +#line 816 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "%="); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpModAssign; } -#line 5342 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5360 "MachineIndependent/glslang_tab.cpp" break; case 84: /* assignment_operator: ADD_ASSIGN */ -#line 820 "glslang/MachineIndependent/glslang.y" +#line 821 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAddAssign; } -#line 5351 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5369 "MachineIndependent/glslang_tab.cpp" break; case 85: /* assignment_operator: SUB_ASSIGN */ -#line 824 "glslang/MachineIndependent/glslang.y" +#line 825 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpSubAssign; } -#line 5360 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5378 "MachineIndependent/glslang_tab.cpp" break; case 86: /* assignment_operator: LEFT_ASSIGN */ -#line 828 "glslang/MachineIndependent/glslang.y" +#line 829 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign; } -#line 5369 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5387 "MachineIndependent/glslang_tab.cpp" break; case 87: /* assignment_operator: RIGHT_ASSIGN */ -#line 832 "glslang/MachineIndependent/glslang.y" +#line 833 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign; } -#line 5378 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5396 "MachineIndependent/glslang_tab.cpp" break; case 88: /* assignment_operator: AND_ASSIGN */ -#line 836 "glslang/MachineIndependent/glslang.y" +#line 837 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign; } -#line 5387 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5405 "MachineIndependent/glslang_tab.cpp" break; case 89: /* assignment_operator: XOR_ASSIGN */ -#line 840 "glslang/MachineIndependent/glslang.y" +#line 841 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign; } -#line 5396 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5414 "MachineIndependent/glslang_tab.cpp" break; case 90: /* assignment_operator: OR_ASSIGN */ -#line 844 "glslang/MachineIndependent/glslang.y" +#line 845 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign; } -#line 5405 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5423 "MachineIndependent/glslang_tab.cpp" break; case 91: /* expression: assignment_expression */ -#line 851 "glslang/MachineIndependent/glslang.y" +#line 852 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5413 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5431 "MachineIndependent/glslang_tab.cpp" break; case 92: /* expression: expression COMMA assignment_expression */ -#line 854 "glslang/MachineIndependent/glslang.y" +#line 855 "MachineIndependent/glslang.y" { parseContext.samplerConstructorLocationCheck((yyvsp[-1].lex).loc, ",", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.intermediate.addComma((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); @@ -5422,40 +5440,40 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 5426 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5444 "MachineIndependent/glslang_tab.cpp" break; case 93: /* constant_expression: conditional_expression */ -#line 865 "glslang/MachineIndependent/glslang.y" +#line 866 "MachineIndependent/glslang.y" { parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), ""); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5435 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5453 "MachineIndependent/glslang_tab.cpp" break; case 94: /* declaration: function_prototype SEMICOLON */ -#line 872 "glslang/MachineIndependent/glslang.y" +#line 873 "MachineIndependent/glslang.y" { parseContext.handleFunctionDeclarator((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).function, true /* prototype */); (yyval.interm.intermNode) = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 5445 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5463 "MachineIndependent/glslang_tab.cpp" break; case 95: /* declaration: init_declarator_list SEMICOLON */ -#line 877 "glslang/MachineIndependent/glslang.y" +#line 878 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm).intermNode && (yyvsp[-1].interm).intermNode->getAsAggregate()) (yyvsp[-1].interm).intermNode->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm).intermNode; } -#line 5455 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5473 "MachineIndependent/glslang_tab.cpp" break; case 96: /* declaration: PRECISION precision_qualifier type_specifier SEMICOLON */ -#line 882 "glslang/MachineIndependent/glslang.y" +#line 883 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[-3].lex).loc, ENoProfile, 130, 0, "precision statement"); // lazy setting of the previous scope's defaults, has effect only the first time it is called in a particular scope @@ -5463,75 +5481,75 @@ yyreduce: parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision); (yyval.interm.intermNode) = 0; } -#line 5467 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5485 "MachineIndependent/glslang_tab.cpp" break; case 97: /* declaration: block_structure SEMICOLON */ -#line 889 "glslang/MachineIndependent/glslang.y" +#line 890 "MachineIndependent/glslang.y" { parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList); (yyval.interm.intermNode) = 0; } -#line 5476 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5494 "MachineIndependent/glslang_tab.cpp" break; case 98: /* declaration: block_structure IDENTIFIER SEMICOLON */ -#line 893 "glslang/MachineIndependent/glslang.y" +#line 894 "MachineIndependent/glslang.y" { parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 5485 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5503 "MachineIndependent/glslang_tab.cpp" break; case 99: /* declaration: block_structure IDENTIFIER array_specifier SEMICOLON */ -#line 897 "glslang/MachineIndependent/glslang.y" +#line 898 "MachineIndependent/glslang.y" { parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes); (yyval.interm.intermNode) = 0; } -#line 5494 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5512 "MachineIndependent/glslang_tab.cpp" break; case 100: /* declaration: type_qualifier SEMICOLON */ -#line 901 "glslang/MachineIndependent/glslang.y" +#line 902 "MachineIndependent/glslang.y" { parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier); parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type)); (yyval.interm.intermNode) = 0; } -#line 5504 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5522 "MachineIndependent/glslang_tab.cpp" break; case 101: /* declaration: type_qualifier IDENTIFIER SEMICOLON */ -#line 906 "glslang/MachineIndependent/glslang.y" +#line 907 "MachineIndependent/glslang.y" { parseContext.checkNoShaderLayouts((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).shaderQualifiers); parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 5514 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5532 "MachineIndependent/glslang_tab.cpp" break; case 102: /* declaration: type_qualifier IDENTIFIER identifier_list SEMICOLON */ -#line 911 "glslang/MachineIndependent/glslang.y" +#line 912 "MachineIndependent/glslang.y" { parseContext.checkNoShaderLayouts((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).shaderQualifiers); (yyvsp[-1].interm.identifierList)->push_back((yyvsp[-2].lex).string); parseContext.addQualifierToExisting((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier, *(yyvsp[-1].interm.identifierList)); (yyval.interm.intermNode) = 0; } -#line 5525 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5543 "MachineIndependent/glslang_tab.cpp" break; case 103: /* $@2: %empty */ -#line 920 "glslang/MachineIndependent/glslang.y" +#line 921 "MachineIndependent/glslang.y" { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); } -#line 5531 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5549 "MachineIndependent/glslang_tab.cpp" break; case 104: /* block_structure: type_qualifier IDENTIFIER LEFT_BRACE $@2 struct_declaration_list RIGHT_BRACE */ -#line 920 "glslang/MachineIndependent/glslang.y" +#line 921 "MachineIndependent/glslang.y" { --parseContext.blockNestingLevel; parseContext.blockName = (yyvsp[-4].lex).string; @@ -5541,54 +5559,54 @@ yyreduce: (yyval.interm).loc = (yyvsp[-5].interm.type).loc; (yyval.interm).typeList = (yyvsp[-1].interm.typeList); } -#line 5545 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5563 "MachineIndependent/glslang_tab.cpp" break; case 105: /* identifier_list: COMMA IDENTIFIER */ -#line 931 "glslang/MachineIndependent/glslang.y" +#line 932 "MachineIndependent/glslang.y" { (yyval.interm.identifierList) = new TIdentifierList; (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 5554 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5572 "MachineIndependent/glslang_tab.cpp" break; case 106: /* identifier_list: identifier_list COMMA IDENTIFIER */ -#line 935 "glslang/MachineIndependent/glslang.y" +#line 936 "MachineIndependent/glslang.y" { (yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList); (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 5563 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5581 "MachineIndependent/glslang_tab.cpp" break; case 107: /* function_prototype: function_declarator RIGHT_PAREN */ -#line 942 "glslang/MachineIndependent/glslang.y" +#line 943 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-1].interm.function); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 5572 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5590 "MachineIndependent/glslang_tab.cpp" break; case 108: /* function_declarator: function_header */ -#line 949 "glslang/MachineIndependent/glslang.y" +#line 950 "MachineIndependent/glslang.y" { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 5580 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5598 "MachineIndependent/glslang_tab.cpp" break; case 109: /* function_declarator: function_header_with_parameters */ -#line 952 "glslang/MachineIndependent/glslang.y" +#line 953 "MachineIndependent/glslang.y" { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 5588 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5606 "MachineIndependent/glslang_tab.cpp" break; case 110: /* function_header_with_parameters: function_header parameter_declaration */ -#line 959 "glslang/MachineIndependent/glslang.y" +#line 960 "MachineIndependent/glslang.y" { // Add the parameter (yyval.interm.function) = (yyvsp[-1].interm.function); @@ -5597,11 +5615,11 @@ yyreduce: else delete (yyvsp[0].interm).param.type; } -#line 5601 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5619 "MachineIndependent/glslang_tab.cpp" break; case 111: /* function_header_with_parameters: function_header_with_parameters COMMA parameter_declaration */ -#line 967 "glslang/MachineIndependent/glslang.y" +#line 968 "MachineIndependent/glslang.y" { // // Only first parameter of one-parameter functions can be void @@ -5619,11 +5637,11 @@ yyreduce: (yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param); } } -#line 5623 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5641 "MachineIndependent/glslang_tab.cpp" break; case 112: /* function_header: fully_specified_type IDENTIFIER LEFT_PAREN */ -#line 987 "glslang/MachineIndependent/glslang.y" +#line 988 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).qualifier.storage != EvqGlobal && (yyvsp[-2].interm.type).qualifier.storage != EvqTemporary) { parseContext.error((yyvsp[-1].lex).loc, "no qualifiers allowed for function return", @@ -5643,11 +5661,11 @@ yyreduce: function = new TFunction((yyvsp[-1].lex).string, type); (yyval.interm.function) = function; } -#line 5647 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5665 "MachineIndependent/glslang_tab.cpp" break; case 113: /* parameter_declarator: type_specifier IDENTIFIER */ -#line 1010 "glslang/MachineIndependent/glslang.y" +#line 1011 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-1].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -5663,11 +5681,11 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).param = param; } -#line 5667 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5685 "MachineIndependent/glslang_tab.cpp" break; case 114: /* parameter_declarator: type_specifier IDENTIFIER array_specifier */ -#line 1025 "glslang/MachineIndependent/glslang.y" +#line 1026 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -5687,11 +5705,11 @@ yyreduce: (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).param = param; } -#line 5691 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5709 "MachineIndependent/glslang_tab.cpp" break; case 115: /* parameter_declaration: type_qualifier parameter_declarator */ -#line 1050 "glslang/MachineIndependent/glslang.y" +#line 1051 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) @@ -5703,11 +5721,11 @@ yyreduce: parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 5707 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5725 "MachineIndependent/glslang_tab.cpp" break; case 116: /* parameter_declaration: parameter_declarator */ -#line 1061 "glslang/MachineIndependent/glslang.y" +#line 1062 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); @@ -5715,11 +5733,11 @@ yyreduce: parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); } -#line 5719 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5737 "MachineIndependent/glslang_tab.cpp" break; case 117: /* parameter_declaration: type_qualifier parameter_type_specifier */ -#line 1071 "glslang/MachineIndependent/glslang.y" +#line 1072 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) @@ -5730,11 +5748,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 5734 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5752 "MachineIndependent/glslang_tab.cpp" break; case 118: /* parameter_declaration: parameter_type_specifier */ -#line 1081 "glslang/MachineIndependent/glslang.y" +#line 1082 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); @@ -5742,68 +5760,68 @@ yyreduce: parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); } -#line 5746 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5764 "MachineIndependent/glslang_tab.cpp" break; case 119: /* parameter_type_specifier: type_specifier */ -#line 1091 "glslang/MachineIndependent/glslang.y" +#line 1092 "MachineIndependent/glslang.y" { TParameter param = { 0, new TType((yyvsp[0].interm.type)) }; (yyval.interm).param = param; if ((yyvsp[0].interm.type).arraySizes) parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes); } -#line 5757 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5775 "MachineIndependent/glslang_tab.cpp" break; case 120: /* init_declarator_list: single_declaration */ -#line 1100 "glslang/MachineIndependent/glslang.y" +#line 1101 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); } -#line 5765 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5783 "MachineIndependent/glslang_tab.cpp" break; case 121: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER */ -#line 1103 "glslang/MachineIndependent/glslang.y" +#line 1104 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-2].interm); parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type); } -#line 5774 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5792 "MachineIndependent/glslang_tab.cpp" break; case 122: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier */ -#line 1107 "glslang/MachineIndependent/glslang.y" +#line 1108 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-3].interm); parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes); } -#line 5783 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5801 "MachineIndependent/glslang_tab.cpp" break; case 123: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier EQUAL initializer */ -#line 1111 "glslang/MachineIndependent/glslang.y" +#line 1112 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-5].interm).type; TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-5].interm).type, (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-5].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 5793 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5811 "MachineIndependent/glslang_tab.cpp" break; case 124: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER EQUAL initializer */ -#line 1116 "glslang/MachineIndependent/glslang.y" +#line 1117 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-4].interm).type; TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 5803 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5821 "MachineIndependent/glslang_tab.cpp" break; case 125: /* single_declaration: fully_specified_type */ -#line 1124 "glslang/MachineIndependent/glslang.y" +#line 1125 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[0].interm.type); (yyval.interm).intermNode = 0; @@ -5811,51 +5829,51 @@ yyreduce: parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type); } -#line 5815 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5833 "MachineIndependent/glslang_tab.cpp" break; case 126: /* single_declaration: fully_specified_type IDENTIFIER */ -#line 1131 "glslang/MachineIndependent/glslang.y" +#line 1132 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-1].interm.type); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type)); } -#line 5825 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5843 "MachineIndependent/glslang_tab.cpp" break; case 127: /* single_declaration: fully_specified_type IDENTIFIER array_specifier */ -#line 1136 "glslang/MachineIndependent/glslang.y" +#line 1137 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-2].interm.type); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes); } -#line 5835 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5853 "MachineIndependent/glslang_tab.cpp" break; case 128: /* single_declaration: fully_specified_type IDENTIFIER array_specifier EQUAL initializer */ -#line 1141 "glslang/MachineIndependent/glslang.y" +#line 1142 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-4].interm.type); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-4].interm.type), (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 5845 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5863 "MachineIndependent/glslang_tab.cpp" break; case 129: /* single_declaration: fully_specified_type IDENTIFIER EQUAL initializer */ -#line 1146 "glslang/MachineIndependent/glslang.y" +#line 1147 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-3].interm.type); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 5855 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5873 "MachineIndependent/glslang_tab.cpp" break; case 130: /* fully_specified_type: type_specifier */ -#line 1155 "glslang/MachineIndependent/glslang.y" +#line 1156 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); @@ -5866,11 +5884,11 @@ yyreduce: } parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier); } -#line 5870 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5888 "MachineIndependent/glslang_tab.cpp" break; case 131: /* fully_specified_type: type_qualifier type_specifier */ -#line 1165 "glslang/MachineIndependent/glslang.y" +#line 1166 "MachineIndependent/glslang.y" { 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)); @@ -5895,22 +5913,22 @@ yyreduce: (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn))) (yyval.interm.type).qualifier.smooth = true; } -#line 5899 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5917 "MachineIndependent/glslang_tab.cpp" break; case 132: /* invariant_qualifier: INVARIANT */ -#line 1192 "glslang/MachineIndependent/glslang.y" +#line 1193 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "invariant"); parseContext.profileRequires((yyval.interm.type).loc, ENoProfile, 120, 0, "invariant"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.invariant = true; } -#line 5910 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5928 "MachineIndependent/glslang_tab.cpp" break; case 133: /* interpolation_qualifier: SMOOTH */ -#line 1201 "glslang/MachineIndependent/glslang.y" +#line 1202 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "smooth"); parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "smooth"); @@ -5918,11 +5936,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.smooth = true; } -#line 5922 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5940 "MachineIndependent/glslang_tab.cpp" break; case 134: /* interpolation_qualifier: FLAT */ -#line 1208 "glslang/MachineIndependent/glslang.y" +#line 1209 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "flat"); parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "flat"); @@ -5930,11 +5948,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.flat = true; } -#line 5934 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5952 "MachineIndependent/glslang_tab.cpp" break; case 135: /* interpolation_qualifier: NOPERSPECTIVE */ -#line 1216 "glslang/MachineIndependent/glslang.y" +#line 1217 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "noperspective"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 0, E_GL_NV_shader_noperspective_interpolation, "noperspective"); @@ -5942,11 +5960,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nopersp = true; } -#line 5946 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5964 "MachineIndependent/glslang_tab.cpp" break; case 136: /* interpolation_qualifier: EXPLICITINTERPAMD */ -#line 1223 "glslang/MachineIndependent/glslang.y" +#line 1224 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "__explicitInterpAMD"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); @@ -5954,11 +5972,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.explicitInterp = true; } -#line 5958 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5976 "MachineIndependent/glslang_tab.cpp" break; case 137: /* interpolation_qualifier: PERVERTEXNV */ -#line 1230 "glslang/MachineIndependent/glslang.y" +#line 1231 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "pervertexNV"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); @@ -5967,11 +5985,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.pervertexNV = true; } -#line 5971 "glslang/MachineIndependent/glslang_tab.cpp" +#line 5989 "MachineIndependent/glslang_tab.cpp" break; case 138: /* interpolation_qualifier: PERPRIMITIVENV */ -#line 1238 "glslang/MachineIndependent/glslang.y" +#line 1239 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveNV"); @@ -5982,11 +6000,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perPrimitiveNV = true; } -#line 5986 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6004 "MachineIndependent/glslang_tab.cpp" break; case 139: /* interpolation_qualifier: PERVIEWNV */ -#line 1248 "glslang/MachineIndependent/glslang.y" +#line 1249 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perviewNV"); @@ -5994,11 +6012,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perViewNV = true; } -#line 5998 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6016 "MachineIndependent/glslang_tab.cpp" break; case 140: /* interpolation_qualifier: PERTASKNV */ -#line 1255 "glslang/MachineIndependent/glslang.y" +#line 1256 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "taskNV"); @@ -6006,84 +6024,84 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perTaskNV = true; } -#line 6010 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6028 "MachineIndependent/glslang_tab.cpp" break; case 141: /* layout_qualifier: LAYOUT LEFT_PAREN layout_qualifier_id_list RIGHT_PAREN */ -#line 1266 "glslang/MachineIndependent/glslang.y" +#line 1267 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); } -#line 6018 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6036 "MachineIndependent/glslang_tab.cpp" break; case 142: /* layout_qualifier_id_list: layout_qualifier_id */ -#line 1272 "glslang/MachineIndependent/glslang.y" +#line 1273 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6026 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6044 "MachineIndependent/glslang_tab.cpp" break; case 143: /* layout_qualifier_id_list: layout_qualifier_id_list COMMA layout_qualifier_id */ -#line 1275 "glslang/MachineIndependent/glslang.y" +#line 1276 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-2].interm.type); (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 6036 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6054 "MachineIndependent/glslang_tab.cpp" break; case 144: /* layout_qualifier_id: IDENTIFIER */ -#line 1282 "glslang/MachineIndependent/glslang.y" +#line 1283 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string); } -#line 6045 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6063 "MachineIndependent/glslang_tab.cpp" break; case 145: /* layout_qualifier_id: IDENTIFIER EQUAL constant_expression */ -#line 1286 "glslang/MachineIndependent/glslang.y" +#line 1287 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-2].lex).loc); parseContext.setLayoutQualifier((yyvsp[-2].lex).loc, (yyval.interm.type), *(yyvsp[-2].lex).string, (yyvsp[0].interm.intermTypedNode)); } -#line 6054 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6072 "MachineIndependent/glslang_tab.cpp" break; case 146: /* layout_qualifier_id: SHARED */ -#line 1290 "glslang/MachineIndependent/glslang.y" +#line 1291 "MachineIndependent/glslang.y" { // because "shared" is both an identifier and a keyword (yyval.interm.type).init((yyvsp[0].lex).loc); TString strShared("shared"); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), strShared); } -#line 6064 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6082 "MachineIndependent/glslang_tab.cpp" break; case 147: /* precise_qualifier: PRECISE */ -#line 1299 "glslang/MachineIndependent/glslang.y" +#line 1300 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyval.interm.type).loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "precise"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.noContraction = true; } -#line 6075 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6093 "MachineIndependent/glslang_tab.cpp" break; case 148: /* type_qualifier: single_type_qualifier */ -#line 1309 "glslang/MachineIndependent/glslang.y" +#line 1310 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6083 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6101 "MachineIndependent/glslang_tab.cpp" break; case 149: /* type_qualifier: type_qualifier single_type_qualifier */ -#line 1312 "glslang/MachineIndependent/glslang.y" +#line 1313 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); if ((yyval.interm.type).basicType == EbtVoid) @@ -6092,112 +6110,112 @@ 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 6096 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6114 "MachineIndependent/glslang_tab.cpp" break; case 150: /* single_type_qualifier: storage_qualifier */ -#line 1323 "glslang/MachineIndependent/glslang.y" +#line 1324 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6104 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6122 "MachineIndependent/glslang_tab.cpp" break; case 151: /* single_type_qualifier: layout_qualifier */ -#line 1326 "glslang/MachineIndependent/glslang.y" +#line 1327 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6112 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6130 "MachineIndependent/glslang_tab.cpp" break; case 152: /* single_type_qualifier: precision_qualifier */ -#line 1329 "glslang/MachineIndependent/glslang.y" +#line 1330 "MachineIndependent/glslang.y" { parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6121 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6139 "MachineIndependent/glslang_tab.cpp" break; case 153: /* single_type_qualifier: interpolation_qualifier */ -#line 1333 "glslang/MachineIndependent/glslang.y" +#line 1334 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6130 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6148 "MachineIndependent/glslang_tab.cpp" break; case 154: /* single_type_qualifier: invariant_qualifier */ -#line 1337 "glslang/MachineIndependent/glslang.y" +#line 1338 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6139 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6157 "MachineIndependent/glslang_tab.cpp" break; case 155: /* single_type_qualifier: precise_qualifier */ -#line 1342 "glslang/MachineIndependent/glslang.y" +#line 1343 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6148 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6166 "MachineIndependent/glslang_tab.cpp" break; case 156: /* single_type_qualifier: non_uniform_qualifier */ -#line 1346 "glslang/MachineIndependent/glslang.y" +#line 1347 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6156 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6174 "MachineIndependent/glslang_tab.cpp" break; case 157: /* storage_qualifier: CONST */ -#line 1353 "glslang/MachineIndependent/glslang.y" +#line 1354 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqConst; // will later turn into EvqConstReadOnly, if the initializer is not constant } -#line 6165 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6183 "MachineIndependent/glslang_tab.cpp" break; case 158: /* storage_qualifier: INOUT */ -#line 1357 "glslang/MachineIndependent/glslang.y" +#line 1358 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "inout"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqInOut; } -#line 6175 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6193 "MachineIndependent/glslang_tab.cpp" break; case 159: /* storage_qualifier: IN */ -#line 1362 "glslang/MachineIndependent/glslang.y" +#line 1363 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "in"); (yyval.interm.type).init((yyvsp[0].lex).loc); // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqIn; } -#line 6186 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6204 "MachineIndependent/glslang_tab.cpp" break; case 160: /* storage_qualifier: OUT */ -#line 1368 "glslang/MachineIndependent/glslang.y" +#line 1369 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "out"); (yyval.interm.type).init((yyvsp[0].lex).loc); // whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqOut; } -#line 6197 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6215 "MachineIndependent/glslang_tab.cpp" break; case 161: /* storage_qualifier: CENTROID */ -#line 1374 "glslang/MachineIndependent/glslang.y" +#line 1375 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, 0, "centroid"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "centroid"); @@ -6205,21 +6223,21 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.centroid = true; } -#line 6209 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6227 "MachineIndependent/glslang_tab.cpp" break; case 162: /* storage_qualifier: UNIFORM */ -#line 1381 "glslang/MachineIndependent/glslang.y" +#line 1382 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "uniform"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqUniform; } -#line 6219 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6237 "MachineIndependent/glslang_tab.cpp" break; case 163: /* storage_qualifier: SHARED */ -#line 1386 "glslang/MachineIndependent/glslang.y" +#line 1387 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "shared"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared"); @@ -6228,21 +6246,21 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqShared; } -#line 6232 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6250 "MachineIndependent/glslang_tab.cpp" break; case 164: /* storage_qualifier: BUFFER */ -#line 1394 "glslang/MachineIndependent/glslang.y" +#line 1395 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "buffer"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqBuffer; } -#line 6242 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6260 "MachineIndependent/glslang_tab.cpp" break; case 165: /* storage_qualifier: ATTRIBUTE */ -#line 1400 "glslang/MachineIndependent/glslang.y" +#line 1401 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangVertex, "attribute"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "attribute"); @@ -6255,11 +6273,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 6259 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6277 "MachineIndependent/glslang_tab.cpp" break; case 166: /* storage_qualifier: VARYING */ -#line 1412 "glslang/MachineIndependent/glslang.y" +#line 1413 "MachineIndependent/glslang.y" { parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "varying"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "varying"); @@ -6274,32 +6292,32 @@ yyreduce: else (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 6278 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6296 "MachineIndependent/glslang_tab.cpp" break; case 167: /* storage_qualifier: PATCH */ -#line 1426 "glslang/MachineIndependent/glslang.y" +#line 1427 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "patch"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.patch = true; } -#line 6289 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6307 "MachineIndependent/glslang_tab.cpp" break; case 168: /* storage_qualifier: SAMPLE */ -#line 1432 "glslang/MachineIndependent/glslang.y" +#line 1433 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "sample"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.sample = true; } -#line 6299 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6317 "MachineIndependent/glslang_tab.cpp" break; case 169: /* storage_qualifier: HITATTRNV */ -#line 1437 "glslang/MachineIndependent/glslang.y" +#line 1438 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask @@ -6308,11 +6326,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 6312 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6330 "MachineIndependent/glslang_tab.cpp" break; case 170: /* storage_qualifier: HITATTREXT */ -#line 1445 "glslang/MachineIndependent/glslang.y" +#line 1446 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask @@ -6321,11 +6339,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 6325 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6343 "MachineIndependent/glslang_tab.cpp" break; case 171: /* storage_qualifier: PAYLOADNV */ -#line 1453 "glslang/MachineIndependent/glslang.y" +#line 1454 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | @@ -6334,11 +6352,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 6338 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6356 "MachineIndependent/glslang_tab.cpp" break; case 172: /* storage_qualifier: PAYLOADEXT */ -#line 1461 "glslang/MachineIndependent/glslang.y" +#line 1462 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | @@ -6347,11 +6365,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 6351 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6369 "MachineIndependent/glslang_tab.cpp" break; case 173: /* storage_qualifier: PAYLOADINNV */ -#line 1469 "glslang/MachineIndependent/glslang.y" +#line 1470 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask | @@ -6360,11 +6378,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 6364 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6382 "MachineIndependent/glslang_tab.cpp" break; case 174: /* storage_qualifier: PAYLOADINEXT */ -#line 1477 "glslang/MachineIndependent/glslang.y" +#line 1478 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask | @@ -6373,11 +6391,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 6377 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6395 "MachineIndependent/glslang_tab.cpp" break; case 175: /* storage_qualifier: CALLDATANV */ -#line 1485 "glslang/MachineIndependent/glslang.y" +#line 1486 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | @@ -6386,11 +6404,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 6390 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6408 "MachineIndependent/glslang_tab.cpp" break; case 176: /* storage_qualifier: CALLDATAEXT */ -#line 1493 "glslang/MachineIndependent/glslang.y" +#line 1494 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | @@ -6399,11 +6417,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 6403 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6421 "MachineIndependent/glslang_tab.cpp" break; case 177: /* storage_qualifier: CALLDATAINNV */ -#line 1501 "glslang/MachineIndependent/glslang.y" +#line 1502 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInNV"); @@ -6411,11 +6429,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 6415 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6433 "MachineIndependent/glslang_tab.cpp" break; case 178: /* storage_qualifier: CALLDATAINEXT */ -#line 1508 "glslang/MachineIndependent/glslang.y" +#line 1509 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInEXT"); @@ -6423,175 +6441,175 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 6427 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6445 "MachineIndependent/glslang_tab.cpp" break; case 179: /* storage_qualifier: COHERENT */ -#line 1515 "glslang/MachineIndependent/glslang.y" +#line 1516 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.coherent = true; } -#line 6436 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6454 "MachineIndependent/glslang_tab.cpp" break; case 180: /* storage_qualifier: DEVICECOHERENT */ -#line 1519 "glslang/MachineIndependent/glslang.y" +#line 1520 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "devicecoherent"); (yyval.interm.type).qualifier.devicecoherent = true; } -#line 6446 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6464 "MachineIndependent/glslang_tab.cpp" break; case 181: /* storage_qualifier: QUEUEFAMILYCOHERENT */ -#line 1524 "glslang/MachineIndependent/glslang.y" +#line 1525 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "queuefamilycoherent"); (yyval.interm.type).qualifier.queuefamilycoherent = true; } -#line 6456 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6474 "MachineIndependent/glslang_tab.cpp" break; case 182: /* storage_qualifier: WORKGROUPCOHERENT */ -#line 1529 "glslang/MachineIndependent/glslang.y" +#line 1530 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "workgroupcoherent"); (yyval.interm.type).qualifier.workgroupcoherent = true; } -#line 6466 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6484 "MachineIndependent/glslang_tab.cpp" break; case 183: /* storage_qualifier: SUBGROUPCOHERENT */ -#line 1534 "glslang/MachineIndependent/glslang.y" +#line 1535 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "subgroupcoherent"); (yyval.interm.type).qualifier.subgroupcoherent = true; } -#line 6476 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6494 "MachineIndependent/glslang_tab.cpp" break; case 184: /* storage_qualifier: NONPRIVATE */ -#line 1539 "glslang/MachineIndependent/glslang.y" +#line 1540 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "nonprivate"); (yyval.interm.type).qualifier.nonprivate = true; } -#line 6486 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6504 "MachineIndependent/glslang_tab.cpp" break; case 185: /* storage_qualifier: SHADERCALLCOHERENT */ -#line 1544 "glslang/MachineIndependent/glslang.y" +#line 1545 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_ray_tracing, "shadercallcoherent"); (yyval.interm.type).qualifier.shadercallcoherent = true; } -#line 6496 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6514 "MachineIndependent/glslang_tab.cpp" break; case 186: /* storage_qualifier: VOLATILE */ -#line 1549 "glslang/MachineIndependent/glslang.y" +#line 1550 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.volatil = true; } -#line 6505 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6523 "MachineIndependent/glslang_tab.cpp" break; case 187: /* storage_qualifier: RESTRICT */ -#line 1553 "glslang/MachineIndependent/glslang.y" +#line 1554 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.restrict = true; } -#line 6514 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6532 "MachineIndependent/glslang_tab.cpp" break; case 188: /* storage_qualifier: READONLY */ -#line 1557 "glslang/MachineIndependent/glslang.y" +#line 1558 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.readonly = true; } -#line 6523 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6541 "MachineIndependent/glslang_tab.cpp" break; case 189: /* storage_qualifier: WRITEONLY */ -#line 1561 "glslang/MachineIndependent/glslang.y" +#line 1562 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.writeonly = true; } -#line 6532 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6550 "MachineIndependent/glslang_tab.cpp" break; case 190: /* storage_qualifier: SUBROUTINE */ -#line 1565 "glslang/MachineIndependent/glslang.y" +#line 1566 "MachineIndependent/glslang.y" { parseContext.spvRemoved((yyvsp[0].lex).loc, "subroutine"); parseContext.globalCheck((yyvsp[0].lex).loc, "subroutine"); parseContext.unimplemented((yyvsp[0].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[0].lex).loc); } -#line 6543 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6561 "MachineIndependent/glslang_tab.cpp" break; case 191: /* storage_qualifier: SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN */ -#line 1571 "glslang/MachineIndependent/glslang.y" +#line 1572 "MachineIndependent/glslang.y" { parseContext.spvRemoved((yyvsp[-3].lex).loc, "subroutine"); parseContext.globalCheck((yyvsp[-3].lex).loc, "subroutine"); parseContext.unimplemented((yyvsp[-3].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[-3].lex).loc); } -#line 6554 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6572 "MachineIndependent/glslang_tab.cpp" break; case 192: /* non_uniform_qualifier: NONUNIFORM */ -#line 1582 "glslang/MachineIndependent/glslang.y" +#line 1583 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nonUniform = true; } -#line 6563 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6581 "MachineIndependent/glslang_tab.cpp" break; case 193: /* type_name_list: IDENTIFIER */ -#line 1589 "glslang/MachineIndependent/glslang.y" +#line 1590 "MachineIndependent/glslang.y" { // TODO } -#line 6571 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6589 "MachineIndependent/glslang_tab.cpp" break; case 194: /* type_name_list: type_name_list COMMA IDENTIFIER */ -#line 1592 "glslang/MachineIndependent/glslang.y" +#line 1593 "MachineIndependent/glslang.y" { // TODO: 4.0 semantics: subroutines // 1) make sure each identifier is a type declared earlier with SUBROUTINE // 2) save all of the identifiers for future comparison with the declared function } -#line 6581 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6599 "MachineIndependent/glslang_tab.cpp" break; case 195: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt */ -#line 1601 "glslang/MachineIndependent/glslang.y" +#line 1602 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); (yyval.interm.type).typeParameters = (yyvsp[0].interm.typeParameters); } -#line 6591 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6609 "MachineIndependent/glslang_tab.cpp" break; case 196: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt array_specifier */ -#line 1606 "glslang/MachineIndependent/glslang.y" +#line 1607 "MachineIndependent/glslang.y" { parseContext.arrayOfArrayVersionCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes); (yyval.interm.type) = (yyvsp[-2].interm.type); @@ -6599,21 +6617,21 @@ yyreduce: (yyval.interm.type).typeParameters = (yyvsp[-1].interm.typeParameters); (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes; } -#line 6603 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6621 "MachineIndependent/glslang_tab.cpp" break; case 197: /* array_specifier: LEFT_BRACKET RIGHT_BRACKET */ -#line 1616 "glslang/MachineIndependent/glslang.y" +#line 1617 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).arraySizes = new TArraySizes; (yyval.interm).arraySizes->addInnerSize(); } -#line 6613 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6631 "MachineIndependent/glslang_tab.cpp" break; case 198: /* array_specifier: LEFT_BRACKET conditional_expression RIGHT_BRACKET */ -#line 1621 "glslang/MachineIndependent/glslang.y" +#line 1622 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[-2].lex).loc; (yyval.interm).arraySizes = new TArraySizes; @@ -6622,20 +6640,20 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 6626 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6644 "MachineIndependent/glslang_tab.cpp" break; case 199: /* array_specifier: array_specifier LEFT_BRACKET RIGHT_BRACKET */ -#line 1629 "glslang/MachineIndependent/glslang.y" +#line 1630 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-2].interm); (yyval.interm).arraySizes->addInnerSize(); } -#line 6635 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6653 "MachineIndependent/glslang_tab.cpp" break; case 200: /* array_specifier: array_specifier LEFT_BRACKET conditional_expression RIGHT_BRACKET */ -#line 1633 "glslang/MachineIndependent/glslang.y" +#line 1634 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-3].interm); @@ -6643,35 +6661,35 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 6647 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6665 "MachineIndependent/glslang_tab.cpp" break; case 201: /* type_parameter_specifier_opt: type_parameter_specifier */ -#line 1643 "glslang/MachineIndependent/glslang.y" +#line 1644 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[0].interm.typeParameters); } -#line 6655 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6673 "MachineIndependent/glslang_tab.cpp" break; case 202: /* type_parameter_specifier_opt: %empty */ -#line 1646 "glslang/MachineIndependent/glslang.y" +#line 1647 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = 0; } -#line 6663 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6681 "MachineIndependent/glslang_tab.cpp" break; case 203: /* type_parameter_specifier: LEFT_ANGLE type_parameter_specifier_list RIGHT_ANGLE */ -#line 1652 "glslang/MachineIndependent/glslang.y" +#line 1653 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[-1].interm.typeParameters); } -#line 6671 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6689 "MachineIndependent/glslang_tab.cpp" break; case 204: /* type_parameter_specifier_list: unary_expression */ -#line 1658 "glslang/MachineIndependent/glslang.y" +#line 1659 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = new TArraySizes; @@ -6679,11 +6697,11 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); (yyval.interm.typeParameters)->addInnerSize(size); } -#line 6683 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6701 "MachineIndependent/glslang_tab.cpp" break; case 205: /* type_parameter_specifier_list: type_parameter_specifier_list COMMA unary_expression */ -#line 1665 "glslang/MachineIndependent/glslang.y" +#line 1666 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[-2].interm.typeParameters); @@ -6691,300 +6709,300 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); (yyval.interm.typeParameters)->addInnerSize(size); } -#line 6695 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6713 "MachineIndependent/glslang_tab.cpp" break; case 206: /* type_specifier_nonarray: VOID */ -#line 1675 "glslang/MachineIndependent/glslang.y" +#line 1676 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtVoid; } -#line 6704 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6722 "MachineIndependent/glslang_tab.cpp" break; case 207: /* type_specifier_nonarray: FLOAT */ -#line 1679 "glslang/MachineIndependent/glslang.y" +#line 1680 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 6713 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6731 "MachineIndependent/glslang_tab.cpp" break; case 208: /* type_specifier_nonarray: INT */ -#line 1683 "glslang/MachineIndependent/glslang.y" +#line 1684 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 6722 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6740 "MachineIndependent/glslang_tab.cpp" break; case 209: /* type_specifier_nonarray: UINT */ -#line 1687 "glslang/MachineIndependent/glslang.y" +#line 1688 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 6732 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6750 "MachineIndependent/glslang_tab.cpp" break; case 210: /* type_specifier_nonarray: BOOL */ -#line 1692 "glslang/MachineIndependent/glslang.y" +#line 1693 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; } -#line 6741 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6759 "MachineIndependent/glslang_tab.cpp" break; case 211: /* type_specifier_nonarray: VEC2 */ -#line 1696 "glslang/MachineIndependent/glslang.y" +#line 1697 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 6751 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6769 "MachineIndependent/glslang_tab.cpp" break; case 212: /* type_specifier_nonarray: VEC3 */ -#line 1701 "glslang/MachineIndependent/glslang.y" +#line 1702 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 6761 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6779 "MachineIndependent/glslang_tab.cpp" break; case 213: /* type_specifier_nonarray: VEC4 */ -#line 1706 "glslang/MachineIndependent/glslang.y" +#line 1707 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 6771 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6789 "MachineIndependent/glslang_tab.cpp" break; case 214: /* type_specifier_nonarray: BVEC2 */ -#line 1711 "glslang/MachineIndependent/glslang.y" +#line 1712 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(2); } -#line 6781 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6799 "MachineIndependent/glslang_tab.cpp" break; case 215: /* type_specifier_nonarray: BVEC3 */ -#line 1716 "glslang/MachineIndependent/glslang.y" +#line 1717 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(3); } -#line 6791 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6809 "MachineIndependent/glslang_tab.cpp" break; case 216: /* type_specifier_nonarray: BVEC4 */ -#line 1721 "glslang/MachineIndependent/glslang.y" +#line 1722 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(4); } -#line 6801 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6819 "MachineIndependent/glslang_tab.cpp" break; case 217: /* type_specifier_nonarray: IVEC2 */ -#line 1726 "glslang/MachineIndependent/glslang.y" +#line 1727 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 6811 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6829 "MachineIndependent/glslang_tab.cpp" break; case 218: /* type_specifier_nonarray: IVEC3 */ -#line 1731 "glslang/MachineIndependent/glslang.y" +#line 1732 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 6821 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6839 "MachineIndependent/glslang_tab.cpp" break; case 219: /* type_specifier_nonarray: IVEC4 */ -#line 1736 "glslang/MachineIndependent/glslang.y" +#line 1737 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 6831 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6849 "MachineIndependent/glslang_tab.cpp" break; case 220: /* type_specifier_nonarray: UVEC2 */ -#line 1741 "glslang/MachineIndependent/glslang.y" +#line 1742 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 6842 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6860 "MachineIndependent/glslang_tab.cpp" break; case 221: /* type_specifier_nonarray: UVEC3 */ -#line 1747 "glslang/MachineIndependent/glslang.y" +#line 1748 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 6853 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6871 "MachineIndependent/glslang_tab.cpp" break; case 222: /* type_specifier_nonarray: UVEC4 */ -#line 1753 "glslang/MachineIndependent/glslang.y" +#line 1754 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 6864 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6882 "MachineIndependent/glslang_tab.cpp" break; case 223: /* type_specifier_nonarray: MAT2 */ -#line 1759 "glslang/MachineIndependent/glslang.y" +#line 1760 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 6874 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6892 "MachineIndependent/glslang_tab.cpp" break; case 224: /* type_specifier_nonarray: MAT3 */ -#line 1764 "glslang/MachineIndependent/glslang.y" +#line 1765 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 6884 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6902 "MachineIndependent/glslang_tab.cpp" break; case 225: /* type_specifier_nonarray: MAT4 */ -#line 1769 "glslang/MachineIndependent/glslang.y" +#line 1770 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 6894 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6912 "MachineIndependent/glslang_tab.cpp" break; case 226: /* type_specifier_nonarray: MAT2X2 */ -#line 1774 "glslang/MachineIndependent/glslang.y" +#line 1775 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 6904 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6922 "MachineIndependent/glslang_tab.cpp" break; case 227: /* type_specifier_nonarray: MAT2X3 */ -#line 1779 "glslang/MachineIndependent/glslang.y" +#line 1780 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 6914 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6932 "MachineIndependent/glslang_tab.cpp" break; case 228: /* type_specifier_nonarray: MAT2X4 */ -#line 1784 "glslang/MachineIndependent/glslang.y" +#line 1785 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 6924 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6942 "MachineIndependent/glslang_tab.cpp" break; case 229: /* type_specifier_nonarray: MAT3X2 */ -#line 1789 "glslang/MachineIndependent/glslang.y" +#line 1790 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 6934 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6952 "MachineIndependent/glslang_tab.cpp" break; case 230: /* type_specifier_nonarray: MAT3X3 */ -#line 1794 "glslang/MachineIndependent/glslang.y" +#line 1795 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 6944 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6962 "MachineIndependent/glslang_tab.cpp" break; case 231: /* type_specifier_nonarray: MAT3X4 */ -#line 1799 "glslang/MachineIndependent/glslang.y" +#line 1800 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 6954 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6972 "MachineIndependent/glslang_tab.cpp" break; case 232: /* type_specifier_nonarray: MAT4X2 */ -#line 1804 "glslang/MachineIndependent/glslang.y" +#line 1805 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 6964 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6982 "MachineIndependent/glslang_tab.cpp" break; case 233: /* type_specifier_nonarray: MAT4X3 */ -#line 1809 "glslang/MachineIndependent/glslang.y" +#line 1810 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 6974 "glslang/MachineIndependent/glslang_tab.cpp" +#line 6992 "MachineIndependent/glslang_tab.cpp" break; case 234: /* type_specifier_nonarray: MAT4X4 */ -#line 1814 "glslang/MachineIndependent/glslang.y" +#line 1815 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 6984 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7002 "MachineIndependent/glslang_tab.cpp" break; case 235: /* type_specifier_nonarray: DOUBLE */ -#line 1820 "glslang/MachineIndependent/glslang.y" +#line 1821 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -6992,121 +7010,121 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 6996 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7014 "MachineIndependent/glslang_tab.cpp" break; case 236: /* type_specifier_nonarray: FLOAT16_T */ -#line 1827 "glslang/MachineIndependent/glslang.y" +#line 1828 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "float16_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; } -#line 7006 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7024 "MachineIndependent/glslang_tab.cpp" break; case 237: /* type_specifier_nonarray: FLOAT32_T */ -#line 1832 "glslang/MachineIndependent/glslang.y" +#line 1833 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 7016 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7034 "MachineIndependent/glslang_tab.cpp" break; case 238: /* type_specifier_nonarray: FLOAT64_T */ -#line 1837 "glslang/MachineIndependent/glslang.y" +#line 1838 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 7026 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7044 "MachineIndependent/glslang_tab.cpp" break; case 239: /* type_specifier_nonarray: INT8_T */ -#line 1842 "glslang/MachineIndependent/glslang.y" +#line 1843 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; } -#line 7036 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7054 "MachineIndependent/glslang_tab.cpp" break; case 240: /* type_specifier_nonarray: UINT8_T */ -#line 1847 "glslang/MachineIndependent/glslang.y" +#line 1848 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; } -#line 7046 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7064 "MachineIndependent/glslang_tab.cpp" break; case 241: /* type_specifier_nonarray: INT16_T */ -#line 1852 "glslang/MachineIndependent/glslang.y" +#line 1853 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; } -#line 7056 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7074 "MachineIndependent/glslang_tab.cpp" break; case 242: /* type_specifier_nonarray: UINT16_T */ -#line 1857 "glslang/MachineIndependent/glslang.y" +#line 1858 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; } -#line 7066 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7084 "MachineIndependent/glslang_tab.cpp" break; case 243: /* type_specifier_nonarray: INT32_T */ -#line 1862 "glslang/MachineIndependent/glslang.y" +#line 1863 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 7076 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7094 "MachineIndependent/glslang_tab.cpp" break; case 244: /* type_specifier_nonarray: UINT32_T */ -#line 1867 "glslang/MachineIndependent/glslang.y" +#line 1868 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 7086 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7104 "MachineIndependent/glslang_tab.cpp" break; case 245: /* type_specifier_nonarray: INT64_T */ -#line 1872 "glslang/MachineIndependent/glslang.y" +#line 1873 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; } -#line 7096 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7114 "MachineIndependent/glslang_tab.cpp" break; case 246: /* type_specifier_nonarray: UINT64_T */ -#line 1877 "glslang/MachineIndependent/glslang.y" +#line 1878 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; } -#line 7106 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7124 "MachineIndependent/glslang_tab.cpp" break; case 247: /* type_specifier_nonarray: DVEC2 */ -#line 1882 "glslang/MachineIndependent/glslang.y" +#line 1883 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7115,11 +7133,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 7119 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7137 "MachineIndependent/glslang_tab.cpp" break; case 248: /* type_specifier_nonarray: DVEC3 */ -#line 1890 "glslang/MachineIndependent/glslang.y" +#line 1891 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7128,11 +7146,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 7132 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7150 "MachineIndependent/glslang_tab.cpp" break; case 249: /* type_specifier_nonarray: DVEC4 */ -#line 1898 "glslang/MachineIndependent/glslang.y" +#line 1899 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7141,374 +7159,374 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 7145 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7163 "MachineIndependent/glslang_tab.cpp" break; case 250: /* type_specifier_nonarray: F16VEC2 */ -#line 1906 "glslang/MachineIndependent/glslang.y" +#line 1907 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(2); } -#line 7156 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7174 "MachineIndependent/glslang_tab.cpp" break; case 251: /* type_specifier_nonarray: F16VEC3 */ -#line 1912 "glslang/MachineIndependent/glslang.y" +#line 1913 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(3); } -#line 7167 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7185 "MachineIndependent/glslang_tab.cpp" break; case 252: /* type_specifier_nonarray: F16VEC4 */ -#line 1918 "glslang/MachineIndependent/glslang.y" +#line 1919 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(4); } -#line 7178 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7196 "MachineIndependent/glslang_tab.cpp" break; case 253: /* type_specifier_nonarray: F32VEC2 */ -#line 1924 "glslang/MachineIndependent/glslang.y" +#line 1925 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 7189 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7207 "MachineIndependent/glslang_tab.cpp" break; case 254: /* type_specifier_nonarray: F32VEC3 */ -#line 1930 "glslang/MachineIndependent/glslang.y" +#line 1931 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 7200 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7218 "MachineIndependent/glslang_tab.cpp" break; case 255: /* type_specifier_nonarray: F32VEC4 */ -#line 1936 "glslang/MachineIndependent/glslang.y" +#line 1937 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 7211 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7229 "MachineIndependent/glslang_tab.cpp" break; case 256: /* type_specifier_nonarray: F64VEC2 */ -#line 1942 "glslang/MachineIndependent/glslang.y" +#line 1943 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 7222 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7240 "MachineIndependent/glslang_tab.cpp" break; case 257: /* type_specifier_nonarray: F64VEC3 */ -#line 1948 "glslang/MachineIndependent/glslang.y" +#line 1949 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 7233 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7251 "MachineIndependent/glslang_tab.cpp" break; case 258: /* type_specifier_nonarray: F64VEC4 */ -#line 1954 "glslang/MachineIndependent/glslang.y" +#line 1955 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 7244 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7262 "MachineIndependent/glslang_tab.cpp" break; case 259: /* type_specifier_nonarray: I8VEC2 */ -#line 1960 "glslang/MachineIndependent/glslang.y" +#line 1961 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(2); } -#line 7255 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7273 "MachineIndependent/glslang_tab.cpp" break; case 260: /* type_specifier_nonarray: I8VEC3 */ -#line 1966 "glslang/MachineIndependent/glslang.y" +#line 1967 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(3); } -#line 7266 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7284 "MachineIndependent/glslang_tab.cpp" break; case 261: /* type_specifier_nonarray: I8VEC4 */ -#line 1972 "glslang/MachineIndependent/glslang.y" +#line 1973 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(4); } -#line 7277 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7295 "MachineIndependent/glslang_tab.cpp" break; case 262: /* type_specifier_nonarray: I16VEC2 */ -#line 1978 "glslang/MachineIndependent/glslang.y" +#line 1979 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(2); } -#line 7288 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7306 "MachineIndependent/glslang_tab.cpp" break; case 263: /* type_specifier_nonarray: I16VEC3 */ -#line 1984 "glslang/MachineIndependent/glslang.y" +#line 1985 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(3); } -#line 7299 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7317 "MachineIndependent/glslang_tab.cpp" break; case 264: /* type_specifier_nonarray: I16VEC4 */ -#line 1990 "glslang/MachineIndependent/glslang.y" +#line 1991 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(4); } -#line 7310 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7328 "MachineIndependent/glslang_tab.cpp" break; case 265: /* type_specifier_nonarray: I32VEC2 */ -#line 1996 "glslang/MachineIndependent/glslang.y" +#line 1997 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 7321 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7339 "MachineIndependent/glslang_tab.cpp" break; case 266: /* type_specifier_nonarray: I32VEC3 */ -#line 2002 "glslang/MachineIndependent/glslang.y" +#line 2003 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 7332 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7350 "MachineIndependent/glslang_tab.cpp" break; case 267: /* type_specifier_nonarray: I32VEC4 */ -#line 2008 "glslang/MachineIndependent/glslang.y" +#line 2009 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 7343 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7361 "MachineIndependent/glslang_tab.cpp" break; case 268: /* type_specifier_nonarray: I64VEC2 */ -#line 2014 "glslang/MachineIndependent/glslang.y" +#line 2015 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(2); } -#line 7354 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7372 "MachineIndependent/glslang_tab.cpp" break; case 269: /* type_specifier_nonarray: I64VEC3 */ -#line 2020 "glslang/MachineIndependent/glslang.y" +#line 2021 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(3); } -#line 7365 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7383 "MachineIndependent/glslang_tab.cpp" break; case 270: /* type_specifier_nonarray: I64VEC4 */ -#line 2026 "glslang/MachineIndependent/glslang.y" +#line 2027 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(4); } -#line 7376 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7394 "MachineIndependent/glslang_tab.cpp" break; case 271: /* type_specifier_nonarray: U8VEC2 */ -#line 2032 "glslang/MachineIndependent/glslang.y" +#line 2033 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(2); } -#line 7387 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7405 "MachineIndependent/glslang_tab.cpp" break; case 272: /* type_specifier_nonarray: U8VEC3 */ -#line 2038 "glslang/MachineIndependent/glslang.y" +#line 2039 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(3); } -#line 7398 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7416 "MachineIndependent/glslang_tab.cpp" break; case 273: /* type_specifier_nonarray: U8VEC4 */ -#line 2044 "glslang/MachineIndependent/glslang.y" +#line 2045 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(4); } -#line 7409 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7427 "MachineIndependent/glslang_tab.cpp" break; case 274: /* type_specifier_nonarray: U16VEC2 */ -#line 2050 "glslang/MachineIndependent/glslang.y" +#line 2051 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(2); } -#line 7420 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7438 "MachineIndependent/glslang_tab.cpp" break; case 275: /* type_specifier_nonarray: U16VEC3 */ -#line 2056 "glslang/MachineIndependent/glslang.y" +#line 2057 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(3); } -#line 7431 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7449 "MachineIndependent/glslang_tab.cpp" break; case 276: /* type_specifier_nonarray: U16VEC4 */ -#line 2062 "glslang/MachineIndependent/glslang.y" +#line 2063 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(4); } -#line 7442 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7460 "MachineIndependent/glslang_tab.cpp" break; case 277: /* type_specifier_nonarray: U32VEC2 */ -#line 2068 "glslang/MachineIndependent/glslang.y" +#line 2069 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 7453 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7471 "MachineIndependent/glslang_tab.cpp" break; case 278: /* type_specifier_nonarray: U32VEC3 */ -#line 2074 "glslang/MachineIndependent/glslang.y" +#line 2075 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 7464 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7482 "MachineIndependent/glslang_tab.cpp" break; case 279: /* type_specifier_nonarray: U32VEC4 */ -#line 2080 "glslang/MachineIndependent/glslang.y" +#line 2081 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 7475 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7493 "MachineIndependent/glslang_tab.cpp" break; case 280: /* type_specifier_nonarray: U64VEC2 */ -#line 2086 "glslang/MachineIndependent/glslang.y" +#line 2087 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(2); } -#line 7486 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7504 "MachineIndependent/glslang_tab.cpp" break; case 281: /* type_specifier_nonarray: U64VEC3 */ -#line 2092 "glslang/MachineIndependent/glslang.y" +#line 2093 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(3); } -#line 7497 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7515 "MachineIndependent/glslang_tab.cpp" break; case 282: /* type_specifier_nonarray: U64VEC4 */ -#line 2098 "glslang/MachineIndependent/glslang.y" +#line 2099 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(4); } -#line 7508 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7526 "MachineIndependent/glslang_tab.cpp" break; case 283: /* type_specifier_nonarray: DMAT2 */ -#line 2104 "glslang/MachineIndependent/glslang.y" +#line 2105 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7517,11 +7535,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 7521 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7539 "MachineIndependent/glslang_tab.cpp" break; case 284: /* type_specifier_nonarray: DMAT3 */ -#line 2112 "glslang/MachineIndependent/glslang.y" +#line 2113 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7530,11 +7548,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 7534 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7552 "MachineIndependent/glslang_tab.cpp" break; case 285: /* type_specifier_nonarray: DMAT4 */ -#line 2120 "glslang/MachineIndependent/glslang.y" +#line 2121 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7543,11 +7561,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 7547 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7565 "MachineIndependent/glslang_tab.cpp" break; case 286: /* type_specifier_nonarray: DMAT2X2 */ -#line 2128 "glslang/MachineIndependent/glslang.y" +#line 2129 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7556,11 +7574,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 7560 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7578 "MachineIndependent/glslang_tab.cpp" break; case 287: /* type_specifier_nonarray: DMAT2X3 */ -#line 2136 "glslang/MachineIndependent/glslang.y" +#line 2137 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7569,11 +7587,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 7573 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7591 "MachineIndependent/glslang_tab.cpp" break; case 288: /* type_specifier_nonarray: DMAT2X4 */ -#line 2144 "glslang/MachineIndependent/glslang.y" +#line 2145 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7582,11 +7600,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 7586 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7604 "MachineIndependent/glslang_tab.cpp" break; case 289: /* type_specifier_nonarray: DMAT3X2 */ -#line 2152 "glslang/MachineIndependent/glslang.y" +#line 2153 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7595,11 +7613,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 7599 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7617 "MachineIndependent/glslang_tab.cpp" break; case 290: /* type_specifier_nonarray: DMAT3X3 */ -#line 2160 "glslang/MachineIndependent/glslang.y" +#line 2161 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7608,11 +7626,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 7612 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7630 "MachineIndependent/glslang_tab.cpp" break; case 291: /* type_specifier_nonarray: DMAT3X4 */ -#line 2168 "glslang/MachineIndependent/glslang.y" +#line 2169 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7621,11 +7639,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 7625 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7643 "MachineIndependent/glslang_tab.cpp" break; case 292: /* type_specifier_nonarray: DMAT4X2 */ -#line 2176 "glslang/MachineIndependent/glslang.y" +#line 2177 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7634,11 +7652,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 7638 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7656 "MachineIndependent/glslang_tab.cpp" break; case 293: /* type_specifier_nonarray: DMAT4X3 */ -#line 2184 "glslang/MachineIndependent/glslang.y" +#line 2185 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7647,11 +7665,11 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 7651 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7669 "MachineIndependent/glslang_tab.cpp" break; case 294: /* type_specifier_nonarray: DMAT4X4 */ -#line 2192 "glslang/MachineIndependent/glslang.y" +#line 2193 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7660,2228 +7678,2228 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 7664 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7682 "MachineIndependent/glslang_tab.cpp" break; case 295: /* type_specifier_nonarray: F16MAT2 */ -#line 2200 "glslang/MachineIndependent/glslang.y" +#line 2201 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 2); } -#line 7675 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7693 "MachineIndependent/glslang_tab.cpp" break; case 296: /* type_specifier_nonarray: F16MAT3 */ -#line 2206 "glslang/MachineIndependent/glslang.y" +#line 2207 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 3); } -#line 7686 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7704 "MachineIndependent/glslang_tab.cpp" break; case 297: /* type_specifier_nonarray: F16MAT4 */ -#line 2212 "glslang/MachineIndependent/glslang.y" +#line 2213 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 7697 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7715 "MachineIndependent/glslang_tab.cpp" break; case 298: /* type_specifier_nonarray: F16MAT2X2 */ -#line 2218 "glslang/MachineIndependent/glslang.y" +#line 2219 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 2); } -#line 7708 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7726 "MachineIndependent/glslang_tab.cpp" break; case 299: /* type_specifier_nonarray: F16MAT2X3 */ -#line 2224 "glslang/MachineIndependent/glslang.y" +#line 2225 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 3); } -#line 7719 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7737 "MachineIndependent/glslang_tab.cpp" break; case 300: /* type_specifier_nonarray: F16MAT2X4 */ -#line 2230 "glslang/MachineIndependent/glslang.y" +#line 2231 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 4); } -#line 7730 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7748 "MachineIndependent/glslang_tab.cpp" break; case 301: /* type_specifier_nonarray: F16MAT3X2 */ -#line 2236 "glslang/MachineIndependent/glslang.y" +#line 2237 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 2); } -#line 7741 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7759 "MachineIndependent/glslang_tab.cpp" break; case 302: /* type_specifier_nonarray: F16MAT3X3 */ -#line 2242 "glslang/MachineIndependent/glslang.y" +#line 2243 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 3); } -#line 7752 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7770 "MachineIndependent/glslang_tab.cpp" break; case 303: /* type_specifier_nonarray: F16MAT3X4 */ -#line 2248 "glslang/MachineIndependent/glslang.y" +#line 2249 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 4); } -#line 7763 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7781 "MachineIndependent/glslang_tab.cpp" break; case 304: /* type_specifier_nonarray: F16MAT4X2 */ -#line 2254 "glslang/MachineIndependent/glslang.y" +#line 2255 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 2); } -#line 7774 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7792 "MachineIndependent/glslang_tab.cpp" break; case 305: /* type_specifier_nonarray: F16MAT4X3 */ -#line 2260 "glslang/MachineIndependent/glslang.y" +#line 2261 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 3); } -#line 7785 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7803 "MachineIndependent/glslang_tab.cpp" break; case 306: /* type_specifier_nonarray: F16MAT4X4 */ -#line 2266 "glslang/MachineIndependent/glslang.y" +#line 2267 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 7796 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7814 "MachineIndependent/glslang_tab.cpp" break; case 307: /* type_specifier_nonarray: F32MAT2 */ -#line 2272 "glslang/MachineIndependent/glslang.y" +#line 2273 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 7807 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7825 "MachineIndependent/glslang_tab.cpp" break; case 308: /* type_specifier_nonarray: F32MAT3 */ -#line 2278 "glslang/MachineIndependent/glslang.y" +#line 2279 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 7818 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7836 "MachineIndependent/glslang_tab.cpp" break; case 309: /* type_specifier_nonarray: F32MAT4 */ -#line 2284 "glslang/MachineIndependent/glslang.y" +#line 2285 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7829 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7847 "MachineIndependent/glslang_tab.cpp" break; case 310: /* type_specifier_nonarray: F32MAT2X2 */ -#line 2290 "glslang/MachineIndependent/glslang.y" +#line 2291 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 7840 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7858 "MachineIndependent/glslang_tab.cpp" break; case 311: /* type_specifier_nonarray: F32MAT2X3 */ -#line 2296 "glslang/MachineIndependent/glslang.y" +#line 2297 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 7851 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7869 "MachineIndependent/glslang_tab.cpp" break; case 312: /* type_specifier_nonarray: F32MAT2X4 */ -#line 2302 "glslang/MachineIndependent/glslang.y" +#line 2303 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 7862 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7880 "MachineIndependent/glslang_tab.cpp" break; case 313: /* type_specifier_nonarray: F32MAT3X2 */ -#line 2308 "glslang/MachineIndependent/glslang.y" +#line 2309 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 7873 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7891 "MachineIndependent/glslang_tab.cpp" break; case 314: /* type_specifier_nonarray: F32MAT3X3 */ -#line 2314 "glslang/MachineIndependent/glslang.y" +#line 2315 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 7884 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7902 "MachineIndependent/glslang_tab.cpp" break; case 315: /* type_specifier_nonarray: F32MAT3X4 */ -#line 2320 "glslang/MachineIndependent/glslang.y" +#line 2321 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 7895 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7913 "MachineIndependent/glslang_tab.cpp" break; case 316: /* type_specifier_nonarray: F32MAT4X2 */ -#line 2326 "glslang/MachineIndependent/glslang.y" +#line 2327 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 7906 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7924 "MachineIndependent/glslang_tab.cpp" break; case 317: /* type_specifier_nonarray: F32MAT4X3 */ -#line 2332 "glslang/MachineIndependent/glslang.y" +#line 2333 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 7917 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7935 "MachineIndependent/glslang_tab.cpp" break; case 318: /* type_specifier_nonarray: F32MAT4X4 */ -#line 2338 "glslang/MachineIndependent/glslang.y" +#line 2339 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7928 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7946 "MachineIndependent/glslang_tab.cpp" break; case 319: /* type_specifier_nonarray: F64MAT2 */ -#line 2344 "glslang/MachineIndependent/glslang.y" +#line 2345 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 7939 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7957 "MachineIndependent/glslang_tab.cpp" break; case 320: /* type_specifier_nonarray: F64MAT3 */ -#line 2350 "glslang/MachineIndependent/glslang.y" +#line 2351 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 7950 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7968 "MachineIndependent/glslang_tab.cpp" break; case 321: /* type_specifier_nonarray: F64MAT4 */ -#line 2356 "glslang/MachineIndependent/glslang.y" +#line 2357 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 7961 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7979 "MachineIndependent/glslang_tab.cpp" break; case 322: /* type_specifier_nonarray: F64MAT2X2 */ -#line 2362 "glslang/MachineIndependent/glslang.y" +#line 2363 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 7972 "glslang/MachineIndependent/glslang_tab.cpp" +#line 7990 "MachineIndependent/glslang_tab.cpp" break; case 323: /* type_specifier_nonarray: F64MAT2X3 */ -#line 2368 "glslang/MachineIndependent/glslang.y" +#line 2369 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 7983 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8001 "MachineIndependent/glslang_tab.cpp" break; case 324: /* type_specifier_nonarray: F64MAT2X4 */ -#line 2374 "glslang/MachineIndependent/glslang.y" +#line 2375 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 7994 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8012 "MachineIndependent/glslang_tab.cpp" break; case 325: /* type_specifier_nonarray: F64MAT3X2 */ -#line 2380 "glslang/MachineIndependent/glslang.y" +#line 2381 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 8005 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8023 "MachineIndependent/glslang_tab.cpp" break; case 326: /* type_specifier_nonarray: F64MAT3X3 */ -#line 2386 "glslang/MachineIndependent/glslang.y" +#line 2387 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8016 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8034 "MachineIndependent/glslang_tab.cpp" break; case 327: /* type_specifier_nonarray: F64MAT3X4 */ -#line 2392 "glslang/MachineIndependent/glslang.y" +#line 2393 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 8027 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8045 "MachineIndependent/glslang_tab.cpp" break; case 328: /* type_specifier_nonarray: F64MAT4X2 */ -#line 2398 "glslang/MachineIndependent/glslang.y" +#line 2399 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 8038 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8056 "MachineIndependent/glslang_tab.cpp" break; case 329: /* type_specifier_nonarray: F64MAT4X3 */ -#line 2404 "glslang/MachineIndependent/glslang.y" +#line 2405 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 8049 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8067 "MachineIndependent/glslang_tab.cpp" break; case 330: /* type_specifier_nonarray: F64MAT4X4 */ -#line 2410 "glslang/MachineIndependent/glslang.y" +#line 2411 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8060 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8078 "MachineIndependent/glslang_tab.cpp" break; case 331: /* type_specifier_nonarray: ACCSTRUCTNV */ -#line 2416 "glslang/MachineIndependent/glslang.y" +#line 2417 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 8069 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8087 "MachineIndependent/glslang_tab.cpp" break; case 332: /* type_specifier_nonarray: ACCSTRUCTEXT */ -#line 2420 "glslang/MachineIndependent/glslang.y" +#line 2421 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 8078 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8096 "MachineIndependent/glslang_tab.cpp" break; case 333: /* type_specifier_nonarray: RAYQUERYEXT */ -#line 2424 "glslang/MachineIndependent/glslang.y" +#line 2425 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtRayQuery; } -#line 8087 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8105 "MachineIndependent/glslang_tab.cpp" break; case 334: /* type_specifier_nonarray: ATOMIC_UINT */ -#line 2428 "glslang/MachineIndependent/glslang.y" +#line 2429 "MachineIndependent/glslang.y" { parseContext.vulkanRemoved((yyvsp[0].lex).loc, "atomic counter types"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAtomicUint; } -#line 8097 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8115 "MachineIndependent/glslang_tab.cpp" break; case 335: /* type_specifier_nonarray: SAMPLER1D */ -#line 2433 "glslang/MachineIndependent/glslang.y" +#line 2434 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D); } -#line 8107 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8125 "MachineIndependent/glslang_tab.cpp" break; case 336: /* type_specifier_nonarray: SAMPLER2D */ -#line 2439 "glslang/MachineIndependent/glslang.y" +#line 2440 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); } -#line 8117 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8135 "MachineIndependent/glslang_tab.cpp" break; case 337: /* type_specifier_nonarray: SAMPLER3D */ -#line 2444 "glslang/MachineIndependent/glslang.y" +#line 2445 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd3D); } -#line 8127 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8145 "MachineIndependent/glslang_tab.cpp" break; case 338: /* type_specifier_nonarray: SAMPLERCUBE */ -#line 2449 "glslang/MachineIndependent/glslang.y" +#line 2450 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube); } -#line 8137 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8155 "MachineIndependent/glslang_tab.cpp" break; case 339: /* type_specifier_nonarray: SAMPLER2DSHADOW */ -#line 2454 "glslang/MachineIndependent/glslang.y" +#line 2455 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true); } -#line 8147 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8165 "MachineIndependent/glslang_tab.cpp" break; case 340: /* type_specifier_nonarray: SAMPLERCUBESHADOW */ -#line 2459 "glslang/MachineIndependent/glslang.y" +#line 2460 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true); } -#line 8157 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8175 "MachineIndependent/glslang_tab.cpp" break; case 341: /* type_specifier_nonarray: SAMPLER2DARRAY */ -#line 2464 "glslang/MachineIndependent/glslang.y" +#line 2465 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true); } -#line 8167 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8185 "MachineIndependent/glslang_tab.cpp" break; case 342: /* type_specifier_nonarray: SAMPLER2DARRAYSHADOW */ -#line 2469 "glslang/MachineIndependent/glslang.y" +#line 2470 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true); } -#line 8177 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8195 "MachineIndependent/glslang_tab.cpp" break; case 343: /* type_specifier_nonarray: SAMPLER1DSHADOW */ -#line 2475 "glslang/MachineIndependent/glslang.y" +#line 2476 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true); } -#line 8187 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8205 "MachineIndependent/glslang_tab.cpp" break; case 344: /* type_specifier_nonarray: SAMPLER1DARRAY */ -#line 2480 "glslang/MachineIndependent/glslang.y" +#line 2481 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true); } -#line 8197 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8215 "MachineIndependent/glslang_tab.cpp" break; case 345: /* type_specifier_nonarray: SAMPLER1DARRAYSHADOW */ -#line 2485 "glslang/MachineIndependent/glslang.y" +#line 2486 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true); } -#line 8207 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8225 "MachineIndependent/glslang_tab.cpp" break; case 346: /* type_specifier_nonarray: SAMPLERCUBEARRAY */ -#line 2490 "glslang/MachineIndependent/glslang.y" +#line 2491 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true); } -#line 8217 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8235 "MachineIndependent/glslang_tab.cpp" break; case 347: /* type_specifier_nonarray: SAMPLERCUBEARRAYSHADOW */ -#line 2495 "glslang/MachineIndependent/glslang.y" +#line 2496 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true); } -#line 8227 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8245 "MachineIndependent/glslang_tab.cpp" break; case 348: /* type_specifier_nonarray: F16SAMPLER1D */ -#line 2500 "glslang/MachineIndependent/glslang.y" +#line 2501 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D); } -#line 8238 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8256 "MachineIndependent/glslang_tab.cpp" break; case 349: /* type_specifier_nonarray: F16SAMPLER2D */ -#line 2506 "glslang/MachineIndependent/glslang.y" +#line 2507 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D); } -#line 8249 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8267 "MachineIndependent/glslang_tab.cpp" break; case 350: /* type_specifier_nonarray: F16SAMPLER3D */ -#line 2512 "glslang/MachineIndependent/glslang.y" +#line 2513 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd3D); } -#line 8260 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8278 "MachineIndependent/glslang_tab.cpp" break; case 351: /* type_specifier_nonarray: F16SAMPLERCUBE */ -#line 2518 "glslang/MachineIndependent/glslang.y" +#line 2519 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube); } -#line 8271 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8289 "MachineIndependent/glslang_tab.cpp" break; case 352: /* type_specifier_nonarray: F16SAMPLER1DSHADOW */ -#line 2524 "glslang/MachineIndependent/glslang.y" +#line 2525 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, false, true); } -#line 8282 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8300 "MachineIndependent/glslang_tab.cpp" break; case 353: /* type_specifier_nonarray: F16SAMPLER2DSHADOW */ -#line 2530 "glslang/MachineIndependent/glslang.y" +#line 2531 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, true); } -#line 8293 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8311 "MachineIndependent/glslang_tab.cpp" break; case 354: /* type_specifier_nonarray: F16SAMPLERCUBESHADOW */ -#line 2536 "glslang/MachineIndependent/glslang.y" +#line 2537 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, false, true); } -#line 8304 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8322 "MachineIndependent/glslang_tab.cpp" break; case 355: /* type_specifier_nonarray: F16SAMPLER1DARRAY */ -#line 2542 "glslang/MachineIndependent/glslang.y" +#line 2543 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true); } -#line 8315 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8333 "MachineIndependent/glslang_tab.cpp" break; case 356: /* type_specifier_nonarray: F16SAMPLER2DARRAY */ -#line 2548 "glslang/MachineIndependent/glslang.y" +#line 2549 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true); } -#line 8326 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8344 "MachineIndependent/glslang_tab.cpp" break; case 357: /* type_specifier_nonarray: F16SAMPLER1DARRAYSHADOW */ -#line 2554 "glslang/MachineIndependent/glslang.y" +#line 2555 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true, true); } -#line 8337 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8355 "MachineIndependent/glslang_tab.cpp" break; case 358: /* type_specifier_nonarray: F16SAMPLER2DARRAYSHADOW */ -#line 2560 "glslang/MachineIndependent/glslang.y" +#line 2561 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, true); } -#line 8348 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8366 "MachineIndependent/glslang_tab.cpp" break; case 359: /* type_specifier_nonarray: F16SAMPLERCUBEARRAY */ -#line 2566 "glslang/MachineIndependent/glslang.y" +#line 2567 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true); } -#line 8359 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8377 "MachineIndependent/glslang_tab.cpp" break; case 360: /* type_specifier_nonarray: F16SAMPLERCUBEARRAYSHADOW */ -#line 2572 "glslang/MachineIndependent/glslang.y" +#line 2573 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true, true); } -#line 8370 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8388 "MachineIndependent/glslang_tab.cpp" break; case 361: /* type_specifier_nonarray: ISAMPLER1D */ -#line 2578 "glslang/MachineIndependent/glslang.y" +#line 2579 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D); } -#line 8380 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8398 "MachineIndependent/glslang_tab.cpp" break; case 362: /* type_specifier_nonarray: ISAMPLER2D */ -#line 2584 "glslang/MachineIndependent/glslang.y" +#line 2585 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D); } -#line 8390 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8408 "MachineIndependent/glslang_tab.cpp" break; case 363: /* type_specifier_nonarray: ISAMPLER3D */ -#line 2589 "glslang/MachineIndependent/glslang.y" +#line 2590 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd3D); } -#line 8400 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8418 "MachineIndependent/glslang_tab.cpp" break; case 364: /* type_specifier_nonarray: ISAMPLERCUBE */ -#line 2594 "glslang/MachineIndependent/glslang.y" +#line 2595 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube); } -#line 8410 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8428 "MachineIndependent/glslang_tab.cpp" break; case 365: /* type_specifier_nonarray: ISAMPLER2DARRAY */ -#line 2599 "glslang/MachineIndependent/glslang.y" +#line 2600 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true); } -#line 8420 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8438 "MachineIndependent/glslang_tab.cpp" break; case 366: /* type_specifier_nonarray: USAMPLER2D */ -#line 2604 "glslang/MachineIndependent/glslang.y" +#line 2605 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D); } -#line 8430 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8448 "MachineIndependent/glslang_tab.cpp" break; case 367: /* type_specifier_nonarray: USAMPLER3D */ -#line 2609 "glslang/MachineIndependent/glslang.y" +#line 2610 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd3D); } -#line 8440 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8458 "MachineIndependent/glslang_tab.cpp" break; case 368: /* type_specifier_nonarray: USAMPLERCUBE */ -#line 2614 "glslang/MachineIndependent/glslang.y" +#line 2615 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube); } -#line 8450 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8468 "MachineIndependent/glslang_tab.cpp" break; case 369: /* type_specifier_nonarray: ISAMPLER1DARRAY */ -#line 2620 "glslang/MachineIndependent/glslang.y" +#line 2621 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D, true); } -#line 8460 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8478 "MachineIndependent/glslang_tab.cpp" break; case 370: /* type_specifier_nonarray: ISAMPLERCUBEARRAY */ -#line 2625 "glslang/MachineIndependent/glslang.y" +#line 2626 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube, true); } -#line 8470 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8488 "MachineIndependent/glslang_tab.cpp" break; case 371: /* type_specifier_nonarray: USAMPLER1D */ -#line 2630 "glslang/MachineIndependent/glslang.y" +#line 2631 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D); } -#line 8480 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8498 "MachineIndependent/glslang_tab.cpp" break; case 372: /* type_specifier_nonarray: USAMPLER1DARRAY */ -#line 2635 "glslang/MachineIndependent/glslang.y" +#line 2636 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D, true); } -#line 8490 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8508 "MachineIndependent/glslang_tab.cpp" break; case 373: /* type_specifier_nonarray: USAMPLERCUBEARRAY */ -#line 2640 "glslang/MachineIndependent/glslang.y" +#line 2641 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube, true); } -#line 8500 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8518 "MachineIndependent/glslang_tab.cpp" break; case 374: /* type_specifier_nonarray: TEXTURECUBEARRAY */ -#line 2645 "glslang/MachineIndependent/glslang.y" +#line 2646 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true); } -#line 8510 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8528 "MachineIndependent/glslang_tab.cpp" break; case 375: /* type_specifier_nonarray: ITEXTURECUBEARRAY */ -#line 2650 "glslang/MachineIndependent/glslang.y" +#line 2651 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true); } -#line 8520 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8538 "MachineIndependent/glslang_tab.cpp" break; case 376: /* type_specifier_nonarray: UTEXTURECUBEARRAY */ -#line 2655 "glslang/MachineIndependent/glslang.y" +#line 2656 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true); } -#line 8530 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8548 "MachineIndependent/glslang_tab.cpp" break; case 377: /* type_specifier_nonarray: USAMPLER2DARRAY */ -#line 2661 "glslang/MachineIndependent/glslang.y" +#line 2662 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true); } -#line 8540 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8558 "MachineIndependent/glslang_tab.cpp" break; case 378: /* type_specifier_nonarray: TEXTURE2D */ -#line 2666 "glslang/MachineIndependent/glslang.y" +#line 2667 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D); } -#line 8550 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8568 "MachineIndependent/glslang_tab.cpp" break; case 379: /* type_specifier_nonarray: TEXTURE3D */ -#line 2671 "glslang/MachineIndependent/glslang.y" +#line 2672 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D); } -#line 8560 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8578 "MachineIndependent/glslang_tab.cpp" break; case 380: /* type_specifier_nonarray: TEXTURE2DARRAY */ -#line 2676 "glslang/MachineIndependent/glslang.y" +#line 2677 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true); } -#line 8570 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8588 "MachineIndependent/glslang_tab.cpp" break; case 381: /* type_specifier_nonarray: TEXTURECUBE */ -#line 2681 "glslang/MachineIndependent/glslang.y" +#line 2682 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube); } -#line 8580 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8598 "MachineIndependent/glslang_tab.cpp" break; case 382: /* type_specifier_nonarray: ITEXTURE2D */ -#line 2686 "glslang/MachineIndependent/glslang.y" +#line 2687 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D); } -#line 8590 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8608 "MachineIndependent/glslang_tab.cpp" break; case 383: /* type_specifier_nonarray: ITEXTURE3D */ -#line 2691 "glslang/MachineIndependent/glslang.y" +#line 2692 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D); } -#line 8600 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8618 "MachineIndependent/glslang_tab.cpp" break; case 384: /* type_specifier_nonarray: ITEXTURECUBE */ -#line 2696 "glslang/MachineIndependent/glslang.y" +#line 2697 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube); } -#line 8610 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8628 "MachineIndependent/glslang_tab.cpp" break; case 385: /* type_specifier_nonarray: ITEXTURE2DARRAY */ -#line 2701 "glslang/MachineIndependent/glslang.y" +#line 2702 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true); } -#line 8620 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8638 "MachineIndependent/glslang_tab.cpp" break; case 386: /* type_specifier_nonarray: UTEXTURE2D */ -#line 2706 "glslang/MachineIndependent/glslang.y" +#line 2707 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D); } -#line 8630 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8648 "MachineIndependent/glslang_tab.cpp" break; case 387: /* type_specifier_nonarray: UTEXTURE3D */ -#line 2711 "glslang/MachineIndependent/glslang.y" +#line 2712 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D); } -#line 8640 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8658 "MachineIndependent/glslang_tab.cpp" break; case 388: /* type_specifier_nonarray: UTEXTURECUBE */ -#line 2716 "glslang/MachineIndependent/glslang.y" +#line 2717 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube); } -#line 8650 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8668 "MachineIndependent/glslang_tab.cpp" break; case 389: /* type_specifier_nonarray: UTEXTURE2DARRAY */ -#line 2721 "glslang/MachineIndependent/glslang.y" +#line 2722 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true); } -#line 8660 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8678 "MachineIndependent/glslang_tab.cpp" break; case 390: /* type_specifier_nonarray: SAMPLER */ -#line 2726 "glslang/MachineIndependent/glslang.y" +#line 2727 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(false); } -#line 8670 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8688 "MachineIndependent/glslang_tab.cpp" break; case 391: /* type_specifier_nonarray: SAMPLERSHADOW */ -#line 2731 "glslang/MachineIndependent/glslang.y" +#line 2732 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(true); } -#line 8680 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8698 "MachineIndependent/glslang_tab.cpp" break; case 392: /* type_specifier_nonarray: SAMPLER2DRECT */ -#line 2737 "glslang/MachineIndependent/glslang.y" +#line 2738 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect); } -#line 8690 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8708 "MachineIndependent/glslang_tab.cpp" break; case 393: /* type_specifier_nonarray: SAMPLER2DRECTSHADOW */ -#line 2742 "glslang/MachineIndependent/glslang.y" +#line 2743 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true); } -#line 8700 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8718 "MachineIndependent/glslang_tab.cpp" break; case 394: /* type_specifier_nonarray: F16SAMPLER2DRECT */ -#line 2747 "glslang/MachineIndependent/glslang.y" +#line 2748 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdRect); } -#line 8711 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8729 "MachineIndependent/glslang_tab.cpp" break; case 395: /* type_specifier_nonarray: F16SAMPLER2DRECTSHADOW */ -#line 2753 "glslang/MachineIndependent/glslang.y" +#line 2754 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdRect, false, true); } -#line 8722 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8740 "MachineIndependent/glslang_tab.cpp" break; case 396: /* type_specifier_nonarray: ISAMPLER2DRECT */ -#line 2759 "glslang/MachineIndependent/glslang.y" +#line 2760 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdRect); } -#line 8732 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8750 "MachineIndependent/glslang_tab.cpp" break; case 397: /* type_specifier_nonarray: USAMPLER2DRECT */ -#line 2764 "glslang/MachineIndependent/glslang.y" +#line 2765 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdRect); } -#line 8742 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8760 "MachineIndependent/glslang_tab.cpp" break; case 398: /* type_specifier_nonarray: SAMPLERBUFFER */ -#line 2769 "glslang/MachineIndependent/glslang.y" +#line 2770 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer); } -#line 8752 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8770 "MachineIndependent/glslang_tab.cpp" break; case 399: /* type_specifier_nonarray: F16SAMPLERBUFFER */ -#line 2774 "glslang/MachineIndependent/glslang.y" +#line 2775 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdBuffer); } -#line 8763 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8781 "MachineIndependent/glslang_tab.cpp" break; case 400: /* type_specifier_nonarray: ISAMPLERBUFFER */ -#line 2780 "glslang/MachineIndependent/glslang.y" +#line 2781 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdBuffer); } -#line 8773 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8791 "MachineIndependent/glslang_tab.cpp" break; case 401: /* type_specifier_nonarray: USAMPLERBUFFER */ -#line 2785 "glslang/MachineIndependent/glslang.y" +#line 2786 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdBuffer); } -#line 8783 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8801 "MachineIndependent/glslang_tab.cpp" break; case 402: /* type_specifier_nonarray: SAMPLER2DMS */ -#line 2790 "glslang/MachineIndependent/glslang.y" +#line 2791 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true); } -#line 8793 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8811 "MachineIndependent/glslang_tab.cpp" break; case 403: /* type_specifier_nonarray: F16SAMPLER2DMS */ -#line 2795 "glslang/MachineIndependent/glslang.y" +#line 2796 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, false, true); } -#line 8804 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8822 "MachineIndependent/glslang_tab.cpp" break; case 404: /* type_specifier_nonarray: ISAMPLER2DMS */ -#line 2801 "glslang/MachineIndependent/glslang.y" +#line 2802 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true); } -#line 8814 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8832 "MachineIndependent/glslang_tab.cpp" break; case 405: /* type_specifier_nonarray: USAMPLER2DMS */ -#line 2806 "glslang/MachineIndependent/glslang.y" +#line 2807 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true); } -#line 8824 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8842 "MachineIndependent/glslang_tab.cpp" break; case 406: /* type_specifier_nonarray: SAMPLER2DMSARRAY */ -#line 2811 "glslang/MachineIndependent/glslang.y" +#line 2812 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true); } -#line 8834 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8852 "MachineIndependent/glslang_tab.cpp" break; case 407: /* type_specifier_nonarray: F16SAMPLER2DMSARRAY */ -#line 2816 "glslang/MachineIndependent/glslang.y" +#line 2817 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, false, true); } -#line 8845 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8863 "MachineIndependent/glslang_tab.cpp" break; case 408: /* type_specifier_nonarray: ISAMPLER2DMSARRAY */ -#line 2822 "glslang/MachineIndependent/glslang.y" +#line 2823 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true); } -#line 8855 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8873 "MachineIndependent/glslang_tab.cpp" break; case 409: /* type_specifier_nonarray: USAMPLER2DMSARRAY */ -#line 2827 "glslang/MachineIndependent/glslang.y" +#line 2828 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true); } -#line 8865 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8883 "MachineIndependent/glslang_tab.cpp" break; case 410: /* type_specifier_nonarray: TEXTURE1D */ -#line 2832 "glslang/MachineIndependent/glslang.y" +#line 2833 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D); } -#line 8875 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8893 "MachineIndependent/glslang_tab.cpp" break; case 411: /* type_specifier_nonarray: F16TEXTURE1D */ -#line 2837 "glslang/MachineIndependent/glslang.y" +#line 2838 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D); } -#line 8886 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8904 "MachineIndependent/glslang_tab.cpp" break; case 412: /* type_specifier_nonarray: F16TEXTURE2D */ -#line 2843 "glslang/MachineIndependent/glslang.y" +#line 2844 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D); } -#line 8897 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8915 "MachineIndependent/glslang_tab.cpp" break; case 413: /* type_specifier_nonarray: F16TEXTURE3D */ -#line 2849 "glslang/MachineIndependent/glslang.y" +#line 2850 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd3D); } -#line 8908 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8926 "MachineIndependent/glslang_tab.cpp" break; case 414: /* type_specifier_nonarray: F16TEXTURECUBE */ -#line 2855 "glslang/MachineIndependent/glslang.y" +#line 2856 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube); } -#line 8919 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8937 "MachineIndependent/glslang_tab.cpp" break; case 415: /* type_specifier_nonarray: TEXTURE1DARRAY */ -#line 2861 "glslang/MachineIndependent/glslang.y" +#line 2862 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true); } -#line 8929 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8947 "MachineIndependent/glslang_tab.cpp" break; case 416: /* type_specifier_nonarray: F16TEXTURE1DARRAY */ -#line 2866 "glslang/MachineIndependent/glslang.y" +#line 2867 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D, true); } -#line 8940 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8958 "MachineIndependent/glslang_tab.cpp" break; case 417: /* type_specifier_nonarray: F16TEXTURE2DARRAY */ -#line 2872 "glslang/MachineIndependent/glslang.y" +#line 2873 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true); } -#line 8951 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8969 "MachineIndependent/glslang_tab.cpp" break; case 418: /* type_specifier_nonarray: F16TEXTURECUBEARRAY */ -#line 2878 "glslang/MachineIndependent/glslang.y" +#line 2879 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube, true); } -#line 8962 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8980 "MachineIndependent/glslang_tab.cpp" break; case 419: /* type_specifier_nonarray: ITEXTURE1D */ -#line 2884 "glslang/MachineIndependent/glslang.y" +#line 2885 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D); } -#line 8972 "glslang/MachineIndependent/glslang_tab.cpp" +#line 8990 "MachineIndependent/glslang_tab.cpp" break; case 420: /* type_specifier_nonarray: ITEXTURE1DARRAY */ -#line 2889 "glslang/MachineIndependent/glslang.y" +#line 2890 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true); } -#line 8982 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9000 "MachineIndependent/glslang_tab.cpp" break; case 421: /* type_specifier_nonarray: UTEXTURE1D */ -#line 2894 "glslang/MachineIndependent/glslang.y" +#line 2895 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D); } -#line 8992 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9010 "MachineIndependent/glslang_tab.cpp" break; case 422: /* type_specifier_nonarray: UTEXTURE1DARRAY */ -#line 2899 "glslang/MachineIndependent/glslang.y" +#line 2900 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true); } -#line 9002 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9020 "MachineIndependent/glslang_tab.cpp" break; case 423: /* type_specifier_nonarray: TEXTURE2DRECT */ -#line 2904 "glslang/MachineIndependent/glslang.y" +#line 2905 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect); } -#line 9012 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9030 "MachineIndependent/glslang_tab.cpp" break; case 424: /* type_specifier_nonarray: F16TEXTURE2DRECT */ -#line 2909 "glslang/MachineIndependent/glslang.y" +#line 2910 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdRect); } -#line 9023 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9041 "MachineIndependent/glslang_tab.cpp" break; case 425: /* type_specifier_nonarray: ITEXTURE2DRECT */ -#line 2915 "glslang/MachineIndependent/glslang.y" +#line 2916 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdRect); } -#line 9033 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9051 "MachineIndependent/glslang_tab.cpp" break; case 426: /* type_specifier_nonarray: UTEXTURE2DRECT */ -#line 2920 "glslang/MachineIndependent/glslang.y" +#line 2921 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdRect); } -#line 9043 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9061 "MachineIndependent/glslang_tab.cpp" break; case 427: /* type_specifier_nonarray: TEXTUREBUFFER */ -#line 2925 "glslang/MachineIndependent/glslang.y" +#line 2926 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer); } -#line 9053 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9071 "MachineIndependent/glslang_tab.cpp" break; case 428: /* type_specifier_nonarray: F16TEXTUREBUFFER */ -#line 2930 "glslang/MachineIndependent/glslang.y" +#line 2931 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdBuffer); } -#line 9064 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9082 "MachineIndependent/glslang_tab.cpp" break; case 429: /* type_specifier_nonarray: ITEXTUREBUFFER */ -#line 2936 "glslang/MachineIndependent/glslang.y" +#line 2937 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer); } -#line 9074 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9092 "MachineIndependent/glslang_tab.cpp" break; case 430: /* type_specifier_nonarray: UTEXTUREBUFFER */ -#line 2941 "glslang/MachineIndependent/glslang.y" +#line 2942 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer); } -#line 9084 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9102 "MachineIndependent/glslang_tab.cpp" break; case 431: /* type_specifier_nonarray: TEXTURE2DMS */ -#line 2946 "glslang/MachineIndependent/glslang.y" +#line 2947 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true); } -#line 9094 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9112 "MachineIndependent/glslang_tab.cpp" break; case 432: /* type_specifier_nonarray: F16TEXTURE2DMS */ -#line 2951 "glslang/MachineIndependent/glslang.y" +#line 2952 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, false, false, true); } -#line 9105 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9123 "MachineIndependent/glslang_tab.cpp" break; case 433: /* type_specifier_nonarray: ITEXTURE2DMS */ -#line 2957 "glslang/MachineIndependent/glslang.y" +#line 2958 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true); } -#line 9115 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9133 "MachineIndependent/glslang_tab.cpp" break; case 434: /* type_specifier_nonarray: UTEXTURE2DMS */ -#line 2962 "glslang/MachineIndependent/glslang.y" +#line 2963 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true); } -#line 9125 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9143 "MachineIndependent/glslang_tab.cpp" break; case 435: /* type_specifier_nonarray: TEXTURE2DMSARRAY */ -#line 2967 "glslang/MachineIndependent/glslang.y" +#line 2968 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true); } -#line 9135 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9153 "MachineIndependent/glslang_tab.cpp" break; case 436: /* type_specifier_nonarray: F16TEXTURE2DMSARRAY */ -#line 2972 "glslang/MachineIndependent/glslang.y" +#line 2973 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true, false, true); } -#line 9146 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9164 "MachineIndependent/glslang_tab.cpp" break; case 437: /* type_specifier_nonarray: ITEXTURE2DMSARRAY */ -#line 2978 "glslang/MachineIndependent/glslang.y" +#line 2979 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true); } -#line 9156 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9174 "MachineIndependent/glslang_tab.cpp" break; case 438: /* type_specifier_nonarray: UTEXTURE2DMSARRAY */ -#line 2983 "glslang/MachineIndependent/glslang.y" +#line 2984 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true); } -#line 9166 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9184 "MachineIndependent/glslang_tab.cpp" break; case 439: /* type_specifier_nonarray: IMAGE1D */ -#line 2988 "glslang/MachineIndependent/glslang.y" +#line 2989 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D); } -#line 9176 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9194 "MachineIndependent/glslang_tab.cpp" break; case 440: /* type_specifier_nonarray: F16IMAGE1D */ -#line 2993 "glslang/MachineIndependent/glslang.y" +#line 2994 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D); } -#line 9187 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9205 "MachineIndependent/glslang_tab.cpp" break; case 441: /* type_specifier_nonarray: IIMAGE1D */ -#line 2999 "glslang/MachineIndependent/glslang.y" +#line 3000 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D); } -#line 9197 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9215 "MachineIndependent/glslang_tab.cpp" break; case 442: /* type_specifier_nonarray: UIMAGE1D */ -#line 3004 "glslang/MachineIndependent/glslang.y" +#line 3005 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D); } -#line 9207 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9225 "MachineIndependent/glslang_tab.cpp" break; case 443: /* type_specifier_nonarray: IMAGE2D */ -#line 3009 "glslang/MachineIndependent/glslang.y" +#line 3010 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D); } -#line 9217 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9235 "MachineIndependent/glslang_tab.cpp" break; case 444: /* type_specifier_nonarray: F16IMAGE2D */ -#line 3014 "glslang/MachineIndependent/glslang.y" +#line 3015 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D); } -#line 9228 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9246 "MachineIndependent/glslang_tab.cpp" break; case 445: /* type_specifier_nonarray: IIMAGE2D */ -#line 3020 "glslang/MachineIndependent/glslang.y" +#line 3021 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D); } -#line 9238 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9256 "MachineIndependent/glslang_tab.cpp" break; case 446: /* type_specifier_nonarray: UIMAGE2D */ -#line 3025 "glslang/MachineIndependent/glslang.y" +#line 3026 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D); } -#line 9248 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9266 "MachineIndependent/glslang_tab.cpp" break; case 447: /* type_specifier_nonarray: IMAGE3D */ -#line 3030 "glslang/MachineIndependent/glslang.y" +#line 3031 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd3D); } -#line 9258 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9276 "MachineIndependent/glslang_tab.cpp" break; case 448: /* type_specifier_nonarray: F16IMAGE3D */ -#line 3035 "glslang/MachineIndependent/glslang.y" +#line 3036 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd3D); } -#line 9269 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9287 "MachineIndependent/glslang_tab.cpp" break; case 449: /* type_specifier_nonarray: IIMAGE3D */ -#line 3041 "glslang/MachineIndependent/glslang.y" +#line 3042 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd3D); } -#line 9279 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9297 "MachineIndependent/glslang_tab.cpp" break; case 450: /* type_specifier_nonarray: UIMAGE3D */ -#line 3046 "glslang/MachineIndependent/glslang.y" +#line 3047 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd3D); } -#line 9289 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9307 "MachineIndependent/glslang_tab.cpp" break; case 451: /* type_specifier_nonarray: IMAGE2DRECT */ -#line 3051 "glslang/MachineIndependent/glslang.y" +#line 3052 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdRect); } -#line 9299 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9317 "MachineIndependent/glslang_tab.cpp" break; case 452: /* type_specifier_nonarray: F16IMAGE2DRECT */ -#line 3056 "glslang/MachineIndependent/glslang.y" +#line 3057 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdRect); } -#line 9310 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9328 "MachineIndependent/glslang_tab.cpp" break; case 453: /* type_specifier_nonarray: IIMAGE2DRECT */ -#line 3062 "glslang/MachineIndependent/glslang.y" +#line 3063 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdRect); } -#line 9320 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9338 "MachineIndependent/glslang_tab.cpp" break; case 454: /* type_specifier_nonarray: UIMAGE2DRECT */ -#line 3067 "glslang/MachineIndependent/glslang.y" +#line 3068 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdRect); } -#line 9330 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9348 "MachineIndependent/glslang_tab.cpp" break; case 455: /* type_specifier_nonarray: IMAGECUBE */ -#line 3072 "glslang/MachineIndependent/glslang.y" +#line 3073 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube); } -#line 9340 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9358 "MachineIndependent/glslang_tab.cpp" break; case 456: /* type_specifier_nonarray: F16IMAGECUBE */ -#line 3077 "glslang/MachineIndependent/glslang.y" +#line 3078 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube); } -#line 9351 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9369 "MachineIndependent/glslang_tab.cpp" break; case 457: /* type_specifier_nonarray: IIMAGECUBE */ -#line 3083 "glslang/MachineIndependent/glslang.y" +#line 3084 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube); } -#line 9361 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9379 "MachineIndependent/glslang_tab.cpp" break; case 458: /* type_specifier_nonarray: UIMAGECUBE */ -#line 3088 "glslang/MachineIndependent/glslang.y" +#line 3089 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube); } -#line 9371 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9389 "MachineIndependent/glslang_tab.cpp" break; case 459: /* type_specifier_nonarray: IMAGEBUFFER */ -#line 3093 "glslang/MachineIndependent/glslang.y" +#line 3094 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer); } -#line 9381 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9399 "MachineIndependent/glslang_tab.cpp" break; case 460: /* type_specifier_nonarray: F16IMAGEBUFFER */ -#line 3098 "glslang/MachineIndependent/glslang.y" +#line 3099 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdBuffer); } -#line 9392 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9410 "MachineIndependent/glslang_tab.cpp" break; case 461: /* type_specifier_nonarray: IIMAGEBUFFER */ -#line 3104 "glslang/MachineIndependent/glslang.y" +#line 3105 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer); } -#line 9402 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9420 "MachineIndependent/glslang_tab.cpp" break; case 462: /* type_specifier_nonarray: UIMAGEBUFFER */ -#line 3109 "glslang/MachineIndependent/glslang.y" +#line 3110 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer); } -#line 9412 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9430 "MachineIndependent/glslang_tab.cpp" break; case 463: /* type_specifier_nonarray: IMAGE1DARRAY */ -#line 3114 "glslang/MachineIndependent/glslang.y" +#line 3115 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true); } -#line 9422 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9440 "MachineIndependent/glslang_tab.cpp" break; case 464: /* type_specifier_nonarray: F16IMAGE1DARRAY */ -#line 3119 "glslang/MachineIndependent/glslang.y" +#line 3120 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D, true); } -#line 9433 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9451 "MachineIndependent/glslang_tab.cpp" break; case 465: /* type_specifier_nonarray: IIMAGE1DARRAY */ -#line 3125 "glslang/MachineIndependent/glslang.y" +#line 3126 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true); } -#line 9443 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9461 "MachineIndependent/glslang_tab.cpp" break; case 466: /* type_specifier_nonarray: UIMAGE1DARRAY */ -#line 3130 "glslang/MachineIndependent/glslang.y" +#line 3131 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true); } -#line 9453 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9471 "MachineIndependent/glslang_tab.cpp" break; case 467: /* type_specifier_nonarray: IMAGE2DARRAY */ -#line 3135 "glslang/MachineIndependent/glslang.y" +#line 3136 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true); } -#line 9463 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9481 "MachineIndependent/glslang_tab.cpp" break; case 468: /* type_specifier_nonarray: F16IMAGE2DARRAY */ -#line 3140 "glslang/MachineIndependent/glslang.y" +#line 3141 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true); } -#line 9474 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9492 "MachineIndependent/glslang_tab.cpp" break; case 469: /* type_specifier_nonarray: IIMAGE2DARRAY */ -#line 3146 "glslang/MachineIndependent/glslang.y" +#line 3147 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true); } -#line 9484 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9502 "MachineIndependent/glslang_tab.cpp" break; case 470: /* type_specifier_nonarray: UIMAGE2DARRAY */ -#line 3151 "glslang/MachineIndependent/glslang.y" +#line 3152 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true); } -#line 9494 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9512 "MachineIndependent/glslang_tab.cpp" break; case 471: /* type_specifier_nonarray: IMAGECUBEARRAY */ -#line 3156 "glslang/MachineIndependent/glslang.y" +#line 3157 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true); } -#line 9504 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9522 "MachineIndependent/glslang_tab.cpp" break; case 472: /* type_specifier_nonarray: F16IMAGECUBEARRAY */ -#line 3161 "glslang/MachineIndependent/glslang.y" +#line 3162 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube, true); } -#line 9515 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9533 "MachineIndependent/glslang_tab.cpp" break; case 473: /* type_specifier_nonarray: IIMAGECUBEARRAY */ -#line 3167 "glslang/MachineIndependent/glslang.y" +#line 3168 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true); } -#line 9525 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9543 "MachineIndependent/glslang_tab.cpp" break; case 474: /* type_specifier_nonarray: UIMAGECUBEARRAY */ -#line 3172 "glslang/MachineIndependent/glslang.y" +#line 3173 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true); } -#line 9535 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9553 "MachineIndependent/glslang_tab.cpp" break; case 475: /* type_specifier_nonarray: IMAGE2DMS */ -#line 3177 "glslang/MachineIndependent/glslang.y" +#line 3178 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true); } -#line 9545 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9563 "MachineIndependent/glslang_tab.cpp" break; case 476: /* type_specifier_nonarray: F16IMAGE2DMS */ -#line 3182 "glslang/MachineIndependent/glslang.y" +#line 3183 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, false, false, true); } -#line 9556 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9574 "MachineIndependent/glslang_tab.cpp" break; case 477: /* type_specifier_nonarray: IIMAGE2DMS */ -#line 3188 "glslang/MachineIndependent/glslang.y" +#line 3189 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true); } -#line 9566 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9584 "MachineIndependent/glslang_tab.cpp" break; case 478: /* type_specifier_nonarray: UIMAGE2DMS */ -#line 3193 "glslang/MachineIndependent/glslang.y" +#line 3194 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true); } -#line 9576 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9594 "MachineIndependent/glslang_tab.cpp" break; case 479: /* type_specifier_nonarray: IMAGE2DMSARRAY */ -#line 3198 "glslang/MachineIndependent/glslang.y" +#line 3199 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true); } -#line 9586 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9604 "MachineIndependent/glslang_tab.cpp" break; case 480: /* type_specifier_nonarray: F16IMAGE2DMSARRAY */ -#line 3203 "glslang/MachineIndependent/glslang.y" +#line 3204 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true, false, true); } -#line 9597 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9615 "MachineIndependent/glslang_tab.cpp" break; case 481: /* type_specifier_nonarray: IIMAGE2DMSARRAY */ -#line 3209 "glslang/MachineIndependent/glslang.y" +#line 3210 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true); } -#line 9607 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9625 "MachineIndependent/glslang_tab.cpp" break; case 482: /* type_specifier_nonarray: UIMAGE2DMSARRAY */ -#line 3214 "glslang/MachineIndependent/glslang.y" +#line 3215 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true); } -#line 9617 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9635 "MachineIndependent/glslang_tab.cpp" break; case 483: /* type_specifier_nonarray: I64IMAGE1D */ -#line 3219 "glslang/MachineIndependent/glslang.y" +#line 3220 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D); } -#line 9627 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9645 "MachineIndependent/glslang_tab.cpp" break; case 484: /* type_specifier_nonarray: U64IMAGE1D */ -#line 3224 "glslang/MachineIndependent/glslang.y" +#line 3225 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D); } -#line 9637 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9655 "MachineIndependent/glslang_tab.cpp" break; case 485: /* type_specifier_nonarray: I64IMAGE2D */ -#line 3229 "glslang/MachineIndependent/glslang.y" +#line 3230 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D); } -#line 9647 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9665 "MachineIndependent/glslang_tab.cpp" break; case 486: /* type_specifier_nonarray: U64IMAGE2D */ -#line 3234 "glslang/MachineIndependent/glslang.y" +#line 3235 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D); } -#line 9657 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9675 "MachineIndependent/glslang_tab.cpp" break; case 487: /* type_specifier_nonarray: I64IMAGE3D */ -#line 3239 "glslang/MachineIndependent/glslang.y" +#line 3240 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd3D); } -#line 9667 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9685 "MachineIndependent/glslang_tab.cpp" break; case 488: /* type_specifier_nonarray: U64IMAGE3D */ -#line 3244 "glslang/MachineIndependent/glslang.y" +#line 3245 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd3D); } -#line 9677 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9695 "MachineIndependent/glslang_tab.cpp" break; case 489: /* type_specifier_nonarray: I64IMAGE2DRECT */ -#line 3249 "glslang/MachineIndependent/glslang.y" +#line 3250 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdRect); } -#line 9687 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9705 "MachineIndependent/glslang_tab.cpp" break; case 490: /* type_specifier_nonarray: U64IMAGE2DRECT */ -#line 3254 "glslang/MachineIndependent/glslang.y" +#line 3255 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdRect); } -#line 9697 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9715 "MachineIndependent/glslang_tab.cpp" break; case 491: /* type_specifier_nonarray: I64IMAGECUBE */ -#line 3259 "glslang/MachineIndependent/glslang.y" +#line 3260 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube); } -#line 9707 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9725 "MachineIndependent/glslang_tab.cpp" break; case 492: /* type_specifier_nonarray: U64IMAGECUBE */ -#line 3264 "glslang/MachineIndependent/glslang.y" +#line 3265 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube); } -#line 9717 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9735 "MachineIndependent/glslang_tab.cpp" break; case 493: /* type_specifier_nonarray: I64IMAGEBUFFER */ -#line 3269 "glslang/MachineIndependent/glslang.y" +#line 3270 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdBuffer); } -#line 9727 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9745 "MachineIndependent/glslang_tab.cpp" break; case 494: /* type_specifier_nonarray: U64IMAGEBUFFER */ -#line 3274 "glslang/MachineIndependent/glslang.y" +#line 3275 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdBuffer); } -#line 9737 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9755 "MachineIndependent/glslang_tab.cpp" break; case 495: /* type_specifier_nonarray: I64IMAGE1DARRAY */ -#line 3279 "glslang/MachineIndependent/glslang.y" +#line 3280 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D, true); } -#line 9747 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9765 "MachineIndependent/glslang_tab.cpp" break; case 496: /* type_specifier_nonarray: U64IMAGE1DARRAY */ -#line 3284 "glslang/MachineIndependent/glslang.y" +#line 3285 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D, true); } -#line 9757 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9775 "MachineIndependent/glslang_tab.cpp" break; case 497: /* type_specifier_nonarray: I64IMAGE2DARRAY */ -#line 3289 "glslang/MachineIndependent/glslang.y" +#line 3290 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true); } -#line 9767 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9785 "MachineIndependent/glslang_tab.cpp" break; case 498: /* type_specifier_nonarray: U64IMAGE2DARRAY */ -#line 3294 "glslang/MachineIndependent/glslang.y" +#line 3295 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true); } -#line 9777 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9795 "MachineIndependent/glslang_tab.cpp" break; case 499: /* type_specifier_nonarray: I64IMAGECUBEARRAY */ -#line 3299 "glslang/MachineIndependent/glslang.y" +#line 3300 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube, true); } -#line 9787 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9805 "MachineIndependent/glslang_tab.cpp" break; case 500: /* type_specifier_nonarray: U64IMAGECUBEARRAY */ -#line 3304 "glslang/MachineIndependent/glslang.y" +#line 3305 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube, true); } -#line 9797 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9815 "MachineIndependent/glslang_tab.cpp" break; case 501: /* type_specifier_nonarray: I64IMAGE2DMS */ -#line 3309 "glslang/MachineIndependent/glslang.y" +#line 3310 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, false, false, true); } -#line 9807 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9825 "MachineIndependent/glslang_tab.cpp" break; case 502: /* type_specifier_nonarray: U64IMAGE2DMS */ -#line 3314 "glslang/MachineIndependent/glslang.y" +#line 3315 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, false, false, true); } -#line 9817 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9835 "MachineIndependent/glslang_tab.cpp" break; case 503: /* type_specifier_nonarray: I64IMAGE2DMSARRAY */ -#line 3319 "glslang/MachineIndependent/glslang.y" +#line 3320 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true, false, true); } -#line 9827 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9845 "MachineIndependent/glslang_tab.cpp" break; case 504: /* type_specifier_nonarray: U64IMAGE2DMSARRAY */ -#line 3324 "glslang/MachineIndependent/glslang.y" +#line 3325 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true, false, true); } -#line 9837 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9855 "MachineIndependent/glslang_tab.cpp" break; case 505: /* type_specifier_nonarray: SAMPLEREXTERNALOES */ -#line 3329 "glslang/MachineIndependent/glslang.y" +#line 3330 "MachineIndependent/glslang.y" { // GL_OES_EGL_image_external (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.external = true; } -#line 9848 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9866 "MachineIndependent/glslang_tab.cpp" break; case 506: /* type_specifier_nonarray: SAMPLEREXTERNAL2DY2YEXT */ -#line 3335 "glslang/MachineIndependent/glslang.y" +#line 3336 "MachineIndependent/glslang.y" { // GL_EXT_YUV_target (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.yuv = true; } -#line 9859 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9877 "MachineIndependent/glslang_tab.cpp" break; case 507: /* type_specifier_nonarray: SUBPASSINPUT */ -#line 3341 "glslang/MachineIndependent/glslang.y" +#line 3342 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat); } -#line 9870 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9888 "MachineIndependent/glslang_tab.cpp" break; case 508: /* type_specifier_nonarray: SUBPASSINPUTMS */ -#line 3347 "glslang/MachineIndependent/glslang.y" +#line 3348 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat, true); } -#line 9881 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9899 "MachineIndependent/glslang_tab.cpp" break; case 509: /* type_specifier_nonarray: F16SUBPASSINPUT */ -#line 3353 "glslang/MachineIndependent/glslang.y" +#line 3354 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); @@ -9889,11 +9907,11 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16); } -#line 9893 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9911 "MachineIndependent/glslang_tab.cpp" break; case 510: /* type_specifier_nonarray: F16SUBPASSINPUTMS */ -#line 3360 "glslang/MachineIndependent/glslang.y" +#line 3361 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); @@ -9901,98 +9919,98 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16, true); } -#line 9905 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9923 "MachineIndependent/glslang_tab.cpp" break; case 511: /* type_specifier_nonarray: ISUBPASSINPUT */ -#line 3367 "glslang/MachineIndependent/glslang.y" +#line 3368 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt); } -#line 9916 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9934 "MachineIndependent/glslang_tab.cpp" break; case 512: /* type_specifier_nonarray: ISUBPASSINPUTMS */ -#line 3373 "glslang/MachineIndependent/glslang.y" +#line 3374 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt, true); } -#line 9927 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9945 "MachineIndependent/glslang_tab.cpp" break; case 513: /* type_specifier_nonarray: USUBPASSINPUT */ -#line 3379 "glslang/MachineIndependent/glslang.y" +#line 3380 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint); } -#line 9938 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9956 "MachineIndependent/glslang_tab.cpp" break; case 514: /* type_specifier_nonarray: USUBPASSINPUTMS */ -#line 3385 "glslang/MachineIndependent/glslang.y" +#line 3386 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint, true); } -#line 9949 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9967 "MachineIndependent/glslang_tab.cpp" break; case 515: /* type_specifier_nonarray: FCOOPMATNV */ -#line 3391 "glslang/MachineIndependent/glslang.y" +#line 3392 "MachineIndependent/glslang.y" { parseContext.fcoopmatCheck((yyvsp[0].lex).loc, "fcoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).coopmat = true; } -#line 9960 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9978 "MachineIndependent/glslang_tab.cpp" break; case 516: /* type_specifier_nonarray: ICOOPMATNV */ -#line 3397 "glslang/MachineIndependent/glslang.y" +#line 3398 "MachineIndependent/glslang.y" { parseContext.intcoopmatCheck((yyvsp[0].lex).loc, "icoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).coopmat = true; } -#line 9971 "glslang/MachineIndependent/glslang_tab.cpp" +#line 9989 "MachineIndependent/glslang_tab.cpp" break; case 517: /* type_specifier_nonarray: UCOOPMATNV */ -#line 3403 "glslang/MachineIndependent/glslang.y" +#line 3404 "MachineIndependent/glslang.y" { parseContext.intcoopmatCheck((yyvsp[0].lex).loc, "ucoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).coopmat = true; } -#line 9982 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10000 "MachineIndependent/glslang_tab.cpp" break; case 518: /* type_specifier_nonarray: struct_specifier */ -#line 3410 "glslang/MachineIndependent/glslang.y" +#line 3411 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type)); } -#line 9992 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10010 "MachineIndependent/glslang_tab.cpp" break; case 519: /* type_specifier_nonarray: TYPE_NAME */ -#line 3415 "glslang/MachineIndependent/glslang.y" +#line 3416 "MachineIndependent/glslang.y" { // // This is for user defined type names. The lexical phase looked up the @@ -10006,47 +10024,47 @@ yyreduce: } else parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), ""); } -#line 10010 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10028 "MachineIndependent/glslang_tab.cpp" break; case 520: /* precision_qualifier: HIGH_PRECISION */ -#line 3431 "glslang/MachineIndependent/glslang.y" +#line 3432 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "highp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh); } -#line 10020 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10038 "MachineIndependent/glslang_tab.cpp" break; case 521: /* precision_qualifier: MEDIUM_PRECISION */ -#line 3436 "glslang/MachineIndependent/glslang.y" +#line 3437 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium); } -#line 10030 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10048 "MachineIndependent/glslang_tab.cpp" break; case 522: /* precision_qualifier: LOW_PRECISION */ -#line 3441 "glslang/MachineIndependent/glslang.y" +#line 3442 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow); } -#line 10040 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10058 "MachineIndependent/glslang_tab.cpp" break; case 523: /* $@3: %empty */ -#line 3449 "glslang/MachineIndependent/glslang.y" +#line 3450 "MachineIndependent/glslang.y" { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); } -#line 10046 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10064 "MachineIndependent/glslang_tab.cpp" break; case 524: /* struct_specifier: STRUCT IDENTIFIER LEFT_BRACE $@3 struct_declaration_list RIGHT_BRACE */ -#line 3449 "glslang/MachineIndependent/glslang.y" +#line 3450 "MachineIndependent/glslang.y" { TType* structure = new TType((yyvsp[-1].interm.typeList), *(yyvsp[-4].lex).string); parseContext.structArrayCheck((yyvsp[-4].lex).loc, *structure); @@ -10058,17 +10076,17 @@ yyreduce: (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 10062 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10080 "MachineIndependent/glslang_tab.cpp" break; case 525: /* $@4: %empty */ -#line 3460 "glslang/MachineIndependent/glslang.y" +#line 3461 "MachineIndependent/glslang.y" { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); } -#line 10068 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10086 "MachineIndependent/glslang_tab.cpp" break; case 526: /* struct_specifier: STRUCT LEFT_BRACE $@4 struct_declaration_list RIGHT_BRACE */ -#line 3460 "glslang/MachineIndependent/glslang.y" +#line 3461 "MachineIndependent/glslang.y" { TType* structure = new TType((yyvsp[-1].interm.typeList), TString("")); (yyval.interm.type).init((yyvsp[-4].lex).loc); @@ -10076,19 +10094,19 @@ yyreduce: (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 10080 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10098 "MachineIndependent/glslang_tab.cpp" break; case 527: /* struct_declaration_list: struct_declaration */ -#line 3470 "glslang/MachineIndependent/glslang.y" +#line 3471 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = (yyvsp[0].interm.typeList); } -#line 10088 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10106 "MachineIndependent/glslang_tab.cpp" break; case 528: /* struct_declaration_list: struct_declaration_list struct_declaration */ -#line 3473 "glslang/MachineIndependent/glslang.y" +#line 3474 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = (yyvsp[-1].interm.typeList); for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) { @@ -10099,11 +10117,11 @@ yyreduce: (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]); } } -#line 10103 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10121 "MachineIndependent/glslang_tab.cpp" break; case 529: /* struct_declaration: type_specifier struct_declarator_list SEMICOLON */ -#line 3486 "glslang/MachineIndependent/glslang.y" +#line 3487 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -10126,11 +10144,11 @@ yyreduce: (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 10130 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10148 "MachineIndependent/glslang_tab.cpp" break; case 530: /* struct_declaration: type_qualifier type_specifier struct_declarator_list SEMICOLON */ -#line 3508 "glslang/MachineIndependent/glslang.y" +#line 3509 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -10155,38 +10173,38 @@ yyreduce: (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 10159 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10177 "MachineIndependent/glslang_tab.cpp" break; case 531: /* struct_declarator_list: struct_declarator */ -#line 3535 "glslang/MachineIndependent/glslang.y" +#line 3536 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = new TTypeList; (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 10168 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10186 "MachineIndependent/glslang_tab.cpp" break; case 532: /* struct_declarator_list: struct_declarator_list COMMA struct_declarator */ -#line 3539 "glslang/MachineIndependent/glslang.y" +#line 3540 "MachineIndependent/glslang.y" { (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 10176 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10194 "MachineIndependent/glslang_tab.cpp" break; case 533: /* struct_declarator: IDENTIFIER */ -#line 3545 "glslang/MachineIndependent/glslang.y" +#line 3546 "MachineIndependent/glslang.y" { (yyval.interm.typeLine).type = new TType(EbtVoid); (yyval.interm.typeLine).loc = (yyvsp[0].lex).loc; (yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string); } -#line 10186 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10204 "MachineIndependent/glslang_tab.cpp" break; case 534: /* struct_declarator: IDENTIFIER array_specifier */ -#line 3550 "glslang/MachineIndependent/glslang.y" +#line 3551 "MachineIndependent/glslang.y" { parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes); @@ -10195,235 +10213,235 @@ yyreduce: (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string); (yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes); } -#line 10199 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10217 "MachineIndependent/glslang_tab.cpp" break; case 535: /* initializer: assignment_expression */ -#line 3561 "glslang/MachineIndependent/glslang.y" +#line 3562 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 10207 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10225 "MachineIndependent/glslang_tab.cpp" break; case 536: /* initializer: LEFT_BRACE initializer_list RIGHT_BRACE */ -#line 3565 "glslang/MachineIndependent/glslang.y" +#line 3566 "MachineIndependent/glslang.y" { const char* initFeature = "{ } style initializers"; parseContext.requireProfile((yyvsp[-2].lex).loc, ~EEsProfile, initFeature); parseContext.profileRequires((yyvsp[-2].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); } -#line 10218 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10236 "MachineIndependent/glslang_tab.cpp" break; case 537: /* initializer: LEFT_BRACE initializer_list COMMA RIGHT_BRACE */ -#line 3571 "glslang/MachineIndependent/glslang.y" +#line 3572 "MachineIndependent/glslang.y" { const char* initFeature = "{ } style initializers"; parseContext.requireProfile((yyvsp[-3].lex).loc, ~EEsProfile, initFeature); parseContext.profileRequires((yyvsp[-3].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 10229 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10247 "MachineIndependent/glslang_tab.cpp" break; case 538: /* initializer_list: initializer */ -#line 3582 "glslang/MachineIndependent/glslang.y" +#line 3583 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc()); } -#line 10237 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10255 "MachineIndependent/glslang_tab.cpp" break; case 539: /* initializer_list: initializer_list COMMA initializer */ -#line 3585 "glslang/MachineIndependent/glslang.y" +#line 3586 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); } -#line 10245 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10263 "MachineIndependent/glslang_tab.cpp" break; case 540: /* declaration_statement: declaration */ -#line 3592 "glslang/MachineIndependent/glslang.y" +#line 3593 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10251 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10269 "MachineIndependent/glslang_tab.cpp" break; case 541: /* statement: compound_statement */ -#line 3596 "glslang/MachineIndependent/glslang.y" +#line 3597 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10257 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10275 "MachineIndependent/glslang_tab.cpp" break; case 542: /* statement: simple_statement */ -#line 3597 "glslang/MachineIndependent/glslang.y" +#line 3598 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10263 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10281 "MachineIndependent/glslang_tab.cpp" break; case 543: /* simple_statement: declaration_statement */ -#line 3603 "glslang/MachineIndependent/glslang.y" +#line 3604 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10269 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10287 "MachineIndependent/glslang_tab.cpp" break; case 544: /* simple_statement: expression_statement */ -#line 3604 "glslang/MachineIndependent/glslang.y" +#line 3605 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10275 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10293 "MachineIndependent/glslang_tab.cpp" break; case 545: /* simple_statement: selection_statement */ -#line 3605 "glslang/MachineIndependent/glslang.y" +#line 3606 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10281 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10299 "MachineIndependent/glslang_tab.cpp" break; case 546: /* simple_statement: switch_statement */ -#line 3606 "glslang/MachineIndependent/glslang.y" +#line 3607 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10287 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10305 "MachineIndependent/glslang_tab.cpp" break; case 547: /* simple_statement: case_label */ -#line 3607 "glslang/MachineIndependent/glslang.y" +#line 3608 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10293 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10311 "MachineIndependent/glslang_tab.cpp" break; case 548: /* simple_statement: iteration_statement */ -#line 3608 "glslang/MachineIndependent/glslang.y" +#line 3609 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10299 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10317 "MachineIndependent/glslang_tab.cpp" break; case 549: /* simple_statement: jump_statement */ -#line 3609 "glslang/MachineIndependent/glslang.y" +#line 3610 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10305 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10323 "MachineIndependent/glslang_tab.cpp" break; case 550: /* simple_statement: demote_statement */ -#line 3611 "glslang/MachineIndependent/glslang.y" +#line 3612 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10311 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10329 "MachineIndependent/glslang_tab.cpp" break; case 551: /* demote_statement: DEMOTE SEMICOLON */ -#line 3617 "glslang/MachineIndependent/glslang.y" +#line 3618 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "demote"); parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_demote_to_helper_invocation, "demote"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDemote, (yyvsp[-1].lex).loc); } -#line 10321 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10339 "MachineIndependent/glslang_tab.cpp" break; case 552: /* compound_statement: LEFT_BRACE RIGHT_BRACE */ -#line 3626 "glslang/MachineIndependent/glslang.y" +#line 3627 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 10327 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10345 "MachineIndependent/glslang_tab.cpp" break; case 553: /* $@5: %empty */ -#line 3627 "glslang/MachineIndependent/glslang.y" +#line 3628 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; } -#line 10336 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10354 "MachineIndependent/glslang_tab.cpp" break; case 554: /* $@6: %empty */ -#line 3631 "glslang/MachineIndependent/glslang.y" +#line 3632 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; } -#line 10345 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10363 "MachineIndependent/glslang_tab.cpp" break; case 555: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE */ -#line 3635 "glslang/MachineIndependent/glslang.y" +#line 3636 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate()) (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode); } -#line 10355 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10373 "MachineIndependent/glslang_tab.cpp" break; case 556: /* statement_no_new_scope: compound_statement_no_new_scope */ -#line 3643 "glslang/MachineIndependent/glslang.y" +#line 3644 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10361 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10379 "MachineIndependent/glslang_tab.cpp" break; case 557: /* statement_no_new_scope: simple_statement */ -#line 3644 "glslang/MachineIndependent/glslang.y" +#line 3645 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10367 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10385 "MachineIndependent/glslang_tab.cpp" break; case 558: /* $@7: %empty */ -#line 3648 "glslang/MachineIndependent/glslang.y" +#line 3649 "MachineIndependent/glslang.y" { ++parseContext.controlFlowNestingLevel; } -#line 10375 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10393 "MachineIndependent/glslang_tab.cpp" break; case 559: /* statement_scoped: $@7 compound_statement */ -#line 3651 "glslang/MachineIndependent/glslang.y" +#line 3652 "MachineIndependent/glslang.y" { --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10384 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10402 "MachineIndependent/glslang_tab.cpp" break; case 560: /* $@8: %empty */ -#line 3655 "glslang/MachineIndependent/glslang.y" +#line 3656 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 10394 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10412 "MachineIndependent/glslang_tab.cpp" break; case 561: /* statement_scoped: $@8 simple_statement */ -#line 3660 "glslang/MachineIndependent/glslang.y" +#line 3661 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10405 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10423 "MachineIndependent/glslang_tab.cpp" break; case 562: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE */ -#line 3669 "glslang/MachineIndependent/glslang.y" +#line 3670 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 10413 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10431 "MachineIndependent/glslang_tab.cpp" break; case 563: /* compound_statement_no_new_scope: LEFT_BRACE statement_list RIGHT_BRACE */ -#line 3672 "glslang/MachineIndependent/glslang.y" +#line 3673 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate()) (yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode); } -#line 10423 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10441 "MachineIndependent/glslang_tab.cpp" break; case 564: /* statement_list: statement */ -#line 3680 "glslang/MachineIndependent/glslang.y" +#line 3681 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || @@ -10432,11 +10450,11 @@ yyreduce: (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case } } -#line 10436 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10454 "MachineIndependent/glslang_tab.cpp" break; case 565: /* statement_list: statement_list statement */ -#line 3688 "glslang/MachineIndependent/glslang.y" +#line 3689 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { @@ -10445,76 +10463,76 @@ yyreduce: } else (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 10449 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10467 "MachineIndependent/glslang_tab.cpp" break; case 566: /* expression_statement: SEMICOLON */ -#line 3699 "glslang/MachineIndependent/glslang.y" +#line 3700 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 10455 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10473 "MachineIndependent/glslang_tab.cpp" break; case 567: /* expression_statement: expression SEMICOLON */ -#line 3700 "glslang/MachineIndependent/glslang.y" +#line 3701 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = static_cast((yyvsp[-1].interm.intermTypedNode)); } -#line 10461 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10479 "MachineIndependent/glslang_tab.cpp" break; case 568: /* selection_statement: selection_statement_nonattributed */ -#line 3704 "glslang/MachineIndependent/glslang.y" +#line 3705 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10469 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10487 "MachineIndependent/glslang_tab.cpp" break; case 569: /* selection_statement: attribute selection_statement_nonattributed */ -#line 3708 "glslang/MachineIndependent/glslang.y" +#line 3709 "MachineIndependent/glslang.y" { parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10478 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10496 "MachineIndependent/glslang_tab.cpp" break; case 570: /* selection_statement_nonattributed: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement */ -#line 3715 "glslang/MachineIndependent/glslang.y" +#line 3716 "MachineIndependent/glslang.y" { parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode)); (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc); } -#line 10487 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10505 "MachineIndependent/glslang_tab.cpp" break; case 571: /* selection_rest_statement: statement_scoped ELSE statement_scoped */ -#line 3722 "glslang/MachineIndependent/glslang.y" +#line 3723 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode); } -#line 10496 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10514 "MachineIndependent/glslang_tab.cpp" break; case 572: /* selection_rest_statement: statement_scoped */ -#line 3726 "glslang/MachineIndependent/glslang.y" +#line 3727 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode); (yyval.interm.nodePair).node2 = 0; } -#line 10505 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10523 "MachineIndependent/glslang_tab.cpp" break; case 573: /* condition: expression */ -#line 3734 "glslang/MachineIndependent/glslang.y" +#line 3735 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)); } -#line 10514 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10532 "MachineIndependent/glslang_tab.cpp" break; case 574: /* condition: fully_specified_type IDENTIFIER EQUAL initializer */ -#line 3738 "glslang/MachineIndependent/glslang.y" +#line 3739 "MachineIndependent/glslang.y" { parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type)); @@ -10525,28 +10543,28 @@ yyreduce: else (yyval.interm.intermTypedNode) = 0; } -#line 10529 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10547 "MachineIndependent/glslang_tab.cpp" break; case 575: /* switch_statement: switch_statement_nonattributed */ -#line 3751 "glslang/MachineIndependent/glslang.y" +#line 3752 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10537 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10555 "MachineIndependent/glslang_tab.cpp" break; case 576: /* switch_statement: attribute switch_statement_nonattributed */ -#line 3755 "glslang/MachineIndependent/glslang.y" +#line 3756 "MachineIndependent/glslang.y" { parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10546 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10564 "MachineIndependent/glslang_tab.cpp" break; case 577: /* $@9: %empty */ -#line 3762 "glslang/MachineIndependent/glslang.y" +#line 3763 "MachineIndependent/glslang.y" { // start new switch sequence on the switch stack ++parseContext.controlFlowNestingLevel; @@ -10555,11 +10573,11 @@ yyreduce: parseContext.switchLevel.push_back(parseContext.statementNestingLevel); parseContext.symbolTable.push(); } -#line 10559 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10577 "MachineIndependent/glslang_tab.cpp" break; case 578: /* switch_statement_nonattributed: SWITCH LEFT_PAREN expression RIGHT_PAREN $@9 LEFT_BRACE switch_statement_list RIGHT_BRACE */ -#line 3770 "glslang/MachineIndependent/glslang.y" +#line 3771 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0); delete parseContext.switchSequenceStack.back(); @@ -10569,27 +10587,27 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 10573 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10591 "MachineIndependent/glslang_tab.cpp" break; case 579: /* switch_statement_list: %empty */ -#line 3782 "glslang/MachineIndependent/glslang.y" +#line 3783 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 10581 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10599 "MachineIndependent/glslang_tab.cpp" break; case 580: /* switch_statement_list: statement_list */ -#line 3785 "glslang/MachineIndependent/glslang.y" +#line 3786 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10589 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10607 "MachineIndependent/glslang_tab.cpp" break; case 581: /* case_label: CASE expression COLON */ -#line 3791 "glslang/MachineIndependent/glslang.y" +#line 3792 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -10602,11 +10620,11 @@ yyreduce: (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc); } } -#line 10606 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10624 "MachineIndependent/glslang_tab.cpp" break; case 582: /* case_label: DEFAULT COLON */ -#line 3803 "glslang/MachineIndependent/glslang.y" +#line 3804 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -10616,28 +10634,28 @@ yyreduce: else (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc); } -#line 10620 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10638 "MachineIndependent/glslang_tab.cpp" break; case 583: /* iteration_statement: iteration_statement_nonattributed */ -#line 3815 "glslang/MachineIndependent/glslang.y" +#line 3816 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10628 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10646 "MachineIndependent/glslang_tab.cpp" break; case 584: /* iteration_statement: attribute iteration_statement_nonattributed */ -#line 3819 "glslang/MachineIndependent/glslang.y" +#line 3820 "MachineIndependent/glslang.y" { parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10637 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10655 "MachineIndependent/glslang_tab.cpp" break; case 585: /* $@10: %empty */ -#line 3826 "glslang/MachineIndependent/glslang.y" +#line 3827 "MachineIndependent/glslang.y" { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", ""); @@ -10646,11 +10664,11 @@ yyreduce: ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 10650 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10668 "MachineIndependent/glslang_tab.cpp" break; case 586: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope */ -#line 3834 "glslang/MachineIndependent/glslang.y" +#line 3835 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc); @@ -10658,21 +10676,21 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 10662 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10680 "MachineIndependent/glslang_tab.cpp" break; case 587: /* $@11: %empty */ -#line 3841 "glslang/MachineIndependent/glslang.y" +#line 3842 "MachineIndependent/glslang.y" { ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 10672 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10690 "MachineIndependent/glslang_tab.cpp" break; case 588: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON */ -#line 3846 "glslang/MachineIndependent/glslang.y" +#line 3847 "MachineIndependent/glslang.y" { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", ""); @@ -10684,22 +10702,22 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 10688 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10706 "MachineIndependent/glslang_tab.cpp" break; case 589: /* $@12: %empty */ -#line 3857 "glslang/MachineIndependent/glslang.y" +#line 3858 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 10699 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10717 "MachineIndependent/glslang_tab.cpp" break; case 590: /* iteration_statement_nonattributed: FOR LEFT_PAREN $@12 for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope */ -#line 3863 "glslang/MachineIndependent/glslang.y" +#line 3864 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc); @@ -10712,81 +10730,81 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 10716 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10734 "MachineIndependent/glslang_tab.cpp" break; case 591: /* for_init_statement: expression_statement */ -#line 3878 "glslang/MachineIndependent/glslang.y" +#line 3879 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10724 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10742 "MachineIndependent/glslang_tab.cpp" break; case 592: /* for_init_statement: declaration_statement */ -#line 3881 "glslang/MachineIndependent/glslang.y" +#line 3882 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10732 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10750 "MachineIndependent/glslang_tab.cpp" break; case 593: /* conditionopt: condition */ -#line 3887 "glslang/MachineIndependent/glslang.y" +#line 3888 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 10740 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10758 "MachineIndependent/glslang_tab.cpp" break; case 594: /* conditionopt: %empty */ -#line 3890 "glslang/MachineIndependent/glslang.y" +#line 3891 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = 0; } -#line 10748 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10766 "MachineIndependent/glslang_tab.cpp" break; case 595: /* for_rest_statement: conditionopt SEMICOLON */ -#line 3896 "glslang/MachineIndependent/glslang.y" +#line 3897 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); (yyval.interm.nodePair).node2 = 0; } -#line 10757 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10775 "MachineIndependent/glslang_tab.cpp" break; case 596: /* for_rest_statement: conditionopt SEMICOLON expression */ -#line 3900 "glslang/MachineIndependent/glslang.y" +#line 3901 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode); } -#line 10766 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10784 "MachineIndependent/glslang_tab.cpp" break; case 597: /* jump_statement: CONTINUE SEMICOLON */ -#line 3907 "glslang/MachineIndependent/glslang.y" +#line 3908 "MachineIndependent/glslang.y" { if (parseContext.loopNestingLevel <= 0) parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc); } -#line 10776 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10794 "MachineIndependent/glslang_tab.cpp" break; case 598: /* jump_statement: BREAK SEMICOLON */ -#line 3912 "glslang/MachineIndependent/glslang.y" +#line 3913 "MachineIndependent/glslang.y" { if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0) parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc); } -#line 10786 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10804 "MachineIndependent/glslang_tab.cpp" break; case 599: /* jump_statement: RETURN SEMICOLON */ -#line 3917 "glslang/MachineIndependent/glslang.y" +#line 3918 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc); if (parseContext.currentFunctionType->getBasicType() != EbtVoid) @@ -10794,83 +10812,101 @@ yyreduce: if (parseContext.inMain) parseContext.postEntryPointReturn = true; } -#line 10798 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10816 "MachineIndependent/glslang_tab.cpp" break; case 600: /* jump_statement: RETURN expression SEMICOLON */ -#line 3924 "glslang/MachineIndependent/glslang.y" +#line 3925 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); } -#line 10806 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10824 "MachineIndependent/glslang_tab.cpp" break; case 601: /* jump_statement: DISCARD SEMICOLON */ -#line 3927 "glslang/MachineIndependent/glslang.y" +#line 3928 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc); } -#line 10815 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10833 "MachineIndependent/glslang_tab.cpp" break; case 602: /* jump_statement: TERMINATE_INVOCATION SEMICOLON */ -#line 3931 "glslang/MachineIndependent/glslang.y" +#line 3932 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "terminateInvocation"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateInvocation, (yyvsp[-1].lex).loc); } -#line 10824 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10842 "MachineIndependent/glslang_tab.cpp" break; - case 603: /* translation_unit: external_declaration */ -#line 3940 "glslang/MachineIndependent/glslang.y" + case 603: /* jump_statement: TERMINATE_RAY SEMICOLON */ +#line 3937 "MachineIndependent/glslang.y" + { + parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "terminateRayEXT"); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateRayKHR, (yyvsp[-1].lex).loc); + } +#line 10851 "MachineIndependent/glslang_tab.cpp" + break; + + case 604: /* jump_statement: IGNORE_INTERSECTION SEMICOLON */ +#line 3941 "MachineIndependent/glslang.y" + { + parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "ignoreIntersectionEXT"); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpIgnoreIntersectionKHR, (yyvsp[-1].lex).loc); + } +#line 10860 "MachineIndependent/glslang_tab.cpp" + break; + + case 605: /* translation_unit: external_declaration */ +#line 3951 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } -#line 10833 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10869 "MachineIndependent/glslang_tab.cpp" break; - case 604: /* translation_unit: translation_unit external_declaration */ -#line 3944 "glslang/MachineIndependent/glslang.y" + case 606: /* translation_unit: translation_unit external_declaration */ +#line 3955 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermNode) != nullptr) { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } } -#line 10844 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10880 "MachineIndependent/glslang_tab.cpp" break; - case 605: /* external_declaration: function_definition */ -#line 3953 "glslang/MachineIndependent/glslang.y" + case 607: /* external_declaration: function_definition */ +#line 3964 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10852 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10888 "MachineIndependent/glslang_tab.cpp" break; - case 606: /* external_declaration: declaration */ -#line 3956 "glslang/MachineIndependent/glslang.y" + case 608: /* external_declaration: declaration */ +#line 3967 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10860 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10896 "MachineIndependent/glslang_tab.cpp" break; - case 607: /* external_declaration: SEMICOLON */ -#line 3960 "glslang/MachineIndependent/glslang.y" + case 609: /* external_declaration: SEMICOLON */ +#line 3971 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "extraneous semicolon"); parseContext.profileRequires((yyvsp[0].lex).loc, ~EEsProfile, 460, nullptr, "extraneous semicolon"); (yyval.interm.intermNode) = nullptr; } -#line 10870 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10906 "MachineIndependent/glslang_tab.cpp" break; - case 608: /* $@13: %empty */ -#line 3969 "glslang/MachineIndependent/glslang.y" + case 610: /* $@13: %empty */ +#line 3980 "MachineIndependent/glslang.y" { (yyvsp[0].interm).function = parseContext.handleFunctionDeclarator((yyvsp[0].interm).loc, *(yyvsp[0].interm).function, false /* not prototype */); (yyvsp[0].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[0].interm).loc, *(yyvsp[0].interm).function); @@ -10883,11 +10919,11 @@ yyreduce: ++parseContext.statementNestingLevel; } } -#line 10887 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10923 "MachineIndependent/glslang_tab.cpp" break; - case 609: /* function_definition: function_prototype $@13 compound_statement_no_new_scope */ -#line 3981 "glslang/MachineIndependent/glslang.y" + case 611: /* function_definition: function_prototype $@13 compound_statement_no_new_scope */ +#line 3992 "MachineIndependent/glslang.y" { // May be best done as post process phase on intermediate code if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) @@ -10914,52 +10950,52 @@ yyreduce: --parseContext.statementNestingLevel; } } -#line 10918 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10954 "MachineIndependent/glslang_tab.cpp" break; - case 610: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET */ -#line 4011 "glslang/MachineIndependent/glslang.y" + case 612: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET */ +#line 4022 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = (yyvsp[-2].interm.attributes); parseContext.requireExtensions((yyvsp[-4].lex).loc, 1, &E_GL_EXT_control_flow_attributes, "attribute"); } -#line 10927 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10963 "MachineIndependent/glslang_tab.cpp" break; - case 611: /* attribute_list: single_attribute */ -#line 4017 "glslang/MachineIndependent/glslang.y" + case 613: /* attribute_list: single_attribute */ +#line 4028 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = (yyvsp[0].interm.attributes); } -#line 10935 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10971 "MachineIndependent/glslang_tab.cpp" break; - case 612: /* attribute_list: attribute_list COMMA single_attribute */ -#line 4020 "glslang/MachineIndependent/glslang.y" + case 614: /* attribute_list: attribute_list COMMA single_attribute */ +#line 4031 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes)); } -#line 10943 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10979 "MachineIndependent/glslang_tab.cpp" break; - case 613: /* single_attribute: IDENTIFIER */ -#line 4025 "glslang/MachineIndependent/glslang.y" + case 615: /* single_attribute: IDENTIFIER */ +#line 4036 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string); } -#line 10951 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10987 "MachineIndependent/glslang_tab.cpp" break; - case 614: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN */ -#line 4028 "glslang/MachineIndependent/glslang.y" + case 616: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN */ +#line 4039 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode)); } -#line 10959 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10995 "MachineIndependent/glslang_tab.cpp" break; -#line 10963 "glslang/MachineIndependent/glslang_tab.cpp" +#line 10999 "MachineIndependent/glslang_tab.cpp" default: break; } @@ -11184,5 +11220,5 @@ yyreturn: return yyresult; } -#line 4033 "glslang/MachineIndependent/glslang.y" +#line 4044 "MachineIndependent/glslang.y" diff --git a/glslang/MachineIndependent/glslang_tab.cpp.h b/glslang/MachineIndependent/glslang_tab.cpp.h index 66983a08..d6bc00d9 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp.h +++ b/glslang/MachineIndependent/glslang_tab.cpp.h @@ -1,4 +1,4 @@ -/* A Bison parser, made by GNU Bison 3.7.2. */ +/* A Bison parser, made by GNU Bison 3.7.4. */ /* Bison interface for Yacc-like parsers in C @@ -35,8 +35,8 @@ especially those whose name start with YY_ or yy_. They are private implementation details that can be changed or removed. */ -#ifndef YY_YY_GLSLANG_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED -# define YY_YY_GLSLANG_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED +#ifndef YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED +# define YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED /* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 1 @@ -447,53 +447,55 @@ extern int yydebug; CASE = 648, /* CASE */ DEFAULT = 649, /* DEFAULT */ TERMINATE_INVOCATION = 650, /* TERMINATE_INVOCATION */ - UNIFORM = 651, /* UNIFORM */ - SHARED = 652, /* SHARED */ - BUFFER = 653, /* BUFFER */ - FLAT = 654, /* FLAT */ - SMOOTH = 655, /* SMOOTH */ - LAYOUT = 656, /* LAYOUT */ - DOUBLECONSTANT = 657, /* DOUBLECONSTANT */ - INT16CONSTANT = 658, /* INT16CONSTANT */ - UINT16CONSTANT = 659, /* UINT16CONSTANT */ - FLOAT16CONSTANT = 660, /* FLOAT16CONSTANT */ - INT32CONSTANT = 661, /* INT32CONSTANT */ - UINT32CONSTANT = 662, /* UINT32CONSTANT */ - INT64CONSTANT = 663, /* INT64CONSTANT */ - UINT64CONSTANT = 664, /* UINT64CONSTANT */ - SUBROUTINE = 665, /* SUBROUTINE */ - DEMOTE = 666, /* DEMOTE */ - PAYLOADNV = 667, /* PAYLOADNV */ - PAYLOADINNV = 668, /* PAYLOADINNV */ - HITATTRNV = 669, /* HITATTRNV */ - CALLDATANV = 670, /* CALLDATANV */ - CALLDATAINNV = 671, /* CALLDATAINNV */ - PAYLOADEXT = 672, /* PAYLOADEXT */ - PAYLOADINEXT = 673, /* PAYLOADINEXT */ - HITATTREXT = 674, /* HITATTREXT */ - CALLDATAEXT = 675, /* CALLDATAEXT */ - CALLDATAINEXT = 676, /* CALLDATAINEXT */ - PATCH = 677, /* PATCH */ - SAMPLE = 678, /* SAMPLE */ - NONUNIFORM = 679, /* NONUNIFORM */ - COHERENT = 680, /* COHERENT */ - VOLATILE = 681, /* VOLATILE */ - RESTRICT = 682, /* RESTRICT */ - READONLY = 683, /* READONLY */ - WRITEONLY = 684, /* WRITEONLY */ - DEVICECOHERENT = 685, /* DEVICECOHERENT */ - QUEUEFAMILYCOHERENT = 686, /* QUEUEFAMILYCOHERENT */ - WORKGROUPCOHERENT = 687, /* WORKGROUPCOHERENT */ - SUBGROUPCOHERENT = 688, /* SUBGROUPCOHERENT */ - NONPRIVATE = 689, /* NONPRIVATE */ - SHADERCALLCOHERENT = 690, /* SHADERCALLCOHERENT */ - NOPERSPECTIVE = 691, /* NOPERSPECTIVE */ - EXPLICITINTERPAMD = 692, /* EXPLICITINTERPAMD */ - PERVERTEXNV = 693, /* PERVERTEXNV */ - PERPRIMITIVENV = 694, /* PERPRIMITIVENV */ - PERVIEWNV = 695, /* PERVIEWNV */ - PERTASKNV = 696, /* PERTASKNV */ - PRECISE = 697 /* PRECISE */ + TERMINATE_RAY = 651, /* TERMINATE_RAY */ + IGNORE_INTERSECTION = 652, /* IGNORE_INTERSECTION */ + UNIFORM = 653, /* UNIFORM */ + SHARED = 654, /* SHARED */ + BUFFER = 655, /* BUFFER */ + FLAT = 656, /* FLAT */ + SMOOTH = 657, /* SMOOTH */ + LAYOUT = 658, /* LAYOUT */ + DOUBLECONSTANT = 659, /* DOUBLECONSTANT */ + INT16CONSTANT = 660, /* INT16CONSTANT */ + UINT16CONSTANT = 661, /* UINT16CONSTANT */ + FLOAT16CONSTANT = 662, /* FLOAT16CONSTANT */ + INT32CONSTANT = 663, /* INT32CONSTANT */ + UINT32CONSTANT = 664, /* UINT32CONSTANT */ + INT64CONSTANT = 665, /* INT64CONSTANT */ + UINT64CONSTANT = 666, /* UINT64CONSTANT */ + SUBROUTINE = 667, /* SUBROUTINE */ + DEMOTE = 668, /* DEMOTE */ + PAYLOADNV = 669, /* PAYLOADNV */ + PAYLOADINNV = 670, /* PAYLOADINNV */ + HITATTRNV = 671, /* HITATTRNV */ + CALLDATANV = 672, /* CALLDATANV */ + CALLDATAINNV = 673, /* CALLDATAINNV */ + PAYLOADEXT = 674, /* PAYLOADEXT */ + PAYLOADINEXT = 675, /* PAYLOADINEXT */ + HITATTREXT = 676, /* HITATTREXT */ + CALLDATAEXT = 677, /* CALLDATAEXT */ + CALLDATAINEXT = 678, /* CALLDATAINEXT */ + PATCH = 679, /* PATCH */ + SAMPLE = 680, /* SAMPLE */ + NONUNIFORM = 681, /* NONUNIFORM */ + COHERENT = 682, /* COHERENT */ + VOLATILE = 683, /* VOLATILE */ + RESTRICT = 684, /* RESTRICT */ + READONLY = 685, /* READONLY */ + WRITEONLY = 686, /* WRITEONLY */ + DEVICECOHERENT = 687, /* DEVICECOHERENT */ + QUEUEFAMILYCOHERENT = 688, /* QUEUEFAMILYCOHERENT */ + WORKGROUPCOHERENT = 689, /* WORKGROUPCOHERENT */ + SUBGROUPCOHERENT = 690, /* SUBGROUPCOHERENT */ + NONPRIVATE = 691, /* NONPRIVATE */ + SHADERCALLCOHERENT = 692, /* SHADERCALLCOHERENT */ + NOPERSPECTIVE = 693, /* NOPERSPECTIVE */ + EXPLICITINTERPAMD = 694, /* EXPLICITINTERPAMD */ + PERVERTEXNV = 695, /* PERVERTEXNV */ + PERPRIMITIVENV = 696, /* PERPRIMITIVENV */ + PERVIEWNV = 697, /* PERVIEWNV */ + PERTASKNV = 698, /* PERTASKNV */ + PRECISE = 699 /* PRECISE */ }; typedef enum yytokentype yytoken_kind_t; #endif @@ -502,7 +504,7 @@ extern int yydebug; #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED union YYSTYPE { -#line 97 "glslang/MachineIndependent/glslang.y" +#line 97 "MachineIndependent/glslang.y" struct { glslang::TSourceLoc loc; @@ -538,7 +540,7 @@ union YYSTYPE glslang::TArraySizes* typeParameters; } interm; -#line 542 "glslang/MachineIndependent/glslang_tab.cpp.h" +#line 544 "MachineIndependent/glslang_tab.cpp.h" }; typedef union YYSTYPE YYSTYPE; @@ -550,4 +552,4 @@ typedef union YYSTYPE YYSTYPE; int yyparse (glslang::TParseContext* pParseContext); -#endif /* !YY_YY_GLSLANG_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED */ +#endif /* !YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED */ diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp index ac862e63..5ce3e472 100644 --- a/glslang/MachineIndependent/intermOut.cpp +++ b/glslang/MachineIndependent/intermOut.cpp @@ -438,6 +438,9 @@ bool TOutputTraverser::visitUnary(TVisit /* visit */, TIntermUnary* node) case EOpConvUint64ToPtr: out.debug << "Convert uint64_t to pointer"; break; case EOpConvPtrToUint64: out.debug << "Convert pointer to uint64_t"; break; + case EOpConvUint64ToAccStruct: out.debug << "Convert uint64_t to acceleration structure"; break; + case EOpConvUvec2ToAccStruct: out.debug << "Convert uvec2 to acceleration strucuture "; break; + case EOpRadians: out.debug << "radians"; break; case EOpDegrees: out.debug << "degrees"; break; case EOpSin: out.debug << "sine"; break; @@ -829,6 +832,7 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node case EOpConstructTextureSampler: out.debug << "Construct combined texture-sampler"; break; case EOpConstructReference: out.debug << "Construct reference"; break; case EOpConstructCooperativeMatrix: out.debug << "Construct cooperative matrix"; break; + case EOpConstructAccStruct: out.debug << "Construct acceleration structure"; break; case EOpLessThan: out.debug << "Compare Less Than"; break; case EOpGreaterThan: out.debug << "Compare Greater Than"; break; @@ -1079,11 +1083,15 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node case EOpSubpassLoad: out.debug << "subpassLoad"; break; case EOpSubpassLoadMS: out.debug << "subpassLoadMS"; break; - case EOpTrace: out.debug << "traceNV"; break; + case EOpTraceNV: out.debug << "traceNV"; break; + case EOpTraceKHR: out.debug << "traceRayKHR"; break; case EOpReportIntersection: out.debug << "reportIntersectionNV"; break; - case EOpIgnoreIntersection: out.debug << "ignoreIntersectionNV"; break; - case EOpTerminateRay: out.debug << "terminateRayNV"; break; - case EOpExecuteCallable: out.debug << "executeCallableNV"; break; + case EOpIgnoreIntersectionNV: out.debug << "ignoreIntersectionNV"; break; + case EOpIgnoreIntersectionKHR: out.debug << "ignoreIntersectionKHR"; break; + case EOpTerminateRayNV: out.debug << "terminateRayNV"; break; + case EOpTerminateRayKHR: out.debug << "terminateRayKHR"; break; + case EOpExecuteCallableNV: out.debug << "executeCallableNV"; break; + case EOpExecuteCallableKHR: out.debug << "executeCallableKHR"; break; case EOpWritePackedPrimitiveIndices4x8NV: out.debug << "writePackedPrimitiveIndices4x8NV"; break; case EOpRayQueryInitialize: out.debug << "rayQueryInitializeEXT"; break; @@ -1409,15 +1417,17 @@ bool TOutputTraverser::visitBranch(TVisit /* visit*/, TIntermBranch* node) OutputTreeText(out, node, depth); switch (node->getFlowOp()) { - case EOpKill: out.debug << "Branch: Kill"; break; - case EOpTerminateInvocation: out.debug << "Branch: TerminateInvocation"; break; - case EOpBreak: out.debug << "Branch: Break"; break; - case EOpContinue: out.debug << "Branch: Continue"; break; - case EOpReturn: out.debug << "Branch: Return"; break; - case EOpCase: out.debug << "case: "; break; - case EOpDemote: out.debug << "Demote"; break; - case EOpDefault: out.debug << "default: "; break; - default: out.debug << "Branch: Unknown Branch"; break; + case EOpKill: out.debug << "Branch: Kill"; break; + case EOpTerminateInvocation: out.debug << "Branch: TerminateInvocation"; break; + case EOpIgnoreIntersectionKHR: out.debug << "Branch: IgnoreIntersectionKHR"; break; + case EOpTerminateRayKHR: out.debug << "Branch: TerminateRayKHR"; break; + case EOpBreak: out.debug << "Branch: Break"; break; + case EOpContinue: out.debug << "Branch: Continue"; break; + case EOpReturn: out.debug << "Branch: Return"; break; + case EOpCase: out.debug << "case: "; break; + case EOpDemote: out.debug << "Demote"; break; + case EOpDefault: out.debug << "default: "; break; + default: out.debug << "Branch: Unknown Branch"; break; } if (node->getExpression()) { diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index 63fb20a2..4e84adbf 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -1057,8 +1057,8 @@ bool TIntermediate::userOutputUsed() const return found; } -// Accumulate locations used for inputs, outputs, and uniforms, and check for collisions -// as the accumulation is done. +// Accumulate locations used for inputs, outputs, and uniforms, payload and callable data +// and check for collisions as the accumulation is done. // // Returns < 0 if no collision, >= 0 if collision and the value returned is a colliding value. // @@ -1070,6 +1070,7 @@ int TIntermediate::addUsedLocation(const TQualifier& qualifier, const TType& typ typeCollision = false; int set; + int setRT; if (qualifier.isPipeInput()) set = 0; else if (qualifier.isPipeOutput()) @@ -1078,11 +1079,17 @@ int TIntermediate::addUsedLocation(const TQualifier& qualifier, const TType& typ set = 2; else if (qualifier.storage == EvqBuffer) set = 3; + else if (qualifier.isAnyPayload()) + setRT = 0; + else if (qualifier.isAnyCallable()) + setRT = 1; else return -1; int size; - if (qualifier.isUniformOrBuffer() || qualifier.isTaskMemory()) { + if (qualifier.isAnyPayload() || qualifier.isAnyCallable()) { + size = 1; + } else if (qualifier.isUniformOrBuffer() || qualifier.isTaskMemory()) { if (type.isSizedArray()) size = type.getCumulativeArraySize(); else @@ -1110,10 +1117,17 @@ int TIntermediate::addUsedLocation(const TQualifier& qualifier, const TType& typ // (A vertex shader input will show using only one location, even for a dvec3/4.) // // So, for the case of dvec3, we need two independent ioRanges. - + // + // For raytracing IO (payloads and callabledata) each declaration occupies a single + // slot irrespective of type. int collision = -1; // no collision #ifndef GLSLANG_WEB - if (size == 2 && type.getBasicType() == EbtDouble && type.getVectorSize() == 3 && + if (qualifier.isAnyPayload() || qualifier.isAnyCallable()) { + TRange range(qualifier.layoutLocation, qualifier.layoutLocation); + collision = checkLocationRT(setRT, qualifier.layoutLocation); + if (collision < 0) + usedIoRT[setRT].push_back(range); + } else if (size == 2 && type.getBasicType() == EbtDouble && type.getVectorSize() == 3 && (qualifier.isPipeInput() || qualifier.isPipeOutput())) { // Dealing with dvec3 in/out split across two locations. // Need two io-ranges. @@ -1189,6 +1203,16 @@ int TIntermediate::checkLocationRange(int set, const TIoRange& range, const TTyp return -1; // no collision } +int TIntermediate::checkLocationRT(int set, int location) { + TRange range(location, location); + for (size_t r = 0; r < usedIoRT[set].size(); ++r) { + if (range.overlap(usedIoRT[set][r])) { + return range.start; + } + } + return -1; // no collision +} + // Accumulate bindings and offsets, and check for collisions // as the accumulation is done. // diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index f8747015..f8d8e801 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -416,6 +416,9 @@ public: EShLanguage getStage() const { return language; } void addRequestedExtension(const char* extension) { requestedExtensions.insert(extension); } const std::set& getRequestedExtensions() const { return requestedExtensions; } + bool isRayTracingStage() const { + return language >= EShLangRayGen && language <= EShLangCallableNV; + } void setTreeRoot(TIntermNode* r) { treeRoot = r; } TIntermNode* getTreeRoot() const { return treeRoot; } @@ -531,6 +534,7 @@ public: // Linkage related void addSymbolLinkageNodes(TIntermAggregate*& linkage, EShLanguage, TSymbolTable&); void addSymbolLinkageNode(TIntermAggregate*& linkage, const TSymbol&); + TIntermAggregate* findLinkerObjects() const; void setUseStorageBuffer() { useStorageBuffer = true; } bool usingStorageBuffer() const { return useStorageBuffer; } @@ -866,6 +870,7 @@ public: int addUsedLocation(const TQualifier&, const TType&, bool& typeCollision); int checkLocationRange(int set, const TIoRange& range, const TType&, bool& typeCollision); + int checkLocationRT(int set, int location); int addUsedOffsets(int binding, int offset, int numOffsets); bool addUsedConstantId(int id); static int computeTypeLocationSize(const TType&, EShLanguage); @@ -941,7 +946,6 @@ protected: void checkCallGraphCycles(TInfoSink&); void checkCallGraphBodies(TInfoSink&, bool keepUncalled); void inOutLocationCheck(TInfoSink&); - TIntermAggregate* findLinkerObjects() const; bool userOutputUsed() const; bool isSpecializationOperation(const TIntermOperator&) const; bool isNonuniformPropagating(TOperator) const; @@ -1050,6 +1054,8 @@ protected: std::unordered_set usedConstantId; // specialization constant ids used std::vector usedAtomics; // sets of bindings used by atomic counters std::vector usedIo[4]; // sets of used locations, one for each of in, out, uniform, and buffers + std::vector usedIoRT[2]; // sets of used location, one for rayPayload/rayPayloadIN and other + // for callableData/callableDataIn // set of names of statically read/written I/O that might need extra checking std::set ioAccessed; // source code of shader, useful as part of debug information diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 0f6e9f81..90f05389 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -240,6 +240,7 @@ INSTANTIATE_TEST_SUITE_P( "rayQuery-allOps.comp", "rayQuery-allOps.frag", "rayQuery-initialization.Error.comp", + "rayQuery-global.rgen", "spv.set.vert", "spv.double.comp", "spv.100ops.frag", @@ -557,6 +558,7 @@ INSTANTIATE_TEST_SUITE_P( "spv.ext.AnyHitShader.rahit", "spv.ext.AnyHitShader_Errors.rahit", "spv.ext.ClosestHitShader.rchit", + "spv.ext.ClosestHitShader_Subgroup.rchit", "spv.ext.ClosestHitShader_Errors.rchit", "spv.ext.IntersectShader.rint", "spv.ext.IntersectShader_Errors.rint", @@ -567,8 +569,13 @@ INSTANTIATE_TEST_SUITE_P( "spv.ext.RayCallable_Errors.rcall", "spv.ext.RayConstants.rgen", "spv.ext.RayGenShader.rgen", + "spv.ext.RayGenShader_Errors.rgen", "spv.ext.RayGenShader11.rgen", "spv.ext.RayGenShaderArray.rgen", + "spv.ext.RayGenSBTlayout.rgen", + "spv.ext.RayGenSBTlayout140.rgen", + "spv.ext.RayGenSBTlayout430.rgen", + "spv.ext.RayGenSBTlayoutscalar.rgen", "spv.ext.World3x4.rahit", })), FileNameAsCustomTestSuffix diff --git a/known_good.json b/known_good.json index 5c498dcc..ae9c2792 100644 --- a/known_good.json +++ b/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "56d0f50357a192602216bfc4873e714905323e35" + "commit" : "cd590fa3341284cd6d1ee82366155786cfd44c96" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "05836bdba63e7debce9fa9feaed42f20cd43af9d" + "commit" : "104ecc356c1bea4476320faca64440cd1df655a3" } ] } From 4d41da3b810bc11c1c8a954e516638e437360a67 Mon Sep 17 00:00:00 2001 From: Daniel Koch Date: Tue, 24 Nov 2020 23:06:16 -0500 Subject: [PATCH 46/57] Add ray query capability if acceleration structure or ray query types declared (#2469) * Add ray query capability if acceleration structure used Fixes #2430 in non-ray tracing stages and the extension is enabled * Add ray query capability if ray query declared * Fix printing of TypeRayQueryKHR It's no longer spelled with "Provisional" --- SPIRV/GlslangToSpv.cpp | 28 ++++++++++++- SPIRV/doc.cpp | 2 +- Test/baseResults/rayQuery-allOps.comp.out | 2 +- Test/baseResults/rayQuery-allOps.frag.out | 2 +- Test/baseResults/rayQuery-allOps.rgen.out | 2 +- Test/baseResults/rayQuery-global.rgen.out | 2 +- Test/baseResults/rayQuery-initialize.rgen.out | 2 +- Test/baseResults/rayQuery-no-cse.rgen.out | 2 +- Test/baseResults/rayQuery.rgen.out | 2 +- Test/baseResults/spv.ext.AccelDecl.frag.out | 41 +++++++++++++++++++ .../baseResults/spv.ext.RayQueryDecl.frag.out | 39 ++++++++++++++++++ Test/spv.ext.AccelDecl.frag | 14 +++++++ Test/spv.ext.RayQueryDecl.frag | 14 +++++++ gtests/Spv.FromFile.cpp | 2 + 14 files changed, 145 insertions(+), 9 deletions(-) create mode 100644 Test/baseResults/spv.ext.AccelDecl.frag.out create mode 100644 Test/baseResults/spv.ext.RayQueryDecl.frag.out create mode 100644 Test/spv.ext.AccelDecl.frag create mode 100644 Test/spv.ext.RayQueryDecl.frag diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 18ef64f4..4a489dfe 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -3778,10 +3778,36 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty spvType = builder.makeUintType(32); break; case glslang::EbtAccStruct: + switch (glslangIntermediate->getStage()) { + case EShLangRayGen: + case EShLangIntersect: + case EShLangAnyHit: + case EShLangClosestHit: + case EShLangMiss: + case EShLangCallable: + // these all should have the RayTracingNV/KHR capability already + break; + default: + { + auto& extensions = glslangIntermediate->getRequestedExtensions(); + if (extensions.find("GL_EXT_ray_query") != extensions.end()) { + builder.addExtension(spv::E_SPV_KHR_ray_query); + builder.addCapability(spv::CapabilityRayQueryKHR); + } + } + break; + } spvType = builder.makeAccelerationStructureType(); break; case glslang::EbtRayQuery: - spvType = builder.makeRayQueryType(); + { + auto& extensions = glslangIntermediate->getRequestedExtensions(); + if (extensions.find("GL_EXT_ray_query") != extensions.end()) { + builder.addExtension(spv::E_SPV_KHR_ray_query); + builder.addCapability(spv::CapabilityRayQueryKHR); + } + spvType = builder.makeRayQueryType(); + } break; case glslang::EbtReference: { diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index e6ad4c1a..de681a82 100644 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -1380,7 +1380,7 @@ const char* OpcodeString(int op) case OpImageSampleFootprintNV: return "OpImageSampleFootprintNV"; case OpWritePackedPrimitiveIndices4x8NV: return "OpWritePackedPrimitiveIndices4x8NV"; - case OpTypeRayQueryKHR: return "OpTypeRayQueryProvisionalKHR"; + case OpTypeRayQueryKHR: return "OpTypeRayQueryKHR"; case OpRayQueryInitializeKHR: return "OpRayQueryInitializeKHR"; case OpRayQueryTerminateKHR: return "OpRayQueryTerminateKHR"; case OpRayQueryGenerateIntersectionKHR: return "OpRayQueryGenerateIntersectionKHR"; diff --git a/Test/baseResults/rayQuery-allOps.comp.out b/Test/baseResults/rayQuery-allOps.comp.out index 9c49e2e3..fd4a2ff8 100644 --- a/Test/baseResults/rayQuery-allOps.comp.out +++ b/Test/baseResults/rayQuery-allOps.comp.out @@ -86,7 +86,7 @@ rayQuery-allOps.comp 35: TypePointer Function 8(float) 37: 18(int) Constant 3 38: 8(float) Constant 1176255488 - 45: TypeRayQueryProvisionalKHR + 45: TypeRayQueryKHR 46: TypePointer Private 45 47(rayQuery): 46(ptr) Variable Private 48: TypeAccelerationStructureKHR diff --git a/Test/baseResults/rayQuery-allOps.frag.out b/Test/baseResults/rayQuery-allOps.frag.out index cff8fb0e..573a640a 100644 --- a/Test/baseResults/rayQuery-allOps.frag.out +++ b/Test/baseResults/rayQuery-allOps.frag.out @@ -85,7 +85,7 @@ rayQuery-allOps.frag 35: TypePointer Function 8(float) 37: 18(int) Constant 3 38: 8(float) Constant 1176255488 - 45: TypeRayQueryProvisionalKHR + 45: TypeRayQueryKHR 46: TypePointer Private 45 47(rayQuery): 46(ptr) Variable Private 48: TypeAccelerationStructureKHR diff --git a/Test/baseResults/rayQuery-allOps.rgen.out b/Test/baseResults/rayQuery-allOps.rgen.out index 418dad18..deb0f7d5 100644 --- a/Test/baseResults/rayQuery-allOps.rgen.out +++ b/Test/baseResults/rayQuery-allOps.rgen.out @@ -85,7 +85,7 @@ rayQuery-allOps.rgen 35: TypePointer Function 8(float) 37: 18(int) Constant 3 38: 8(float) Constant 1176255488 - 45: TypeRayQueryProvisionalKHR + 45: TypeRayQueryKHR 46: TypePointer Private 45 47(rayQuery): 46(ptr) Variable Private 48: TypeAccelerationStructureKHR diff --git a/Test/baseResults/rayQuery-global.rgen.out b/Test/baseResults/rayQuery-global.rgen.out index 637b7528..7b051735 100644 --- a/Test/baseResults/rayQuery-global.rgen.out +++ b/Test/baseResults/rayQuery-global.rgen.out @@ -26,7 +26,7 @@ rayQuery-global.rgen Decorate 27(rtas) Binding 1 2: TypeVoid 3: TypeFunction 2 - 6: TypeRayQueryProvisionalKHR + 6: TypeRayQueryKHR 7: TypePointer Private 6 8: TypeFunction 2 7(ptr) 15: TypeBool diff --git a/Test/baseResults/rayQuery-initialize.rgen.out b/Test/baseResults/rayQuery-initialize.rgen.out index 3b833332..f16facd5 100644 --- a/Test/baseResults/rayQuery-initialize.rgen.out +++ b/Test/baseResults/rayQuery-initialize.rgen.out @@ -55,7 +55,7 @@ rayQuery-initialize.rgen 3: TypeFunction 2 6: TypeInt 32 0 7: TypeFunction 6(int) - 10: TypeRayQueryProvisionalKHR + 10: TypeRayQueryKHR 11: TypePointer Private 10 12: TypeFloat 32 13: TypeVector 12(float) 3 diff --git a/Test/baseResults/rayQuery-no-cse.rgen.out b/Test/baseResults/rayQuery-no-cse.rgen.out index 2f46f078..a44c41f1 100644 --- a/Test/baseResults/rayQuery-no-cse.rgen.out +++ b/Test/baseResults/rayQuery-no-cse.rgen.out @@ -57,7 +57,7 @@ rayQuery-no-cse.rgen 3: TypeFunction 2 6: TypeInt 32 0 7: TypeFunction 6(int) - 10: TypeRayQueryProvisionalKHR + 10: TypeRayQueryKHR 11: TypePointer Private 10 12: TypeFloat 32 13: TypeVector 12(float) 3 diff --git a/Test/baseResults/rayQuery.rgen.out b/Test/baseResults/rayQuery.rgen.out index 36809733..80e9916e 100644 --- a/Test/baseResults/rayQuery.rgen.out +++ b/Test/baseResults/rayQuery.rgen.out @@ -39,7 +39,7 @@ rayQuery.rgen 11: TypePointer Function 10(float) 13: 10(float) Constant 0 15: 10(float) Constant 1148846080 - 16: TypeRayQueryProvisionalKHR + 16: TypeRayQueryKHR 17: TypePointer Private 16 18(localRayQuery): 17(ptr) Variable Private 19: TypeAccelerationStructureKHR diff --git a/Test/baseResults/spv.ext.AccelDecl.frag.out b/Test/baseResults/spv.ext.AccelDecl.frag.out new file mode 100644 index 00000000..11d45606 --- /dev/null +++ b/Test/baseResults/spv.ext.AccelDecl.frag.out @@ -0,0 +1,41 @@ +spv.ext.AccelDecl.frag +// Module Version 10400 +// Generated by (magic number): 8000a +// Id's are bound by 15 + + Capability Shader + Capability RayQueryKHR + Extension "SPV_KHR_ray_query" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 9 14 + ExecutionMode 4 OriginUpperLeft + Source GLSL 460 + SourceExtension "GL_ARB_separate_shader_objects" + SourceExtension "GL_EXT_nonuniform_qualifier" + SourceExtension "GL_EXT_ray_query" + SourceExtension "GL_EXT_scalar_block_layout" + SourceExtension "GL_GOOGLE_cpp_style_line_directive" + SourceExtension "GL_GOOGLE_include_directive" + Name 4 "main" + Name 9 "outColor" + Name 14 "topLevelAS" + Decorate 9(outColor) Location 0 + Decorate 14(topLevelAS) DescriptorSet 0 + Decorate 14(topLevelAS) Binding 1 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypePointer Output 7(fvec4) + 9(outColor): 8(ptr) Variable Output + 10: 6(float) Constant 0 + 11: 7(fvec4) ConstantComposite 10 10 10 10 + 12: TypeAccelerationStructureKHR + 13: TypePointer UniformConstant 12 + 14(topLevelAS): 13(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + Store 9(outColor) 11 + Return + FunctionEnd diff --git a/Test/baseResults/spv.ext.RayQueryDecl.frag.out b/Test/baseResults/spv.ext.RayQueryDecl.frag.out new file mode 100644 index 00000000..97681e9f --- /dev/null +++ b/Test/baseResults/spv.ext.RayQueryDecl.frag.out @@ -0,0 +1,39 @@ +spv.ext.RayQueryDecl.frag +// Module Version 10400 +// Generated by (magic number): 8000a +// Id's are bound by 15 + + Capability Shader + Capability RayQueryKHR + Extension "SPV_KHR_ray_query" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 9 14 + ExecutionMode 4 OriginUpperLeft + Source GLSL 460 + SourceExtension "GL_ARB_separate_shader_objects" + SourceExtension "GL_EXT_nonuniform_qualifier" + SourceExtension "GL_EXT_ray_query" + SourceExtension "GL_EXT_scalar_block_layout" + SourceExtension "GL_GOOGLE_cpp_style_line_directive" + SourceExtension "GL_GOOGLE_include_directive" + Name 4 "main" + Name 9 "outColor" + Name 14 "rq" + Decorate 9(outColor) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypePointer Output 7(fvec4) + 9(outColor): 8(ptr) Variable Output + 10: 6(float) Constant 0 + 11: 7(fvec4) ConstantComposite 10 10 10 10 + 12: TypeRayQueryKHR + 13: TypePointer Private 12 + 14(rq): 13(ptr) Variable Private + 4(main): 2 Function None 3 + 5: Label + Store 9(outColor) 11 + Return + FunctionEnd diff --git a/Test/spv.ext.AccelDecl.frag b/Test/spv.ext.AccelDecl.frag new file mode 100644 index 00000000..4374bf39 --- /dev/null +++ b/Test/spv.ext.AccelDecl.frag @@ -0,0 +1,14 @@ +#version 460 +#extension GL_ARB_separate_shader_objects : enable +#extension GL_EXT_nonuniform_qualifier : enable +#extension GL_GOOGLE_include_directive : enable +#extension GL_EXT_scalar_block_layout : enable +#extension GL_EXT_ray_query : enable + +layout(location = 0) out vec4 outColor; + +layout(binding = 1, set = 0) uniform accelerationStructureEXT topLevelAS; + +void main() { + outColor = vec4(0.0); +} diff --git a/Test/spv.ext.RayQueryDecl.frag b/Test/spv.ext.RayQueryDecl.frag new file mode 100644 index 00000000..8a144d6b --- /dev/null +++ b/Test/spv.ext.RayQueryDecl.frag @@ -0,0 +1,14 @@ +#version 460 +#extension GL_ARB_separate_shader_objects : enable +#extension GL_EXT_nonuniform_qualifier : enable +#extension GL_GOOGLE_include_directive : enable +#extension GL_EXT_scalar_block_layout : enable +#extension GL_EXT_ray_query : enable + +layout(location = 0) out vec4 outColor; + +rayQueryEXT rq; + +void main() { + outColor = vec4(0.0); +} diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 90f05389..a393cccc 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -577,6 +577,8 @@ INSTANTIATE_TEST_SUITE_P( "spv.ext.RayGenSBTlayout430.rgen", "spv.ext.RayGenSBTlayoutscalar.rgen", "spv.ext.World3x4.rahit", + "spv.ext.AccelDecl.frag", + "spv.ext.RayQueryDecl.frag", })), FileNameAsCustomTestSuffix ); From e11a2c8bece3dffc2fa6bfd1669b23c6f913ff07 Mon Sep 17 00:00:00 2001 From: Daniel Koch Date: Mon, 30 Nov 2020 11:57:34 -0500 Subject: [PATCH 47/57] update spirv-headers and fix handling of gl_HitTEXT (#2471) * update spirv-headers and fix handling of gl_HitTEXT Update spirv-headers known_good to f027d53ded7e230e008d37c8b47ede7cd308e19d and update SPIRV/spirv.hpp to copy from that version as well. In GLSL gl_HitTNV/gl_HitTEXT is defined as an alias of gl_RayTmaxNV/gl_RayTmaxEXT SPV_NV_ray_tracing has a dedicated HitTNV which gl_HitTNV maps to. For SPV_KHR_ray_tracing, gl_HitTEXT gets mapped to a RayTmaxKHR decoraged variable to simplify the SPIRV consumer. This change fixes the mapping for the GL_EXT_ray_tracing extension, and updates the test results to match. * update MissNV shader test to not use ObjectRay builtins They shouldn't existing in the miss stage because there is no object intersected --- SPIRV/GlslangToSpv.cpp | 12 +- SPIRV/doc.cpp | 2 +- SPIRV/spirv.hpp | 1 - Test/baseResults/spv.AnyHitShader.rahit.out | 2 +- .../spv.ClosestHitShader.rchit.out | 2 +- Test/baseResults/spv.MissShader.rmiss.out | 115 +++++++++--------- .../spv.ext.AnyHitShader.rahit.out | 2 +- .../spv.ext.ClosestHitShader.rchit.out | 2 +- Test/spv.MissShader.rmiss | 3 +- known_good.json | 2 +- 10 files changed, 73 insertions(+), 70 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 4a489dfe..1adebef8 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -1006,7 +1006,17 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI case glslang::EbvInstanceCustomIndex: return spv::BuiltInInstanceCustomIndexKHR; case glslang::EbvHitT: - return spv::BuiltInHitTKHR; + { + // this is a GLSL alias of RayTmax + // in SPV_NV_ray_tracing it has a dedicated builtin + // but in SPV_KHR_ray_tracing it gets mapped to RayTmax + auto& extensions = glslangIntermediate->getRequestedExtensions(); + if (extensions.find("GL_NV_ray_tracing") != extensions.end()) { + return spv::BuiltInHitTNV; + } else { + return spv::BuiltInRayTmaxKHR; + } + } case glslang::EbvHitKind: return spv::BuiltInHitKindKHR; case glslang::EbvObjectToWorld: diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index de681a82..5327f221 100644 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -395,7 +395,7 @@ const char* BuiltInString(int builtIn) case BuiltInRayGeometryIndexKHR: return "RayGeometryIndexKHR"; case BuiltInObjectToWorldKHR: return "ObjectToWorldKHR"; case BuiltInWorldToObjectKHR: return "WorldToObjectKHR"; - case BuiltInHitTKHR: return "HitTKHR"; + case BuiltInHitTNV: return "HitTNV"; case BuiltInHitKindKHR: return "HitKindKHR"; case BuiltInIncomingRayFlagsKHR: return "IncomingRayFlagsKHR"; case BuiltInViewportMaskNV: return "ViewportMaskNV"; diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp index a5383de5..43dd2aae 100644 --- a/SPIRV/spirv.hpp +++ b/SPIRV/spirv.hpp @@ -614,7 +614,6 @@ enum BuiltIn { BuiltInObjectToWorldNV = 5330, BuiltInWorldToObjectKHR = 5331, BuiltInWorldToObjectNV = 5331, - BuiltInHitTKHR = 5332, BuiltInHitTNV = 5332, BuiltInHitKindKHR = 5333, BuiltInHitKindNV = 5333, diff --git a/Test/baseResults/spv.AnyHitShader.rahit.out b/Test/baseResults/spv.AnyHitShader.rahit.out index f33a1bdc..c893f88d 100644 --- a/Test/baseResults/spv.AnyHitShader.rahit.out +++ b/Test/baseResults/spv.AnyHitShader.rahit.out @@ -53,7 +53,7 @@ spv.AnyHitShader.rahit Decorate 42(gl_ObjectRayDirectionNV) BuiltIn ObjectRayDirectionKHR Decorate 47(gl_RayTminNV) BuiltIn RayTminKHR Decorate 50(gl_RayTmaxNV) BuiltIn RayTmaxKHR - Decorate 53(gl_HitTNV) BuiltIn HitTKHR + Decorate 53(gl_HitTNV) BuiltIn HitTNV Decorate 58(gl_HitKindNV) BuiltIn HitKindKHR Decorate 64(gl_ObjectToWorldNV) BuiltIn ObjectToWorldKHR Decorate 67(gl_WorldToObjectNV) BuiltIn WorldToObjectKHR diff --git a/Test/baseResults/spv.ClosestHitShader.rchit.out b/Test/baseResults/spv.ClosestHitShader.rchit.out index 4a8e65d2..b76629c2 100644 --- a/Test/baseResults/spv.ClosestHitShader.rchit.out +++ b/Test/baseResults/spv.ClosestHitShader.rchit.out @@ -55,7 +55,7 @@ spv.ClosestHitShader.rchit Decorate 42(gl_ObjectRayDirectionNV) BuiltIn ObjectRayDirectionKHR Decorate 47(gl_RayTminNV) BuiltIn RayTminKHR Decorate 50(gl_RayTmaxNV) BuiltIn RayTmaxKHR - Decorate 53(gl_HitTNV) BuiltIn HitTKHR + Decorate 53(gl_HitTNV) BuiltIn HitTNV Decorate 58(gl_HitKindNV) BuiltIn HitKindKHR Decorate 64(gl_ObjectToWorldNV) BuiltIn ObjectToWorldKHR Decorate 67(gl_WorldToObjectNV) BuiltIn WorldToObjectKHR diff --git a/Test/baseResults/spv.MissShader.rmiss.out b/Test/baseResults/spv.MissShader.rmiss.out index 563e53ff..e573bbae 100644 --- a/Test/baseResults/spv.MissShader.rmiss.out +++ b/Test/baseResults/spv.MissShader.rmiss.out @@ -1,13 +1,13 @@ spv.MissShader.rmiss // Module Version 10000 // Generated by (magic number): 8000a -// Id's are bound by 60 +// Id's are bound by 59 Capability RayTracingNV Extension "SPV_NV_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint MissKHR 4 "main" 11 14 21 24 27 30 35 38 + EntryPoint MissKHR 4 "main" 11 14 21 24 29 34 37 Source GLSL 460 SourceExtension "GL_NV_ray_tracing" Name 4 "main" @@ -19,29 +19,26 @@ spv.MissShader.rmiss Name 21 "gl_WorldRayOriginNV" Name 23 "v3" Name 24 "gl_WorldRayDirectionNV" - Name 26 "v4" - Name 27 "gl_ObjectRayOriginNV" - Name 29 "v5" - Name 30 "gl_ObjectRayDirectionNV" - Name 33 "v6" - Name 35 "gl_RayTminNV" - Name 37 "v7" - Name 38 "gl_RayTmaxNV" - Name 42 "accNV" - Name 57 "localPayload" - Name 59 "incomingPayload" + Name 27 "v4" + Name 29 "gl_IncomingRayFlagsNV" + Name 32 "v6" + Name 34 "gl_RayTminNV" + Name 36 "v7" + Name 37 "gl_RayTmaxNV" + Name 41 "accNV" + Name 56 "localPayload" + Name 58 "incomingPayload" Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdKHR Decorate 14(gl_LaunchSizeNV) BuiltIn LaunchSizeKHR Decorate 21(gl_WorldRayOriginNV) BuiltIn WorldRayOriginKHR Decorate 24(gl_WorldRayDirectionNV) BuiltIn WorldRayDirectionKHR - Decorate 27(gl_ObjectRayOriginNV) BuiltIn ObjectRayOriginKHR - Decorate 30(gl_ObjectRayDirectionNV) BuiltIn ObjectRayDirectionKHR - Decorate 35(gl_RayTminNV) BuiltIn RayTminKHR - Decorate 38(gl_RayTmaxNV) BuiltIn RayTmaxKHR - Decorate 42(accNV) DescriptorSet 0 - Decorate 42(accNV) Binding 0 - Decorate 57(localPayload) Location 0 - Decorate 59(incomingPayload) Location 1 + Decorate 29(gl_IncomingRayFlagsNV) BuiltIn IncomingRayFlagsKHR + Decorate 34(gl_RayTminNV) BuiltIn RayTminKHR + Decorate 37(gl_RayTmaxNV) BuiltIn RayTmaxKHR + Decorate 41(accNV) DescriptorSet 0 + Decorate 41(accNV) Binding 0 + Decorate 56(localPayload) Location 0 + Decorate 58(incomingPayload) Location 1 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 @@ -56,41 +53,41 @@ spv.MissShader.rmiss 20: TypePointer Input 17(fvec3) 21(gl_WorldRayOriginNV): 20(ptr) Variable Input 24(gl_WorldRayDirectionNV): 20(ptr) Variable Input -27(gl_ObjectRayOriginNV): 20(ptr) Variable Input -30(gl_ObjectRayDirectionNV): 20(ptr) Variable Input - 32: TypePointer Function 16(float) - 34: TypePointer Input 16(float) -35(gl_RayTminNV): 34(ptr) Variable Input -38(gl_RayTmaxNV): 34(ptr) Variable Input - 40: TypeAccelerationStructureKHR - 41: TypePointer UniformConstant 40 - 42(accNV): 41(ptr) Variable UniformConstant - 44: 6(int) Constant 0 - 45: 6(int) Constant 1 - 46: 6(int) Constant 2 - 47: 6(int) Constant 3 - 48: 16(float) Constant 1056964608 - 49: 17(fvec3) ConstantComposite 48 48 48 - 50: 16(float) Constant 1065353216 - 51: 17(fvec3) ConstantComposite 50 50 50 - 52: 16(float) Constant 1061158912 - 53: TypeInt 32 1 - 54: 53(int) Constant 1 - 55: TypeVector 16(float) 4 - 56: TypePointer RayPayloadKHR 55(fvec4) -57(localPayload): 56(ptr) Variable RayPayloadKHR - 58: TypePointer IncomingRayPayloadKHR 55(fvec4) -59(incomingPayload): 58(ptr) Variable IncomingRayPayloadKHR + 26: TypePointer Function 6(int) + 28: TypePointer Input 6(int) +29(gl_IncomingRayFlagsNV): 28(ptr) Variable Input + 31: TypePointer Function 16(float) + 33: TypePointer Input 16(float) +34(gl_RayTminNV): 33(ptr) Variable Input +37(gl_RayTmaxNV): 33(ptr) Variable Input + 39: TypeAccelerationStructureKHR + 40: TypePointer UniformConstant 39 + 41(accNV): 40(ptr) Variable UniformConstant + 43: 6(int) Constant 0 + 44: 6(int) Constant 1 + 45: 6(int) Constant 2 + 46: 6(int) Constant 3 + 47: 16(float) Constant 1056964608 + 48: 17(fvec3) ConstantComposite 47 47 47 + 49: 16(float) Constant 1065353216 + 50: 17(fvec3) ConstantComposite 49 49 49 + 51: 16(float) Constant 1061158912 + 52: TypeInt 32 1 + 53: 52(int) Constant 1 + 54: TypeVector 16(float) 4 + 55: TypePointer RayPayloadKHR 54(fvec4) +56(localPayload): 55(ptr) Variable RayPayloadKHR + 57: TypePointer IncomingRayPayloadKHR 54(fvec4) +58(incomingPayload): 57(ptr) Variable IncomingRayPayloadKHR 4(main): 2 Function None 3 5: Label 9(v0): 8(ptr) Variable Function 13(v1): 8(ptr) Variable Function 19(v2): 18(ptr) Variable Function 23(v3): 18(ptr) Variable Function - 26(v4): 18(ptr) Variable Function - 29(v5): 18(ptr) Variable Function - 33(v6): 32(ptr) Variable Function - 37(v7): 32(ptr) Variable Function + 27(v4): 26(ptr) Variable Function + 32(v6): 31(ptr) Variable Function + 36(v7): 31(ptr) Variable Function 12: 7(ivec3) Load 11(gl_LaunchIDNV) Store 9(v0) 12 15: 7(ivec3) Load 14(gl_LaunchSizeNV) @@ -99,15 +96,13 @@ spv.MissShader.rmiss Store 19(v2) 22 25: 17(fvec3) Load 24(gl_WorldRayDirectionNV) Store 23(v3) 25 - 28: 17(fvec3) Load 27(gl_ObjectRayOriginNV) - Store 26(v4) 28 - 31: 17(fvec3) Load 30(gl_ObjectRayDirectionNV) - Store 29(v5) 31 - 36: 16(float) Load 35(gl_RayTminNV) - Store 33(v6) 36 - 39: 16(float) Load 38(gl_RayTmaxNV) - Store 37(v7) 39 - 43: 40 Load 42(accNV) - TraceNV 43 44 45 46 47 44 49 48 51 52 54 + 30: 6(int) Load 29(gl_IncomingRayFlagsNV) + Store 27(v4) 30 + 35: 16(float) Load 34(gl_RayTminNV) + Store 32(v6) 35 + 38: 16(float) Load 37(gl_RayTmaxNV) + Store 36(v7) 38 + 42: 39 Load 41(accNV) + TraceNV 42 43 44 45 46 43 48 47 50 51 53 Return FunctionEnd diff --git a/Test/baseResults/spv.ext.AnyHitShader.rahit.out b/Test/baseResults/spv.ext.AnyHitShader.rahit.out index 133fd639..7bcf8120 100644 --- a/Test/baseResults/spv.ext.AnyHitShader.rahit.out +++ b/Test/baseResults/spv.ext.AnyHitShader.rahit.out @@ -62,7 +62,7 @@ spv.ext.AnyHitShader.rahit Decorate 42(gl_ObjectRayDirectionEXT) BuiltIn ObjectRayDirectionKHR Decorate 47(gl_RayTminEXT) BuiltIn RayTminKHR Decorate 50(gl_RayTmaxEXT) BuiltIn RayTmaxKHR - Decorate 53(gl_HitTEXT) BuiltIn HitTKHR + Decorate 53(gl_HitTEXT) BuiltIn RayTmaxKHR Decorate 58(gl_HitKindEXT) BuiltIn HitKindKHR Decorate 64(gl_ObjectToWorldEXT) BuiltIn ObjectToWorldKHR Decorate 67(gl_WorldToObjectEXT) BuiltIn WorldToObjectKHR diff --git a/Test/baseResults/spv.ext.ClosestHitShader.rchit.out b/Test/baseResults/spv.ext.ClosestHitShader.rchit.out index 559ba002..40903e60 100644 --- a/Test/baseResults/spv.ext.ClosestHitShader.rchit.out +++ b/Test/baseResults/spv.ext.ClosestHitShader.rchit.out @@ -61,7 +61,7 @@ spv.ext.ClosestHitShader.rchit Decorate 42(gl_ObjectRayDirectionEXT) BuiltIn ObjectRayDirectionKHR Decorate 47(gl_RayTminEXT) BuiltIn RayTminKHR Decorate 50(gl_RayTmaxEXT) BuiltIn RayTmaxKHR - Decorate 53(gl_HitTEXT) BuiltIn HitTKHR + Decorate 53(gl_HitTEXT) BuiltIn RayTmaxKHR Decorate 58(gl_HitKindEXT) BuiltIn HitKindKHR Decorate 64(gl_ObjectToWorldEXT) BuiltIn ObjectToWorldKHR Decorate 67(gl_WorldToObjectEXT) BuiltIn WorldToObjectKHR diff --git a/Test/spv.MissShader.rmiss b/Test/spv.MissShader.rmiss index 06113deb..3c6b31c3 100644 --- a/Test/spv.MissShader.rmiss +++ b/Test/spv.MissShader.rmiss @@ -9,8 +9,7 @@ void main() uvec3 v1 = gl_LaunchSizeNV; vec3 v2 = gl_WorldRayOriginNV; vec3 v3 = gl_WorldRayDirectionNV; - vec3 v4 = gl_ObjectRayOriginNV; - vec3 v5 = gl_ObjectRayDirectionNV; + uint v4 = gl_IncomingRayFlagsNV; float v6 = gl_RayTminNV; float v7 = gl_RayTmaxNV; traceNV(accNV, 0u, 1u, 2u, 3u, 0u, vec3(0.5f), 0.5f, vec3(1.0f), 0.75f, 1); diff --git a/known_good.json b/known_good.json index ae9c2792..81301e13 100644 --- a/known_good.json +++ b/known_good.json @@ -12,7 +12,7 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "104ecc356c1bea4476320faca64440cd1df655a3" + "commit" : "f027d53ded7e230e008d37c8b47ede7cd308e19d" } ] } From dd69df7f3dac26362e10b0f38efb9e47990f7537 Mon Sep 17 00:00:00 2001 From: greg-lunarg Date: Thu, 3 Dec 2020 13:07:33 -0700 Subject: [PATCH 48/57] Update spirv-tools known-good (#2473) --- known_good.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/known_good.json b/known_good.json index 81301e13..8f64075a 100644 --- a/known_good.json +++ b/known_good.json @@ -5,7 +5,7 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "cd590fa3341284cd6d1ee82366155786cfd44c96" + "commit" : "c9c1f54330d13a0bec1aa3f08d436249d8e35596" }, { "name" : "spirv-tools/external/spirv-headers", From c594de23cdd790d64ad5f9c8b059baae0ee2941d Mon Sep 17 00:00:00 2001 From: greg-lunarg Date: Mon, 7 Dec 2020 18:20:27 -0700 Subject: [PATCH 49/57] Update spirv-tools known-good #2 - Pick up ray tracing terminator fix (#2478) --- known_good.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/known_good.json b/known_good.json index 8f64075a..65d4376d 100644 --- a/known_good.json +++ b/known_good.json @@ -5,7 +5,7 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "c9c1f54330d13a0bec1aa3f08d436249d8e35596" + "commit" : "b27b1afd12d05bf238ac7368bb49de73cd620a8e" }, { "name" : "spirv-tools/external/spirv-headers", From 862ddcb291b6d5e743072d75c3390de232f3fa28 Mon Sep 17 00:00:00 2001 From: greg-lunarg Date: Fri, 11 Dec 2020 10:46:44 -0700 Subject: [PATCH 50/57] Fix Travis to use pre-breakage googletest (#2481) --- .travis.yml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 1fa3fc01..87838b82 100644 --- a/.travis.yml +++ b/.travis.yml @@ -61,7 +61,17 @@ install: fi before_script: - - git clone --depth=1 https://github.com/google/googletest.git External/googletest + # check out pre-breakage version of googletest; can be deleted when + # issue 3128 is fixed + # git clone --depth=1 https://github.com/google/googletest.git External/googletest + - mkdir -p External/googletest + - cd External/googletest + - git init + - git remote add origin https://github.com/google/googletest.git + - git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725 + - git reset --hard FETCH_HEAD + - cd ../.. + # get spirv-tools and spirv-headers - ./update_glslang_sources.py script: From 4f074aed75a0996f288ec60270435012e8cc771e Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Fri, 11 Dec 2020 11:27:09 -0700 Subject: [PATCH 51/57] Update README to avoid googletest breakage Additional fix for #2480 --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index 7ad4ace9..9b8cfb3f 100644 --- a/README.md +++ b/README.md @@ -125,6 +125,15 @@ cd git clone https://github.com/google/googletest.git External/googletest ``` +TEMPORARY NOTICE: additionally perform the following to avoid a current +breakage in googletest: + +```bash +cd External/googletest +git checkout 0c400f67fcf305869c5fb113dd296eca266c9725 +cd ../.. +``` + If you wish to assure that SPIR-V generated from HLSL is legal for Vulkan, wish to invoke -Os to reduce SPIR-V size from HLSL or GLSL, or wish to run the integrated test suite, install spirv-tools with this: From c0bcfaf3bae917c57bca49897eb7430cdf256c70 Mon Sep 17 00:00:00 2001 From: Daniel Koch Date: Sat, 12 Dec 2020 12:34:24 -0500 Subject: [PATCH 52/57] Fix SPV return type of rayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetEXT (#2484) Issue #2483 According to GLSL spec the prototype is: uint rayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetEXT(rayQueryEXT q, bool committed); but that was incorrectly getting translated to SPIRV as an `int`, and this was causing SPIR-V validation errors when used. Added explicit testing for the return types of all the builtin functions in GL_EXT_ray_query --- SPIRV/GlslangToSpv.cpp | 2 +- Test/baseResults/rayQuery-allOps.comp.out | 2 +- Test/baseResults/rayQuery-allOps.frag.out | 2 +- Test/baseResults/rayQuery-allOps.rgen.out | 2 +- Test/baseResults/rayQuery-types.comp.out | 152 ++++++++++++++++++++++ Test/rayQuery-types.comp | 45 +++++++ gtests/Spv.FromFile.cpp | 1 + 7 files changed, 202 insertions(+), 4 deletions(-) create mode 100644 Test/baseResults/rayQuery-types.comp.out create mode 100644 Test/rayQuery-types.comp diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 1adebef8..eea88528 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -7991,7 +7991,7 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: opCode = spv::OpRayQueryGetIntersectionInstanceIdKHR; break; case glslang::EOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffset: - typeId = builder.makeIntType(32); + typeId = builder.makeUintType(32); opCode = spv::OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR; break; case glslang::EOpRayQueryGetIntersectionGeometryIndex: diff --git a/Test/baseResults/rayQuery-allOps.comp.out b/Test/baseResults/rayQuery-allOps.comp.out index fd4a2ff8..bf654f77 100644 --- a/Test/baseResults/rayQuery-allOps.comp.out +++ b/Test/baseResults/rayQuery-allOps.comp.out @@ -223,7 +223,7 @@ rayQuery-allOps.comp 129: 2 FunctionCall 6(doSomething() Branch 128 128: Label - 130: 18(int) RayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR 47(rayQuery) 23 + 130: 14(int) RayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR 47(rayQuery) 23 131: 66(bool) UGreaterThan 130 20 SelectionMerge 133 None BranchConditional 131 132 133 diff --git a/Test/baseResults/rayQuery-allOps.frag.out b/Test/baseResults/rayQuery-allOps.frag.out index 573a640a..90ebc4a2 100644 --- a/Test/baseResults/rayQuery-allOps.frag.out +++ b/Test/baseResults/rayQuery-allOps.frag.out @@ -221,7 +221,7 @@ rayQuery-allOps.frag 129: 2 FunctionCall 6(doSomething() Branch 128 128: Label - 130: 18(int) RayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR 47(rayQuery) 23 + 130: 14(int) RayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR 47(rayQuery) 23 131: 66(bool) UGreaterThan 130 20 SelectionMerge 133 None BranchConditional 131 132 133 diff --git a/Test/baseResults/rayQuery-allOps.rgen.out b/Test/baseResults/rayQuery-allOps.rgen.out index deb0f7d5..b3a93b02 100644 --- a/Test/baseResults/rayQuery-allOps.rgen.out +++ b/Test/baseResults/rayQuery-allOps.rgen.out @@ -221,7 +221,7 @@ rayQuery-allOps.rgen 129: 2 FunctionCall 6(doSomething() Branch 128 128: Label - 130: 18(int) RayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR 47(rayQuery) 23 + 130: 14(int) RayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR 47(rayQuery) 23 131: 66(bool) UGreaterThan 130 20 SelectionMerge 133 None BranchConditional 131 132 133 diff --git a/Test/baseResults/rayQuery-types.comp.out b/Test/baseResults/rayQuery-types.comp.out new file mode 100644 index 00000000..87a1d683 --- /dev/null +++ b/Test/baseResults/rayQuery-types.comp.out @@ -0,0 +1,152 @@ +rayQuery-types.comp +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 86 + + Capability Shader + Capability RayQueryKHR + Extension "SPV_KHR_ray_query" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" + ExecutionMode 4 LocalSize 16 8 1 + Source GLSL 460 + SourceExtension "GL_EXT_ray_query" + Name 4 "main" + Name 8 "rayQuery" + Name 11 "tlas" + Name 25 "rq_proceed" + Name 35 "intersectionType" + Name 41 "rayTMin" + Name 43 "rayFlags" + Name 46 "worldRayOrigin" + Name 48 "worldDirection" + Name 50 "intersectionT" + Name 53 "customIndex" + Name 55 "instanceId" + Name 57 "sbtOffset" + Name 59 "geometryIndex" + Name 61 "primitiveIndex" + Name 65 "barys" + Name 67 "frontface" + Name 69 "aabbOpaque" + Name 71 "objRayDirection" + Name 73 "objRayOrigin" + Name 77 "objToWorld" + Name 79 "worldToObj" + Decorate 11(tlas) DescriptorSet 0 + Decorate 11(tlas) Binding 0 + Decorate 85 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeRayQueryKHR + 7: TypePointer Private 6 + 8(rayQuery): 7(ptr) Variable Private + 9: TypeAccelerationStructureKHR + 10: TypePointer UniformConstant 9 + 11(tlas): 10(ptr) Variable UniformConstant + 13: TypeInt 32 0 + 14: 13(int) Constant 0 + 15: 13(int) Constant 255 + 16: TypeFloat 32 + 17: TypeVector 16(float) 3 + 18: 16(float) Constant 0 + 19: 17(fvec3) ConstantComposite 18 18 18 + 20: 16(float) Constant 1065353216 + 21: 17(fvec3) ConstantComposite 20 18 18 + 22: 16(float) Constant 1176256512 + 23: TypeBool + 24: TypePointer Function 23(bool) + 34: TypePointer Function 13(int) + 36: 23(bool) ConstantTrue + 37: TypeInt 32 1 + 38: 37(int) Constant 1 + 40: TypePointer Function 16(float) + 45: TypePointer Function 17(fvec3) + 52: TypePointer Function 37(int) + 63: TypeVector 16(float) 2 + 64: TypePointer Function 63(fvec2) + 75: TypeMatrix 17(fvec3) 4 + 76: TypePointer Function 75 + 81: TypeVector 13(int) 3 + 82: 13(int) Constant 16 + 83: 13(int) Constant 8 + 84: 13(int) Constant 1 + 85: 81(ivec3) ConstantComposite 82 83 84 + 4(main): 2 Function None 3 + 5: Label + 25(rq_proceed): 24(ptr) Variable Function +35(intersectionType): 34(ptr) Variable Function + 41(rayTMin): 40(ptr) Variable Function + 43(rayFlags): 34(ptr) Variable Function +46(worldRayOrigin): 45(ptr) Variable Function +48(worldDirection): 45(ptr) Variable Function +50(intersectionT): 40(ptr) Variable Function + 53(customIndex): 52(ptr) Variable Function + 55(instanceId): 52(ptr) Variable Function + 57(sbtOffset): 34(ptr) Variable Function +59(geometryIndex): 52(ptr) Variable Function +61(primitiveIndex): 52(ptr) Variable Function + 65(barys): 64(ptr) Variable Function + 67(frontface): 24(ptr) Variable Function + 69(aabbOpaque): 24(ptr) Variable Function +71(objRayDirection): 45(ptr) Variable Function +73(objRayOrigin): 45(ptr) Variable Function + 77(objToWorld): 76(ptr) Variable Function + 79(worldToObj): 76(ptr) Variable Function + 12: 9 Load 11(tlas) + RayQueryInitializeKHR 8(rayQuery) 12 14 15 19 18 21 22 + 26: 23(bool) RayQueryProceedKHR 8(rayQuery) + Store 25(rq_proceed) 26 + Branch 27 + 27: Label + LoopMerge 29 30 None + Branch 31 + 31: Label + 32: 23(bool) Load 25(rq_proceed) + BranchConditional 32 28 29 + 28: Label + 33: 23(bool) RayQueryProceedKHR 8(rayQuery) + Store 25(rq_proceed) 33 + Branch 30 + 30: Label + Branch 27 + 29: Label + 39: 13(int) RayQueryGetIntersectionTypeKHR 8(rayQuery) 38 + Store 35(intersectionType) 39 + 42: 16(float) RayQueryGetRayTMinKHR 8(rayQuery) + Store 41(rayTMin) 42 + 44: 13(int) RayQueryGetRayFlagsKHR 8(rayQuery) + Store 43(rayFlags) 44 + 47: 17(fvec3) RayQueryGetWorldRayOriginKHR 8(rayQuery) + Store 46(worldRayOrigin) 47 + 49: 17(fvec3) RayQueryGetWorldRayDirectionKHR 8(rayQuery) + Store 48(worldDirection) 49 + 51: 16(float) RayQueryGetIntersectionTKHR 8(rayQuery) 38 + Store 50(intersectionT) 51 + 54: 37(int) RayQueryGetIntersectionInstanceCustomIndexKHR 8(rayQuery) 38 + Store 53(customIndex) 54 + 56: 37(int) RayQueryGetIntersectionInstanceIdKHR 8(rayQuery) 38 + Store 55(instanceId) 56 + 58: 13(int) RayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR 8(rayQuery) 38 + Store 57(sbtOffset) 58 + 60: 37(int) RayQueryGetIntersectionGeometryIndexKHR 8(rayQuery) 38 + Store 59(geometryIndex) 60 + 62: 37(int) RayQueryGetIntersectionPrimitiveIndexKHR 8(rayQuery) 38 + Store 61(primitiveIndex) 62 + 66: 63(fvec2) RayQueryGetIntersectionBarycentricsKHR 8(rayQuery) 38 + Store 65(barys) 66 + 68: 23(bool) RayQueryGetIntersectionFrontFaceKHR 8(rayQuery) 38 + Store 67(frontface) 68 + 70: 23(bool) RayQueryGetIntersectionCandidateAABBOpaqueKHR 8(rayQuery) + Store 69(aabbOpaque) 70 + 72: 17(fvec3) RayQueryGetIntersectionObjectRayDirectionKHR 8(rayQuery) 38 + Store 71(objRayDirection) 72 + 74: 17(fvec3) RayQueryGetIntersectionObjectRayOriginKHR 8(rayQuery) 38 + Store 73(objRayOrigin) 74 + 78: 75 RayQueryGetIntersectionObjectToWorldKHR 8(rayQuery) 38 + Store 77(objToWorld) 78 + 80: 75 RayQueryGetIntersectionWorldToObjectKHR 8(rayQuery) 38 + Store 79(worldToObj) 80 + Return + FunctionEnd diff --git a/Test/rayQuery-types.comp b/Test/rayQuery-types.comp new file mode 100644 index 00000000..c70a3fc4 --- /dev/null +++ b/Test/rayQuery-types.comp @@ -0,0 +1,45 @@ +#version 460 +#extension GL_EXT_ray_query : require + +layout(local_size_x = 16, local_size_y = 8, local_size_z = 1) in; + +layout(binding = 0, set = 0) uniform accelerationStructureEXT tlas; + +void main() +{ + rayQueryEXT rayQuery; + rayQueryInitializeEXT(rayQuery, // Ray query + tlas, // Top-level acceleration structure + 0, // Ray flags + 0xFF, // 8-bit instance mask + vec3(0), // Ray origin + 0.0, // Minimum t-value + vec3(1, 0, 0), // Ray direction + 10000.0); // Maximum t-value + + // yes this is silly, just want to verify the return types + bool rq_proceed = rayQueryProceedEXT(rayQuery); + while(rq_proceed) + { + rq_proceed = rayQueryProceedEXT(rayQuery); + } + + const uint intersectionType = rayQueryGetIntersectionTypeEXT(rayQuery, true); + const float rayTMin = rayQueryGetRayTMinEXT(rayQuery); + const uint rayFlags = rayQueryGetRayFlagsEXT(rayQuery); + const vec3 worldRayOrigin = rayQueryGetWorldRayOriginEXT(rayQuery); + const vec3 worldDirection = rayQueryGetWorldRayDirectionEXT(rayQuery); + const float intersectionT = rayQueryGetIntersectionTEXT(rayQuery, true); + const int customIndex = rayQueryGetIntersectionInstanceCustomIndexEXT(rayQuery, true); + const int instanceId = rayQueryGetIntersectionInstanceIdEXT(rayQuery, true); + const uint sbtOffset = rayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetEXT(rayQuery, true); + const int geometryIndex = rayQueryGetIntersectionGeometryIndexEXT(rayQuery, true); + const int primitiveIndex = rayQueryGetIntersectionPrimitiveIndexEXT(rayQuery, true); + const vec2 barys = rayQueryGetIntersectionBarycentricsEXT(rayQuery, true); + const bool frontface = rayQueryGetIntersectionFrontFaceEXT(rayQuery, true); + const bool aabbOpaque = rayQueryGetIntersectionCandidateAABBOpaqueEXT(rayQuery); + const vec3 objRayDirection = rayQueryGetIntersectionObjectRayDirectionEXT(rayQuery, true); + const vec3 objRayOrigin = rayQueryGetIntersectionObjectRayOriginEXT(rayQuery, true); + const mat4x3 objToWorld = rayQueryGetIntersectionObjectToWorldEXT(rayQuery, true); + const mat4x3 worldToObj = rayQueryGetIntersectionWorldToObjectEXT(rayQuery, true); +} diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index a393cccc..b7f0df58 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -241,6 +241,7 @@ INSTANTIATE_TEST_SUITE_P( "rayQuery-allOps.frag", "rayQuery-initialization.Error.comp", "rayQuery-global.rgen", + "rayQuery-types.comp", "spv.set.vert", "spv.double.comp", "spv.100ops.frag", From dc8b1d0264c8c2640b004632c07279c7b76e614f Mon Sep 17 00:00:00 2001 From: Evgeny Proydakov Date: Tue, 15 Dec 2020 18:05:32 +0300 Subject: [PATCH 53/57] Fixed compile warning in reflection.cpp for ENABLE_HLSL = 0 build. [-Wunused-parameter] --- glslang/MachineIndependent/reflection.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/glslang/MachineIndependent/reflection.cpp b/glslang/MachineIndependent/reflection.cpp index 72950029..9870a400 100644 --- a/glslang/MachineIndependent/reflection.cpp +++ b/glslang/MachineIndependent/reflection.cpp @@ -1138,6 +1138,8 @@ void TReflection::buildCounterIndices(const TIntermediate& intermediate) if (index >= 0) indexToUniformBlock[i].counterIndex = index; } +#else + (void)intermediate; #endif } From 3805671ce842b90b5c8dd25288a46fd15d997d4a Mon Sep 17 00:00:00 2001 From: David Neto Date: Tue, 15 Dec 2020 12:09:50 -0500 Subject: [PATCH 54/57] Update known_good, pick up ImageRead result validation Pick up https://github.com/KhronosGroup/SPIRV-Tools/pull/4072 which validates the result type of OpImageRead. This also requires test expectation updates. See #2486 tracks the needed upate to Glslang code generation. --- known_good.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/known_good.json b/known_good.json index 65d4376d..a01735ba 100644 --- a/known_good.json +++ b/known_good.json @@ -5,7 +5,7 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "b27b1afd12d05bf238ac7368bb49de73cd620a8e" + "commit" : "ad898cb9498c65cac7c5b6f9ebddb610bd0852ad" }, { "name" : "spirv-tools/external/spirv-headers", From 1ef5e20290e55634e6e18dfb3c6207f502771fb8 Mon Sep 17 00:00:00 2001 From: David Neto Date: Tue, 15 Dec 2020 12:19:00 -0500 Subject: [PATCH 55/57] Test updates for ImageRead result type validation See #2486 --- Test/baseResults/hlsl.rw.register.frag.out | 1 + Test/baseResults/hlsl.rw.scalar.bracket.frag.out | 1 + Test/baseResults/hlsl.rw.vec2.bracket.frag.out | 1 + Test/baseResults/spv.rw.autoassign.frag.out | 1 + 4 files changed, 4 insertions(+) diff --git a/Test/baseResults/hlsl.rw.register.frag.out b/Test/baseResults/hlsl.rw.register.frag.out index 35b47583..7bcecc9f 100644 --- a/Test/baseResults/hlsl.rw.register.frag.out +++ b/Test/baseResults/hlsl.rw.register.frag.out @@ -97,6 +97,7 @@ gl_FragCoord origin is upper left 0:? 'g_tBuf1du1' (layout( binding=3 r32ui) uniform uimageBuffer) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) +Validation failed // Module Version 10000 // Generated by (magic number): 8000a // Id's are bound by 42 diff --git a/Test/baseResults/hlsl.rw.scalar.bracket.frag.out b/Test/baseResults/hlsl.rw.scalar.bracket.frag.out index 2c670753..06146770 100644 --- a/Test/baseResults/hlsl.rw.scalar.bracket.frag.out +++ b/Test/baseResults/hlsl.rw.scalar.bracket.frag.out @@ -1689,6 +1689,7 @@ gl_FragCoord origin is upper left 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform float uf1, uniform int ui1, uniform uint uu1}) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) +Validation failed // Module Version 10000 // Generated by (magic number): 8000a // Id's are bound by 571 diff --git a/Test/baseResults/hlsl.rw.vec2.bracket.frag.out b/Test/baseResults/hlsl.rw.vec2.bracket.frag.out index 093665c4..68e40de8 100644 --- a/Test/baseResults/hlsl.rw.vec2.bracket.frag.out +++ b/Test/baseResults/hlsl.rw.vec2.bracket.frag.out @@ -1707,6 +1707,7 @@ gl_FragCoord origin is upper left 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int c1, uniform 2-component vector of int c2, uniform 3-component vector of int c3, uniform 4-component vector of int c4, uniform int o1, uniform 2-component vector of int o2, uniform 3-component vector of int o3, uniform 4-component vector of int o4, uniform 2-component vector of float uf2, uniform 2-component vector of int ui2, uniform 2-component vector of uint uu2}) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) +Validation failed // Module Version 10000 // Generated by (magic number): 8000a // Id's are bound by 605 diff --git a/Test/baseResults/spv.rw.autoassign.frag.out b/Test/baseResults/spv.rw.autoassign.frag.out index 43adeddf..c696c525 100644 --- a/Test/baseResults/spv.rw.autoassign.frag.out +++ b/Test/baseResults/spv.rw.autoassign.frag.out @@ -1,4 +1,5 @@ spv.rw.autoassign.frag +Validation failed // Module Version 10000 // Generated by (magic number): 8000a // Id's are bound by 42 From 589aaff11cacf590d766bd3518f6dd037bfe4df9 Mon Sep 17 00:00:00 2001 From: rdb Date: Thu, 5 Nov 2020 17:53:38 +0100 Subject: [PATCH 56/57] Don't use roundEven() to implement round() in DX9 compatibility mode --- Test/baseResults/hlsl.round.dx10.frag.out | 60 +++++++++++++++++++ Test/baseResults/hlsl.round.dx9.frag.out | 70 +++++++++++++++++++++++ Test/hlsl.round.dx10.frag | 4 ++ Test/hlsl.round.dx9.frag | 4 ++ glslang/HLSL/hlslParseHelper.cpp | 4 ++ glslang/HLSL/hlslParseables.cpp | 2 +- gtests/Hlsl.FromFile.cpp | 2 + 7 files changed, 145 insertions(+), 1 deletion(-) create mode 100644 Test/baseResults/hlsl.round.dx10.frag.out create mode 100644 Test/baseResults/hlsl.round.dx9.frag.out create mode 100644 Test/hlsl.round.dx10.frag create mode 100644 Test/hlsl.round.dx9.frag diff --git a/Test/baseResults/hlsl.round.dx10.frag.out b/Test/baseResults/hlsl.round.dx10.frag.out new file mode 100644 index 00000000..be72dc59 --- /dev/null +++ b/Test/baseResults/hlsl.round.dx10.frag.out @@ -0,0 +1,60 @@ +hlsl.round.dx10.frag +Shader version: 500 +gl_FragCoord origin is upper left +0:? Sequence +0:2 Function Definition: PixelShaderFunction(vf4; ( temp 4-component vector of float) +0:2 Function Parameters: +0:2 'input' ( in 4-component vector of float) +0:? Sequence +0:3 Branch: Return with expression +0:3 roundEven ( temp 4-component vector of float) +0:3 'input' ( in 4-component vector of float) +0:? Linker Objects + + +Linked fragment stage: + +WARNING: Linking fragment stage: Entry point not found + +Shader version: 500 +gl_FragCoord origin is upper left +0:? Sequence +0:2 Function Definition: PixelShaderFunction(vf4; ( temp 4-component vector of float) +0:2 Function Parameters: +0:2 'input' ( in 4-component vector of float) +0:? Sequence +0:3 Branch: Return with expression +0:3 roundEven ( temp 4-component vector of float) +0:3 'input' ( in 4-component vector of float) +0:? Linker Objects + +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 17 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginUpperLeft + Source HLSL 500 + Name 4 "main" + Name 11 "PixelShaderFunction(vf4;" + Name 10 "input" + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 9: TypeFunction 7(fvec4) 8(ptr) + 4(main): 2 Function None 3 + 5: Label + Return + FunctionEnd +11(PixelShaderFunction(vf4;): 7(fvec4) Function None 9 + 10(input): 8(ptr) FunctionParameter + 12: Label + 13: 7(fvec4) Load 10(input) + 14: 7(fvec4) ExtInst 1(GLSL.std.450) 2(RoundEven) 13 + ReturnValue 14 + FunctionEnd diff --git a/Test/baseResults/hlsl.round.dx9.frag.out b/Test/baseResults/hlsl.round.dx9.frag.out new file mode 100644 index 00000000..9333c7dc --- /dev/null +++ b/Test/baseResults/hlsl.round.dx9.frag.out @@ -0,0 +1,70 @@ +hlsl.round.dx9.frag +Shader version: 500 +gl_FragCoord origin is upper left +0:? Sequence +0:2 Function Definition: PixelShaderFunction(vf4; ( temp 4-component vector of float) +0:2 Function Parameters: +0:2 'input' ( in 4-component vector of float) +0:? Sequence +0:3 Branch: Return with expression +0:3 round ( temp 4-component vector of float) +0:3 'input' ( in 4-component vector of float) +0:? Linker Objects + + +Linked fragment stage: + +WARNING: Linking fragment stage: Entry point not found + +Shader version: 500 +gl_FragCoord origin is upper left +0:? Sequence +0:2 Function Definition: PixelShaderFunction(vf4; ( temp 4-component vector of float) +0:2 Function Parameters: +0:2 'input' ( in 4-component vector of float) +0:? Sequence +0:3 Branch: Return with expression +0:3 round ( temp 4-component vector of float) +0:3 'input' ( in 4-component vector of float) +0:? Linker Objects + +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 18 + + Capability Shader + 2: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 5 "main" + ExecutionMode 5 OriginUpperLeft + 1: String "" + Source HLSL 500 1 "// OpModuleProcessed auto-map-locations +// OpModuleProcessed auto-map-bindings +// OpModuleProcessed entry-point main +// OpModuleProcessed client vulkan100 +// OpModuleProcessed target-env vulkan1.0 +// OpModuleProcessed keep-uncalled +// OpModuleProcessed hlsl-offsets +#line 1 +" + Name 5 "main" + Name 12 "PixelShaderFunction(vf4;" + Name 11 "input" + 3: TypeVoid + 4: TypeFunction 3 + 7: TypeFloat 32 + 8: TypeVector 7(float) 4 + 9: TypePointer Function 8(fvec4) + 10: TypeFunction 8(fvec4) 9(ptr) + 5(main): 3 Function None 4 + 6: Label + Return + FunctionEnd +12(PixelShaderFunction(vf4;): 8(fvec4) Function None 10 + 11(input): 9(ptr) FunctionParameter + 13: Label + Line 1 3 0 + 14: 8(fvec4) Load 11(input) + 15: 8(fvec4) ExtInst 2(GLSL.std.450) 1(Round) 14 + ReturnValue 15 + FunctionEnd diff --git a/Test/hlsl.round.dx10.frag b/Test/hlsl.round.dx10.frag new file mode 100644 index 00000000..cd88334c --- /dev/null +++ b/Test/hlsl.round.dx10.frag @@ -0,0 +1,4 @@ +float4 PixelShaderFunction(float4 input) : COLOR0 +{ + return round(input); +} diff --git a/Test/hlsl.round.dx9.frag b/Test/hlsl.round.dx9.frag new file mode 100644 index 00000000..cd88334c --- /dev/null +++ b/Test/hlsl.round.dx9.frag @@ -0,0 +1,4 @@ +float4 PixelShaderFunction(float4 input) : COLOR0 +{ + return round(input); +} diff --git a/glslang/HLSL/hlslParseHelper.cpp b/glslang/HLSL/hlslParseHelper.cpp index ea31837e..abe0f34e 100644 --- a/glslang/HLSL/hlslParseHelper.cpp +++ b/glslang/HLSL/hlslParseHelper.cpp @@ -5492,6 +5492,10 @@ TIntermTyped* HlslParseContext::handleFunctionCall(const TSourceLoc& loc, TFunct op = fnCandidate->getBuiltInOp(); if (builtIn && op != EOpNull) { + // SM 4.0 and above guarantees roundEven semantics for round() + if (!hlslDX9Compatible() && op == EOpRound) + op = EOpRoundEven; + // A function call mapped to a built-in operation. result = intermediate.addBuiltInFunctionCall(loc, op, fnCandidate->getParamCount() == 1, arguments, fnCandidate->getType()); diff --git a/glslang/HLSL/hlslParseables.cpp b/glslang/HLSL/hlslParseables.cpp index 025cb5e1..4673b460 100644 --- a/glslang/HLSL/hlslParseables.cpp +++ b/glslang/HLSL/hlslParseables.cpp @@ -1123,7 +1123,7 @@ void TBuiltInParseablesHlsl::identifyBuiltIns(int /*version*/, EProfile /*profil symbolTable.relateToOperator("reflect", EOpReflect); symbolTable.relateToOperator("refract", EOpRefract); symbolTable.relateToOperator("reversebits", EOpBitFieldReverse); - symbolTable.relateToOperator("round", EOpRoundEven); + symbolTable.relateToOperator("round", EOpRound); symbolTable.relateToOperator("rsqrt", EOpInverseSqrt); symbolTable.relateToOperator("saturate", EOpSaturate); symbolTable.relateToOperator("sign", EOpSign); diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index 4d1cb50b..de071b9f 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -313,6 +313,7 @@ INSTANTIATE_TEST_SUITE_P( {"hlsl.promote.binary.frag", "main"}, {"hlsl.promote.vec1.frag", "main"}, {"hlsl.promotions.frag", "main"}, + {"hlsl.round.dx10.frag", "main"}, {"hlsl.rw.atomics.frag", "main"}, {"hlsl.rw.bracket.frag", "main"}, {"hlsl.rw.register.frag", "main"}, @@ -490,6 +491,7 @@ INSTANTIATE_TEST_SUITE_P( INSTANTIATE_TEST_SUITE_P( ToSpirv, HlslDX9CompatibleTest, ::testing::ValuesIn(std::vector{ + {"hlsl.round.dx9.frag", "main"}, {"hlsl.sample.dx9.frag", "main"}, {"hlsl.sample.dx9.vert", "main"}, }), From efe4586fad8eb96b745dc68fc703083614768eb6 Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Thu, 17 Dec 2020 15:35:41 -0700 Subject: [PATCH 57/57] Fix cut and paste error Fixes #2476 --- glslang/HLSL/hlslParseHelper.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/glslang/HLSL/hlslParseHelper.cpp b/glslang/HLSL/hlslParseHelper.cpp index abe0f34e..fce647a5 100644 --- a/glslang/HLSL/hlslParseHelper.cpp +++ b/glslang/HLSL/hlslParseHelper.cpp @@ -9869,7 +9869,7 @@ void HlslParseContext::addPatchConstantInvocation() } else { // Use the original declaration type for the linkage paramType->getQualifier().builtIn = biType; - if (biType == EbvTessLevelInner || biType == EbvTessLevelInner) + if (biType == EbvTessLevelInner || biType == EbvTessLevelOuter) paramType->getQualifier().patch = true; if (notInEntryPoint.count(tInterstageIoData(biType, storage)) == 1)