diff options
author | android-build-prod (mdb) <android-build-team-robot@google.com> | 2021-02-27 05:49:54 +0000 |
---|---|---|
committer | android-build-prod (mdb) <android-build-team-robot@google.com> | 2021-02-27 05:49:54 +0000 |
commit | cb6847f6016182f15f1c3020aa591d721fbc6d3a (patch) | |
tree | 42224c5c184b15464d835df5bbe44c1669ded9df | |
parent | 7ed0656c1990c6ef78a1462d9c5a1917417c9ce0 (diff) | |
parent | d1037b62f6321bec77aa96f3b59a86847daa4885 (diff) | |
download | glslang-busytown-mac1010-release.tar.gz |
Snap for 7174163 from d1037b62f6321bec77aa96f3b59a86847daa4885 to busytown-mac1010-releasebusytown-mac1010-release
Change-Id: I0a9dc4d5d17705a158b1a2d3e9ff8347069e9dfa
93 files changed, 4239 insertions, 2469 deletions
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: @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/). +## 11.1.0 2021-02-18 + +### Other changes +* Removed Python requirement when not building with spirv-tools +* Add support for GL_EXT_shared_memory_block +* Implement GL_EXT_null_initializer +* Add CMake support for Fuschia + ## 11.0.0 2020-07-20 ### Breaking changes diff --git a/CMakeLists.txt b/CMakeLists.txt index ada2b8fb..d582926f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -186,7 +186,7 @@ elseif(MSVC) if(NOT ENABLE_RTTI) string(FIND "${CMAKE_CXX_FLAGS}" "/GR" MSVC_HAS_GR) if(MSVC_HAS_GR) - string(REGEX REPLACE /GR /GR- CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) + string(REGEX REPLACE "/GR" "/GR-" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") else() add_compile_options(/GR-) # Disable RTTI endif() @@ -234,55 +234,33 @@ if(NOT COMMAND find_host_package) 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_host_package(PythonInterp 3 REQUIRED) - # Root directory for build-time generated include files set(GLSLANG_GENERATED_INCLUDEDIR "${CMAKE_BINARY_DIR}/include") ################################################################################ # Build version information generation ################################################################################ +include(parse_version.cmake) set(GLSLANG_CHANGES_FILE "${CMAKE_CURRENT_SOURCE_DIR}/CHANGES.md") -set(GLSLANG_BUILD_INFO_PY "${CMAKE_CURRENT_SOURCE_DIR}/build_info.py") set(GLSLANG_BUILD_INFO_H_TMPL "${CMAKE_CURRENT_SOURCE_DIR}/build_info.h.tmpl") set(GLSLANG_BUILD_INFO_H "${GLSLANG_GENERATED_INCLUDEDIR}/glslang/build_info.h") -# Command to build the build_info.h file -add_custom_command( - OUTPUT ${GLSLANG_BUILD_INFO_H} - COMMAND ${PYTHON_EXECUTABLE} "${GLSLANG_BUILD_INFO_PY}" - ${CMAKE_CURRENT_SOURCE_DIR} - "-i" ${GLSLANG_BUILD_INFO_H_TMPL} - "-o" ${GLSLANG_BUILD_INFO_H} - DEPENDS ${GLSLANG_BUILD_INFO_PY} - ${GLSLANG_CHANGES_FILE} - ${GLSLANG_BUILD_INFO_H_TMPL} - COMMENT "Generating ${GLSLANG_BUILD_INFO_H}") - -# Target to build the build_info.h file -add_custom_target(glslang-build-info DEPENDS ${GLSLANG_BUILD_INFO_H}) - -# Populate the CMake GLSLANG_VERSION* variables with the build version -# information. -execute_process( - COMMAND ${PYTHON_EXECUTABLE} "${GLSLANG_BUILD_INFO_PY}" - ${CMAKE_CURRENT_SOURCE_DIR} "<major>.<minor>.<patch><-flavor>;<major>;<minor>;<patch>;<flavor>" - OUTPUT_VARIABLE "GLSLANG_VERSIONS" - OUTPUT_STRIP_TRAILING_WHITESPACE) -list(GET "GLSLANG_VERSIONS" 0 "GLSLANG_VERSION") -list(GET "GLSLANG_VERSIONS" 1 "GLSLANG_VERSION_MAJOR") -list(GET "GLSLANG_VERSIONS" 2 "GLSLANG_VERSION_MINOR") -list(GET "GLSLANG_VERSIONS" 3 "GLSLANG_VERSION_PATCH") -list(GET "GLSLANG_VERSIONS" 4 "GLSLANG_VERSION_FLAVOR") -configure_file(${GLSLANG_CHANGES_FILE} "${CMAKE_CURRENT_BINARY_DIR}/CHANGES.md") # Required to re-run cmake on version change +parse_version(${GLSLANG_CHANGES_FILE} GLSLANG) + +function(configurate_version) + set(major ${GLSLANG_VERSION_MAJOR}) + set(minor ${GLSLANG_VERSION_MINOR}) + set(patch ${GLSLANG_VERSION_PATCH}) + set(flavor ${GLSLANG_VERSION_FLAVOR}) + configure_file(${GLSLANG_BUILD_INFO_H_TMPL} ${GLSLANG_BUILD_INFO_H} @ONLY) +endfunction() + +configurate_version() # glslang_add_build_info_dependency() adds the glslang-build-info dependency and # generated include directories to target. function(glslang_add_build_info_dependency target) target_include_directories(${target} PUBLIC $<BUILD_INTERFACE:${GLSLANG_GENERATED_INCLUDEDIR}>) - add_dependencies(${target} glslang-build-info) endfunction() # glslang_only_export_explicit_symbols() makes the symbol visibility hidden by @@ -316,6 +294,8 @@ else() endif() if(BUILD_EXTERNAL AND IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/External) + find_package(PythonInterp 3 REQUIRED) + # We depend on these for later projects, so they should come first. add_subdirectory(External) endif() @@ -125,6 +125,15 @@ cd <the directory glslang was cloned to, "External" will be a subdirectory> 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: diff --git a/SPIRV/GLSL.ext.KHR.h b/SPIRV/GLSL.ext.KHR.h index 9610c6ee..175fa8d5 100644 --- a/SPIRV/GLSL.ext.KHR.h +++ b/SPIRV/GLSL.ext.KHR.h @@ -50,5 +50,6 @@ static const char* const E_SPV_KHR_ray_tracing = "SPV_KHR_ray_t 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"; +static const char* const E_SPV_KHR_workgroup_memory_explicit_layout = "SPV_KHR_workgroup_memory_explicit_layout"; #endif // #ifndef GLSLextKHR_H diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 1adebef8..8528955e 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -257,15 +257,15 @@ protected: spv::Id nonSemanticDebugPrintf; std::unordered_map<const char*, spv::Id> extBuiltinMap; - std::unordered_map<int, spv::Id> symbolValues; - std::unordered_set<int> rValueParameters; // set of formal function parameters passed as rValues, + std::unordered_map<long long, spv::Id> symbolValues; + std::unordered_set<long long> rValueParameters; // set of formal function parameters passed as rValues, // rather than a pointer std::unordered_map<std::string, spv::Function*> functionMap; std::unordered_map<const glslang::TTypeList*, spv::Id> structMap[glslang::ElpCount][glslang::ElmCount]; // for mapping glslang block indices to spv indices (e.g., due to hidden members): - std::unordered_map<int, std::vector<int>> memberRemapper; + std::unordered_map<long long, std::vector<int>> memberRemapper; // for mapping glslang symbol struct to symbol Id - std::unordered_map<const glslang::TTypeList*, int> glslangTypeToIdMap; + std::unordered_map<const glslang::TTypeList*, long long> glslangTypeToIdMap; std::stack<bool> breakForLoop; // false means break for switch std::unordered_map<std::string, const glslang::TIntermSymbol*> counterOriginator; // Map pointee types for EbtReference to their forward pointers @@ -380,6 +380,7 @@ spv::Decoration TranslateBlockDecoration(const glslang::TType& type, bool useSto case glslang::EvqBuffer: return useStorageBuffer ? spv::DecorationBlock : spv::DecorationBufferBlock; case glslang::EvqVaryingIn: return spv::DecorationBlock; case glslang::EvqVaryingOut: return spv::DecorationBlock; + case glslang::EvqShared: return spv::DecorationBlock; #ifndef GLSLANG_WEB case glslang::EvqPayload: return spv::DecorationBlock; case glslang::EvqPayloadIn: return spv::DecorationBlock; @@ -436,6 +437,7 @@ spv::Decoration TranslateLayoutDecoration(const glslang::TType& type, glslang::T break; case glslang::EbtBlock: switch (type.getQualifier().storage) { + case glslang::EvqShared: case glslang::EvqUniform: case glslang::EvqBuffer: switch (type.getQualifier().layoutPacking) { @@ -1278,6 +1280,12 @@ spv::StorageClass TGlslangToSpvTraverser::TranslateStorageClass(const glslang::T return spv::StorageClassUniformConstant; } + if (type.getQualifier().storage == glslang::EvqShared && type.getBasicType() == glslang::EbtBlock) { + builder.addExtension(spv::E_SPV_KHR_workgroup_memory_explicit_layout); + builder.addCapability(spv::CapabilityWorkgroupMemoryExplicitLayoutKHR); + return spv::StorageClassWorkgroup; + } + switch (type.getQualifier().storage) { case glslang::EvqGlobal: return spv::StorageClassPrivate; case glslang::EvqConstReadOnly: return spv::StorageClassFunction; @@ -1986,7 +1994,7 @@ bool TGlslangToSpvTraverser::visitBinary(glslang::TVisit /* visit */, glslang::T { // This may be, e.g., an anonymous block-member selection, which generally need // index remapping due to hidden members in anonymous blocks. - int glslangId = glslangTypeToIdMap[node->getLeft()->getType().getStruct()]; + long long glslangId = glslangTypeToIdMap[node->getLeft()->getType().getStruct()]; if (memberRemapper.find(glslangId) != memberRemapper.end()) { std::vector<int>& remapper = memberRemapper[glslangId]; assert(remapper.size() > 0); @@ -3623,6 +3631,11 @@ spv::Id TGlslangToSpvTraverser::createSpvVariable(const glslang::TIntermSymbol* break; #endif default: + if (storageClass == spv::StorageClassWorkgroup && + node->getType().getBasicType() == glslang::EbtBlock) { + builder.addCapability(spv::CapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR); + break; + } if (node->getType().contains16BitFloat()) builder.addCapability(spv::CapabilityFloat16); if (node->getType().contains16BitInt()) @@ -3641,6 +3654,9 @@ spv::Id TGlslangToSpvTraverser::createSpvVariable(const glslang::TIntermSymbol* } else if (storageClass == spv::StorageClassStorageBuffer) { builder.addIncorporatedExtension(spv::E_SPV_KHR_8bit_storage, spv::Spv_1_5); builder.addCapability(spv::CapabilityStorageBuffer8BitAccess); + } else if (storageClass == spv::StorageClassWorkgroup && + node->getType().getBasicType() == glslang::EbtBlock) { + builder.addCapability(spv::CapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR); } else { builder.addCapability(spv::CapabilityInt8); } @@ -3652,13 +3668,14 @@ spv::Id TGlslangToSpvTraverser::createSpvVariable(const glslang::TIntermSymbol* spv::Id initializer = spv::NoResult; - if (node->getType().getQualifier().storage == glslang::EvqUniform && - !node->getConstArray().empty()) { - int nextConst = 0; - initializer = createSpvConstantFromConstUnionArray(node->getType(), - node->getConstArray(), - nextConst, - false /* specConst */); + if (node->getType().getQualifier().storage == glslang::EvqUniform && !node->getConstArray().empty()) { + int nextConst = 0; + initializer = createSpvConstantFromConstUnionArray(node->getType(), + node->getConstArray(), + nextConst, + false /* specConst */); + } else if (node->getType().getQualifier().isNullInit()) { + initializer = builder.makeNullConstant(spvType); } return builder.createVariable(spv::NoPrecision, storageClass, spvType, name, initializer); @@ -4406,6 +4423,7 @@ glslang::TLayoutPacking TGlslangToSpvTraverser::getExplicitLayout(const glslang: // has to be a uniform or buffer block or task in/out blocks if (type.getQualifier().storage != glslang::EvqUniform && type.getQualifier().storage != glslang::EvqBuffer && + type.getQualifier().storage != glslang::EvqShared && !type.getQualifier().isTaskMemory()) return glslang::ElpNone; @@ -6995,6 +7013,10 @@ spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv builder.addCapability(spv::CapabilityVulkanMemoryModelKHR); } + if (builder.getConstantScalar(scopeId) == spv::ScopeQueueFamily) { + builder.addCapability(spv::CapabilityVulkanMemoryModelKHR); + } + if (glslangIntermediate->usingVulkanMemoryModel() && builder.getConstantScalar(scopeId) == spv::ScopeDevice) { builder.addCapability(spv::CapabilityVulkanMemoryModelDeviceScopeKHR); } @@ -7991,7 +8013,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/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index c8fbcc45..1401bb09 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -869,6 +869,30 @@ bool Builder::isSpecConstantOpCode(Op opcode) const } } +Id Builder::makeNullConstant(Id typeId) +{ + Instruction* constant; + + // See if we already made it. + Id existing = NoResult; + for (int i = 0; i < (int)nullConstants.size(); ++i) { + constant = nullConstants[i]; + if (constant->getTypeId() == typeId) + existing = constant->getResultId(); + } + + if (existing != NoResult) + return existing; + + // Make it + Instruction* c = new Instruction(getUniqueId(), typeId, OpConstantNull); + constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(c)); + nullConstants.push_back(c); + module.mapInstruction(c); + + return c->getResultId(); +} + Id Builder::makeBoolConstant(bool b, bool specConstant) { Id typeId = makeBoolType(); diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index 911ea58b..73847e1d 100644 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -293,6 +293,7 @@ public: } // For making new constants (will return old constant if the requested one was already made). + Id makeNullConstant(Id typeId); Id makeBoolConstant(bool b, bool specConstant = false); Id makeInt8Constant(int i, bool specConstant = false) { return makeIntConstant(makeIntType(8), (unsigned)i, specConstant); } @@ -838,6 +839,8 @@ public: std::unordered_map<unsigned int, std::vector<Instruction*>> groupedStructConstants; // map type opcodes to type instructions std::unordered_map<unsigned int, std::vector<Instruction*>> groupedTypes; + // list of OpConstantNull instructions + std::vector<Instruction*> nullConstants; // stack of switches std::stack<Block*> switchMerges; diff --git a/SPIRV/SpvPostProcess.cpp b/SPIRV/SpvPostProcess.cpp index d40174d1..23d7b5a4 100644 --- a/SPIRV/SpvPostProcess.cpp +++ b/SPIRV/SpvPostProcess.cpp @@ -436,6 +436,38 @@ void Builder::postProcessFeatures() { } } } + + // If any Vulkan memory model-specific functionality is used, update the + // OpMemoryModel to match. + if (capabilities.find(spv::CapabilityVulkanMemoryModelKHR) != capabilities.end()) { + memoryModel = spv::MemoryModelVulkanKHR; + addIncorporatedExtension(spv::E_SPV_KHR_vulkan_memory_model, spv::Spv_1_5); + } + + // Add Aliased decoration if there's more than one Workgroup Block variable. + if (capabilities.find(spv::CapabilityWorkgroupMemoryExplicitLayoutKHR) != capabilities.end()) { + assert(entryPoints.size() == 1); + auto &ep = entryPoints[0]; + + std::vector<Id> workgroup_variables; + for (int i = 0; i < (int)ep->getNumOperands(); i++) { + if (!ep->isIdOperand(i)) + continue; + + const Id id = ep->getIdOperand(i); + const Instruction *instr = module.getInstruction(id); + if (instr->getOpCode() != spv::OpVariable) + continue; + + if (instr->getImmediateOperand(0) == spv::StorageClassWorkgroup) + workgroup_variables.push_back(id); + } + + if (workgroup_variables.size() > 1) { + for (size_t i = 0; i < workgroup_variables.size(); i++) + addDecoration(workgroup_variables[i], spv::DecorationAliased); + } + } } #endif diff --git a/SPIRV/SpvTools.cpp b/SPIRV/SpvTools.cpp index 16d051a9..5cfc4262 100644 --- a/SPIRV/SpvTools.cpp +++ b/SPIRV/SpvTools.cpp @@ -153,6 +153,8 @@ void SpirvToolsValidate(const glslang::TIntermediate& intermediate, std::vector< spv_validator_options options = spvValidatorOptionsCreate(); spvValidatorOptionsSetRelaxBlockLayout(options, intermediate.usingHlslOffsets()); spvValidatorOptionsSetBeforeHlslLegalization(options, prelegalization); + spvValidatorOptionsSetScalarBlockLayout(options, intermediate.usingScalarBlockLayout()); + spvValidatorOptionsSetWorkgroupScalarBlockLayout(options, intermediate.usingScalarBlockLayout()); spvValidateWithOptions(context, options, &binary, &diagnostic); // report diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index 5327f221..6805c3a6 100644 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -967,6 +967,10 @@ const char* CapabilityString(int info) case CapabilityAtomicFloat32AddEXT: return "AtomicFloat32AddEXT"; case CapabilityAtomicFloat64AddEXT: return "AtomicFloat64AddEXT"; + case CapabilityWorkgroupMemoryExplicitLayoutKHR: return "CapabilityWorkgroupMemoryExplicitLayoutKHR"; + case CapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR: return "CapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR"; + case CapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR: return "CapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR"; + default: return "Bad"; } } diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp index 43dd2aae..af629efa 100644 --- a/SPIRV/spirv.hpp +++ b/SPIRV/spirv.hpp @@ -168,10 +168,16 @@ enum ExecutionMode { ExecutionModeSampleInterlockUnorderedEXT = 5369, ExecutionModeShadingRateInterlockOrderedEXT = 5370, ExecutionModeShadingRateInterlockUnorderedEXT = 5371, + ExecutionModeSharedLocalMemorySizeINTEL = 5618, + ExecutionModeRoundingModeRTPINTEL = 5620, + ExecutionModeRoundingModeRTNINTEL = 5621, + ExecutionModeFloatingPointModeALTINTEL = 5622, + ExecutionModeFloatingPointModeIEEEINTEL = 5623, ExecutionModeMaxWorkgroupSizeINTEL = 5893, ExecutionModeMaxWorkDimINTEL = 5894, ExecutionModeNoGlobalOffsetINTEL = 5895, ExecutionModeNumSIMDWorkitemsINTEL = 5896, + ExecutionModeSchedulerTargetFmaxMhzINTEL = 5903, ExecutionModeMax = 0x7fffffff, }; @@ -204,6 +210,8 @@ enum StorageClass { StorageClassPhysicalStorageBuffer = 5349, StorageClassPhysicalStorageBufferEXT = 5349, StorageClassCodeSectionINTEL = 5605, + StorageClassDeviceOnlyINTEL = 5936, + StorageClassHostOnlyINTEL = 5937, StorageClassMax = 0x7fffffff, }; @@ -374,6 +382,8 @@ enum FPFastMathModeShift { FPFastMathModeNSZShift = 2, FPFastMathModeAllowRecipShift = 3, FPFastMathModeFastShift = 4, + FPFastMathModeAllowContractFastINTELShift = 16, + FPFastMathModeAllowReassocINTELShift = 17, FPFastMathModeMax = 0x7fffffff, }; @@ -384,6 +394,8 @@ enum FPFastMathModeMask { FPFastMathModeNSZMask = 0x00000004, FPFastMathModeAllowRecipMask = 0x00000008, FPFastMathModeFastMask = 0x00000010, + FPFastMathModeAllowContractFastINTELMask = 0x00010000, + FPFastMathModeAllowReassocINTELMask = 0x00020000, }; enum FPRoundingMode { @@ -484,12 +496,22 @@ enum Decoration { DecorationRestrictPointerEXT = 5355, DecorationAliasedPointer = 5356, DecorationAliasedPointerEXT = 5356, + DecorationSIMTCallINTEL = 5599, DecorationReferencedIndirectlyINTEL = 5602, + DecorationClobberINTEL = 5607, + DecorationSideEffectsINTEL = 5608, + DecorationVectorComputeVariableINTEL = 5624, + DecorationFuncParamIOKindINTEL = 5625, + DecorationVectorComputeFunctionINTEL = 5626, + DecorationStackCallINTEL = 5627, + DecorationGlobalVariableOffsetINTEL = 5628, DecorationCounterBuffer = 5634, DecorationHlslCounterBufferGOOGLE = 5634, DecorationHlslSemanticGOOGLE = 5635, DecorationUserSemantic = 5635, DecorationUserTypeGOOGLE = 5636, + DecorationFunctionRoundingModeINTEL = 5822, + DecorationFunctionDenormModeINTEL = 5823, DecorationRegisterINTEL = 5825, DecorationMemoryINTEL = 5826, DecorationNumbanksINTEL = 5827, @@ -502,6 +524,17 @@ enum Decoration { DecorationMergeINTEL = 5834, DecorationBankBitsINTEL = 5835, DecorationForcePow2DepthINTEL = 5836, + DecorationBurstCoalesceINTEL = 5899, + DecorationCacheSizeINTEL = 5900, + DecorationDontStaticallyCoalesceINTEL = 5901, + DecorationPrefetchINTEL = 5902, + DecorationStallEnableINTEL = 5905, + DecorationFuseLoopsInFunctionINTEL = 5907, + DecorationBufferLocationINTEL = 5921, + DecorationIOPipeStorageINTEL = 5944, + DecorationFunctionFloatingPointModeINTEL = 6080, + DecorationSingleElementVectorINTEL = 6085, + DecorationVectorComputeCallableFunctionINTEL = 6087, DecorationMax = 0x7fffffff, }; @@ -656,6 +689,7 @@ enum LoopControlShift { LoopControlLoopCoalesceINTELShift = 20, LoopControlMaxInterleavingINTELShift = 21, LoopControlSpeculatedIterationsINTELShift = 22, + LoopControlNoFusionINTELShift = 23, LoopControlMax = 0x7fffffff, }; @@ -677,6 +711,7 @@ enum LoopControlMask { LoopControlLoopCoalesceINTELMask = 0x00100000, LoopControlMaxInterleavingINTELMask = 0x00200000, LoopControlSpeculatedIterationsINTELMask = 0x00400000, + LoopControlNoFusionINTELMask = 0x00800000, }; enum FunctionControlShift { @@ -876,6 +911,9 @@ enum Capability { CapabilityFragmentShadingRateKHR = 4422, CapabilitySubgroupBallotKHR = 4423, CapabilityDrawParameters = 4427, + CapabilityWorkgroupMemoryExplicitLayoutKHR = 4428, + CapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR = 4429, + CapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR = 4430, CapabilitySubgroupVoteKHR = 4431, CapabilityStorageBuffer16BitAccess = 4433, CapabilityStorageUniformBufferBlock16 = 4433, @@ -966,21 +1004,37 @@ enum Capability { CapabilitySubgroupBufferBlockIOINTEL = 5569, CapabilitySubgroupImageBlockIOINTEL = 5570, CapabilitySubgroupImageMediaBlockIOINTEL = 5579, + CapabilityRoundToInfinityINTEL = 5582, + CapabilityFloatingPointModeINTEL = 5583, CapabilityIntegerFunctions2INTEL = 5584, CapabilityFunctionPointersINTEL = 5603, CapabilityIndirectReferencesINTEL = 5604, + CapabilityAsmINTEL = 5606, + CapabilityVectorComputeINTEL = 5617, + CapabilityVectorAnyINTEL = 5619, CapabilitySubgroupAvcMotionEstimationINTEL = 5696, CapabilitySubgroupAvcMotionEstimationIntraINTEL = 5697, CapabilitySubgroupAvcMotionEstimationChromaINTEL = 5698, + CapabilityVariableLengthArrayINTEL = 5817, + CapabilityFunctionFloatControlINTEL = 5821, CapabilityFPGAMemoryAttributesINTEL = 5824, + CapabilityFPFastMathModeINTEL = 5837, + CapabilityArbitraryPrecisionIntegersINTEL = 5844, CapabilityUnstructuredLoopControlsINTEL = 5886, CapabilityFPGALoopControlsINTEL = 5888, CapabilityKernelAttributesINTEL = 5892, CapabilityFPGAKernelAttributesINTEL = 5897, + CapabilityFPGAMemoryAccessesINTEL = 5898, + CapabilityFPGAClusterAttributesINTEL = 5904, + CapabilityLoopFuseINTEL = 5906, + CapabilityFPGABufferLocationINTEL = 5920, + CapabilityUSMStorageClassesINTEL = 5935, + CapabilityIOPipesINTEL = 5943, CapabilityBlockingPipesINTEL = 5945, CapabilityFPGARegINTEL = 5948, CapabilityAtomicFloat32AddEXT = 6033, CapabilityAtomicFloat64AddEXT = 6034, + CapabilityLongConstantCompositeINTEL = 6089, CapabilityMax = 0x7fffffff, }; @@ -1047,6 +1101,18 @@ enum FragmentShadingRateMask { FragmentShadingRateHorizontal4PixelsMask = 0x00000008, }; +enum FPDenormMode { + FPDenormModePreserve = 0, + FPDenormModeFlushToZero = 1, + FPDenormModeMax = 0x7fffffff, +}; + +enum FPOperationMode { + FPOperationModeIEEE = 0, + FPOperationModeALT = 1, + FPOperationModeMax = 0x7fffffff, +}; + enum Op { OpNop = 0, OpUndef = 1, @@ -1466,8 +1532,11 @@ enum Op { OpUSubSatINTEL = 5596, OpIMul32x16INTEL = 5597, OpUMul32x16INTEL = 5598, - OpFunctionPointerINTEL = 5600, + OpConstFunctionPointerINTEL = 5600, OpFunctionPointerCallINTEL = 5601, + OpAsmTargetINTEL = 5609, + OpAsmINTEL = 5610, + OpAsmCallINTEL = 5611, OpDecorateString = 5632, OpDecorateStringGOOGLE = 5632, OpMemberDecorateString = 5633, @@ -1590,7 +1659,12 @@ enum Op { OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL = 5814, OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL = 5815, OpSubgroupAvcSicGetInterRawSadsINTEL = 5816, + OpVariableLengthArrayINTEL = 5818, + OpSaveMemoryINTEL = 5819, + OpRestoreMemoryINTEL = 5820, OpLoopControlINTEL = 5887, + OpPtrCastToCrossWorkgroupINTEL = 5934, + OpCrossWorkgroupCastToPtrINTEL = 5938, OpReadPipeBlockingINTEL = 5946, OpWritePipeBlockingINTEL = 5947, OpFPGARegINTEL = 5949, @@ -1612,6 +1686,10 @@ enum Op { OpRayQueryGetIntersectionObjectToWorldKHR = 6031, OpRayQueryGetIntersectionWorldToObjectKHR = 6032, OpAtomicFAddEXT = 6035, + OpTypeBufferSurfaceINTEL = 6086, + OpTypeStructContinuedINTEL = 6090, + OpConstantCompositeContinuedINTEL = 6091, + OpSpecConstantCompositeContinuedINTEL = 6092, OpMax = 0x7fffffff, }; @@ -2036,8 +2114,11 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case OpUSubSatINTEL: *hasResult = true; *hasResultType = true; break; case OpIMul32x16INTEL: *hasResult = true; *hasResultType = true; break; case OpUMul32x16INTEL: *hasResult = true; *hasResultType = true; break; - case OpFunctionPointerINTEL: *hasResult = true; *hasResultType = true; break; + case OpConstFunctionPointerINTEL: *hasResult = true; *hasResultType = true; break; case OpFunctionPointerCallINTEL: *hasResult = true; *hasResultType = true; break; + case OpAsmTargetINTEL: *hasResult = true; *hasResultType = true; break; + case OpAsmINTEL: *hasResult = true; *hasResultType = true; break; + case OpAsmCallINTEL: *hasResult = true; *hasResultType = true; break; case OpDecorateString: *hasResult = false; *hasResultType = false; break; case OpMemberDecorateString: *hasResult = false; *hasResultType = false; break; case OpVmeImageINTEL: *hasResult = true; *hasResultType = true; break; @@ -2158,7 +2239,12 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: *hasResult = true; *hasResultType = true; break; case OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: *hasResult = true; *hasResultType = true; break; case OpSubgroupAvcSicGetInterRawSadsINTEL: *hasResult = true; *hasResultType = true; break; + case OpVariableLengthArrayINTEL: *hasResult = true; *hasResultType = true; break; + case OpSaveMemoryINTEL: *hasResult = true; *hasResultType = true; break; + case OpRestoreMemoryINTEL: *hasResult = false; *hasResultType = false; break; case OpLoopControlINTEL: *hasResult = false; *hasResultType = false; break; + case OpPtrCastToCrossWorkgroupINTEL: *hasResult = true; *hasResultType = true; break; + case OpCrossWorkgroupCastToPtrINTEL: *hasResult = true; *hasResultType = true; break; case OpReadPipeBlockingINTEL: *hasResult = true; *hasResultType = true; break; case OpWritePipeBlockingINTEL: *hasResult = true; *hasResultType = true; break; case OpFPGARegINTEL: *hasResult = true; *hasResultType = true; break; @@ -2180,6 +2266,10 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case OpRayQueryGetIntersectionObjectToWorldKHR: *hasResult = true; *hasResultType = true; break; case OpRayQueryGetIntersectionWorldToObjectKHR: *hasResult = true; *hasResultType = true; break; case OpAtomicFAddEXT: *hasResult = true; *hasResultType = true; break; + case OpTypeBufferSurfaceINTEL: *hasResult = true; *hasResultType = false; break; + case OpTypeStructContinuedINTEL: *hasResult = false; *hasResultType = false; break; + case OpConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break; + case OpSpecConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break; } } #endif /* SPV_ENABLE_UTILITY_CODE */ diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index 1f294b07..fdbf0279 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -844,6 +844,10 @@ void ProcessArguments(std::vector<std::unique_ptr<glslang::TWorkItem>>& workItem (Options & EOptionReadHlsl) == 0) Error("uniform array flattening only valid when compiling HLSL source."); + if ((Options & EOptionReadHlsl) && (Client == glslang::EShClientOpenGL)) { + Error("Using HLSL input under OpenGL semantics is not currently supported."); + } + // rationalize client and target language if (TargetLanguage == glslang::EShTargetNone) { switch (ClientVersion) { @@ -1561,7 +1565,8 @@ void usage() " 'ver', when present, is the version of the input semantics,\n" " which will appear in #define GL_SPIRV ver;\n" " '--client opengl100' is the same as -G100;\n" - " a '--target-env' for OpenGL will also imply '-G'\n" + " a '--target-env' for OpenGL will also imply '-G';\n" + " currently only supports GLSL\n" " -H print human readable form of SPIR-V; turns on -V\n" " -I<dir> add dir to the include search path; includer's directory\n" " is searched first, followed by left-to-right order of -I\n" diff --git a/Test/baseResults/310.comp.out b/Test/baseResults/310.comp.out index 538b750f..85b01161 100644 --- a/Test/baseResults/310.comp.out +++ b/Test/baseResults/310.comp.out @@ -7,9 +7,9 @@ ERROR: 0:39: 'in' : global storage input qualifier cannot be used in a compute s ERROR: 0:39: 'location qualifier on input' : not supported in this stage: compute ERROR: 0:40: 'in' : global storage input qualifier cannot be used in a compute shader ERROR: 0:41: 'out' : global storage output qualifier cannot be used in a compute shader -ERROR: 0:44: 'shared' : cannot apply layout qualifiers to a shared variable +ERROR: 0:44: 'shared block' : not supported for this version or the enabled extensions ERROR: 0:44: 'location' : can only apply to uniform, buffer, in, or out storage qualifiers -ERROR: 0:45: 'shared' : cannot initialize this type of qualifier +ERROR: 0:45: 'shared' : initializer can only be a null initializer ('{}') ERROR: 0:47: 'local_size' : can only apply to 'in' ERROR: 0:47: 'local_size' : can only apply to 'in' ERROR: 0:47: 'local_size' : can only apply to 'in' @@ -115,6 +115,11 @@ ERROR: node is still EOpNull! 0:36 Constant: 0:36 1 (const uint) 0:36 'gl_LocalInvocationIndex' ( in highp uint LocalInvocationIndex) +0:45 Sequence +0:45 move second child to first child ( temp highp float) +0:45 'fs' ( shared highp float) +0:45 Constant: +0:45 4.200000 0:59 Function Definition: foo( ( global void) 0:59 Function Parameters: 0:61 Sequence @@ -553,6 +558,11 @@ ERROR: node is still EOpNull! 0:36 Constant: 0:36 1 (const uint) 0:36 'gl_LocalInvocationIndex' ( in highp uint LocalInvocationIndex) +0:45 Sequence +0:45 move second child to first child ( temp highp float) +0:45 'fs' ( shared highp float) +0:45 Constant: +0:45 4.200000 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize) 0:? 2 (const uint) diff --git a/Test/baseResults/400.frag.out b/Test/baseResults/400.frag.out index 90f73dc7..b7e88df9 100644 --- a/Test/baseResults/400.frag.out +++ b/Test/baseResults/400.frag.out @@ -34,7 +34,7 @@ ERROR: 0:183: 'assign' : cannot convert from ' const float' to ' temp 2-compone ERROR: 0:184: 'textureQueryLod' : no matching overloaded function found ERROR: 0:184: 'assign' : cannot convert from ' const float' to ' temp 2-component vector of float' ERROR: 0:197: 'subroutine' : feature not yet implemented -ERROR: 0:197: '' : default qualifier requires 'uniform', 'buffer', 'in', or 'out' storage qualification +ERROR: 0:197: '' : default qualifier requires 'uniform', 'buffer', 'in', 'out' or 'shared' storage qualification ERROR: 0:198: 'subroutine' : feature not yet implemented ERROR: 0:199: 'subroutine' : feature not yet implemented ERROR: 0:201: '' : syntax error, unexpected PRECISE, expecting IDENTIFIER diff --git a/Test/baseResults/430.comp.out b/Test/baseResults/430.comp.out index 55c82388..4d8495bc 100644 --- a/Test/baseResults/430.comp.out +++ b/Test/baseResults/430.comp.out @@ -5,9 +5,9 @@ ERROR: 0:43: 'in' : global storage input qualifier cannot be used in a compute s ERROR: 0:43: 'location qualifier on input' : not supported in this stage: compute ERROR: 0:44: 'in' : global storage input qualifier cannot be used in a compute shader ERROR: 0:45: 'out' : global storage output qualifier cannot be used in a compute shader -ERROR: 0:48: 'shared' : cannot apply layout qualifiers to a shared variable +ERROR: 0:48: 'shared block' : not supported for this version or the enabled extensions ERROR: 0:48: 'location' : can only apply to uniform, buffer, in, or out storage qualifiers -ERROR: 0:49: 'shared' : cannot initialize this type of qualifier +ERROR: 0:49: 'shared' : initializer can only be a null initializer ('{}') ERROR: 0:52: 'local_size' : cannot change previously set size ERROR: 0:54: 'local_size' : can only apply to 'in' ERROR: 0:54: 'local_size' : can only apply to 'in' @@ -52,6 +52,11 @@ ERROR: node is still EOpNull! 0:39 10 (const int) 0:39 true case 0:40 Barrier ( global void) +0:49 Sequence +0:49 move second child to first child ( temp float) +0:49 'fs' ( shared float) +0:49 Constant: +0:49 4.200000 0:66 Function Definition: foo( ( global void) 0:66 Function Parameters: 0:68 Sequence @@ -184,6 +189,11 @@ ERROR: node is still EOpNull! 0:39 10 (const int) 0:39 true case 0:40 Barrier ( global void) +0:49 Sequence +0:49 move second child to first child ( temp float) +0:49 'fs' ( shared float) +0:49 Constant: +0:49 4.200000 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 2 (const uint) diff --git a/Test/baseResults/hlsl.load.2dms.dx10.frag.out b/Test/baseResults/hlsl.load.2dms.dx10.frag.out index 99860745..02365b8f 100644 --- a/Test/baseResults/hlsl.load.2dms.dx10.frag.out +++ b/Test/baseResults/hlsl.load.2dms.dx10.frag.out @@ -357,6 +357,7 @@ using depth_any 0:? '@entryPointOutput.Depth' ( out float FragDepth) 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 130 diff --git a/Test/baseResults/hlsl.load.offset.dx10.frag.out b/Test/baseResults/hlsl.load.offset.dx10.frag.out index d0fa5fd4..135b4afa 100644 --- a/Test/baseResults/hlsl.load.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.load.offset.dx10.frag.out @@ -561,6 +561,7 @@ using depth_any 0:? '@entryPointOutput.Depth' ( out float FragDepth) 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 201 diff --git a/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out index a379068a..24aa3680 100644 --- a/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out @@ -435,6 +435,7 @@ using depth_any 0:? '@entryPointOutput.Depth' ( out float FragDepth) 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 174 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/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/link.vk.multiBlocksValid.1.0.geom.out b/Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out index c0b33b70..b0456a08 100644 --- a/Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out +++ b/Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out @@ -328,14 +328,14 @@ output primitive = triangle_strip Decorate 59(Vertex) Block Decorate 61(oV) Location 0 Decorate 64(Vertex) Block - Decorate 68(iV) Location 1 + Decorate 68(iV) Location 0 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 0 + Decorate 100(P) Location 2 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 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/baseResults/spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp.out new file mode 100644 index 00000000..31dd2dd1 --- /dev/null +++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp.out @@ -0,0 +1,54 @@ +spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp +// Module Version 10400 +// Generated by (magic number): 8000a +// Id's are bound by 25 + + Capability Shader + Capability Float16 + Capability Int16 + Capability CapabilityWorkgroupMemoryExplicitLayoutKHR + Capability CapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR + Extension "SPV_KHR_workgroup_memory_explicit_layout" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" 10 + ExecutionMode 4 LocalSize 2 1 1 + Source GLSL 430 + SourceExtension "GL_EXT_shader_explicit_arithmetic_types" + SourceExtension "GL_EXT_shared_memory_block" + Name 4 "main" + Name 8 "first" + MemberName 8(first) 0 "a" + MemberName 8(first) 1 "f" + Name 10 "" + MemberDecorate 8(first) 0 Offset 0 + MemberDecorate 8(first) 1 Offset 2 + Decorate 8(first) Block + Decorate 24 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 16 1 + 7: TypeFloat 16 + 8(first): TypeStruct 6(int16_t) 7(float16_t) + 9: TypePointer Workgroup 8(first) + 10: 9(ptr) Variable Workgroup + 11: TypeInt 32 1 + 12: 11(int) Constant 0 + 13: 6(int16_t) Constant 3 + 14: TypePointer Workgroup 6(int16_t) + 16: 11(int) Constant 1 + 17:7(float16_t) Constant 18982 + 18: TypePointer Workgroup 7(float16_t) + 20: TypeInt 32 0 + 21: TypeVector 20(int) 3 + 22: 20(int) Constant 2 + 23: 20(int) Constant 1 + 24: 21(ivec3) ConstantComposite 22 23 23 + 4(main): 2 Function None 3 + 5: Label + 15: 14(ptr) AccessChain 10 12 + Store 15 13 + 19: 18(ptr) AccessChain 10 16 + Store 19 17 + Return + FunctionEnd diff --git a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp.out new file mode 100644 index 00000000..3447791f --- /dev/null +++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp.out @@ -0,0 +1,45 @@ +spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp +// Module Version 10400 +// Generated by (magic number): 8000a +// Id's are bound by 20 + + Capability Shader + Capability Int8 + Capability CapabilityWorkgroupMemoryExplicitLayoutKHR + Capability CapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR + Extension "SPV_KHR_workgroup_memory_explicit_layout" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" 9 + ExecutionMode 4 LocalSize 2 1 1 + Source GLSL 430 + SourceExtension "GL_EXT_shader_explicit_arithmetic_types" + SourceExtension "GL_EXT_shared_memory_block" + Name 4 "main" + Name 7 "first" + MemberName 7(first) 0 "a" + Name 9 "" + MemberDecorate 7(first) 0 Offset 0 + Decorate 7(first) Block + Decorate 19 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 8 1 + 7(first): TypeStruct 6(int8_t) + 8: TypePointer Workgroup 7(first) + 9: 8(ptr) Variable Workgroup + 10: TypeInt 32 1 + 11: 10(int) Constant 0 + 12: 6(int8_t) Constant 2 + 13: TypePointer Workgroup 6(int8_t) + 15: TypeInt 32 0 + 16: TypeVector 15(int) 3 + 17: 15(int) Constant 2 + 18: 15(int) Constant 1 + 19: 16(ivec3) ConstantComposite 17 18 18 + 4(main): 2 Function None 3 + 5: Label + 14: 13(ptr) AccessChain 9 11 + Store 14 12 + Return + FunctionEnd diff --git a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.MixBlockNonBlock_Errors.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.MixBlockNonBlock_Errors.comp.out new file mode 100644 index 00000000..82495d11 --- /dev/null +++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.MixBlockNonBlock_Errors.comp.out @@ -0,0 +1,4 @@ +spv.WorkgroupMemoryExplicitLayout.MixBlockNonBlock_Errors.comp +ERROR: Linking compute stage: cannot mix use of shared variables inside and outside blocks + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp.out new file mode 100644 index 00000000..b578bd3a --- /dev/null +++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp.out @@ -0,0 +1,54 @@ +spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp +// Module Version 10400 +// Generated by (magic number): 8000a +// Id's are bound by 24 + + Capability Shader + Capability CapabilityWorkgroupMemoryExplicitLayoutKHR + Extension "SPV_KHR_workgroup_memory_explicit_layout" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" 9 16 + ExecutionMode 4 LocalSize 8 1 1 + Source GLSL 430 + SourceExtension "GL_EXT_shared_memory_block" + Name 4 "main" + Name 7 "first" + MemberName 7(first) 0 "a" + Name 9 "" + Name 14 "second" + MemberName 14(second) 0 "b" + Name 16 "" + MemberDecorate 7(first) 0 Offset 0 + Decorate 7(first) Block + MemberDecorate 14(second) 0 Offset 0 + Decorate 14(second) Block + Decorate 23 BuiltIn WorkgroupSize + Decorate 9 Aliased + Decorate 16 Aliased + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7(first): TypeStruct 6(int) + 8: TypePointer Workgroup 7(first) + 9: 8(ptr) Variable Workgroup + 10: 6(int) Constant 0 + 11: 6(int) Constant 2 + 12: TypePointer Workgroup 6(int) + 14(second): TypeStruct 6(int) + 15: TypePointer Workgroup 14(second) + 16: 15(ptr) Variable Workgroup + 17: 6(int) Constant 3 + 19: TypeInt 32 0 + 20: TypeVector 19(int) 3 + 21: 19(int) Constant 8 + 22: 19(int) Constant 1 + 23: 20(ivec3) ConstantComposite 21 22 22 + 4(main): 2 Function None 3 + 5: Label + 13: 12(ptr) AccessChain 9 10 + Store 13 11 + 18: 12(ptr) AccessChain 16 10 + Store 18 17 + Return + FunctionEnd diff --git a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.NonBlock.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.NonBlock.comp.out new file mode 100644 index 00000000..19bcff6b --- /dev/null +++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.NonBlock.comp.out @@ -0,0 +1,35 @@ +spv.WorkgroupMemoryExplicitLayout.NonBlock.comp +// Module Version 10400 +// Generated by (magic number): 8000a +// Id's are bound by 17 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" 8 10 + ExecutionMode 4 LocalSize 8 1 1 + Source GLSL 430 + SourceExtension "GL_EXT_shared_memory_block" + Name 4 "main" + Name 8 "a" + Name 10 "b" + Decorate 16 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypePointer Workgroup 6(int) + 8(a): 7(ptr) Variable Workgroup + 9: 6(int) Constant 2 + 10(b): 7(ptr) Variable Workgroup + 11: 6(int) Constant 3 + 12: TypeInt 32 0 + 13: TypeVector 12(int) 3 + 14: 12(int) Constant 8 + 15: 12(int) Constant 1 + 16: 13(ivec3) ConstantComposite 14 15 15 + 4(main): 2 Function None 3 + 5: Label + Store 8(a) 9 + Store 10(b) 11 + Return + FunctionEnd diff --git a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp.out new file mode 100644 index 00000000..413fd2e8 --- /dev/null +++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp.out @@ -0,0 +1,41 @@ +spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp +// Module Version 10400 +// Generated by (magic number): 8000a +// Id's are bound by 19 + + Capability Shader + Capability CapabilityWorkgroupMemoryExplicitLayoutKHR + Extension "SPV_KHR_workgroup_memory_explicit_layout" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" 9 + ExecutionMode 4 LocalSize 8 1 1 + Source GLSL 430 + SourceExtension "GL_EXT_shared_memory_block" + Name 4 "main" + Name 7 "first" + MemberName 7(first) 0 "a" + Name 9 "" + MemberDecorate 7(first) 0 Offset 0 + Decorate 7(first) Block + Decorate 18 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7(first): TypeStruct 6(int) + 8: TypePointer Workgroup 7(first) + 9: 8(ptr) Variable Workgroup + 10: 6(int) Constant 0 + 11: 6(int) Constant 2 + 12: TypePointer Workgroup 6(int) + 14: TypeInt 32 0 + 15: TypeVector 14(int) 3 + 16: 14(int) Constant 8 + 17: 14(int) Constant 1 + 18: 15(ivec3) ConstantComposite 16 17 17 + 4(main): 2 Function None 3 + 5: Label + 13: 12(ptr) AccessChain 9 10 + Store 13 11 + Return + FunctionEnd diff --git a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.scalar.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.scalar.comp.out new file mode 100644 index 00000000..6a43e236 --- /dev/null +++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.scalar.comp.out @@ -0,0 +1,84 @@ +spv.WorkgroupMemoryExplicitLayout.scalar.comp +// Module Version 10400 +// Generated by (magic number): 8000a +// Id's are bound by 29 + + Capability Shader + Capability CapabilityWorkgroupMemoryExplicitLayoutKHR + Extension "SPV_KHR_workgroup_memory_explicit_layout" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" 28 + ExecutionMode 4 LocalSize 8 1 1 + Source GLSL 430 + SourceExtension "GL_EXT_scalar_block_layout" + SourceExtension "GL_EXT_shared_memory_block" + Name 4 "main" + Name 17 "T" + MemberName 17(T) 0 "t" + Name 24 "S" + MemberName 24(S) 0 "f" + MemberName 24(S) 1 "v2" + MemberName 24(S) 2 "v3" + MemberName 24(S) 3 "v4" + MemberName 24(S) 4 "t" + MemberName 24(S) 5 "f_array" + MemberName 24(S) 6 "v2_array" + MemberName 24(S) 7 "v3_array" + MemberName 24(S) 8 "v4_array" + MemberName 24(S) 9 "t_array" + Name 26 "Block" + MemberName 26(Block) 0 "s" + MemberName 26(Block) 1 "s_array" + Name 28 "" + Decorate 10 BuiltIn WorkgroupSize + Decorate 16 ArrayStride 4 + MemberDecorate 17(T) 0 Offset 0 + Decorate 19 ArrayStride 4 + Decorate 20 ArrayStride 8 + Decorate 21 ArrayStride 12 + Decorate 22 ArrayStride 16 + Decorate 23 ArrayStride 12 + MemberDecorate 24(S) 0 Offset 0 + MemberDecorate 24(S) 1 Offset 4 + MemberDecorate 24(S) 2 Offset 12 + MemberDecorate 24(S) 3 Offset 24 + MemberDecorate 24(S) 4 Offset 40 + MemberDecorate 24(S) 5 Offset 52 + MemberDecorate 24(S) 6 Offset 76 + MemberDecorate 24(S) 7 Offset 124 + MemberDecorate 24(S) 8 Offset 196 + MemberDecorate 24(S) 9 Offset 292 + Decorate 25 ArrayStride 364 + MemberDecorate 26(Block) 0 Offset 0 + MemberDecorate 26(Block) 1 Offset 364 + Decorate 26(Block) Block + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypeVector 6(int) 3 + 8: 6(int) Constant 8 + 9: 6(int) Constant 1 + 10: 7(ivec3) ConstantComposite 8 9 9 + 11: TypeFloat 32 + 12: TypeVector 11(float) 2 + 13: TypeVector 11(float) 3 + 14: TypeVector 11(float) 4 + 15: 6(int) Constant 3 + 16: TypeArray 11(float) 15 + 17(T): TypeStruct 16 + 18: 6(int) Constant 6 + 19: TypeArray 11(float) 18 + 20: TypeArray 12(fvec2) 18 + 21: TypeArray 13(fvec3) 18 + 22: TypeArray 14(fvec4) 18 + 23: TypeArray 17(T) 18 + 24(S): TypeStruct 11(float) 12(fvec2) 13(fvec3) 14(fvec4) 17(T) 19 20 21 22 23 + 25: TypeArray 24(S) 18 + 26(Block): TypeStruct 24(S) 25 + 27: TypePointer Workgroup 26(Block) + 28: 27(ptr) Variable Workgroup + 4(main): 2 Function None 3 + 5: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.std140.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.std140.comp.out new file mode 100644 index 00000000..df4b8aed --- /dev/null +++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.std140.comp.out @@ -0,0 +1,83 @@ +spv.WorkgroupMemoryExplicitLayout.std140.comp +// Module Version 10400 +// Generated by (magic number): 8000a +// Id's are bound by 29 + + Capability Shader + Capability CapabilityWorkgroupMemoryExplicitLayoutKHR + Extension "SPV_KHR_workgroup_memory_explicit_layout" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" 28 + ExecutionMode 4 LocalSize 8 1 1 + Source GLSL 430 + SourceExtension "GL_EXT_shared_memory_block" + Name 4 "main" + Name 17 "T" + MemberName 17(T) 0 "t" + Name 24 "S" + MemberName 24(S) 0 "f" + MemberName 24(S) 1 "v2" + MemberName 24(S) 2 "v3" + MemberName 24(S) 3 "v4" + MemberName 24(S) 4 "t" + MemberName 24(S) 5 "f_array" + MemberName 24(S) 6 "v2_array" + MemberName 24(S) 7 "v3_array" + MemberName 24(S) 8 "v4_array" + MemberName 24(S) 9 "t_array" + Name 26 "Block" + MemberName 26(Block) 0 "s" + MemberName 26(Block) 1 "s_array" + Name 28 "" + Decorate 10 BuiltIn WorkgroupSize + Decorate 16 ArrayStride 16 + MemberDecorate 17(T) 0 Offset 0 + Decorate 19 ArrayStride 16 + Decorate 20 ArrayStride 16 + Decorate 21 ArrayStride 16 + Decorate 22 ArrayStride 16 + Decorate 23 ArrayStride 48 + MemberDecorate 24(S) 0 Offset 0 + MemberDecorate 24(S) 1 Offset 8 + MemberDecorate 24(S) 2 Offset 16 + MemberDecorate 24(S) 3 Offset 32 + MemberDecorate 24(S) 4 Offset 48 + MemberDecorate 24(S) 5 Offset 96 + MemberDecorate 24(S) 6 Offset 192 + MemberDecorate 24(S) 7 Offset 288 + MemberDecorate 24(S) 8 Offset 384 + MemberDecorate 24(S) 9 Offset 480 + Decorate 25 ArrayStride 768 + MemberDecorate 26(Block) 0 Offset 0 + MemberDecorate 26(Block) 1 Offset 768 + Decorate 26(Block) Block + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypeVector 6(int) 3 + 8: 6(int) Constant 8 + 9: 6(int) Constant 1 + 10: 7(ivec3) ConstantComposite 8 9 9 + 11: TypeFloat 32 + 12: TypeVector 11(float) 2 + 13: TypeVector 11(float) 3 + 14: TypeVector 11(float) 4 + 15: 6(int) Constant 3 + 16: TypeArray 11(float) 15 + 17(T): TypeStruct 16 + 18: 6(int) Constant 6 + 19: TypeArray 11(float) 18 + 20: TypeArray 12(fvec2) 18 + 21: TypeArray 13(fvec3) 18 + 22: TypeArray 14(fvec4) 18 + 23: TypeArray 17(T) 18 + 24(S): TypeStruct 11(float) 12(fvec2) 13(fvec3) 14(fvec4) 17(T) 19 20 21 22 23 + 25: TypeArray 24(S) 18 + 26(Block): TypeStruct 24(S) 25 + 27: TypePointer Workgroup 26(Block) + 28: 27(ptr) Variable Workgroup + 4(main): 2 Function None 3 + 5: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.std430.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.std430.comp.out new file mode 100644 index 00000000..e782784b --- /dev/null +++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.std430.comp.out @@ -0,0 +1,83 @@ +spv.WorkgroupMemoryExplicitLayout.std430.comp +// Module Version 10400 +// Generated by (magic number): 8000a +// Id's are bound by 29 + + Capability Shader + Capability CapabilityWorkgroupMemoryExplicitLayoutKHR + Extension "SPV_KHR_workgroup_memory_explicit_layout" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" 28 + ExecutionMode 4 LocalSize 8 1 1 + Source GLSL 430 + SourceExtension "GL_EXT_shared_memory_block" + Name 4 "main" + Name 17 "T" + MemberName 17(T) 0 "t" + Name 24 "S" + MemberName 24(S) 0 "f" + MemberName 24(S) 1 "v2" + MemberName 24(S) 2 "v3" + MemberName 24(S) 3 "v4" + MemberName 24(S) 4 "t" + MemberName 24(S) 5 "f_array" + MemberName 24(S) 6 "v2_array" + MemberName 24(S) 7 "v3_array" + MemberName 24(S) 8 "v4_array" + MemberName 24(S) 9 "t_array" + Name 26 "Block" + MemberName 26(Block) 0 "s" + MemberName 26(Block) 1 "s_array" + Name 28 "" + Decorate 10 BuiltIn WorkgroupSize + Decorate 16 ArrayStride 4 + MemberDecorate 17(T) 0 Offset 0 + Decorate 19 ArrayStride 4 + Decorate 20 ArrayStride 8 + Decorate 21 ArrayStride 16 + Decorate 22 ArrayStride 16 + Decorate 23 ArrayStride 12 + MemberDecorate 24(S) 0 Offset 0 + MemberDecorate 24(S) 1 Offset 8 + MemberDecorate 24(S) 2 Offset 16 + MemberDecorate 24(S) 3 Offset 32 + MemberDecorate 24(S) 4 Offset 48 + MemberDecorate 24(S) 5 Offset 60 + MemberDecorate 24(S) 6 Offset 88 + MemberDecorate 24(S) 7 Offset 144 + MemberDecorate 24(S) 8 Offset 240 + MemberDecorate 24(S) 9 Offset 336 + Decorate 25 ArrayStride 416 + MemberDecorate 26(Block) 0 Offset 0 + MemberDecorate 26(Block) 1 Offset 416 + Decorate 26(Block) Block + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypeVector 6(int) 3 + 8: 6(int) Constant 8 + 9: 6(int) Constant 1 + 10: 7(ivec3) ConstantComposite 8 9 9 + 11: TypeFloat 32 + 12: TypeVector 11(float) 2 + 13: TypeVector 11(float) 3 + 14: TypeVector 11(float) 4 + 15: 6(int) Constant 3 + 16: TypeArray 11(float) 15 + 17(T): TypeStruct 16 + 18: 6(int) Constant 6 + 19: TypeArray 11(float) 18 + 20: TypeArray 12(fvec2) 18 + 21: TypeArray 13(fvec3) 18 + 22: TypeArray 14(fvec4) 18 + 23: TypeArray 17(T) 18 + 24(S): TypeStruct 11(float) 12(fvec2) 13(fvec3) 14(fvec4) 17(T) 19 20 21 22 23 + 25: TypeArray 24(S) 18 + 26(Block): TypeStruct 24(S) 25 + 27: TypePointer Workgroup 26(Block) + 28: 27(ptr) Variable Workgroup + 4(main): 2 Function None 3 + 5: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.debugInfo.1.1.frag.out b/Test/baseResults/spv.debugInfo.1.1.frag.out index 384c76b0..78044ff2 100644 --- a/Test/baseResults/spv.debugInfo.1.1.frag.out +++ b/Test/baseResults/spv.debugInfo.1.1.frag.out @@ -1,6 +1,4 @@ spv.debugInfo.frag -error: SPIRV-Tools Validation Errors -error: Invalid SPIR-V binary version 1.3 for target environment SPIR-V 1.0 (under OpenGL 4.5 semantics). // Module Version 10300 // Generated by (magic number): 8000a // Id's are bound by 124 @@ -9,7 +7,7 @@ error: Invalid SPIR-V binary version 1.3 for target environment SPIR-V 1.0 (unde 2: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 5 "main" 24 52 - ExecutionMode 5 OriginLowerLeft + ExecutionMode 5 OriginUpperLeft 1: String "spv.debugInfo.frag" Source GLSL 450 1 "#version 450 @@ -83,9 +81,9 @@ void main() ModuleProcessed "resource-set-binding 3" ModuleProcessed "auto-map-bindings" ModuleProcessed "auto-map-locations" - ModuleProcessed "client opengl100" + ModuleProcessed "client vulkan100" ModuleProcessed "target-env spirv1.3" - ModuleProcessed "target-env opengl" + ModuleProcessed "target-env vulkan1.1" ModuleProcessed "relaxed-errors" ModuleProcessed "suppress-warnings" ModuleProcessed "hlsl-offsets" @@ -97,7 +95,6 @@ void main() Decorate 54(ubuf) Block Decorate 56 DescriptorSet 3 Decorate 56 Binding 0 - Decorate 67(s2d) Location 0 Decorate 67(s2d) DescriptorSet 3 Decorate 67(s2d) Binding 1 3: TypeVoid diff --git a/Test/baseResults/spv.nullInit.comp.out b/Test/baseResults/spv.nullInit.comp.out new file mode 100755 index 00000000..b7908b57 --- /dev/null +++ b/Test/baseResults/spv.nullInit.comp.out @@ -0,0 +1,65 @@ +spv.nullInit.comp +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 37 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" + ExecutionMode 4 LocalSize 1 1 1 + Source GLSL 460 + SourceExtension "GL_EXT_null_initializer" + Name 4 "main" + Name 12 "S" + MemberName 12(S) 0 "v" + MemberName 12(S) 1 "a" + Name 15 "local" + Name 23 "f" + Name 24 "T" + MemberName 24(T) 0 "b" + MemberName 24(T) 1 "s" + Name 27 "t1" + Name 28 "t2" + Name 30 "s" + Name 31 "g" + Name 34 "i" + Name 36 "global" + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 3 + 8: TypeInt 32 0 + 9: 8(int) Constant 4 + 10: TypeArray 7(fvec3) 9 + 11: TypeInt 32 1 + 12(S): TypeStruct 10 11(int) + 13: 12(S) ConstantNull + 14: TypePointer Function 12(S) + 16: 11(int) Constant 1 + 17: TypePointer Function 11(int) + 21: 6(float) ConstantNull + 22: TypePointer Workgroup 6(float) + 23(f): 22(ptr) Variable Workgroup 21 + 24(T): TypeStruct 11(int) 12(S) + 25: 24(T) ConstantNull + 26: TypePointer Workgroup 24(T) + 27(t1): 26(ptr) Variable Workgroup 25 + 28(t2): 26(ptr) Variable Workgroup 25 + 29: TypePointer Workgroup 12(S) + 30(s): 29(ptr) Variable Workgroup 13 + 31(g): 22(ptr) Variable Workgroup 21 + 32: 11(int) ConstantNull + 33: TypePointer Workgroup 11(int) + 34(i): 33(ptr) Variable Workgroup 32 + 35: TypePointer Private 12(S) + 36(global): 35(ptr) Variable Private 13 + 4(main): 2 Function None 3 + 5: Label + 15(local): 14(ptr) Variable Function 13 + 18: 17(ptr) AccessChain 15(local) 16 + 19: 11(int) Load 18 + 20: 11(int) IAdd 19 16 + Store 18 20 + Return + FunctionEnd diff --git a/Test/baseResults/spv.queueFamilyScope.comp.out b/Test/baseResults/spv.queueFamilyScope.comp.out new file mode 100644 index 00000000..9c239df2 --- /dev/null +++ b/Test/baseResults/spv.queueFamilyScope.comp.out @@ -0,0 +1,43 @@ +spv.queueFamilyScope.comp +// Module Version 10300 +// Generated by (magic number): 8000a +// Id's are bound by 21 + + Capability Shader + Capability VulkanMemoryModelKHR + Extension "SPV_KHR_vulkan_memory_model" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical VulkanKHR + EntryPoint GLCompute 4 "main" + ExecutionMode 4 LocalSize 1 1 1 + Source GLSL 450 + SourceExtension "GL_KHR_memory_scope_semantics" + Name 4 "main" + Name 7 "Buffer" + MemberName 7(Buffer) 0 "a" + Name 9 "A" + MemberDecorate 7(Buffer) 0 Offset 0 + Decorate 7(Buffer) Block + Decorate 9(A) DescriptorSet 0 + Decorate 9(A) Binding 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7(Buffer): TypeStruct 6(int) + 8: TypePointer StorageBuffer 7(Buffer) + 9(A): 8(ptr) Variable StorageBuffer + 10: TypeInt 32 1 + 11: 10(int) Constant 0 + 12: TypePointer StorageBuffer 6(int) + 14: 10(int) Constant 5 + 15: 10(int) Constant 64 + 16: 10(int) Constant 2 + 17: 6(int) Constant 1 + 18: 6(int) Constant 0 + 19: 6(int) Constant 66 + 4(main): 2 Function None 3 + 5: Label + 13: 12(ptr) AccessChain 9(A) 11 + 20: 6(int) AtomicLoad 13 14 19 + Return + FunctionEnd 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 diff --git a/Test/baseResults/spv.scalarlayout.frag.out b/Test/baseResults/spv.scalarlayout.frag.out index 549efaa8..e08721f8 100644 --- a/Test/baseResults/spv.scalarlayout.frag.out +++ b/Test/baseResults/spv.scalarlayout.frag.out @@ -1,5 +1,4 @@ spv.scalarlayout.frag -Validation failed // Module Version 10000 // Generated by (magic number): 8000a // Id's are bound by 20 diff --git a/Test/baseResults/spv.scalarlayoutfloat16.frag.out b/Test/baseResults/spv.scalarlayoutfloat16.frag.out index fc0dca84..4f22730e 100644 --- a/Test/baseResults/spv.scalarlayoutfloat16.frag.out +++ b/Test/baseResults/spv.scalarlayoutfloat16.frag.out @@ -1,5 +1,4 @@ spv.scalarlayoutfloat16.frag -Validation failed // Module Version 10000 // Generated by (magic number): 8000a // Id's are bound by 18 diff --git a/Test/baseResults/spv.specConstant.vert.out b/Test/baseResults/spv.specConstant.vert.out index 76f3de61..f7d43811 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[s805310914];" + Name 14 "foo(vf4[s216172782];" 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[s805310914];) 47(param) + 49: 2 FunctionCall 14(foo(vf4[s216172782];) 47(param) Return FunctionEnd -14(foo(vf4[s805310914];): 2 Function None 12 +14(foo(vf4[s216172782];): 2 Function None 12 13(p): 11(ptr) FunctionParameter 15: Label 54: 24(ptr) AccessChain 53(dupUcol) 23 diff --git a/Test/baseResults/vulkan.comp.out b/Test/baseResults/vulkan.comp.out index e56dca48..3edb619d 100644 --- a/Test/baseResults/vulkan.comp.out +++ b/Test/baseResults/vulkan.comp.out @@ -1,6 +1,17 @@ vulkan.comp ERROR: 0:5: 'local_size' : cannot change previously set size -ERROR: 1 compilation errors. No code generated. +ERROR: 0:10: 'empty { } initializer' : not supported for this version or the enabled extensions +ERROR: 0:15: 'empty { } initializer' : not supported for this version or the enabled extensions +ERROR: 0:15: 'initialization with shared qualifier' : not supported for this version or the enabled extensions +ERROR: 0:16: 'empty { } initializer' : not supported for this version or the enabled extensions +ERROR: 0:26: '{}' : null initializers can't size unsized arrays +ERROR: 0:31: 'structure' : non-uniform struct contains a sampler or image: sampVar +ERROR: 0:31: '{}' : null initializers can't be used on opaque values +ERROR: 0:33: 'atomic counter types' : not allowed when using GLSL for Vulkan +ERROR: 0:33: 'atomic_uint' : atomic_uints can only be used in uniform variables or function parameters: a +ERROR: 0:33: '{}' : null initializers can't be used on opaque values +ERROR: 0:33: 'atomic_uint' : layout(binding=X) is required +ERROR: 12 compilation errors. No code generated. SPIR-V is not generated for failed compile or link 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/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/Test/runtests b/Test/runtests index df070460..51f1a6a6 100755 --- a/Test/runtests +++ b/Test/runtests @@ -169,7 +169,7 @@ run -g --relaxed-errors --suppress-warnings --aml --amb --hlsl-offsets --nsf --s -G -H spv.debugInfo.frag --rsb frag 3 > $TARGETDIR/spv.debugInfo.frag.out diff -b $BASEDIR/spv.debugInfo.frag.out $TARGETDIR/spv.debugInfo.frag.out || HASERROR=1 run -g -Od --target-env vulkan1.1 --relaxed-errors --suppress-warnings --aml --amb --hlsl-offsets --nsf --spirv-val \ - -G -H spv.debugInfo.frag --rsb frag 3 > $TARGETDIR/spv.debugInfo.1.1.frag.out + -V -H spv.debugInfo.frag --rsb frag 3 > $TARGETDIR/spv.debugInfo.1.1.frag.out diff -b $BASEDIR/spv.debugInfo.1.1.frag.out $TARGETDIR/spv.debugInfo.1.1.frag.out || HASERROR=1 run -g -D -Od -e newMain -g --amb --aml --fua --hlsl-iomap --nsf --spirv-val --sib 1 --ssb 2 --sbb 3 --stb 4 --suavb 5 --sub 6 \ --sep origMain -H -Od spv.hlslDebugInfo.vert --rsb vert t0 0 0 > $TARGETDIR/spv.hlslDebugInfo.frag.out diff --git a/Test/spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp b/Test/spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp new file mode 100644 index 00000000..e06555e4 --- /dev/null +++ b/Test/spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp @@ -0,0 +1,18 @@ +#version 430 core + +#extension GL_EXT_shared_memory_block : enable +#extension GL_EXT_shader_explicit_arithmetic_types: enable + +layout(local_size_x = 2) in; + +shared first +{ + int16_t a; + float16_t f; +}; + +void main() +{ + a = int16_t(3); + f = float16_t(12.3); +} diff --git a/Test/spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp b/Test/spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp new file mode 100644 index 00000000..aaa512c2 --- /dev/null +++ b/Test/spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp @@ -0,0 +1,16 @@ +#version 430 core + +#extension GL_EXT_shared_memory_block : enable +#extension GL_EXT_shader_explicit_arithmetic_types: enable + +layout(local_size_x = 2) in; + +shared first +{ + int8_t a; +}; + +void main() +{ + a = int8_t(2); +} diff --git a/Test/spv.WorkgroupMemoryExplicitLayout.MixBlockNonBlock_Errors.comp b/Test/spv.WorkgroupMemoryExplicitLayout.MixBlockNonBlock_Errors.comp new file mode 100644 index 00000000..573d0922 --- /dev/null +++ b/Test/spv.WorkgroupMemoryExplicitLayout.MixBlockNonBlock_Errors.comp @@ -0,0 +1,20 @@ +#version 430 core + +#extension GL_EXT_shared_memory_block : enable + +layout(local_size_x = 8) in; + +shared first +{ + int a; +}; + +shared int b; + +// Cannot mix shared block and shared non-block, will fail at linking. + +void main() +{ + a = 2; + b = 3; +} diff --git a/Test/spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp b/Test/spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp new file mode 100644 index 00000000..675a4433 --- /dev/null +++ b/Test/spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp @@ -0,0 +1,21 @@ +#version 430 core + +#extension GL_EXT_shared_memory_block : enable + +layout(local_size_x = 8) in; + +shared first +{ + int a; +}; + +shared second +{ + int b; +}; + +void main() +{ + a = 2; + b = 3; +} diff --git a/Test/spv.WorkgroupMemoryExplicitLayout.NonBlock.comp b/Test/spv.WorkgroupMemoryExplicitLayout.NonBlock.comp new file mode 100644 index 00000000..38316a50 --- /dev/null +++ b/Test/spv.WorkgroupMemoryExplicitLayout.NonBlock.comp @@ -0,0 +1,14 @@ +#version 430 core + +#extension GL_EXT_shared_memory_block : enable + +layout(local_size_x = 8) in; + +shared int a; +shared int b; + +void main() +{ + a = 2; + b = 3; +} diff --git a/Test/spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp b/Test/spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp new file mode 100644 index 00000000..2a17c61c --- /dev/null +++ b/Test/spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp @@ -0,0 +1,15 @@ +#version 430 core + +#extension GL_EXT_shared_memory_block : enable + +layout(local_size_x = 8) in; + +shared first +{ + int a; +}; + +void main() +{ + a = 2; +} diff --git a/Test/spv.WorkgroupMemoryExplicitLayout.scalar.comp b/Test/spv.WorkgroupMemoryExplicitLayout.scalar.comp new file mode 100644 index 00000000..38085b4d --- /dev/null +++ b/Test/spv.WorkgroupMemoryExplicitLayout.scalar.comp @@ -0,0 +1,39 @@ +#version 430 core + +#extension GL_EXT_scalar_block_layout : enable +#extension GL_EXT_shared_memory_block : enable + +layout(local_size_x = 8) in; + +struct T +{ + float t[3]; +}; + +struct S +{ + float f; + vec2 v2; + vec3 v3; + vec4 v4; + T t; + + float f_array[6]; + vec2 v2_array[6]; + vec3 v3_array[6]; + vec4 v4_array[6]; + T t_array[6]; +}; + +// Use a default qualifier. +layout(scalar) shared; + +shared Block +{ + S s; + S s_array[6]; +}; + +void main() +{ +} diff --git a/Test/spv.WorkgroupMemoryExplicitLayout.std140.comp b/Test/spv.WorkgroupMemoryExplicitLayout.std140.comp new file mode 100644 index 00000000..f4f2475a --- /dev/null +++ b/Test/spv.WorkgroupMemoryExplicitLayout.std140.comp @@ -0,0 +1,35 @@ +#version 430 core + +#extension GL_EXT_shared_memory_block : enable + +layout(local_size_x = 8) in; + +struct T +{ + float t[3]; +}; + +struct S +{ + float f; + vec2 v2; + vec3 v3; + vec4 v4; + T t; + + float f_array[6]; + vec2 v2_array[6]; + vec3 v3_array[6]; + vec4 v4_array[6]; + T t_array[6]; +}; + +layout(std140) shared Block +{ + S s; + S s_array[6]; +}; + +void main() +{ +} diff --git a/Test/spv.WorkgroupMemoryExplicitLayout.std430.comp b/Test/spv.WorkgroupMemoryExplicitLayout.std430.comp new file mode 100644 index 00000000..717593b6 --- /dev/null +++ b/Test/spv.WorkgroupMemoryExplicitLayout.std430.comp @@ -0,0 +1,35 @@ +#version 430 core + +#extension GL_EXT_shared_memory_block : enable + +layout(local_size_x = 8) in; + +struct T +{ + float t[3]; +}; + +struct S +{ + float f; + vec2 v2; + vec3 v3; + vec4 v4; + T t; + + float f_array[6]; + vec2 v2_array[6]; + vec3 v3_array[6]; + vec4 v4_array[6]; + T t_array[6]; +}; + +layout(std430) shared Block +{ + S s; + S s_array[6]; +}; + +void main() +{ +} diff --git a/Test/spv.nullInit.comp b/Test/spv.nullInit.comp new file mode 100644 index 00000000..256fd54a --- /dev/null +++ b/Test/spv.nullInit.comp @@ -0,0 +1,32 @@ +#version 460
+
+#extension GL_EXT_null_initializer : enable
+
+#ifdef GL_EXT_null_initializer
+
+struct S {
+ vec3[4] v;
+ int a;
+};
+
+struct T {
+ int b;
+ S s;
+};
+
+shared float f = { };
+shared T t1 = { };
+shared T t2 = { };
+shared S s = { };
+shared float g = { };
+shared int i = { };
+
+void main()
+{
+ S local = { };
+ ++local.a;
+}
+
+S global = { };
+
+#endif
diff --git a/Test/spv.queueFamilyScope.comp b/Test/spv.queueFamilyScope.comp new file mode 100644 index 00000000..0d798508 --- /dev/null +++ b/Test/spv.queueFamilyScope.comp @@ -0,0 +1,10 @@ +#version 450
+#extension GL_KHR_memory_scope_semantics : require
+
+layout (binding = 0) buffer Buffer { uint a; } A;
+
+void main()
+{
+ atomicLoad(A.a, gl_ScopeQueueFamily, gl_StorageSemanticsBuffer, gl_SemanticsAcquire);
+}
+
diff --git a/Test/vulkan.comp b/Test/vulkan.comp index 6b6f4cf3..98d93ed2 100644 --- a/Test/vulkan.comp +++ b/Test/vulkan.comp @@ -7,6 +7,27 @@ layout(local_size_z_id = 14) in; // ERROR, can't change this void main()
{
gl_WorkGroupSize;
+ int i = { }; // ERROR, need an extension
}
layout(local_size_y_id = 19) in; // ERROR, already used: TODO not yet reported
+
+shared float f = { }; // ERROR, need an extension
+float g = { }; // ERROR, need an extension
+
+#extension GL_EXT_null_initializer : enable
+
+shared float f2 = { };
+float g2 = { };
+
+void foo()
+{
+ int i = { };
+ float fa[] = { };
+}
+
+struct samp {
+ sampler2D s2D;
+} sampVar = { };
+
+atomic_uint a = { };
diff --git a/build_info.h.tmpl b/build_info.h.tmpl index eacecb09..5b5e9e62 100644 --- a/build_info.h.tmpl +++ b/build_info.h.tmpl @@ -34,10 +34,10 @@ #ifndef GLSLANG_BUILD_INFO #define GLSLANG_BUILD_INFO -#define GLSLANG_VERSION_MAJOR <major> -#define GLSLANG_VERSION_MINOR <minor> -#define GLSLANG_VERSION_PATCH <patch> -#define GLSLANG_VERSION_FLAVOR "<flavor>" +#define GLSLANG_VERSION_MAJOR @major@ +#define GLSLANG_VERSION_MINOR @minor@ +#define GLSLANG_VERSION_PATCH @patch@ +#define GLSLANG_VERSION_FLAVOR "@flavor@" #define GLSLANG_VERSION_GREATER_THAN(major, minor, patch) \ (((major) > GLSLANG_VERSION_MAJOR) || ((major) == GLSLANG_VERSION_MAJOR && \ diff --git a/build_info.py b/build_info.py index 2ac864b0..7c1998f6 100755 --- a/build_info.py +++ b/build_info.py @@ -201,13 +201,13 @@ def main(): software_version = deduce_software_version(directory) commit = describe(directory) output = template \ - .replace("<major>", software_version["major"]) \ - .replace("<minor>", software_version["minor"]) \ - .replace("<patch>", software_version["patch"]) \ - .replace("<flavor>", software_version["flavor"]) \ - .replace("<-flavor>", software_version["-flavor"]) \ - .replace("<date>", software_version["date"]) \ - .replace("<commit>", commit) + .replace("@major@", software_version["major"]) \ + .replace("@minor@", software_version["minor"]) \ + .replace("@patch@", software_version["patch"]) \ + .replace("@flavor@", software_version["flavor"]) \ + .replace("@-flavor@", software_version["-flavor"]) \ + .replace("@date@", software_version["date"]) \ + .replace("@commit@", commit) if output_file is None: print(output) diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt index 1c7d22a2..fc925eaf 100644 --- a/glslang/CMakeLists.txt +++ b/glslang/CMakeLists.txt @@ -33,7 +33,7 @@ if(WIN32) add_subdirectory(OSDependent/Windows) -elseif(UNIX) +elseif(UNIX OR "${CMAKE_SYSTEM_NAME}" STREQUAL "Fuchsia") add_subdirectory(OSDependent/Unix) else(WIN32) message("unknown platform") diff --git a/glslang/HLSL/hlslParseHelper.cpp b/glslang/HLSL/hlslParseHelper.cpp index ea31837e..63dd8e38 100644 --- a/glslang/HLSL/hlslParseHelper.cpp +++ b/glslang/HLSL/hlslParseHelper.cpp @@ -1376,7 +1376,7 @@ TIntermTyped* HlslParseContext::flattenAccess(TIntermTyped* base, int member) return flattened ? flattened : base; } -TIntermTyped* HlslParseContext::flattenAccess(int uniqueId, int member, TStorageQualifier outerStorage, +TIntermTyped* HlslParseContext::flattenAccess(long long uniqueId, int member, TStorageQualifier outerStorage, const TType& dereferencedType, int subset) { const auto flattenData = flattenMap.find(uniqueId); @@ -1444,7 +1444,7 @@ int HlslParseContext::findSubtreeOffset(const TType& type, int subset, const TVe }; // Find and return the split IO TVariable for id, or nullptr if none. -TVariable* HlslParseContext::getSplitNonIoVar(int id) const +TVariable* HlslParseContext::getSplitNonIoVar(long long id) const { const auto splitNonIoVar = splitNonIoVars.find(id); if (splitNonIoVar == splitNonIoVars.end()) @@ -3256,7 +3256,7 @@ TIntermAggregate* HlslParseContext::handleSamplerTextureCombine(const TSourceLoc // shadow state. This depends on downstream optimization to // DCE one variant in [shadow, nonshadow] if both are present, // or the SPIR-V module would be invalid. - int newId = texSymbol->getId(); + long long newId = texSymbol->getId(); // Check to see if this texture has been given a shadow mode already. // If so, look up the one we already have. @@ -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()); @@ -9865,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) diff --git a/glslang/HLSL/hlslParseHelper.h b/glslang/HLSL/hlslParseHelper.h index b92856a4..2d7165cf 100644 --- a/glslang/HLSL/hlslParseHelper.h +++ b/glslang/HLSL/hlslParseHelper.h @@ -253,12 +253,12 @@ protected: // Array and struct flattening TIntermTyped* flattenAccess(TIntermTyped* base, int member); - TIntermTyped* flattenAccess(int uniqueId, int member, TStorageQualifier outerStorage, const TType&, int subset = -1); + TIntermTyped* flattenAccess(long long uniqueId, int member, TStorageQualifier outerStorage, const TType&, int subset = -1); int findSubtreeOffset(const TIntermNode&) const; int findSubtreeOffset(const TType&, int subset, const TVector<int>& offsets) const; bool shouldFlatten(const TType&, TStorageQualifier, bool topLevel) const; bool wasFlattened(const TIntermTyped* node) const; - bool wasFlattened(int id) const { return flattenMap.find(id) != flattenMap.end(); } + bool wasFlattened(long long id) const { return flattenMap.find(id) != flattenMap.end(); } int addFlattenedMember(const TVariable&, const TType&, TFlattenData&, const TString& name, bool linkage, const TQualifier& outerQualifier, const TArraySizes* builtInArraySizes); @@ -267,8 +267,8 @@ protected: void splitBuiltIn(const TString& baseName, const TType& memberType, const TArraySizes*, const TQualifier&); const TType& split(const TType& type, const TString& name, const TQualifier&); bool wasSplit(const TIntermTyped* node) const; - bool wasSplit(int id) const { return splitNonIoVars.find(id) != splitNonIoVars.end(); } - TVariable* getSplitNonIoVar(int id) const; + bool wasSplit(long long id) const { return splitNonIoVars.find(id) != splitNonIoVars.end(); } + TVariable* getSplitNonIoVar(long long id) const; void addPatchConstantInvocation(); void fixTextureShadowModes(); void finalizeAppendMethods(); @@ -386,7 +386,7 @@ protected: // TVector<TSymbol*> ioArraySymbolResizeList; - TMap<int, TFlattenData> flattenMap; + TMap<long long, TFlattenData> flattenMap; // IO-type map. Maps a pure symbol-table form of a structure-member list into // each of the (up to) three kinds of IO, as each as different allowed decorations, @@ -399,7 +399,7 @@ protected: TMap<const TTypeList*, tIoKinds> ioTypeMap; // Structure splitting data: - TMap<int, TVariable*> splitNonIoVars; // variables with the built-in interstage IO removed, indexed by unique ID. + TMap<long long, TVariable*> splitNonIoVars; // variables with the built-in interstage IO removed, indexed by unique ID. // Structuredbuffer shared types. Typically there are only a few. TVector<TType*> structBufferTypes; @@ -488,18 +488,18 @@ protected: struct tShadowTextureSymbols { tShadowTextureSymbols() { symId.fill(-1); } - void set(bool shadow, int id) { symId[int(shadow)] = id; } - int get(bool shadow) const { return symId[int(shadow)]; } + void set(bool shadow, long long id) { symId[int(shadow)] = id; } + long long get(bool shadow) const { return symId[int(shadow)]; } // True if this texture has been seen with both shadow and non-shadow modes bool overloaded() const { return symId[0] != -1 && symId[1] != -1; } - bool isShadowId(int id) const { return symId[1] == id; } + bool isShadowId(long long id) const { return symId[1] == id; } private: - std::array<int, 2> symId; + std::array<long long, 2> symId; }; - TMap<int, tShadowTextureSymbols*> textureShadowVariant; + TMap<long long, tShadowTextureSymbols*> textureShadowVariant; bool parsingEntrypointParameters; }; 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/glslang/Include/Types.h b/glslang/Include/Types.h index 696daf6d..603203db 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -499,6 +499,7 @@ public: declaredBuiltIn = EbvNone; #ifndef GLSLANG_WEB noContraction = false; + nullInit = false; #endif } @@ -512,6 +513,7 @@ public: clearMemory(); specConstant = false; nonUniform = false; + nullInit = false; clearLayout(); } @@ -588,6 +590,8 @@ public: bool isNoContraction() const { return false; } void setNoContraction() { } bool isPervertexNV() const { return false; } + void setNullInit() { } + bool isNullInit() const { return false; } #else bool noContraction: 1; // prevent contraction and reassociation, e.g., for 'precise' keyword, and expressions it affects bool nopersp : 1; @@ -609,6 +613,7 @@ public: bool subgroupcoherent : 1; bool shadercallcoherent : 1; bool nonprivate : 1; + bool nullInit : 1; bool isWriteOnly() const { return writeonly; } bool isReadOnly() const { return readonly; } bool isRestrict() const { return restrict; } @@ -644,6 +649,8 @@ public: bool isNoContraction() const { return noContraction; } void setNoContraction() { noContraction = true; } bool isPervertexNV() const { return pervertexNV; } + void setNullInit() { nullInit = true; } + bool isNullInit() const { return nullInit; } #endif bool isPipeInput() const @@ -2164,6 +2171,8 @@ public: appendStr(" specialization-constant"); if (qualifier.nonUniform) appendStr(" nonuniform"); + if (qualifier.isNullInit()) + appendStr(" null-init"); appendStr(" "); appendStr(getStorageQualifierString()); if (isArray()) { diff --git a/glslang/Include/glslang_c_shader_types.h b/glslang/Include/glslang_c_shader_types.h index d01a115f..f100a9aa 100644 --- a/glslang/Include/glslang_c_shader_types.h +++ b/glslang/Include/glslang_c_shader_types.h @@ -100,8 +100,9 @@ typedef enum { typedef enum { GLSLANG_TARGET_VULKAN_1_0 = (1 << 22), GLSLANG_TARGET_VULKAN_1_1 = (1 << 22) | (1 << 12), + GLSLANG_TARGET_VULKAN_1_2 = (1 << 22) | (2 << 12), GLSLANG_TARGET_OPENGL_450 = 450, - LAST_ELEMENT_MARKER(GLSLANG_TARGET_CLIENT_VERSION_COUNT), + LAST_ELEMENT_MARKER(GLSLANG_TARGET_CLIENT_VERSION_COUNT = 4), } glslang_target_client_version_t; /* SH_TARGET_LanguageVersion counterpart */ @@ -112,7 +113,7 @@ typedef enum { GLSLANG_TARGET_SPV_1_3 = (1 << 16) | (3 << 8), GLSLANG_TARGET_SPV_1_4 = (1 << 16) | (4 << 8), GLSLANG_TARGET_SPV_1_5 = (1 << 16) | (5 << 8), - LAST_ELEMENT_MARKER(GLSLANG_TARGET_LANGUAGE_VERSION_COUNT), + LAST_ELEMENT_MARKER(GLSLANG_TARGET_LANGUAGE_VERSION_COUNT = 6), } glslang_target_language_version_t; /* EShExecutable counterpart */ diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index 19cd32e9..85edd635 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -1275,15 +1275,15 @@ public: // if symbol is initialized as symbol(sym), the memory comes from the pool allocator of sym. If sym comes from // per process threadPoolAllocator, then it causes increased memory usage per compile // it is essential to use "symbol = sym" to assign to symbol - TIntermSymbol(int i, const TString& n, const TType& t) + TIntermSymbol(long long i, const TString& n, const TType& t) : TIntermTyped(t), id(i), #ifndef GLSLANG_WEB flattenSubset(-1), #endif constSubtree(nullptr) { name = n; } - virtual int getId() const { return id; } - virtual void changeId(int i) { id = i; } + virtual long long getId() const { return id; } + virtual void changeId(long long i) { id = i; } virtual const TString& getName() const { return name; } virtual void traverse(TIntermTraverser*); virtual TIntermSymbol* getAsSymbolNode() { return this; } @@ -1301,10 +1301,10 @@ public: // This is meant for cases where a node has already been constructed, and // later on, it becomes necessary to switch to a different symbol. - virtual void switchId(int newId) { id = newId; } + virtual void switchId(long long newId) { id = newId; } protected: - int id; // the unique id of the symbol this node represents + long long id; // the unique id of the symbol this node represents #ifndef GLSLANG_WEB int flattenSubset; // how deeply the flattened object rooted at id has been dereferenced #endif diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index f6172a2b..cadf6f34 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -65,7 +65,7 @@ namespace glslang { // Returns the added node. // -TIntermSymbol* TIntermediate::addSymbol(int id, const TString& name, const TType& type, const TConstUnionArray& constArray, +TIntermSymbol* TIntermediate::addSymbol(long long id, const TString& name, const TType& type, const TConstUnionArray& constArray, TIntermTyped* constSubtree, const TSourceLoc& loc) { TIntermSymbol* node = new TIntermSymbol(id, name, type); @@ -2870,7 +2870,7 @@ void TIntermediate::addToCallGraph(TInfoSink& /*infoSink*/, const TString& calle return; } - callGraph.push_front(TCall(caller, callee)); + callGraph.emplace_front(caller, callee); } // diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 9c42a204..cba242a2 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -87,6 +87,10 @@ TParseContext::TParseContext(TSymbolTable& symbolTable, TIntermediate& interm, b globalInputDefaults.clear(); globalOutputDefaults.clear(); + globalSharedDefaults.clear(); + globalSharedDefaults.layoutMatrix = ElmColumnMajor; + globalSharedDefaults.layoutPacking = ElpStd430; + #ifndef GLSLANG_WEB // "Shaders in the transform // feedback capturing mode have an initial global default of @@ -4292,8 +4296,10 @@ TSymbol* TParseContext::redeclareBuiltinVariable(const TSourceLoc& loc, const TS // If it wasn't at a built-in level, then it's already been redeclared; // that is, this is a redeclaration of a redeclaration; reuse that initial // redeclaration. Otherwise, make the new one. - if (builtIn) + if (builtIn) { makeEditable(symbol); + symbolTable.amendSymbolIdLevel(*symbol); + } // Now, modify the type of the copy, as per the type of the current redeclaration. @@ -4822,7 +4828,7 @@ void TParseContext::inductiveLoopCheck(const TSourceLoc& loc, TIntermNode* init, } // get the unique id of the loop index - int loopIndex = binaryInit->getLeft()->getAsSymbolNode()->getId(); + long long loopIndex = binaryInit->getLeft()->getAsSymbolNode()->getId(); inductiveLoopIds.insert(loopIndex); // condition's form must be "loop-index relational-operator constant-expression" @@ -5465,7 +5471,14 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi if (! IsPow2(value)) error(loc, "must be a power of 2", "buffer_reference_align", ""); else +#ifdef __ANDROID__ + // Android NDK r15c tageting ABI 15 doesn't have full support for C++11 + // (no std::exp2/log2). ::exp2 is available from C99 but ::log2 isn't + // available up until ABI 18 so we use the mathematical equivalent form + publicType.qualifier.layoutBufferReferenceAlign = (unsigned int)(std::log(value) / std::log(2.0)); +#else publicType.qualifier.layoutBufferReferenceAlign = (unsigned int)std::log2(value); +#endif if (nonLiteral) error(loc, "needs a literal integer", "buffer_reference_align", ""); return; @@ -6026,12 +6039,28 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) } } +static bool storageCanHaveLayoutInBlock(const enum TStorageQualifier storage) +{ + switch (storage) { + case EvqUniform: + case EvqBuffer: + case EvqShared: + return true; + default: + return false; + } +} + // Do layout error checking that can be done within a layout qualifier proper, not needing to know // if there are blocks, atomic counters, variables, etc. void TParseContext::layoutQualifierCheck(const TSourceLoc& loc, const TQualifier& qualifier) { - if (qualifier.storage == EvqShared && qualifier.hasLayout()) - error(loc, "cannot apply layout qualifiers to a shared variable", "shared", ""); + if (qualifier.storage == EvqShared && qualifier.hasLayout()) { + if (spvVersion.spv > 0 && spvVersion.spv < EShTargetSpv_1_4) { + error(loc, "shared block requires at least SPIR-V 1.4", "shared block", ""); + } + profileRequires(loc, EEsProfile | ECoreProfile | ECompatibilityProfile, 0, E_GL_EXT_shared_memory_block, "shared block"); + } // "It is a compile-time error to use *component* without also specifying the location qualifier (order does not matter)." if (qualifier.hasComponent() && ! qualifier.hasLocation()) @@ -6114,7 +6143,7 @@ void TParseContext::layoutQualifierCheck(const TSourceLoc& loc, const TQualifier error(loc, "can only be used on an output", "xfb layout qualifier", ""); } if (qualifier.hasUniformLayout()) { - if (! qualifier.isUniformOrBuffer() && !qualifier.isTaskMemory()) { + if (!storageCanHaveLayoutInBlock(qualifier.storage) && !qualifier.isTaskMemory()) { if (qualifier.hasMatrix() || qualifier.hasPacking()) error(loc, "matrix or packing qualifiers can only be used on a uniform or buffer", "layout", ""); if (qualifier.hasOffset() || qualifier.hasAlign()) @@ -6808,6 +6837,11 @@ TVariable* TParseContext::declareNonArray(const TSourceLoc& loc, const TString& // TIntermNode* TParseContext::executeInitializer(const TSourceLoc& loc, TIntermTyped* initializer, TVariable* variable) { + // A null initializer is an aggregate that hasn't had an op assigned yet + // (still EOpNull, no relation to nullInit), and has no children. + bool nullInit = initializer->getAsAggregate() && initializer->getAsAggregate()->getOp() == EOpNull && + initializer->getAsAggregate()->getSequence().size() == 0; + // // Identifier must be of type constant, a global, or a temporary, and // starting at version 120, desktop allows uniforms to have initializers. @@ -6815,9 +6849,36 @@ TIntermNode* TParseContext::executeInitializer(const TSourceLoc& loc, TIntermTyp TStorageQualifier qualifier = variable->getType().getQualifier().storage; if (! (qualifier == EvqTemporary || qualifier == EvqGlobal || qualifier == EvqConst || (qualifier == EvqUniform && !isEsProfile() && version >= 120))) { - error(loc, " cannot initialize this type of qualifier ", variable->getType().getStorageQualifierString(), ""); + if (qualifier == EvqShared) { + // GL_EXT_null_initializer allows this for shared, if it's a null initializer + if (nullInit) { + const char* feature = "initialization with shared qualifier"; + profileRequires(loc, EEsProfile, 0, E_GL_EXT_null_initializer, feature); + profileRequires(loc, ~EEsProfile, 0, E_GL_EXT_null_initializer, feature); + } else { + error(loc, "initializer can only be a null initializer ('{}')", "shared", ""); + } + } else { + error(loc, " cannot initialize this type of qualifier ", + variable->getType().getStorageQualifierString(), ""); + return nullptr; + } + } + + if (nullInit) { + // only some types can be null initialized + if (variable->getType().containsUnsizedArray()) { + error(loc, "null initializers can't size unsized arrays", "{}", ""); + return nullptr; + } + if (variable->getType().containsOpaque()) { + error(loc, "null initializers can't be used on opaque values", "{}", ""); + return nullptr; + } + variable->getWritableType().getQualifier().setNullInit(); return nullptr; } + arrayObjectCheck(loc, variable->getType(), "array initializer"); // @@ -6861,13 +6922,15 @@ TIntermNode* TParseContext::executeInitializer(const TSourceLoc& loc, TIntermTyp // Uniforms require a compile-time constant initializer if (qualifier == EvqUniform && ! initializer->getType().getQualifier().isFrontEndConstant()) { - error(loc, "uniform initializers must be constant", "=", "'%s'", variable->getType().getCompleteString().c_str()); + error(loc, "uniform initializers must be constant", "=", "'%s'", + variable->getType().getCompleteString().c_str()); variable->getWritableType().getQualifier().makeTemporary(); return nullptr; } // Global consts require a constant initializer (specialization constant is okay) if (qualifier == EvqConst && symbolTable.atGlobalLevel() && ! initializer->getType().getQualifier().isConstant()) { - error(loc, "global const initializers must be constant", "=", "'%s'", variable->getType().getCompleteString().c_str()); + error(loc, "global const initializers must be constant", "=", "'%s'", + variable->getType().getCompleteString().c_str()); variable->getWritableType().getQualifier().makeTemporary(); return nullptr; } @@ -6887,7 +6950,8 @@ TIntermNode* TParseContext::executeInitializer(const TSourceLoc& loc, TIntermTyp // "In declarations of global variables with no storage qualifier or with a const // qualifier any initializer must be a constant expression." if (symbolTable.atGlobalLevel() && ! initializer->getType().getQualifier().isConstant()) { - const char* initFeature = "non-constant global initializer (needs GL_EXT_shader_non_constant_global_initializers)"; + const char* initFeature = + "non-constant global initializer (needs GL_EXT_shader_non_constant_global_initializers)"; if (isEsProfile()) { if (relaxedErrors() && ! extensionTurnedOn(E_GL_EXT_shader_non_constant_global_initializers)) warn(loc, "not allowed in this version", initFeature, ""); @@ -6901,7 +6965,8 @@ TIntermNode* TParseContext::executeInitializer(const TSourceLoc& loc, TIntermTyp // Compile-time tagging of the variable with its constant value... initializer = intermediate.addConversion(EOpAssign, variable->getType(), initializer); - if (! initializer || ! initializer->getType().getQualifier().isConstant() || variable->getType() != initializer->getType()) { + if (! initializer || ! initializer->getType().getQualifier().isConstant() || + variable->getType() != initializer->getType()) { error(loc, "non-matching or non-convertible constant type for const initializer", variable->getType().getStorageQualifierString(), ""); variable->getWritableType().getQualifier().makeTemporary(); @@ -7624,6 +7689,7 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con case EvqBuffer: defaultQualification = globalBufferDefaults; break; case EvqVaryingIn: defaultQualification = globalInputDefaults; break; case EvqVaryingOut: defaultQualification = globalOutputDefaults; break; + case EvqShared: defaultQualification = globalSharedDefaults; break; default: defaultQualification.clear(); break; } @@ -7887,6 +7953,12 @@ void TParseContext::blockStageIoCheck(const TSourceLoc& loc, const TQualifier& q error(loc, "output blocks cannot be used in a task shader", "out", ""); } break; + case EvqShared: + if (spvVersion.spv > 0 && spvVersion.spv < EShTargetSpv_1_4) { + error(loc, "shared block requires at least SPIR-V 1.4", "shared block", ""); + } + profileRequires(loc, EEsProfile | ECoreProfile | ECompatibilityProfile, 0, E_GL_EXT_shared_memory_block, "shared block"); + break; #ifndef GLSLANG_WEB case EvqPayload: profileRequires(loc, ~EEsProfile, 460, 2, extsrt, "rayPayloadNV block"); @@ -8045,7 +8117,7 @@ void TParseContext::fixXfbOffsets(TQualifier& qualifier, TTypeList& typeList) // void TParseContext::fixBlockUniformOffsets(TQualifier& qualifier, TTypeList& typeList) { - if (!qualifier.isUniformOrBuffer() && !qualifier.isTaskMemory()) + if (!storageCanHaveLayoutInBlock(qualifier.storage) && !qualifier.isTaskMemory()) return; if (qualifier.layoutPacking != ElpStd140 && qualifier.layoutPacking != ElpStd430 && qualifier.layoutPacking != ElpScalar) return; @@ -8559,8 +8631,14 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con } #endif break; + case EvqShared: + if (qualifier.hasMatrix()) + globalSharedDefaults.layoutMatrix = qualifier.layoutMatrix; + if (qualifier.hasPacking()) + globalSharedDefaults.layoutPacking = qualifier.layoutPacking; + break; default: - error(loc, "default qualifier requires 'uniform', 'buffer', 'in', or 'out' storage qualification", "", ""); + error(loc, "default qualifier requires 'uniform', 'buffer', 'in', 'out' or 'shared' storage qualification", "", ""); return; } diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h index fe2b6fbb..ad9b8d6a 100644 --- a/glslang/MachineIndependent/ParseHelper.h +++ b/glslang/MachineIndependent/ParseHelper.h @@ -67,7 +67,7 @@ struct TPragma { class TScanContext; class TPpContext; -typedef std::set<int> TIdSetType; +typedef std::set<long long> TIdSetType; typedef std::map<const TTypeList*, std::map<size_t, const TTypeList*>> TStructRecord; // @@ -392,7 +392,7 @@ public: void arrayLimitCheck(const TSourceLoc&, const TString&, int size); void limitCheck(const TSourceLoc&, int value, const char* limit, const char* feature); - void inductiveLoopBodyCheck(TIntermNode*, int loopIndexId, TSymbolTable&); + void inductiveLoopBodyCheck(TIntermNode*, long long loopIndexId, TSymbolTable&); void constantIndexExpressionCheck(TIntermNode*); void setLayoutQualifier(const TSourceLoc&, TPublicType&, TString&); @@ -485,6 +485,7 @@ protected: TQualifier globalUniformDefaults; TQualifier globalInputDefaults; TQualifier globalOutputDefaults; + TQualifier globalSharedDefaults; TString currentCaller; // name of last function body entered (not valid when at global scope) #ifndef GLSLANG_WEB int* atomicUintOffsets; // to become an array of the right size to hold an offset per binding point diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index c6030bd7..3f793a74 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -949,6 +949,9 @@ bool ProcessDeferred( if (cachedTable) symbolTable->adoptLevels(*cachedTable); + if (intermediate.getUniqueId() != 0) + symbolTable->overwriteUniqueId(intermediate.getUniqueId()); + // Add built-in symbols that are potentially context dependent; // they get popped again further down. if (! AddContextSpecificSymbols(resources, compiler->infoSink, *symbolTable, version, profile, spvVersion, @@ -1011,6 +1014,7 @@ bool ProcessDeferred( bool success = processingContext(*parseContext, ppContext, fullInput, versionWillBeError, *symbolTable, intermediate, optLevel, messages); + intermediate.setUniqueId(symbolTable->getMaxSymbolId()); return success; } @@ -1270,14 +1274,15 @@ bool PreprocessDeferred( EShMessages messages, // warnings/errors/AST; things to print out TShader::Includer& includer, TIntermediate& intermediate, // returned tree, etc. - std::string* outputString) + std::string* outputString, + TEnvironment* environment = nullptr) { DoPreprocessing parser(outputString); return ProcessDeferred(compiler, shaderStrings, numStrings, inputLengths, stringNames, preamble, optLevel, resources, defaultVersion, defaultProfile, forceDefaultVersionAndProfile, forwardCompatible, messages, intermediate, parser, - false, includer); + false, includer, "", environment); } #endif @@ -1810,6 +1815,11 @@ void TShader::addProcesses(const std::vector<std::string>& p) intermediate->addProcesses(p); } +void TShader::setUniqueId(unsigned long long id) +{ + intermediate->setUniqueId(id); +} + void TShader::setInvertY(bool invert) { intermediate->setInvertY(invert); } void TShader::setNanMinMaxClamp(bool useNonNan) { intermediate->setNanMinMaxClamp(useNonNan); } @@ -1909,7 +1919,8 @@ bool TShader::preprocess(const TBuiltInResource* builtInResources, return PreprocessDeferred(compiler, strings, numStrings, lengths, stringNames, preamble, EShOptNone, builtInResources, defaultVersion, defaultProfile, forceDefaultVersionAndProfile, - forwardCompatible, message, includer, *intermediate, output_string); + forwardCompatible, message, includer, *intermediate, output_string, + &environment); } #endif diff --git a/glslang/MachineIndependent/SymbolTable.cpp b/glslang/MachineIndependent/SymbolTable.cpp index f6291c39..0e5ee195 100644 --- a/glslang/MachineIndependent/SymbolTable.cpp +++ b/glslang/MachineIndependent/SymbolTable.cpp @@ -170,7 +170,7 @@ void TType::buildMangledName(TString& mangledName) const for (int i = 0; i < arraySizes->getNumDims(); ++i) { if (arraySizes->getDimNode(i)) { if (arraySizes->getDimNode(i)->getAsSymbolNode()) - snprintf(buf, maxSize, "s%d", arraySizes->getDimNode(i)->getAsSymbolNode()->getId()); + snprintf(buf, maxSize, "s%lld", arraySizes->getDimNode(i)->getAsSymbolNode()->getId()); else snprintf(buf, maxSize, "s%p", arraySizes->getDimNode(i)); } else diff --git a/glslang/MachineIndependent/SymbolTable.h b/glslang/MachineIndependent/SymbolTable.h index db16c19b..54c3ca50 100644 --- a/glslang/MachineIndependent/SymbolTable.h +++ b/glslang/MachineIndependent/SymbolTable.h @@ -104,8 +104,8 @@ public: virtual const TAnonMember* getAsAnonMember() const { return 0; } virtual const TType& getType() const = 0; virtual TType& getWritableType() = 0; - virtual void setUniqueId(int id) { uniqueId = id; } - virtual int getUniqueId() const { return uniqueId; } + virtual void setUniqueId(long long id) { uniqueId = id; } + virtual long long getUniqueId() const { return uniqueId; } virtual void setExtensions(int numExts, const char* const exts[]) { assert(extensions == 0); @@ -130,7 +130,7 @@ protected: TSymbol& operator=(const TSymbol&); const TString *name; - unsigned int uniqueId; // For cross-scope comparing during code generation + unsigned long long uniqueId; // For cross-scope comparing during code generation // For tracking what extensions must be present // (don't use if correct version/profile is present). @@ -612,6 +612,7 @@ public: // 3: user-shader globals // protected: + static const uint32_t LevelFlagBitOffset = 56; static const int globalLevel = 3; static bool isSharedLevel(int level) { return level <= 1; } // exclude all per-compile levels static bool isBuiltInLevel(int level) { return level <= 2; } // exclude user globals @@ -620,10 +621,12 @@ 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; + static bool isBuiltInSymbol(long long uniqueId) { + int level = static_cast<int>(uniqueId >> LevelFlagBitOffset); return isBuiltInLevel(level); } + static constexpr uint64_t uniqueIdMask = (1LL << LevelFlagBitOffset) - 1; + static const uint32_t MaxLevelInUniqueID = 127; void setNoBuiltInRedeclarations() { noBuiltInRedeclarations = true; } void setSeparateNameSpaces() { separateNameSpaces = true; } @@ -691,6 +694,16 @@ public: return table[currentLevel()]->amend(symbol, firstNewMember); } + // Update the level info in symbol's unique ID to current level + void amendSymbolIdLevel(TSymbol& symbol) + { + // clamp level to avoid overflow + uint64_t level = currentLevel() > MaxLevelInUniqueID ? MaxLevelInUniqueID : currentLevel(); + uint64_t symbolId = symbol.getUniqueId(); + symbolId &= uniqueIdMask; + symbolId |= (level << LevelFlagBitOffset); + symbol.setUniqueId(symbolId); + } // // To allocate an internal temporary, which will need to be uniquely // identified by the consumer of the AST, but never need to @@ -859,7 +872,7 @@ public: } } - int getMaxSymbolId() { return uniqueId; } + long long getMaxSymbolId() { return uniqueId; } #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) void dump(TInfoSink& infoSink, bool complete = false) const; #endif @@ -876,19 +889,24 @@ public: // 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); + uint64_t level = currentLevel() > MaxLevelInUniqueID ? MaxLevelInUniqueID : currentLevel(); + uniqueId &= uniqueIdMask; uniqueId |= (level << LevelFlagBitOffset); } + void overwriteUniqueId(long long id) + { + uniqueId = id; + updateUniqueIdLevelFlag(); + } + protected: TSymbolTable(TSymbolTable&); TSymbolTable& operator=(TSymbolTableLevel&); int currentLevel() const { return static_cast<int>(table.size()) - 1; } - static const uint32_t LevelFlagBitOffset = 28; std::vector<TSymbolTableLevel*> table; - int uniqueId; // for unique identification in code generation + long long uniqueId; // for unique identification in code generation bool noBuiltInRedeclarations; bool separateNameSpaces; unsigned int adoptedLevels; diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index 69b8863c..488c98c5 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -305,6 +305,7 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_EXT_tessellation_point_size] = EBhDisable; extensionBehavior[E_GL_EXT_texture_buffer] = EBhDisable; extensionBehavior[E_GL_EXT_texture_cube_map_array] = EBhDisable; + extensionBehavior[E_GL_EXT_null_initializer] = EBhDisable; // OES matching AEP extensionBehavior[E_GL_OES_geometry_shader] = EBhDisable; @@ -330,6 +331,7 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_EXT_fragment_shading_rate] = EBhDisable; extensionBehavior[E_GL_EXT_shader_image_int64] = EBhDisable; extensionBehavior[E_GL_EXT_terminate_invocation] = EBhDisable; + extensionBehavior[E_GL_EXT_shared_memory_block] = EBhDisable; // OVR extensions extensionBehavior[E_GL_OVR_multiview] = EBhDisable; @@ -408,9 +410,12 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_EXT_shader_non_constant_global_initializers 1\n" ; - if (isEsProfile() && version >= 300) { + if (version >= 300) { preamble += "#define GL_NV_shader_noperspective_interpolation 1\n"; } + if (version >= 310) { + preamble += "#define GL_EXT_null_initializer 1\n"; + } } else { // !isEsProfile() preamble = @@ -468,6 +473,7 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_EXT_demote_to_helper_invocation 1\n" "#define GL_EXT_debug_printf 1\n" "#define GL_EXT_fragment_shading_rate 1\n" + "#define GL_EXT_shared_memory_block 1\n" // GL_KHR_shader_subgroup "#define GL_KHR_shader_subgroup_basic 1\n" @@ -538,6 +544,9 @@ void TParseVersions::getPreamble(std::string& preamble) if (profile == ECompatibilityProfile) preamble += "#define GL_compatibility_profile 1\n"; } + if (version >= 140) { + preamble += "#define GL_EXT_null_initializer 1\n"; + } #endif // GLSLANG_WEB } diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index eb17c52e..f377973a 100644 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -201,6 +201,8 @@ const char* const E_GL_EXT_blend_func_extended = "GL_EXT_blend_func 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"; +const char* const E_GL_EXT_null_initializer = "GL_EXT_null_initializer"; +const char* const E_GL_EXT_shared_memory_block = "GL_EXT_shared_memory_block"; // Arrays of extensions for the above viewportEXTs duplications diff --git a/glslang/MachineIndependent/glslang.m4 b/glslang/MachineIndependent/glslang.m4 index 8884b268..4d37639d 100644 --- a/glslang/MachineIndependent/glslang.m4 +++ b/glslang/MachineIndependent/glslang.m4 @@ -3575,6 +3575,12 @@ GLSLANG_WEB_EXCLUDE_ON parseContext.profileRequires($1.loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); $$ = $2; } + | LEFT_BRACE RIGHT_BRACE { + const char* initFeature = "empty { } initializer"; + parseContext.profileRequires($1.loc, EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); + parseContext.profileRequires($1.loc, ~EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); + $$ = parseContext.intermediate.makeAggregate($1.loc); + } GLSLANG_WEB_EXCLUDE_OFF ; diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index 2681d48f..0b711ae2 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -3575,6 +3575,12 @@ initializer parseContext.profileRequires($1.loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); $$ = $2; } + | LEFT_BRACE RIGHT_BRACE { + const char* initFeature = "empty { } initializer"; + parseContext.profileRequires($1.loc, EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); + parseContext.profileRequires($1.loc, ~EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); + $$ = parseContext.intermediate.makeAggregate($1.loc); + } ; diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp index feecc982..da0658c2 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -1004,16 +1004,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 416 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 10112 +#define YYLAST 10537 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 445 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 111 /* YYNRULES -- Number of rules. */ -#define YYNRULES 616 +#define YYNRULES 617 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 764 +#define YYNSTATES 765 /* YYMAXUTOK -- Last valid token kind. */ #define YYMAXUTOK 699 @@ -1159,15 +1159,15 @@ static const yytype_int16 yyrline[] = 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 + 3509, 3536, 3540, 3546, 3551, 3562, 3566, 3572, 3578, 3589, + 3592, 3599, 3603, 3604, 3610, 3611, 3612, 3613, 3614, 3615, + 3616, 3618, 3624, 3633, 3634, 3638, 3634, 3650, 3651, 3655, + 3655, 3662, 3662, 3676, 3679, 3687, 3695, 3706, 3707, 3711, + 3715, 3722, 3729, 3733, 3741, 3745, 3758, 3762, 3769, 3769, + 3789, 3792, 3798, 3810, 3822, 3826, 3833, 3833, 3848, 3848, + 3864, 3864, 3885, 3888, 3894, 3897, 3903, 3907, 3914, 3919, + 3924, 3931, 3934, 3938, 3943, 3947, 3957, 3961, 3970, 3973, + 3977, 3986, 3986, 4028, 4034, 4037, 4042, 4045 }; #endif @@ -1380,12 +1380,12 @@ static const yytype_int16 yytoknum[] = }; #endif -#define YYPACT_NINF (-732) +#define YYPACT_NINF (-733) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF (-559) +#define YYTABLE_NINF (-560) #define yytable_value_is_error(Yyn) \ 0 @@ -1394,83 +1394,83 @@ static const yytype_int16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - 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 + 4304, -733, -733, -733, -733, -733, -733, -733, -733, -733, + -733, -733, -733, -733, -733, -733, -733, -733, -733, -733, + -733, -733, -733, -733, -733, -733, -733, -733, -733, -733, + -733, -733, -733, -733, -733, -733, -733, -733, -733, -733, + -733, -733, -733, -733, -733, -733, -733, -733, -733, -733, + -733, -733, -733, -733, -733, -733, -733, -733, -733, -733, + -733, -733, -733, -733, -733, -733, -733, -733, -733, -733, + -733, -733, -733, -733, -733, -733, -733, -733, -733, -733, + -733, -733, -733, -733, -733, -733, -733, -733, -733, -733, + -733, -733, -733, -733, -733, -733, -733, -733, -733, -733, + -733, -733, -733, -733, -733, -733, -733, -733, -733, -733, + -733, -733, -733, -733, -733, -733, -733, -733, -733, -733, + -733, -733, -733, -733, -733, -733, -733, -733, -733, -733, + -733, -733, -733, -733, -733, -733, -733, -733, -733, -733, + -733, -733, -733, -733, -733, -733, -733, -733, -733, -733, + -733, -733, -733, -733, -733, -733, -733, -733, -733, -733, + -733, -733, -733, -733, -733, -733, -733, -733, -733, -733, + -733, -733, -733, -733, -733, -733, -733, -733, -733, -733, + -733, -733, -733, -733, -733, -733, -733, -733, -733, -733, + -733, -733, -733, -733, -733, -733, -733, -733, -733, -733, + -733, -733, -733, -733, -733, -733, -733, -733, -733, -733, + -733, -733, -733, -733, -733, -733, -733, -733, -733, -733, + -733, -733, -733, -733, -733, -733, -733, -733, -733, -733, + -733, -733, -733, -733, -733, -733, -733, -733, -733, -733, + -733, -733, -733, -733, -733, -733, -733, -733, -733, -733, + -733, -733, -733, -733, -733, -733, -733, -733, -733, -733, + -733, -733, -733, -733, -733, -733, -733, -733, -733, -733, + -733, -733, -733, -733, -733, -733, -733, -733, -733, -733, + -733, -733, -733, -733, -733, -733, -733, -733, -733, -733, + -733, -733, -733, -733, -733, -733, -733, -733, -733, -733, + -733, -733, -733, -733, -733, -733, -733, -733, -733, -733, + -733, -733, -733, -733, -733, -733, -733, -733, -733, -733, + 109, -733, -733, -733, -733, -733, 3, -733, -733, -733, + -733, -733, -733, -322, -261, -733, -733, -733, -733, -733, + -733, -733, -733, -733, -733, -733, -733, -733, -733, -733, + -733, -733, -733, -733, -733, -733, -733, -733, -733, -733, + -733, -733, -733, -733, -733, -733, -733, 19, 101, 140, + 79, 6514, 57, -733, 96, -733, -733, -733, -733, 4746, + -733, -733, -733, -733, 133, -733, -733, 768, -733, -733, + 16, -733, 151, -32, 125, -733, -335, -733, 158, -733, + 6514, -733, -733, -733, 6514, 127, 128, -733, 13, -733, + 72, -733, -733, 9493, 163, -733, -733, -733, 156, 6514, + -733, 160, -733, 20, -733, -733, 61, 7801, -733, 10, + 1210, -733, -733, -733, -733, 163, -330, -733, 8224, 14, + -733, 134, -733, 88, 9493, 9493, -733, 9493, -733, -733, + -733, -733, -733, -733, -733, -733, -733, -733, -733, -733, + -733, -733, -733, -733, -733, -733, -733, 54, -733, -733, + -733, 166, 62, 9916, 171, -733, 9493, -733, -733, -343, + 173, -733, 6514, 137, 5188, -733, 6514, 9493, -733, -32, + -733, 141, -733, -733, 122, 93, 39, 28, 41, 157, + 159, 161, 192, 195, 21, 181, 8647, -733, 183, 182, + -733, -733, 186, 178, 179, -733, 190, 191, 184, 9070, + 196, 9493, 187, 188, 189, 194, 197, 131, -733, -733, + 99, -733, 101, 200, 205, -733, -733, -733, -733, -733, + 1652, -733, -733, -733, -733, -733, -733, -733, -733, -733, + -376, 173, 8224, 36, 6955, -733, -733, 8224, 6514, -733, + 170, -733, -733, -733, 71, -733, -733, 9493, 176, -733, + -733, 9493, 208, -733, -733, -733, 9493, -733, 137, 163, + 106, -733, -733, -733, 5630, -733, -733, -733, -733, 9493, + 9493, 9493, 9493, 9493, 9493, 9493, 9493, 9493, 9493, 9493, + 9493, 9493, 9493, 9493, 9493, 9493, 9493, 9493, -733, -733, + -733, 210, 180, -733, 2094, -733, -733, -733, 2094, -733, + 9493, -733, -733, 108, 9493, 29, -733, -733, -733, -733, + -733, -733, -733, -733, -733, -733, -733, -733, -733, -733, + -733, -733, 9493, 9493, -733, -733, -733, -733, -733, -733, + -733, 8224, -733, -733, 139, -733, 6072, -733, -733, 211, + 185, -733, -733, -733, 123, 173, 137, -733, -733, -733, + -733, -733, 122, 122, 93, 93, 39, 39, 39, 39, + 28, 28, 41, 157, 159, 161, 192, 195, 9493, -733, + 215, 85, -733, 2094, 3862, 153, 3420, 76, -733, 80, + -733, -733, -733, -733, -733, 7378, -733, -733, -733, -733, + 86, 9493, 214, 180, 216, 185, 193, 6514, 219, 222, + -733, -733, 3862, 220, -733, -733, -733, 9493, 224, -733, + -733, -733, 217, 2536, 9493, -733, 213, 226, 199, 227, + 2978, -733, 228, -733, -733, 8224, -733, -733, -733, 83, + 9493, 2536, 220, -733, -733, 2094, -733, 223, 185, -733, + -733, 2094, 225, -733, -733 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1509,86 +1509,86 @@ 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, 609, 132, 520, 521, 522, + 512, 513, 514, 509, 510, 610, 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, 608, 0, 610, 0, + 136, 137, 138, 139, 140, 147, 609, 0, 611, 0, 109, 108, 0, 120, 125, 154, 153, 151, 155, 0, - 148, 150, 156, 130, 202, 152, 518, 0, 605, 607, + 148, 150, 156, 130, 202, 152, 518, 0, 606, 608, 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, 606, 0, 0, + 0, 149, 131, 0, 195, 201, 1, 607, 0, 0, 523, 144, 146, 0, 142, 193, 0, 0, 98, 0, - 0, 611, 111, 115, 117, 113, 121, 112, 0, 127, + 0, 612, 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, + 67, 69, 71, 73, 75, 0, 0, 99, 0, 554, + 563, 567, 0, 0, 0, 588, 0, 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, 541, 0, 156, 130, 544, 565, 543, 551, 542, + 0, 545, 546, 569, 547, 576, 548, 549, 584, 550, 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, 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 + 199, 0, 0, 553, 0, 586, 599, 598, 0, 590, + 0, 602, 600, 0, 0, 0, 583, 603, 604, 605, + 552, 81, 82, 84, 83, 86, 87, 88, 89, 90, + 85, 80, 0, 0, 568, 564, 566, 570, 577, 585, + 124, 0, 538, 539, 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, + 616, 0, 614, 555, 0, 0, 0, 0, 601, 0, + 582, 79, 92, 123, 536, 0, 104, 19, 530, 532, + 0, 0, 0, 0, 0, 574, 0, 0, 0, 0, + 593, 592, 595, 561, 578, 537, 540, 0, 0, 613, + 615, 556, 0, 0, 0, 594, 0, 0, 573, 0, + 0, 571, 0, 77, 617, 0, 558, 587, 557, 0, + 596, 0, 561, 560, 562, 580, 575, 0, 597, 591, + 572, 581, 0, 589, 579 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -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 + -733, -733, -733, -733, -733, -733, -733, -733, -733, -733, + -733, -733, 9826, -733, -105, -98, -156, -102, -29, -28, + -30, -27, -26, -31, -733, -82, -733, -101, -733, -109, + -134, 2, -733, -733, -733, 4, -733, -733, -733, 177, + 198, 201, -733, -733, -341, -733, -733, -733, -733, 94, + -733, -37, -46, -733, 9, -733, 0, -66, -733, -733, + -733, -733, 262, -733, -733, -733, -481, -149, 11, -79, + -213, -733, -108, -204, -732, -733, -148, -733, -733, -161, + -160, -733, -733, 202, -274, -100, -733, 44, -733, -127, + -733, 47, -733, -733, -733, -733, 49, -733, -733, -733, + -733, -733, -733, -733, -733, 221, -733, -733, -733, -733, + -112 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 465, 466, 467, 658, 468, 469, 470, 471, 472, + -1, 465, 466, 467, 659, 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, + 500, 501, 502, 503, 504, 528, 688, 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, 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 + 556, 654, 535, 536, 537, 538, 539, 614, 714, 747, + 738, 739, 740, 748, 540, 541, 542, 543, 741, 718, + 544, 545, 742, 762, 546, 547, 548, 694, 618, 696, + 722, 736, 737, 549, 387, 388, 389, 398, 550, 691, + 692 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1596,14 +1596,14 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 383, 745, 366, 427, 368, 584, 576, 512, 753, 382, - 515, 428, 516, 517, 406, 393, 520, 407, 577, 745, + 383, 746, 366, 576, 368, 584, 427, 512, 754, 382, + 515, 427, 516, 517, 428, 577, 520, 393, 552, 746, 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, 655, 394, 61, + 52, 53, 54, 55, 56, 57, 58, 656, 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, @@ -1629,454 +1629,675 @@ 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, 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, + 312, 313, 314, 411, 404, 583, 646, 555, 564, 650, + 693, 653, 439, 421, 655, 505, 391, 607, 480, 596, + 597, 506, 437, 716, 427, 506, 594, 595, 411, 507, + 488, 438, 557, 404, 600, 601, 489, 422, 395, 551, + 553, 405, 573, 565, 566, 643, 700, 506, 392, 412, + 382, 716, 482, 608, 651, 598, 599, 383, 382, 366, + 418, 368, 321, -35, 396, 567, 382, 326, 327, 568, + 405, 490, 570, 406, 405, 585, 407, 491, 571, 382, + 623, 658, 625, 382, 695, 440, 723, 643, 441, 483, + 724, 442, 643, 757, 611, 400, 643, 712, 382, 643, + 534, 713, 643, 727, 560, 583, 411, 561, 703, 533, + 676, 677, 678, 679, 592, 643, 593, 482, 644, 482, + 397, 555, 666, 555, 643, 667, 555, 698, 660, 631, + 632, 633, 634, 635, 636, 637, 638, 639, 640, 666, + 662, 408, 708, 317, 318, 319, 589, 590, 591, 641, + 399, 761, 578, 704, 483, 705, 483, 672, 673, 646, + 413, 382, 726, 382, 420, 382, 674, 675, 680, 681, + 425, 430, 435, 436, 427, 481, 569, 583, 487, 559, + 574, 697, 579, 665, 506, 699, 588, 605, 602, 603, + 604, 482, 606, 609, 612, 615, 613, 616, 617, 619, + 620, 643, 756, 621, 626, 624, 719, 627, 628, -36, + 534, 701, 702, 629, -34, 657, 630, 482, -29, 533, + 555, 661, 689, 707, 711, 690, 729, 646, 483, 733, + 731, 734, 750, -559, 744, 745, 751, 382, 732, 764, + 509, 755, 763, 682, 684, 683, 687, 728, 685, 710, + 686, 433, 390, 587, 483, 715, 752, 709, 720, 664, + 759, 753, 760, 382, 647, 735, 721, 648, 432, 649, + 431, 730, 0, 0, 555, 434, 0, 0, 417, 0, + 0, 0, 0, 715, 534, 0, 0, 0, 534, 482, + 0, 0, 0, 533, 0, 749, 743, 533, 0, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 758, 0, 0, 555, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 483, 717, 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, 717, 0, 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, 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, 315, 0, 0, 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, 444, 445, + 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, 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, - 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, 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, + 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, 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, 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, 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, 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, + 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, 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, 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, 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, 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, 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, - 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, - 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, + 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, 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, 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, + 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, 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, 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, + 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, 582, 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, 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, 668, 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, 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, 706, 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, 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, + 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, + 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, @@ -2102,114 +2323,66 @@ static const yytype_int16 yytable[] = 283, 284, 285, 286, 287, 288, 289, 290, 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, 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, + 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, 652, + 0, 0, 0, 0, 0, 448, 449, 450, 451, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 582, 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, - 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, 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, 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, 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, 725, 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, 0, 667, 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, 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, + 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, 59, 60, 61, 62, 63, 64, 65, 66, + 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, @@ -2235,63 +2408,17 @@ static const yytype_int16 yytable[] = 287, 288, 289, 290, 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, 705, 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, 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, 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, + 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, @@ -2325,7 +2452,7 @@ static const yytype_int16 yytable[] = 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, 724, 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, @@ -2367,7 +2494,7 @@ static const yytype_int16 yytable[] = 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, 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, @@ -2410,7 +2537,7 @@ static const yytype_int16 yytable[] = 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, + 0, 0, 0, 0, 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, @@ -2452,7 +2579,7 @@ 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, 610, 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, @@ -2492,66 +2619,257 @@ 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, 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, 622, 448, 449, 450, 451, + 312, 313, 314, 0, 0, 444, 445, 0, 0, 475, 0, 0, 0, 0, 0, 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, 0, 0, 0, 452, 453, 454, - 455, 456, 321, 0, 0, 0, 0, 326, 327, 0, + 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, + 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, 669, 670, 671, 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, - 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, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 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, 733, 0, 346, 0, 486, 341, 383, 740, 0, + 386, 341, 388, 389, 349, 358, 392, 339, 348, 751, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 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, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 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, 540, 438, 447, 552, + 614, 554, 408, 375, 557, 427, 343, 326, 414, 321, + 322, 341, 339, 694, 341, 341, 317, 318, 404, 349, + 340, 348, 348, 400, 323, 324, 346, 399, 349, 435, + 436, 371, 473, 319, 320, 346, 347, 341, 375, 379, + 371, 722, 419, 362, 348, 357, 358, 387, 379, 387, + 390, 387, 376, 339, 375, 341, 387, 381, 382, 345, + 400, 340, 340, 346, 404, 487, 349, 346, 346, 400, + 519, 340, 521, 404, 618, 343, 340, 346, 346, 419, + 340, 349, 346, 340, 506, 346, 346, 342, 419, 346, + 430, 346, 346, 347, 346, 584, 482, 349, 651, 430, + 596, 597, 598, 599, 351, 346, 353, 484, 349, 486, + 349, 552, 346, 554, 346, 349, 557, 349, 567, 328, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 346, + 571, 375, 349, 364, 365, 366, 354, 355, 356, 348, + 340, 755, 482, 344, 484, 346, 486, 592, 593, 693, + 357, 482, 705, 484, 343, 486, 594, 595, 600, 601, + 375, 343, 375, 375, 341, 349, 340, 656, 348, 375, + 339, 620, 375, 579, 341, 624, 375, 325, 361, 360, + 359, 558, 327, 342, 341, 339, 344, 349, 349, 339, + 339, 346, 745, 349, 347, 339, 383, 349, 349, 339, + 540, 642, 643, 349, 339, 375, 349, 584, 340, 540, + 651, 375, 342, 342, 339, 375, 342, 761, 558, 340, + 344, 339, 349, 343, 340, 348, 340, 558, 375, 344, + 343, 343, 349, 602, 604, 603, 607, 711, 605, 688, + 606, 404, 320, 489, 584, 694, 387, 666, 696, 578, + 751, 739, 752, 584, 550, 722, 696, 550, 400, 550, + 398, 713, -1, -1, 705, 404, -1, -1, 387, -1, + -1, -1, -1, 722, 614, -1, -1, -1, 618, 656, + -1, -1, -1, 614, -1, 734, 727, 618, -1, 711, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 750, -1, -1, 745, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 656, 694, -1, -1, + -1, -1, -1, -1, -1, 656, -1, -1, -1, -1, + -1, 717, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 722, -1, -1, -1, -1, + -1, -1, -1, 693, 694, -1, 696, -1, -1, -1, + -1, -1, 693, 694, -1, 696, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 717, -1, -1, + -1, -1, 722, -1, -1, -1, 717, -1, -1, -1, + -1, 722, -1, 733, -1, -1, -1, -1, -1, -1, + 740, -1, 733, -1, -1, -1, -1, -1, -1, 740, + -1, 751, -1, -1, -1, 755, -1, -1, -1, -1, + 751, 761, -1, -1, 755, -1, -1, -1, 0, -1, + 761, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 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, -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, -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, 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, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, @@ -2576,50 +2894,26 @@ static const yytype_int16 yytable[] = 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 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, - 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, - 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, 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 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, 732, 0, 341, 0, 486, 346, 383, 739, 0, - 386, 349, 388, 389, 346, 339, 392, 349, 358, 750, + 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, 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, 558, 339, 63, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, @@ -2645,454 +2939,423 @@ 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, 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, + 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, 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, 349, -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, -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, - 363, 364, 365, 366, 367, -1, -1, -1, -1, -1, - -1, -1, -1, 376, 377, 378, 379, 380, 381, 382, + 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, - -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, + 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, -1, -1, -1, -1, -1, -1, -1, -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, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 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, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 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, 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, 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, - -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, 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, 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, -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, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 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, 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, -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, 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, -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, 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, 344, -1, -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, + -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, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 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, -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, -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, + -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, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 55, 56, 57, 58, 59, 60, -1, -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, @@ -3118,114 +3381,66 @@ 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, -1, -1, -1, -1, -1, -1, - -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, -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, + 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, 344, -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, - 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, 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, -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, 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, 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, -1, - -1, -1, -1, 344, -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, 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, + -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, 61, 62, 63, 64, 65, 66, 67, 68, + 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, @@ -3251,63 +3466,17 @@ static const yytype_int16 yycheck[] = 289, 290, 291, 292, 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, 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, -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, -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, -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, 4, 5, + -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, @@ -3341,7 +3510,7 @@ static const yytype_int16 yycheck[] = 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, 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, @@ -3426,7 +3595,7 @@ static const yytype_int16 yycheck[] = 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, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 349, 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, @@ -3468,7 +3637,7 @@ static const yytype_int16 yycheck[] = 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, 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, @@ -3508,111 +3677,27 @@ 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, -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, + 314, 315, 316, -1, -1, 319, 320, -1, -1, 413, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 427, 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, -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, + -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, -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, -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, 413, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 427, - 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, - -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, 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, - -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, 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, -1, -1, -1, -1, -1, -1, @@ -3622,8 +3707,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, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 710 + -1, -1, -1, -1, -1, -1, -1, 711 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -3695,18 +3779,18 @@ static const yytype_int16 yystos[] = 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 + 515, 348, 344, 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. */ @@ -3765,15 +3849,15 @@ static const yytype_int16 yyr1[] = 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 + 512, 513, 513, 514, 514, 515, 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. */ @@ -3832,15 +3916,15 @@ static const yytype_int8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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, 2, 2, 2, 1, 2, 1, 1, 1, - 0, 3, 5, 1, 3, 1, 4 + 4, 1, 3, 1, 2, 1, 3, 4, 2, 1, + 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 2, 0, 0, 5, 1, 1, 0, + 2, 0, 2, 2, 3, 1, 2, 1, 2, 1, + 2, 5, 3, 1, 1, 4, 1, 2, 0, 8, + 0, 1, 3, 2, 1, 2, 0, 6, 0, 8, + 0, 7, 1, 1, 1, 0, 2, 3, 2, 2, + 2, 3, 2, 2, 2, 2, 1, 2, 1, 1, + 1, 0, 3, 5, 1, 3, 1, 4 }; @@ -4590,7 +4674,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string); } -#line 4594 "MachineIndependent/glslang_tab.cpp" +#line 4678 "MachineIndependent/glslang_tab.cpp" break; case 3: /* primary_expression: variable_identifier */ @@ -4598,7 +4682,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4602 "MachineIndependent/glslang_tab.cpp" +#line 4686 "MachineIndependent/glslang_tab.cpp" break; case 4: /* primary_expression: LEFT_PAREN expression RIGHT_PAREN */ @@ -4608,7 +4692,7 @@ yyreduce: if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } -#line 4612 "MachineIndependent/glslang_tab.cpp" +#line 4696 "MachineIndependent/glslang_tab.cpp" break; case 5: /* primary_expression: FLOATCONSTANT */ @@ -4616,7 +4700,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 4620 "MachineIndependent/glslang_tab.cpp" +#line 4704 "MachineIndependent/glslang_tab.cpp" break; case 6: /* primary_expression: INTCONSTANT */ @@ -4624,7 +4708,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 4628 "MachineIndependent/glslang_tab.cpp" +#line 4712 "MachineIndependent/glslang_tab.cpp" break; case 7: /* primary_expression: UINTCONSTANT */ @@ -4633,7 +4717,7 @@ yyreduce: parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 4637 "MachineIndependent/glslang_tab.cpp" +#line 4721 "MachineIndependent/glslang_tab.cpp" break; case 8: /* primary_expression: BOOLCONSTANT */ @@ -4641,7 +4725,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 4645 "MachineIndependent/glslang_tab.cpp" +#line 4729 "MachineIndependent/glslang_tab.cpp" break; case 9: /* primary_expression: STRING_LITERAL */ @@ -4649,7 +4733,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); } -#line 4653 "MachineIndependent/glslang_tab.cpp" +#line 4737 "MachineIndependent/glslang_tab.cpp" break; case 10: /* primary_expression: INT32CONSTANT */ @@ -4658,7 +4742,7 @@ yyreduce: parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 4662 "MachineIndependent/glslang_tab.cpp" +#line 4746 "MachineIndependent/glslang_tab.cpp" break; case 11: /* primary_expression: UINT32CONSTANT */ @@ -4667,7 +4751,7 @@ yyreduce: parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 4671 "MachineIndependent/glslang_tab.cpp" +#line 4755 "MachineIndependent/glslang_tab.cpp" break; case 12: /* primary_expression: INT64CONSTANT */ @@ -4676,7 +4760,7 @@ yyreduce: parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i64, (yyvsp[0].lex).loc, true); } -#line 4680 "MachineIndependent/glslang_tab.cpp" +#line 4764 "MachineIndependent/glslang_tab.cpp" break; case 13: /* primary_expression: UINT64CONSTANT */ @@ -4685,7 +4769,7 @@ yyreduce: parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u64, (yyvsp[0].lex).loc, true); } -#line 4689 "MachineIndependent/glslang_tab.cpp" +#line 4773 "MachineIndependent/glslang_tab.cpp" break; case 14: /* primary_expression: INT16CONSTANT */ @@ -4694,7 +4778,7 @@ yyreduce: parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((short)(yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 4698 "MachineIndependent/glslang_tab.cpp" +#line 4782 "MachineIndependent/glslang_tab.cpp" break; case 15: /* primary_expression: UINT16CONSTANT */ @@ -4703,7 +4787,7 @@ yyreduce: parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit unsigned integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((unsigned short)(yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 4707 "MachineIndependent/glslang_tab.cpp" +#line 4791 "MachineIndependent/glslang_tab.cpp" break; case 16: /* primary_expression: DOUBLECONSTANT */ @@ -4714,7 +4798,7 @@ yyreduce: parseContext.doubleCheck((yyvsp[0].lex).loc, "double literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtDouble, (yyvsp[0].lex).loc, true); } -#line 4718 "MachineIndependent/glslang_tab.cpp" +#line 4802 "MachineIndependent/glslang_tab.cpp" break; case 17: /* primary_expression: FLOAT16CONSTANT */ @@ -4723,7 +4807,7 @@ yyreduce: parseContext.float16Check((yyvsp[0].lex).loc, "half float literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat16, (yyvsp[0].lex).loc, true); } -#line 4727 "MachineIndependent/glslang_tab.cpp" +#line 4811 "MachineIndependent/glslang_tab.cpp" break; case 18: /* postfix_expression: primary_expression */ @@ -4731,7 +4815,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4735 "MachineIndependent/glslang_tab.cpp" +#line 4819 "MachineIndependent/glslang_tab.cpp" break; case 19: /* postfix_expression: postfix_expression LEFT_BRACKET integer_expression RIGHT_BRACKET */ @@ -4739,7 +4823,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode)); } -#line 4743 "MachineIndependent/glslang_tab.cpp" +#line 4827 "MachineIndependent/glslang_tab.cpp" break; case 20: /* postfix_expression: function_call */ @@ -4747,7 +4831,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4751 "MachineIndependent/glslang_tab.cpp" +#line 4835 "MachineIndependent/glslang_tab.cpp" break; case 21: /* postfix_expression: postfix_expression DOT IDENTIFIER */ @@ -4755,7 +4839,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string); } -#line 4759 "MachineIndependent/glslang_tab.cpp" +#line 4843 "MachineIndependent/glslang_tab.cpp" break; case 22: /* postfix_expression: postfix_expression INC_OP */ @@ -4765,7 +4849,7 @@ yyreduce: parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "++", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "++", EOpPostIncrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 4769 "MachineIndependent/glslang_tab.cpp" +#line 4853 "MachineIndependent/glslang_tab.cpp" break; case 23: /* postfix_expression: postfix_expression DEC_OP */ @@ -4775,7 +4859,7 @@ yyreduce: parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "--", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "--", EOpPostDecrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 4779 "MachineIndependent/glslang_tab.cpp" +#line 4863 "MachineIndependent/glslang_tab.cpp" break; case 24: /* integer_expression: expression */ @@ -4784,7 +4868,7 @@ yyreduce: parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]"); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4788 "MachineIndependent/glslang_tab.cpp" +#line 4872 "MachineIndependent/glslang_tab.cpp" break; case 25: /* function_call: function_call_or_method */ @@ -4793,7 +4877,7 @@ yyreduce: (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode); delete (yyvsp[0].interm).function; } -#line 4797 "MachineIndependent/glslang_tab.cpp" +#line 4881 "MachineIndependent/glslang_tab.cpp" break; case 26: /* function_call_or_method: function_call_generic */ @@ -4801,7 +4885,7 @@ yyreduce: { (yyval.interm) = (yyvsp[0].interm); } -#line 4805 "MachineIndependent/glslang_tab.cpp" +#line 4889 "MachineIndependent/glslang_tab.cpp" break; case 27: /* function_call_generic: function_call_header_with_parameters RIGHT_PAREN */ @@ -4810,7 +4894,7 @@ yyreduce: (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 4814 "MachineIndependent/glslang_tab.cpp" +#line 4898 "MachineIndependent/glslang_tab.cpp" break; case 28: /* function_call_generic: function_call_header_no_parameters RIGHT_PAREN */ @@ -4819,7 +4903,7 @@ yyreduce: (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 4823 "MachineIndependent/glslang_tab.cpp" +#line 4907 "MachineIndependent/glslang_tab.cpp" break; case 29: /* function_call_header_no_parameters: function_call_header VOID */ @@ -4827,7 +4911,7 @@ yyreduce: { (yyval.interm) = (yyvsp[-1].interm); } -#line 4831 "MachineIndependent/glslang_tab.cpp" +#line 4915 "MachineIndependent/glslang_tab.cpp" break; case 30: /* function_call_header_no_parameters: function_call_header */ @@ -4835,7 +4919,7 @@ yyreduce: { (yyval.interm) = (yyvsp[0].interm); } -#line 4839 "MachineIndependent/glslang_tab.cpp" +#line 4923 "MachineIndependent/glslang_tab.cpp" break; case 31: /* function_call_header_with_parameters: function_call_header assignment_expression */ @@ -4847,7 +4931,7 @@ yyreduce: (yyval.interm).function = (yyvsp[-1].interm).function; (yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode); } -#line 4851 "MachineIndependent/glslang_tab.cpp" +#line 4935 "MachineIndependent/glslang_tab.cpp" break; case 32: /* function_call_header_with_parameters: function_call_header_with_parameters COMMA assignment_expression */ @@ -4859,7 +4943,7 @@ yyreduce: (yyval.interm).function = (yyvsp[-2].interm).function; (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); } -#line 4863 "MachineIndependent/glslang_tab.cpp" +#line 4947 "MachineIndependent/glslang_tab.cpp" break; case 33: /* function_call_header: function_identifier LEFT_PAREN */ @@ -4867,7 +4951,7 @@ yyreduce: { (yyval.interm) = (yyvsp[-1].interm); } -#line 4871 "MachineIndependent/glslang_tab.cpp" +#line 4955 "MachineIndependent/glslang_tab.cpp" break; case 34: /* function_identifier: type_specifier */ @@ -4877,7 +4961,7 @@ yyreduce: (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 4881 "MachineIndependent/glslang_tab.cpp" +#line 4965 "MachineIndependent/glslang_tab.cpp" break; case 35: /* function_identifier: postfix_expression */ @@ -4909,7 +4993,7 @@ yyreduce: (yyval.interm).function = new TFunction(empty, TType(EbtVoid), EOpNull); } } -#line 4913 "MachineIndependent/glslang_tab.cpp" +#line 4997 "MachineIndependent/glslang_tab.cpp" break; case 36: /* function_identifier: non_uniform_qualifier */ @@ -4919,7 +5003,7 @@ yyreduce: (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 4923 "MachineIndependent/glslang_tab.cpp" +#line 5007 "MachineIndependent/glslang_tab.cpp" break; case 37: /* unary_expression: postfix_expression */ @@ -4930,7 +5014,7 @@ yyreduce: if (TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode()) parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), ""); } -#line 4934 "MachineIndependent/glslang_tab.cpp" +#line 5018 "MachineIndependent/glslang_tab.cpp" break; case 38: /* unary_expression: INC_OP unary_expression */ @@ -4939,7 +5023,7 @@ yyreduce: parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "++", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "++", EOpPreIncrement, (yyvsp[0].interm.intermTypedNode)); } -#line 4943 "MachineIndependent/glslang_tab.cpp" +#line 5027 "MachineIndependent/glslang_tab.cpp" break; case 39: /* unary_expression: DEC_OP unary_expression */ @@ -4948,7 +5032,7 @@ yyreduce: parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "--", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "--", EOpPreDecrement, (yyvsp[0].interm.intermTypedNode)); } -#line 4952 "MachineIndependent/glslang_tab.cpp" +#line 5036 "MachineIndependent/glslang_tab.cpp" break; case 40: /* unary_expression: unary_operator unary_expression */ @@ -4969,38 +5053,38 @@ yyreduce: (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } } -#line 4973 "MachineIndependent/glslang_tab.cpp" +#line 5057 "MachineIndependent/glslang_tab.cpp" break; case 41: /* unary_operator: PLUS */ #line 606 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; } -#line 4979 "MachineIndependent/glslang_tab.cpp" +#line 5063 "MachineIndependent/glslang_tab.cpp" break; case 42: /* unary_operator: DASH */ #line 607 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; } -#line 4985 "MachineIndependent/glslang_tab.cpp" +#line 5069 "MachineIndependent/glslang_tab.cpp" break; case 43: /* unary_operator: BANG */ #line 608 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; } -#line 4991 "MachineIndependent/glslang_tab.cpp" +#line 5075 "MachineIndependent/glslang_tab.cpp" break; case 44: /* unary_operator: TILDE */ #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 4998 "MachineIndependent/glslang_tab.cpp" +#line 5082 "MachineIndependent/glslang_tab.cpp" break; case 45: /* multiplicative_expression: unary_expression */ #line 615 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5004 "MachineIndependent/glslang_tab.cpp" +#line 5088 "MachineIndependent/glslang_tab.cpp" break; case 46: /* multiplicative_expression: multiplicative_expression STAR unary_expression */ @@ -5010,7 +5094,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5014 "MachineIndependent/glslang_tab.cpp" +#line 5098 "MachineIndependent/glslang_tab.cpp" break; case 47: /* multiplicative_expression: multiplicative_expression SLASH unary_expression */ @@ -5020,7 +5104,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5024 "MachineIndependent/glslang_tab.cpp" +#line 5108 "MachineIndependent/glslang_tab.cpp" break; case 48: /* multiplicative_expression: multiplicative_expression PERCENT unary_expression */ @@ -5031,13 +5115,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5035 "MachineIndependent/glslang_tab.cpp" +#line 5119 "MachineIndependent/glslang_tab.cpp" break; case 49: /* additive_expression: multiplicative_expression */ #line 635 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5041 "MachineIndependent/glslang_tab.cpp" +#line 5125 "MachineIndependent/glslang_tab.cpp" break; case 50: /* additive_expression: additive_expression PLUS multiplicative_expression */ @@ -5047,7 +5131,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5051 "MachineIndependent/glslang_tab.cpp" +#line 5135 "MachineIndependent/glslang_tab.cpp" break; case 51: /* additive_expression: additive_expression DASH multiplicative_expression */ @@ -5057,13 +5141,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5061 "MachineIndependent/glslang_tab.cpp" +#line 5145 "MachineIndependent/glslang_tab.cpp" break; case 52: /* shift_expression: additive_expression */ #line 649 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5067 "MachineIndependent/glslang_tab.cpp" +#line 5151 "MachineIndependent/glslang_tab.cpp" break; case 53: /* shift_expression: shift_expression LEFT_OP additive_expression */ @@ -5074,7 +5158,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5078 "MachineIndependent/glslang_tab.cpp" +#line 5162 "MachineIndependent/glslang_tab.cpp" break; case 54: /* shift_expression: shift_expression RIGHT_OP additive_expression */ @@ -5085,13 +5169,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5089 "MachineIndependent/glslang_tab.cpp" +#line 5173 "MachineIndependent/glslang_tab.cpp" break; case 55: /* relational_expression: shift_expression */ #line 665 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5095 "MachineIndependent/glslang_tab.cpp" +#line 5179 "MachineIndependent/glslang_tab.cpp" break; case 56: /* relational_expression: relational_expression LEFT_ANGLE shift_expression */ @@ -5101,7 +5185,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5105 "MachineIndependent/glslang_tab.cpp" +#line 5189 "MachineIndependent/glslang_tab.cpp" break; case 57: /* relational_expression: relational_expression RIGHT_ANGLE shift_expression */ @@ -5111,7 +5195,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5115 "MachineIndependent/glslang_tab.cpp" +#line 5199 "MachineIndependent/glslang_tab.cpp" break; case 58: /* relational_expression: relational_expression LE_OP shift_expression */ @@ -5121,7 +5205,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5125 "MachineIndependent/glslang_tab.cpp" +#line 5209 "MachineIndependent/glslang_tab.cpp" break; case 59: /* relational_expression: relational_expression GE_OP shift_expression */ @@ -5131,13 +5215,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5135 "MachineIndependent/glslang_tab.cpp" +#line 5219 "MachineIndependent/glslang_tab.cpp" break; case 60: /* equality_expression: relational_expression */ #line 689 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5141 "MachineIndependent/glslang_tab.cpp" +#line 5225 "MachineIndependent/glslang_tab.cpp" break; case 61: /* equality_expression: equality_expression EQ_OP relational_expression */ @@ -5151,7 +5235,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5155 "MachineIndependent/glslang_tab.cpp" +#line 5239 "MachineIndependent/glslang_tab.cpp" break; case 62: /* equality_expression: equality_expression NE_OP relational_expression */ @@ -5165,13 +5249,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5169 "MachineIndependent/glslang_tab.cpp" +#line 5253 "MachineIndependent/glslang_tab.cpp" break; case 63: /* and_expression: equality_expression */ #line 711 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5175 "MachineIndependent/glslang_tab.cpp" +#line 5259 "MachineIndependent/glslang_tab.cpp" break; case 64: /* and_expression: and_expression AMPERSAND equality_expression */ @@ -5182,13 +5266,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5186 "MachineIndependent/glslang_tab.cpp" +#line 5270 "MachineIndependent/glslang_tab.cpp" break; case 65: /* exclusive_or_expression: and_expression */ #line 721 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5192 "MachineIndependent/glslang_tab.cpp" +#line 5276 "MachineIndependent/glslang_tab.cpp" break; case 66: /* exclusive_or_expression: exclusive_or_expression CARET and_expression */ @@ -5199,13 +5283,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5203 "MachineIndependent/glslang_tab.cpp" +#line 5287 "MachineIndependent/glslang_tab.cpp" break; case 67: /* inclusive_or_expression: exclusive_or_expression */ #line 731 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5209 "MachineIndependent/glslang_tab.cpp" +#line 5293 "MachineIndependent/glslang_tab.cpp" break; case 68: /* inclusive_or_expression: inclusive_or_expression VERTICAL_BAR exclusive_or_expression */ @@ -5216,13 +5300,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5220 "MachineIndependent/glslang_tab.cpp" +#line 5304 "MachineIndependent/glslang_tab.cpp" break; case 69: /* logical_and_expression: inclusive_or_expression */ #line 741 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5226 "MachineIndependent/glslang_tab.cpp" +#line 5310 "MachineIndependent/glslang_tab.cpp" break; case 70: /* logical_and_expression: logical_and_expression AND_OP inclusive_or_expression */ @@ -5232,13 +5316,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5236 "MachineIndependent/glslang_tab.cpp" +#line 5320 "MachineIndependent/glslang_tab.cpp" break; case 71: /* logical_xor_expression: logical_and_expression */ #line 750 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5242 "MachineIndependent/glslang_tab.cpp" +#line 5326 "MachineIndependent/glslang_tab.cpp" break; case 72: /* logical_xor_expression: logical_xor_expression XOR_OP logical_and_expression */ @@ -5248,13 +5332,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5252 "MachineIndependent/glslang_tab.cpp" +#line 5336 "MachineIndependent/glslang_tab.cpp" break; case 73: /* logical_or_expression: logical_xor_expression */ #line 759 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5258 "MachineIndependent/glslang_tab.cpp" +#line 5342 "MachineIndependent/glslang_tab.cpp" break; case 74: /* logical_or_expression: logical_or_expression OR_OP logical_xor_expression */ @@ -5264,13 +5348,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5268 "MachineIndependent/glslang_tab.cpp" +#line 5352 "MachineIndependent/glslang_tab.cpp" break; case 75: /* conditional_expression: logical_or_expression */ #line 768 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5274 "MachineIndependent/glslang_tab.cpp" +#line 5358 "MachineIndependent/glslang_tab.cpp" break; case 76: /* $@1: %empty */ @@ -5278,7 +5362,7 @@ yyreduce: { ++parseContext.controlFlowNestingLevel; } -#line 5282 "MachineIndependent/glslang_tab.cpp" +#line 5366 "MachineIndependent/glslang_tab.cpp" break; case 77: /* conditional_expression: logical_or_expression QUESTION $@1 expression COLON assignment_expression */ @@ -5295,13 +5379,13 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 5299 "MachineIndependent/glslang_tab.cpp" +#line 5383 "MachineIndependent/glslang_tab.cpp" break; case 78: /* assignment_expression: conditional_expression */ #line 787 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5305 "MachineIndependent/glslang_tab.cpp" +#line 5389 "MachineIndependent/glslang_tab.cpp" break; case 79: /* assignment_expression: unary_expression assignment_operator assignment_expression */ @@ -5319,7 +5403,7 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } } -#line 5323 "MachineIndependent/glslang_tab.cpp" +#line 5407 "MachineIndependent/glslang_tab.cpp" break; case 80: /* assignment_operator: EQUAL */ @@ -5328,7 +5412,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAssign; } -#line 5332 "MachineIndependent/glslang_tab.cpp" +#line 5416 "MachineIndependent/glslang_tab.cpp" break; case 81: /* assignment_operator: MUL_ASSIGN */ @@ -5337,7 +5421,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpMulAssign; } -#line 5341 "MachineIndependent/glslang_tab.cpp" +#line 5425 "MachineIndependent/glslang_tab.cpp" break; case 82: /* assignment_operator: DIV_ASSIGN */ @@ -5346,7 +5430,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpDivAssign; } -#line 5350 "MachineIndependent/glslang_tab.cpp" +#line 5434 "MachineIndependent/glslang_tab.cpp" break; case 83: /* assignment_operator: MOD_ASSIGN */ @@ -5356,7 +5440,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpModAssign; } -#line 5360 "MachineIndependent/glslang_tab.cpp" +#line 5444 "MachineIndependent/glslang_tab.cpp" break; case 84: /* assignment_operator: ADD_ASSIGN */ @@ -5365,7 +5449,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAddAssign; } -#line 5369 "MachineIndependent/glslang_tab.cpp" +#line 5453 "MachineIndependent/glslang_tab.cpp" break; case 85: /* assignment_operator: SUB_ASSIGN */ @@ -5374,7 +5458,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpSubAssign; } -#line 5378 "MachineIndependent/glslang_tab.cpp" +#line 5462 "MachineIndependent/glslang_tab.cpp" break; case 86: /* assignment_operator: LEFT_ASSIGN */ @@ -5383,7 +5467,7 @@ yyreduce: parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign; } -#line 5387 "MachineIndependent/glslang_tab.cpp" +#line 5471 "MachineIndependent/glslang_tab.cpp" break; case 87: /* assignment_operator: RIGHT_ASSIGN */ @@ -5392,7 +5476,7 @@ yyreduce: parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign; } -#line 5396 "MachineIndependent/glslang_tab.cpp" +#line 5480 "MachineIndependent/glslang_tab.cpp" break; case 88: /* assignment_operator: AND_ASSIGN */ @@ -5401,7 +5485,7 @@ yyreduce: parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign; } -#line 5405 "MachineIndependent/glslang_tab.cpp" +#line 5489 "MachineIndependent/glslang_tab.cpp" break; case 89: /* assignment_operator: XOR_ASSIGN */ @@ -5410,7 +5494,7 @@ yyreduce: parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign; } -#line 5414 "MachineIndependent/glslang_tab.cpp" +#line 5498 "MachineIndependent/glslang_tab.cpp" break; case 90: /* assignment_operator: OR_ASSIGN */ @@ -5419,7 +5503,7 @@ yyreduce: parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign; } -#line 5423 "MachineIndependent/glslang_tab.cpp" +#line 5507 "MachineIndependent/glslang_tab.cpp" break; case 91: /* expression: assignment_expression */ @@ -5427,7 +5511,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5431 "MachineIndependent/glslang_tab.cpp" +#line 5515 "MachineIndependent/glslang_tab.cpp" break; case 92: /* expression: expression COMMA assignment_expression */ @@ -5440,7 +5524,7 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 5444 "MachineIndependent/glslang_tab.cpp" +#line 5528 "MachineIndependent/glslang_tab.cpp" break; case 93: /* constant_expression: conditional_expression */ @@ -5449,7 +5533,7 @@ yyreduce: parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), ""); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5453 "MachineIndependent/glslang_tab.cpp" +#line 5537 "MachineIndependent/glslang_tab.cpp" break; case 94: /* declaration: function_prototype SEMICOLON */ @@ -5459,7 +5543,7 @@ yyreduce: (yyval.interm.intermNode) = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 5463 "MachineIndependent/glslang_tab.cpp" +#line 5547 "MachineIndependent/glslang_tab.cpp" break; case 95: /* declaration: init_declarator_list SEMICOLON */ @@ -5469,7 +5553,7 @@ yyreduce: (yyvsp[-1].interm).intermNode->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm).intermNode; } -#line 5473 "MachineIndependent/glslang_tab.cpp" +#line 5557 "MachineIndependent/glslang_tab.cpp" break; case 96: /* declaration: PRECISION precision_qualifier type_specifier SEMICOLON */ @@ -5481,7 +5565,7 @@ yyreduce: parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision); (yyval.interm.intermNode) = 0; } -#line 5485 "MachineIndependent/glslang_tab.cpp" +#line 5569 "MachineIndependent/glslang_tab.cpp" break; case 97: /* declaration: block_structure SEMICOLON */ @@ -5490,7 +5574,7 @@ yyreduce: parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList); (yyval.interm.intermNode) = 0; } -#line 5494 "MachineIndependent/glslang_tab.cpp" +#line 5578 "MachineIndependent/glslang_tab.cpp" break; case 98: /* declaration: block_structure IDENTIFIER SEMICOLON */ @@ -5499,7 +5583,7 @@ yyreduce: parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 5503 "MachineIndependent/glslang_tab.cpp" +#line 5587 "MachineIndependent/glslang_tab.cpp" break; case 99: /* declaration: block_structure IDENTIFIER array_specifier SEMICOLON */ @@ -5508,7 +5592,7 @@ yyreduce: parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes); (yyval.interm.intermNode) = 0; } -#line 5512 "MachineIndependent/glslang_tab.cpp" +#line 5596 "MachineIndependent/glslang_tab.cpp" break; case 100: /* declaration: type_qualifier SEMICOLON */ @@ -5518,7 +5602,7 @@ yyreduce: parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type)); (yyval.interm.intermNode) = 0; } -#line 5522 "MachineIndependent/glslang_tab.cpp" +#line 5606 "MachineIndependent/glslang_tab.cpp" break; case 101: /* declaration: type_qualifier IDENTIFIER SEMICOLON */ @@ -5528,7 +5612,7 @@ yyreduce: parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 5532 "MachineIndependent/glslang_tab.cpp" +#line 5616 "MachineIndependent/glslang_tab.cpp" break; case 102: /* declaration: type_qualifier IDENTIFIER identifier_list SEMICOLON */ @@ -5539,13 +5623,13 @@ yyreduce: parseContext.addQualifierToExisting((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier, *(yyvsp[-1].interm.identifierList)); (yyval.interm.intermNode) = 0; } -#line 5543 "MachineIndependent/glslang_tab.cpp" +#line 5627 "MachineIndependent/glslang_tab.cpp" break; case 103: /* $@2: %empty */ #line 921 "MachineIndependent/glslang.y" { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); } -#line 5549 "MachineIndependent/glslang_tab.cpp" +#line 5633 "MachineIndependent/glslang_tab.cpp" break; case 104: /* block_structure: type_qualifier IDENTIFIER LEFT_BRACE $@2 struct_declaration_list RIGHT_BRACE */ @@ -5559,7 +5643,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[-5].interm.type).loc; (yyval.interm).typeList = (yyvsp[-1].interm.typeList); } -#line 5563 "MachineIndependent/glslang_tab.cpp" +#line 5647 "MachineIndependent/glslang_tab.cpp" break; case 105: /* identifier_list: COMMA IDENTIFIER */ @@ -5568,7 +5652,7 @@ yyreduce: (yyval.interm.identifierList) = new TIdentifierList; (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 5572 "MachineIndependent/glslang_tab.cpp" +#line 5656 "MachineIndependent/glslang_tab.cpp" break; case 106: /* identifier_list: identifier_list COMMA IDENTIFIER */ @@ -5577,7 +5661,7 @@ yyreduce: (yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList); (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 5581 "MachineIndependent/glslang_tab.cpp" +#line 5665 "MachineIndependent/glslang_tab.cpp" break; case 107: /* function_prototype: function_declarator RIGHT_PAREN */ @@ -5586,7 +5670,7 @@ yyreduce: (yyval.interm).function = (yyvsp[-1].interm.function); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 5590 "MachineIndependent/glslang_tab.cpp" +#line 5674 "MachineIndependent/glslang_tab.cpp" break; case 108: /* function_declarator: function_header */ @@ -5594,7 +5678,7 @@ yyreduce: { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 5598 "MachineIndependent/glslang_tab.cpp" +#line 5682 "MachineIndependent/glslang_tab.cpp" break; case 109: /* function_declarator: function_header_with_parameters */ @@ -5602,7 +5686,7 @@ yyreduce: { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 5606 "MachineIndependent/glslang_tab.cpp" +#line 5690 "MachineIndependent/glslang_tab.cpp" break; case 110: /* function_header_with_parameters: function_header parameter_declaration */ @@ -5615,7 +5699,7 @@ yyreduce: else delete (yyvsp[0].interm).param.type; } -#line 5619 "MachineIndependent/glslang_tab.cpp" +#line 5703 "MachineIndependent/glslang_tab.cpp" break; case 111: /* function_header_with_parameters: function_header_with_parameters COMMA parameter_declaration */ @@ -5637,7 +5721,7 @@ yyreduce: (yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param); } } -#line 5641 "MachineIndependent/glslang_tab.cpp" +#line 5725 "MachineIndependent/glslang_tab.cpp" break; case 112: /* function_header: fully_specified_type IDENTIFIER LEFT_PAREN */ @@ -5661,7 +5745,7 @@ yyreduce: function = new TFunction((yyvsp[-1].lex).string, type); (yyval.interm.function) = function; } -#line 5665 "MachineIndependent/glslang_tab.cpp" +#line 5749 "MachineIndependent/glslang_tab.cpp" break; case 113: /* parameter_declarator: type_specifier IDENTIFIER */ @@ -5681,7 +5765,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).param = param; } -#line 5685 "MachineIndependent/glslang_tab.cpp" +#line 5769 "MachineIndependent/glslang_tab.cpp" break; case 114: /* parameter_declarator: type_specifier IDENTIFIER array_specifier */ @@ -5705,7 +5789,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).param = param; } -#line 5709 "MachineIndependent/glslang_tab.cpp" +#line 5793 "MachineIndependent/glslang_tab.cpp" break; case 115: /* parameter_declaration: type_qualifier parameter_declarator */ @@ -5721,7 +5805,7 @@ yyreduce: parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 5725 "MachineIndependent/glslang_tab.cpp" +#line 5809 "MachineIndependent/glslang_tab.cpp" break; case 116: /* parameter_declaration: parameter_declarator */ @@ -5733,7 +5817,7 @@ yyreduce: parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); } -#line 5737 "MachineIndependent/glslang_tab.cpp" +#line 5821 "MachineIndependent/glslang_tab.cpp" break; case 117: /* parameter_declaration: type_qualifier parameter_type_specifier */ @@ -5748,7 +5832,7 @@ yyreduce: parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type); parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 5752 "MachineIndependent/glslang_tab.cpp" +#line 5836 "MachineIndependent/glslang_tab.cpp" break; case 118: /* parameter_declaration: parameter_type_specifier */ @@ -5760,7 +5844,7 @@ yyreduce: parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); } -#line 5764 "MachineIndependent/glslang_tab.cpp" +#line 5848 "MachineIndependent/glslang_tab.cpp" break; case 119: /* parameter_type_specifier: type_specifier */ @@ -5771,7 +5855,7 @@ yyreduce: if ((yyvsp[0].interm.type).arraySizes) parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes); } -#line 5775 "MachineIndependent/glslang_tab.cpp" +#line 5859 "MachineIndependent/glslang_tab.cpp" break; case 120: /* init_declarator_list: single_declaration */ @@ -5779,7 +5863,7 @@ yyreduce: { (yyval.interm) = (yyvsp[0].interm); } -#line 5783 "MachineIndependent/glslang_tab.cpp" +#line 5867 "MachineIndependent/glslang_tab.cpp" break; case 121: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER */ @@ -5788,7 +5872,7 @@ yyreduce: (yyval.interm) = (yyvsp[-2].interm); parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type); } -#line 5792 "MachineIndependent/glslang_tab.cpp" +#line 5876 "MachineIndependent/glslang_tab.cpp" break; case 122: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier */ @@ -5797,7 +5881,7 @@ yyreduce: (yyval.interm) = (yyvsp[-3].interm); parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes); } -#line 5801 "MachineIndependent/glslang_tab.cpp" +#line 5885 "MachineIndependent/glslang_tab.cpp" break; case 123: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier EQUAL initializer */ @@ -5807,7 +5891,7 @@ yyreduce: TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-5].interm).type, (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-5].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 5811 "MachineIndependent/glslang_tab.cpp" +#line 5895 "MachineIndependent/glslang_tab.cpp" break; case 124: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER EQUAL initializer */ @@ -5817,7 +5901,7 @@ yyreduce: TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 5821 "MachineIndependent/glslang_tab.cpp" +#line 5905 "MachineIndependent/glslang_tab.cpp" break; case 125: /* single_declaration: fully_specified_type */ @@ -5829,7 +5913,7 @@ yyreduce: parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type); } -#line 5833 "MachineIndependent/glslang_tab.cpp" +#line 5917 "MachineIndependent/glslang_tab.cpp" break; case 126: /* single_declaration: fully_specified_type IDENTIFIER */ @@ -5839,7 +5923,7 @@ yyreduce: (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type)); } -#line 5843 "MachineIndependent/glslang_tab.cpp" +#line 5927 "MachineIndependent/glslang_tab.cpp" break; case 127: /* single_declaration: fully_specified_type IDENTIFIER array_specifier */ @@ -5849,7 +5933,7 @@ yyreduce: (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes); } -#line 5853 "MachineIndependent/glslang_tab.cpp" +#line 5937 "MachineIndependent/glslang_tab.cpp" break; case 128: /* single_declaration: fully_specified_type IDENTIFIER array_specifier EQUAL initializer */ @@ -5859,7 +5943,7 @@ yyreduce: TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-4].interm.type), (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 5863 "MachineIndependent/glslang_tab.cpp" +#line 5947 "MachineIndependent/glslang_tab.cpp" break; case 129: /* single_declaration: fully_specified_type IDENTIFIER EQUAL initializer */ @@ -5869,7 +5953,7 @@ yyreduce: TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 5873 "MachineIndependent/glslang_tab.cpp" +#line 5957 "MachineIndependent/glslang_tab.cpp" break; case 130: /* fully_specified_type: type_specifier */ @@ -5884,7 +5968,7 @@ yyreduce: } parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier); } -#line 5888 "MachineIndependent/glslang_tab.cpp" +#line 5972 "MachineIndependent/glslang_tab.cpp" break; case 131: /* fully_specified_type: type_qualifier type_specifier */ @@ -5913,7 +5997,7 @@ yyreduce: (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn))) (yyval.interm.type).qualifier.smooth = true; } -#line 5917 "MachineIndependent/glslang_tab.cpp" +#line 6001 "MachineIndependent/glslang_tab.cpp" break; case 132: /* invariant_qualifier: INVARIANT */ @@ -5924,7 +6008,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.invariant = true; } -#line 5928 "MachineIndependent/glslang_tab.cpp" +#line 6012 "MachineIndependent/glslang_tab.cpp" break; case 133: /* interpolation_qualifier: SMOOTH */ @@ -5936,7 +6020,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.smooth = true; } -#line 5940 "MachineIndependent/glslang_tab.cpp" +#line 6024 "MachineIndependent/glslang_tab.cpp" break; case 134: /* interpolation_qualifier: FLAT */ @@ -5948,7 +6032,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.flat = true; } -#line 5952 "MachineIndependent/glslang_tab.cpp" +#line 6036 "MachineIndependent/glslang_tab.cpp" break; case 135: /* interpolation_qualifier: NOPERSPECTIVE */ @@ -5960,7 +6044,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nopersp = true; } -#line 5964 "MachineIndependent/glslang_tab.cpp" +#line 6048 "MachineIndependent/glslang_tab.cpp" break; case 136: /* interpolation_qualifier: EXPLICITINTERPAMD */ @@ -5972,7 +6056,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.explicitInterp = true; } -#line 5976 "MachineIndependent/glslang_tab.cpp" +#line 6060 "MachineIndependent/glslang_tab.cpp" break; case 137: /* interpolation_qualifier: PERVERTEXNV */ @@ -5985,7 +6069,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.pervertexNV = true; } -#line 5989 "MachineIndependent/glslang_tab.cpp" +#line 6073 "MachineIndependent/glslang_tab.cpp" break; case 138: /* interpolation_qualifier: PERPRIMITIVENV */ @@ -6000,7 +6084,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perPrimitiveNV = true; } -#line 6004 "MachineIndependent/glslang_tab.cpp" +#line 6088 "MachineIndependent/glslang_tab.cpp" break; case 139: /* interpolation_qualifier: PERVIEWNV */ @@ -6012,7 +6096,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perViewNV = true; } -#line 6016 "MachineIndependent/glslang_tab.cpp" +#line 6100 "MachineIndependent/glslang_tab.cpp" break; case 140: /* interpolation_qualifier: PERTASKNV */ @@ -6024,7 +6108,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perTaskNV = true; } -#line 6028 "MachineIndependent/glslang_tab.cpp" +#line 6112 "MachineIndependent/glslang_tab.cpp" break; case 141: /* layout_qualifier: LAYOUT LEFT_PAREN layout_qualifier_id_list RIGHT_PAREN */ @@ -6032,7 +6116,7 @@ yyreduce: { (yyval.interm.type) = (yyvsp[-1].interm.type); } -#line 6036 "MachineIndependent/glslang_tab.cpp" +#line 6120 "MachineIndependent/glslang_tab.cpp" break; case 142: /* layout_qualifier_id_list: layout_qualifier_id */ @@ -6040,7 +6124,7 @@ yyreduce: { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6044 "MachineIndependent/glslang_tab.cpp" +#line 6128 "MachineIndependent/glslang_tab.cpp" break; case 143: /* layout_qualifier_id_list: layout_qualifier_id_list COMMA layout_qualifier_id */ @@ -6050,7 +6134,7 @@ yyreduce: (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 6054 "MachineIndependent/glslang_tab.cpp" +#line 6138 "MachineIndependent/glslang_tab.cpp" break; case 144: /* layout_qualifier_id: IDENTIFIER */ @@ -6059,7 +6143,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string); } -#line 6063 "MachineIndependent/glslang_tab.cpp" +#line 6147 "MachineIndependent/glslang_tab.cpp" break; case 145: /* layout_qualifier_id: IDENTIFIER EQUAL constant_expression */ @@ -6068,7 +6152,7 @@ yyreduce: (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 6072 "MachineIndependent/glslang_tab.cpp" +#line 6156 "MachineIndependent/glslang_tab.cpp" break; case 146: /* layout_qualifier_id: SHARED */ @@ -6078,7 +6162,7 @@ yyreduce: TString strShared("shared"); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), strShared); } -#line 6082 "MachineIndependent/glslang_tab.cpp" +#line 6166 "MachineIndependent/glslang_tab.cpp" break; case 147: /* precise_qualifier: PRECISE */ @@ -6089,7 +6173,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.noContraction = true; } -#line 6093 "MachineIndependent/glslang_tab.cpp" +#line 6177 "MachineIndependent/glslang_tab.cpp" break; case 148: /* type_qualifier: single_type_qualifier */ @@ -6097,7 +6181,7 @@ yyreduce: { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6101 "MachineIndependent/glslang_tab.cpp" +#line 6185 "MachineIndependent/glslang_tab.cpp" break; case 149: /* type_qualifier: type_qualifier single_type_qualifier */ @@ -6110,7 +6194,7 @@ 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 6114 "MachineIndependent/glslang_tab.cpp" +#line 6198 "MachineIndependent/glslang_tab.cpp" break; case 150: /* single_type_qualifier: storage_qualifier */ @@ -6118,7 +6202,7 @@ yyreduce: { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6122 "MachineIndependent/glslang_tab.cpp" +#line 6206 "MachineIndependent/glslang_tab.cpp" break; case 151: /* single_type_qualifier: layout_qualifier */ @@ -6126,7 +6210,7 @@ yyreduce: { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6130 "MachineIndependent/glslang_tab.cpp" +#line 6214 "MachineIndependent/glslang_tab.cpp" break; case 152: /* single_type_qualifier: precision_qualifier */ @@ -6135,7 +6219,7 @@ yyreduce: parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6139 "MachineIndependent/glslang_tab.cpp" +#line 6223 "MachineIndependent/glslang_tab.cpp" break; case 153: /* single_type_qualifier: interpolation_qualifier */ @@ -6144,7 +6228,7 @@ yyreduce: // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6148 "MachineIndependent/glslang_tab.cpp" +#line 6232 "MachineIndependent/glslang_tab.cpp" break; case 154: /* single_type_qualifier: invariant_qualifier */ @@ -6153,7 +6237,7 @@ yyreduce: // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6157 "MachineIndependent/glslang_tab.cpp" +#line 6241 "MachineIndependent/glslang_tab.cpp" break; case 155: /* single_type_qualifier: precise_qualifier */ @@ -6162,7 +6246,7 @@ yyreduce: // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6166 "MachineIndependent/glslang_tab.cpp" +#line 6250 "MachineIndependent/glslang_tab.cpp" break; case 156: /* single_type_qualifier: non_uniform_qualifier */ @@ -6170,7 +6254,7 @@ yyreduce: { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6174 "MachineIndependent/glslang_tab.cpp" +#line 6258 "MachineIndependent/glslang_tab.cpp" break; case 157: /* storage_qualifier: CONST */ @@ -6179,7 +6263,7 @@ yyreduce: (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 6183 "MachineIndependent/glslang_tab.cpp" +#line 6267 "MachineIndependent/glslang_tab.cpp" break; case 158: /* storage_qualifier: INOUT */ @@ -6189,7 +6273,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqInOut; } -#line 6193 "MachineIndependent/glslang_tab.cpp" +#line 6277 "MachineIndependent/glslang_tab.cpp" break; case 159: /* storage_qualifier: IN */ @@ -6200,7 +6284,7 @@ yyreduce: // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqIn; } -#line 6204 "MachineIndependent/glslang_tab.cpp" +#line 6288 "MachineIndependent/glslang_tab.cpp" break; case 160: /* storage_qualifier: OUT */ @@ -6211,7 +6295,7 @@ yyreduce: // whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqOut; } -#line 6215 "MachineIndependent/glslang_tab.cpp" +#line 6299 "MachineIndependent/glslang_tab.cpp" break; case 161: /* storage_qualifier: CENTROID */ @@ -6223,7 +6307,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.centroid = true; } -#line 6227 "MachineIndependent/glslang_tab.cpp" +#line 6311 "MachineIndependent/glslang_tab.cpp" break; case 162: /* storage_qualifier: UNIFORM */ @@ -6233,7 +6317,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqUniform; } -#line 6237 "MachineIndependent/glslang_tab.cpp" +#line 6321 "MachineIndependent/glslang_tab.cpp" break; case 163: /* storage_qualifier: SHARED */ @@ -6246,7 +6330,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqShared; } -#line 6250 "MachineIndependent/glslang_tab.cpp" +#line 6334 "MachineIndependent/glslang_tab.cpp" break; case 164: /* storage_qualifier: BUFFER */ @@ -6256,7 +6340,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqBuffer; } -#line 6260 "MachineIndependent/glslang_tab.cpp" +#line 6344 "MachineIndependent/glslang_tab.cpp" break; case 165: /* storage_qualifier: ATTRIBUTE */ @@ -6273,7 +6357,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 6277 "MachineIndependent/glslang_tab.cpp" +#line 6361 "MachineIndependent/glslang_tab.cpp" break; case 166: /* storage_qualifier: VARYING */ @@ -6292,7 +6376,7 @@ yyreduce: else (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 6296 "MachineIndependent/glslang_tab.cpp" +#line 6380 "MachineIndependent/glslang_tab.cpp" break; case 167: /* storage_qualifier: PATCH */ @@ -6303,7 +6387,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.patch = true; } -#line 6307 "MachineIndependent/glslang_tab.cpp" +#line 6391 "MachineIndependent/glslang_tab.cpp" break; case 168: /* storage_qualifier: SAMPLE */ @@ -6313,7 +6397,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.sample = true; } -#line 6317 "MachineIndependent/glslang_tab.cpp" +#line 6401 "MachineIndependent/glslang_tab.cpp" break; case 169: /* storage_qualifier: HITATTRNV */ @@ -6326,7 +6410,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 6330 "MachineIndependent/glslang_tab.cpp" +#line 6414 "MachineIndependent/glslang_tab.cpp" break; case 170: /* storage_qualifier: HITATTREXT */ @@ -6339,7 +6423,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 6343 "MachineIndependent/glslang_tab.cpp" +#line 6427 "MachineIndependent/glslang_tab.cpp" break; case 171: /* storage_qualifier: PAYLOADNV */ @@ -6352,7 +6436,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 6356 "MachineIndependent/glslang_tab.cpp" +#line 6440 "MachineIndependent/glslang_tab.cpp" break; case 172: /* storage_qualifier: PAYLOADEXT */ @@ -6365,7 +6449,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 6369 "MachineIndependent/glslang_tab.cpp" +#line 6453 "MachineIndependent/glslang_tab.cpp" break; case 173: /* storage_qualifier: PAYLOADINNV */ @@ -6378,7 +6462,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 6382 "MachineIndependent/glslang_tab.cpp" +#line 6466 "MachineIndependent/glslang_tab.cpp" break; case 174: /* storage_qualifier: PAYLOADINEXT */ @@ -6391,7 +6475,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 6395 "MachineIndependent/glslang_tab.cpp" +#line 6479 "MachineIndependent/glslang_tab.cpp" break; case 175: /* storage_qualifier: CALLDATANV */ @@ -6404,7 +6488,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 6408 "MachineIndependent/glslang_tab.cpp" +#line 6492 "MachineIndependent/glslang_tab.cpp" break; case 176: /* storage_qualifier: CALLDATAEXT */ @@ -6417,7 +6501,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 6421 "MachineIndependent/glslang_tab.cpp" +#line 6505 "MachineIndependent/glslang_tab.cpp" break; case 177: /* storage_qualifier: CALLDATAINNV */ @@ -6429,7 +6513,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 6433 "MachineIndependent/glslang_tab.cpp" +#line 6517 "MachineIndependent/glslang_tab.cpp" break; case 178: /* storage_qualifier: CALLDATAINEXT */ @@ -6441,7 +6525,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 6445 "MachineIndependent/glslang_tab.cpp" +#line 6529 "MachineIndependent/glslang_tab.cpp" break; case 179: /* storage_qualifier: COHERENT */ @@ -6450,7 +6534,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.coherent = true; } -#line 6454 "MachineIndependent/glslang_tab.cpp" +#line 6538 "MachineIndependent/glslang_tab.cpp" break; case 180: /* storage_qualifier: DEVICECOHERENT */ @@ -6460,7 +6544,7 @@ yyreduce: parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "devicecoherent"); (yyval.interm.type).qualifier.devicecoherent = true; } -#line 6464 "MachineIndependent/glslang_tab.cpp" +#line 6548 "MachineIndependent/glslang_tab.cpp" break; case 181: /* storage_qualifier: QUEUEFAMILYCOHERENT */ @@ -6470,7 +6554,7 @@ yyreduce: parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "queuefamilycoherent"); (yyval.interm.type).qualifier.queuefamilycoherent = true; } -#line 6474 "MachineIndependent/glslang_tab.cpp" +#line 6558 "MachineIndependent/glslang_tab.cpp" break; case 182: /* storage_qualifier: WORKGROUPCOHERENT */ @@ -6480,7 +6564,7 @@ yyreduce: parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "workgroupcoherent"); (yyval.interm.type).qualifier.workgroupcoherent = true; } -#line 6484 "MachineIndependent/glslang_tab.cpp" +#line 6568 "MachineIndependent/glslang_tab.cpp" break; case 183: /* storage_qualifier: SUBGROUPCOHERENT */ @@ -6490,7 +6574,7 @@ yyreduce: parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "subgroupcoherent"); (yyval.interm.type).qualifier.subgroupcoherent = true; } -#line 6494 "MachineIndependent/glslang_tab.cpp" +#line 6578 "MachineIndependent/glslang_tab.cpp" break; case 184: /* storage_qualifier: NONPRIVATE */ @@ -6500,7 +6584,7 @@ yyreduce: parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "nonprivate"); (yyval.interm.type).qualifier.nonprivate = true; } -#line 6504 "MachineIndependent/glslang_tab.cpp" +#line 6588 "MachineIndependent/glslang_tab.cpp" break; case 185: /* storage_qualifier: SHADERCALLCOHERENT */ @@ -6510,7 +6594,7 @@ yyreduce: parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_ray_tracing, "shadercallcoherent"); (yyval.interm.type).qualifier.shadercallcoherent = true; } -#line 6514 "MachineIndependent/glslang_tab.cpp" +#line 6598 "MachineIndependent/glslang_tab.cpp" break; case 186: /* storage_qualifier: VOLATILE */ @@ -6519,7 +6603,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.volatil = true; } -#line 6523 "MachineIndependent/glslang_tab.cpp" +#line 6607 "MachineIndependent/glslang_tab.cpp" break; case 187: /* storage_qualifier: RESTRICT */ @@ -6528,7 +6612,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.restrict = true; } -#line 6532 "MachineIndependent/glslang_tab.cpp" +#line 6616 "MachineIndependent/glslang_tab.cpp" break; case 188: /* storage_qualifier: READONLY */ @@ -6537,7 +6621,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.readonly = true; } -#line 6541 "MachineIndependent/glslang_tab.cpp" +#line 6625 "MachineIndependent/glslang_tab.cpp" break; case 189: /* storage_qualifier: WRITEONLY */ @@ -6546,7 +6630,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.writeonly = true; } -#line 6550 "MachineIndependent/glslang_tab.cpp" +#line 6634 "MachineIndependent/glslang_tab.cpp" break; case 190: /* storage_qualifier: SUBROUTINE */ @@ -6557,7 +6641,7 @@ yyreduce: parseContext.unimplemented((yyvsp[0].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[0].lex).loc); } -#line 6561 "MachineIndependent/glslang_tab.cpp" +#line 6645 "MachineIndependent/glslang_tab.cpp" break; case 191: /* storage_qualifier: SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN */ @@ -6568,7 +6652,7 @@ yyreduce: parseContext.unimplemented((yyvsp[-3].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[-3].lex).loc); } -#line 6572 "MachineIndependent/glslang_tab.cpp" +#line 6656 "MachineIndependent/glslang_tab.cpp" break; case 192: /* non_uniform_qualifier: NONUNIFORM */ @@ -6577,7 +6661,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nonUniform = true; } -#line 6581 "MachineIndependent/glslang_tab.cpp" +#line 6665 "MachineIndependent/glslang_tab.cpp" break; case 193: /* type_name_list: IDENTIFIER */ @@ -6585,7 +6669,7 @@ yyreduce: { // TODO } -#line 6589 "MachineIndependent/glslang_tab.cpp" +#line 6673 "MachineIndependent/glslang_tab.cpp" break; case 194: /* type_name_list: type_name_list COMMA IDENTIFIER */ @@ -6595,7 +6679,7 @@ yyreduce: // 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 6599 "MachineIndependent/glslang_tab.cpp" +#line 6683 "MachineIndependent/glslang_tab.cpp" break; case 195: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt */ @@ -6605,7 +6689,7 @@ yyreduce: (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); (yyval.interm.type).typeParameters = (yyvsp[0].interm.typeParameters); } -#line 6609 "MachineIndependent/glslang_tab.cpp" +#line 6693 "MachineIndependent/glslang_tab.cpp" break; case 196: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt array_specifier */ @@ -6617,7 +6701,7 @@ yyreduce: (yyval.interm.type).typeParameters = (yyvsp[-1].interm.typeParameters); (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes; } -#line 6621 "MachineIndependent/glslang_tab.cpp" +#line 6705 "MachineIndependent/glslang_tab.cpp" break; case 197: /* array_specifier: LEFT_BRACKET RIGHT_BRACKET */ @@ -6627,7 +6711,7 @@ yyreduce: (yyval.interm).arraySizes = new TArraySizes; (yyval.interm).arraySizes->addInnerSize(); } -#line 6631 "MachineIndependent/glslang_tab.cpp" +#line 6715 "MachineIndependent/glslang_tab.cpp" break; case 198: /* array_specifier: LEFT_BRACKET conditional_expression RIGHT_BRACKET */ @@ -6640,7 +6724,7 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 6644 "MachineIndependent/glslang_tab.cpp" +#line 6728 "MachineIndependent/glslang_tab.cpp" break; case 199: /* array_specifier: array_specifier LEFT_BRACKET RIGHT_BRACKET */ @@ -6649,7 +6733,7 @@ yyreduce: (yyval.interm) = (yyvsp[-2].interm); (yyval.interm).arraySizes->addInnerSize(); } -#line 6653 "MachineIndependent/glslang_tab.cpp" +#line 6737 "MachineIndependent/glslang_tab.cpp" break; case 200: /* array_specifier: array_specifier LEFT_BRACKET conditional_expression RIGHT_BRACKET */ @@ -6661,7 +6745,7 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 6665 "MachineIndependent/glslang_tab.cpp" +#line 6749 "MachineIndependent/glslang_tab.cpp" break; case 201: /* type_parameter_specifier_opt: type_parameter_specifier */ @@ -6669,7 +6753,7 @@ yyreduce: { (yyval.interm.typeParameters) = (yyvsp[0].interm.typeParameters); } -#line 6673 "MachineIndependent/glslang_tab.cpp" +#line 6757 "MachineIndependent/glslang_tab.cpp" break; case 202: /* type_parameter_specifier_opt: %empty */ @@ -6677,7 +6761,7 @@ yyreduce: { (yyval.interm.typeParameters) = 0; } -#line 6681 "MachineIndependent/glslang_tab.cpp" +#line 6765 "MachineIndependent/glslang_tab.cpp" break; case 203: /* type_parameter_specifier: LEFT_ANGLE type_parameter_specifier_list RIGHT_ANGLE */ @@ -6685,7 +6769,7 @@ yyreduce: { (yyval.interm.typeParameters) = (yyvsp[-1].interm.typeParameters); } -#line 6689 "MachineIndependent/glslang_tab.cpp" +#line 6773 "MachineIndependent/glslang_tab.cpp" break; case 204: /* type_parameter_specifier_list: unary_expression */ @@ -6697,7 +6781,7 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); (yyval.interm.typeParameters)->addInnerSize(size); } -#line 6701 "MachineIndependent/glslang_tab.cpp" +#line 6785 "MachineIndependent/glslang_tab.cpp" break; case 205: /* type_parameter_specifier_list: type_parameter_specifier_list COMMA unary_expression */ @@ -6709,7 +6793,7 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); (yyval.interm.typeParameters)->addInnerSize(size); } -#line 6713 "MachineIndependent/glslang_tab.cpp" +#line 6797 "MachineIndependent/glslang_tab.cpp" break; case 206: /* type_specifier_nonarray: VOID */ @@ -6718,7 +6802,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtVoid; } -#line 6722 "MachineIndependent/glslang_tab.cpp" +#line 6806 "MachineIndependent/glslang_tab.cpp" break; case 207: /* type_specifier_nonarray: FLOAT */ @@ -6727,7 +6811,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 6731 "MachineIndependent/glslang_tab.cpp" +#line 6815 "MachineIndependent/glslang_tab.cpp" break; case 208: /* type_specifier_nonarray: INT */ @@ -6736,7 +6820,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 6740 "MachineIndependent/glslang_tab.cpp" +#line 6824 "MachineIndependent/glslang_tab.cpp" break; case 209: /* type_specifier_nonarray: UINT */ @@ -6746,7 +6830,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 6750 "MachineIndependent/glslang_tab.cpp" +#line 6834 "MachineIndependent/glslang_tab.cpp" break; case 210: /* type_specifier_nonarray: BOOL */ @@ -6755,7 +6839,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; } -#line 6759 "MachineIndependent/glslang_tab.cpp" +#line 6843 "MachineIndependent/glslang_tab.cpp" break; case 211: /* type_specifier_nonarray: VEC2 */ @@ -6765,7 +6849,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 6769 "MachineIndependent/glslang_tab.cpp" +#line 6853 "MachineIndependent/glslang_tab.cpp" break; case 212: /* type_specifier_nonarray: VEC3 */ @@ -6775,7 +6859,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 6779 "MachineIndependent/glslang_tab.cpp" +#line 6863 "MachineIndependent/glslang_tab.cpp" break; case 213: /* type_specifier_nonarray: VEC4 */ @@ -6785,7 +6869,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 6789 "MachineIndependent/glslang_tab.cpp" +#line 6873 "MachineIndependent/glslang_tab.cpp" break; case 214: /* type_specifier_nonarray: BVEC2 */ @@ -6795,7 +6879,7 @@ yyreduce: (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(2); } -#line 6799 "MachineIndependent/glslang_tab.cpp" +#line 6883 "MachineIndependent/glslang_tab.cpp" break; case 215: /* type_specifier_nonarray: BVEC3 */ @@ -6805,7 +6889,7 @@ yyreduce: (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(3); } -#line 6809 "MachineIndependent/glslang_tab.cpp" +#line 6893 "MachineIndependent/glslang_tab.cpp" break; case 216: /* type_specifier_nonarray: BVEC4 */ @@ -6815,7 +6899,7 @@ yyreduce: (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(4); } -#line 6819 "MachineIndependent/glslang_tab.cpp" +#line 6903 "MachineIndependent/glslang_tab.cpp" break; case 217: /* type_specifier_nonarray: IVEC2 */ @@ -6825,7 +6909,7 @@ yyreduce: (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 6829 "MachineIndependent/glslang_tab.cpp" +#line 6913 "MachineIndependent/glslang_tab.cpp" break; case 218: /* type_specifier_nonarray: IVEC3 */ @@ -6835,7 +6919,7 @@ yyreduce: (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 6839 "MachineIndependent/glslang_tab.cpp" +#line 6923 "MachineIndependent/glslang_tab.cpp" break; case 219: /* type_specifier_nonarray: IVEC4 */ @@ -6845,7 +6929,7 @@ yyreduce: (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 6849 "MachineIndependent/glslang_tab.cpp" +#line 6933 "MachineIndependent/glslang_tab.cpp" break; case 220: /* type_specifier_nonarray: UVEC2 */ @@ -6856,7 +6940,7 @@ yyreduce: (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 6860 "MachineIndependent/glslang_tab.cpp" +#line 6944 "MachineIndependent/glslang_tab.cpp" break; case 221: /* type_specifier_nonarray: UVEC3 */ @@ -6867,7 +6951,7 @@ yyreduce: (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 6871 "MachineIndependent/glslang_tab.cpp" +#line 6955 "MachineIndependent/glslang_tab.cpp" break; case 222: /* type_specifier_nonarray: UVEC4 */ @@ -6878,7 +6962,7 @@ yyreduce: (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 6882 "MachineIndependent/glslang_tab.cpp" +#line 6966 "MachineIndependent/glslang_tab.cpp" break; case 223: /* type_specifier_nonarray: MAT2 */ @@ -6888,7 +6972,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 6892 "MachineIndependent/glslang_tab.cpp" +#line 6976 "MachineIndependent/glslang_tab.cpp" break; case 224: /* type_specifier_nonarray: MAT3 */ @@ -6898,7 +6982,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 6902 "MachineIndependent/glslang_tab.cpp" +#line 6986 "MachineIndependent/glslang_tab.cpp" break; case 225: /* type_specifier_nonarray: MAT4 */ @@ -6908,7 +6992,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 6912 "MachineIndependent/glslang_tab.cpp" +#line 6996 "MachineIndependent/glslang_tab.cpp" break; case 226: /* type_specifier_nonarray: MAT2X2 */ @@ -6918,7 +7002,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 6922 "MachineIndependent/glslang_tab.cpp" +#line 7006 "MachineIndependent/glslang_tab.cpp" break; case 227: /* type_specifier_nonarray: MAT2X3 */ @@ -6928,7 +7012,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 6932 "MachineIndependent/glslang_tab.cpp" +#line 7016 "MachineIndependent/glslang_tab.cpp" break; case 228: /* type_specifier_nonarray: MAT2X4 */ @@ -6938,7 +7022,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 6942 "MachineIndependent/glslang_tab.cpp" +#line 7026 "MachineIndependent/glslang_tab.cpp" break; case 229: /* type_specifier_nonarray: MAT3X2 */ @@ -6948,7 +7032,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 6952 "MachineIndependent/glslang_tab.cpp" +#line 7036 "MachineIndependent/glslang_tab.cpp" break; case 230: /* type_specifier_nonarray: MAT3X3 */ @@ -6958,7 +7042,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 6962 "MachineIndependent/glslang_tab.cpp" +#line 7046 "MachineIndependent/glslang_tab.cpp" break; case 231: /* type_specifier_nonarray: MAT3X4 */ @@ -6968,7 +7052,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 6972 "MachineIndependent/glslang_tab.cpp" +#line 7056 "MachineIndependent/glslang_tab.cpp" break; case 232: /* type_specifier_nonarray: MAT4X2 */ @@ -6978,7 +7062,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 6982 "MachineIndependent/glslang_tab.cpp" +#line 7066 "MachineIndependent/glslang_tab.cpp" break; case 233: /* type_specifier_nonarray: MAT4X3 */ @@ -6988,7 +7072,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 6992 "MachineIndependent/glslang_tab.cpp" +#line 7076 "MachineIndependent/glslang_tab.cpp" break; case 234: /* type_specifier_nonarray: MAT4X4 */ @@ -6998,7 +7082,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7002 "MachineIndependent/glslang_tab.cpp" +#line 7086 "MachineIndependent/glslang_tab.cpp" break; case 235: /* type_specifier_nonarray: DOUBLE */ @@ -7010,7 +7094,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 7014 "MachineIndependent/glslang_tab.cpp" +#line 7098 "MachineIndependent/glslang_tab.cpp" break; case 236: /* type_specifier_nonarray: FLOAT16_T */ @@ -7020,7 +7104,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; } -#line 7024 "MachineIndependent/glslang_tab.cpp" +#line 7108 "MachineIndependent/glslang_tab.cpp" break; case 237: /* type_specifier_nonarray: FLOAT32_T */ @@ -7030,7 +7114,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 7034 "MachineIndependent/glslang_tab.cpp" +#line 7118 "MachineIndependent/glslang_tab.cpp" break; case 238: /* type_specifier_nonarray: FLOAT64_T */ @@ -7040,7 +7124,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 7044 "MachineIndependent/glslang_tab.cpp" +#line 7128 "MachineIndependent/glslang_tab.cpp" break; case 239: /* type_specifier_nonarray: INT8_T */ @@ -7050,7 +7134,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; } -#line 7054 "MachineIndependent/glslang_tab.cpp" +#line 7138 "MachineIndependent/glslang_tab.cpp" break; case 240: /* type_specifier_nonarray: UINT8_T */ @@ -7060,7 +7144,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; } -#line 7064 "MachineIndependent/glslang_tab.cpp" +#line 7148 "MachineIndependent/glslang_tab.cpp" break; case 241: /* type_specifier_nonarray: INT16_T */ @@ -7070,7 +7154,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; } -#line 7074 "MachineIndependent/glslang_tab.cpp" +#line 7158 "MachineIndependent/glslang_tab.cpp" break; case 242: /* type_specifier_nonarray: UINT16_T */ @@ -7080,7 +7164,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; } -#line 7084 "MachineIndependent/glslang_tab.cpp" +#line 7168 "MachineIndependent/glslang_tab.cpp" break; case 243: /* type_specifier_nonarray: INT32_T */ @@ -7090,7 +7174,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 7094 "MachineIndependent/glslang_tab.cpp" +#line 7178 "MachineIndependent/glslang_tab.cpp" break; case 244: /* type_specifier_nonarray: UINT32_T */ @@ -7100,7 +7184,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 7104 "MachineIndependent/glslang_tab.cpp" +#line 7188 "MachineIndependent/glslang_tab.cpp" break; case 245: /* type_specifier_nonarray: INT64_T */ @@ -7110,7 +7194,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; } -#line 7114 "MachineIndependent/glslang_tab.cpp" +#line 7198 "MachineIndependent/glslang_tab.cpp" break; case 246: /* type_specifier_nonarray: UINT64_T */ @@ -7120,7 +7204,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; } -#line 7124 "MachineIndependent/glslang_tab.cpp" +#line 7208 "MachineIndependent/glslang_tab.cpp" break; case 247: /* type_specifier_nonarray: DVEC2 */ @@ -7133,7 +7217,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 7137 "MachineIndependent/glslang_tab.cpp" +#line 7221 "MachineIndependent/glslang_tab.cpp" break; case 248: /* type_specifier_nonarray: DVEC3 */ @@ -7146,7 +7230,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 7150 "MachineIndependent/glslang_tab.cpp" +#line 7234 "MachineIndependent/glslang_tab.cpp" break; case 249: /* type_specifier_nonarray: DVEC4 */ @@ -7159,7 +7243,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 7163 "MachineIndependent/glslang_tab.cpp" +#line 7247 "MachineIndependent/glslang_tab.cpp" break; case 250: /* type_specifier_nonarray: F16VEC2 */ @@ -7170,7 +7254,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(2); } -#line 7174 "MachineIndependent/glslang_tab.cpp" +#line 7258 "MachineIndependent/glslang_tab.cpp" break; case 251: /* type_specifier_nonarray: F16VEC3 */ @@ -7181,7 +7265,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(3); } -#line 7185 "MachineIndependent/glslang_tab.cpp" +#line 7269 "MachineIndependent/glslang_tab.cpp" break; case 252: /* type_specifier_nonarray: F16VEC4 */ @@ -7192,7 +7276,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(4); } -#line 7196 "MachineIndependent/glslang_tab.cpp" +#line 7280 "MachineIndependent/glslang_tab.cpp" break; case 253: /* type_specifier_nonarray: F32VEC2 */ @@ -7203,7 +7287,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 7207 "MachineIndependent/glslang_tab.cpp" +#line 7291 "MachineIndependent/glslang_tab.cpp" break; case 254: /* type_specifier_nonarray: F32VEC3 */ @@ -7214,7 +7298,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 7218 "MachineIndependent/glslang_tab.cpp" +#line 7302 "MachineIndependent/glslang_tab.cpp" break; case 255: /* type_specifier_nonarray: F32VEC4 */ @@ -7225,7 +7309,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 7229 "MachineIndependent/glslang_tab.cpp" +#line 7313 "MachineIndependent/glslang_tab.cpp" break; case 256: /* type_specifier_nonarray: F64VEC2 */ @@ -7236,7 +7320,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 7240 "MachineIndependent/glslang_tab.cpp" +#line 7324 "MachineIndependent/glslang_tab.cpp" break; case 257: /* type_specifier_nonarray: F64VEC3 */ @@ -7247,7 +7331,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 7251 "MachineIndependent/glslang_tab.cpp" +#line 7335 "MachineIndependent/glslang_tab.cpp" break; case 258: /* type_specifier_nonarray: F64VEC4 */ @@ -7258,7 +7342,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 7262 "MachineIndependent/glslang_tab.cpp" +#line 7346 "MachineIndependent/glslang_tab.cpp" break; case 259: /* type_specifier_nonarray: I8VEC2 */ @@ -7269,7 +7353,7 @@ yyreduce: (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(2); } -#line 7273 "MachineIndependent/glslang_tab.cpp" +#line 7357 "MachineIndependent/glslang_tab.cpp" break; case 260: /* type_specifier_nonarray: I8VEC3 */ @@ -7280,7 +7364,7 @@ yyreduce: (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(3); } -#line 7284 "MachineIndependent/glslang_tab.cpp" +#line 7368 "MachineIndependent/glslang_tab.cpp" break; case 261: /* type_specifier_nonarray: I8VEC4 */ @@ -7291,7 +7375,7 @@ yyreduce: (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(4); } -#line 7295 "MachineIndependent/glslang_tab.cpp" +#line 7379 "MachineIndependent/glslang_tab.cpp" break; case 262: /* type_specifier_nonarray: I16VEC2 */ @@ -7302,7 +7386,7 @@ yyreduce: (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(2); } -#line 7306 "MachineIndependent/glslang_tab.cpp" +#line 7390 "MachineIndependent/glslang_tab.cpp" break; case 263: /* type_specifier_nonarray: I16VEC3 */ @@ -7313,7 +7397,7 @@ yyreduce: (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(3); } -#line 7317 "MachineIndependent/glslang_tab.cpp" +#line 7401 "MachineIndependent/glslang_tab.cpp" break; case 264: /* type_specifier_nonarray: I16VEC4 */ @@ -7324,7 +7408,7 @@ yyreduce: (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(4); } -#line 7328 "MachineIndependent/glslang_tab.cpp" +#line 7412 "MachineIndependent/glslang_tab.cpp" break; case 265: /* type_specifier_nonarray: I32VEC2 */ @@ -7335,7 +7419,7 @@ yyreduce: (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 7339 "MachineIndependent/glslang_tab.cpp" +#line 7423 "MachineIndependent/glslang_tab.cpp" break; case 266: /* type_specifier_nonarray: I32VEC3 */ @@ -7346,7 +7430,7 @@ yyreduce: (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 7350 "MachineIndependent/glslang_tab.cpp" +#line 7434 "MachineIndependent/glslang_tab.cpp" break; case 267: /* type_specifier_nonarray: I32VEC4 */ @@ -7357,7 +7441,7 @@ yyreduce: (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 7361 "MachineIndependent/glslang_tab.cpp" +#line 7445 "MachineIndependent/glslang_tab.cpp" break; case 268: /* type_specifier_nonarray: I64VEC2 */ @@ -7368,7 +7452,7 @@ yyreduce: (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(2); } -#line 7372 "MachineIndependent/glslang_tab.cpp" +#line 7456 "MachineIndependent/glslang_tab.cpp" break; case 269: /* type_specifier_nonarray: I64VEC3 */ @@ -7379,7 +7463,7 @@ yyreduce: (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(3); } -#line 7383 "MachineIndependent/glslang_tab.cpp" +#line 7467 "MachineIndependent/glslang_tab.cpp" break; case 270: /* type_specifier_nonarray: I64VEC4 */ @@ -7390,7 +7474,7 @@ yyreduce: (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(4); } -#line 7394 "MachineIndependent/glslang_tab.cpp" +#line 7478 "MachineIndependent/glslang_tab.cpp" break; case 271: /* type_specifier_nonarray: U8VEC2 */ @@ -7401,7 +7485,7 @@ yyreduce: (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(2); } -#line 7405 "MachineIndependent/glslang_tab.cpp" +#line 7489 "MachineIndependent/glslang_tab.cpp" break; case 272: /* type_specifier_nonarray: U8VEC3 */ @@ -7412,7 +7496,7 @@ yyreduce: (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(3); } -#line 7416 "MachineIndependent/glslang_tab.cpp" +#line 7500 "MachineIndependent/glslang_tab.cpp" break; case 273: /* type_specifier_nonarray: U8VEC4 */ @@ -7423,7 +7507,7 @@ yyreduce: (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(4); } -#line 7427 "MachineIndependent/glslang_tab.cpp" +#line 7511 "MachineIndependent/glslang_tab.cpp" break; case 274: /* type_specifier_nonarray: U16VEC2 */ @@ -7434,7 +7518,7 @@ yyreduce: (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(2); } -#line 7438 "MachineIndependent/glslang_tab.cpp" +#line 7522 "MachineIndependent/glslang_tab.cpp" break; case 275: /* type_specifier_nonarray: U16VEC3 */ @@ -7445,7 +7529,7 @@ yyreduce: (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(3); } -#line 7449 "MachineIndependent/glslang_tab.cpp" +#line 7533 "MachineIndependent/glslang_tab.cpp" break; case 276: /* type_specifier_nonarray: U16VEC4 */ @@ -7456,7 +7540,7 @@ yyreduce: (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(4); } -#line 7460 "MachineIndependent/glslang_tab.cpp" +#line 7544 "MachineIndependent/glslang_tab.cpp" break; case 277: /* type_specifier_nonarray: U32VEC2 */ @@ -7467,7 +7551,7 @@ yyreduce: (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 7471 "MachineIndependent/glslang_tab.cpp" +#line 7555 "MachineIndependent/glslang_tab.cpp" break; case 278: /* type_specifier_nonarray: U32VEC3 */ @@ -7478,7 +7562,7 @@ yyreduce: (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 7482 "MachineIndependent/glslang_tab.cpp" +#line 7566 "MachineIndependent/glslang_tab.cpp" break; case 279: /* type_specifier_nonarray: U32VEC4 */ @@ -7489,7 +7573,7 @@ yyreduce: (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 7493 "MachineIndependent/glslang_tab.cpp" +#line 7577 "MachineIndependent/glslang_tab.cpp" break; case 280: /* type_specifier_nonarray: U64VEC2 */ @@ -7500,7 +7584,7 @@ yyreduce: (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(2); } -#line 7504 "MachineIndependent/glslang_tab.cpp" +#line 7588 "MachineIndependent/glslang_tab.cpp" break; case 281: /* type_specifier_nonarray: U64VEC3 */ @@ -7511,7 +7595,7 @@ yyreduce: (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(3); } -#line 7515 "MachineIndependent/glslang_tab.cpp" +#line 7599 "MachineIndependent/glslang_tab.cpp" break; case 282: /* type_specifier_nonarray: U64VEC4 */ @@ -7522,7 +7606,7 @@ yyreduce: (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(4); } -#line 7526 "MachineIndependent/glslang_tab.cpp" +#line 7610 "MachineIndependent/glslang_tab.cpp" break; case 283: /* type_specifier_nonarray: DMAT2 */ @@ -7535,7 +7619,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 7539 "MachineIndependent/glslang_tab.cpp" +#line 7623 "MachineIndependent/glslang_tab.cpp" break; case 284: /* type_specifier_nonarray: DMAT3 */ @@ -7548,7 +7632,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 7552 "MachineIndependent/glslang_tab.cpp" +#line 7636 "MachineIndependent/glslang_tab.cpp" break; case 285: /* type_specifier_nonarray: DMAT4 */ @@ -7561,7 +7645,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 7565 "MachineIndependent/glslang_tab.cpp" +#line 7649 "MachineIndependent/glslang_tab.cpp" break; case 286: /* type_specifier_nonarray: DMAT2X2 */ @@ -7574,7 +7658,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 7578 "MachineIndependent/glslang_tab.cpp" +#line 7662 "MachineIndependent/glslang_tab.cpp" break; case 287: /* type_specifier_nonarray: DMAT2X3 */ @@ -7587,7 +7671,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 7591 "MachineIndependent/glslang_tab.cpp" +#line 7675 "MachineIndependent/glslang_tab.cpp" break; case 288: /* type_specifier_nonarray: DMAT2X4 */ @@ -7600,7 +7684,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 7604 "MachineIndependent/glslang_tab.cpp" +#line 7688 "MachineIndependent/glslang_tab.cpp" break; case 289: /* type_specifier_nonarray: DMAT3X2 */ @@ -7613,7 +7697,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 7617 "MachineIndependent/glslang_tab.cpp" +#line 7701 "MachineIndependent/glslang_tab.cpp" break; case 290: /* type_specifier_nonarray: DMAT3X3 */ @@ -7626,7 +7710,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 7630 "MachineIndependent/glslang_tab.cpp" +#line 7714 "MachineIndependent/glslang_tab.cpp" break; case 291: /* type_specifier_nonarray: DMAT3X4 */ @@ -7639,7 +7723,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 7643 "MachineIndependent/glslang_tab.cpp" +#line 7727 "MachineIndependent/glslang_tab.cpp" break; case 292: /* type_specifier_nonarray: DMAT4X2 */ @@ -7652,7 +7736,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 7656 "MachineIndependent/glslang_tab.cpp" +#line 7740 "MachineIndependent/glslang_tab.cpp" break; case 293: /* type_specifier_nonarray: DMAT4X3 */ @@ -7665,7 +7749,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 7669 "MachineIndependent/glslang_tab.cpp" +#line 7753 "MachineIndependent/glslang_tab.cpp" break; case 294: /* type_specifier_nonarray: DMAT4X4 */ @@ -7678,7 +7762,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 7682 "MachineIndependent/glslang_tab.cpp" +#line 7766 "MachineIndependent/glslang_tab.cpp" break; case 295: /* type_specifier_nonarray: F16MAT2 */ @@ -7689,7 +7773,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 2); } -#line 7693 "MachineIndependent/glslang_tab.cpp" +#line 7777 "MachineIndependent/glslang_tab.cpp" break; case 296: /* type_specifier_nonarray: F16MAT3 */ @@ -7700,7 +7784,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 3); } -#line 7704 "MachineIndependent/glslang_tab.cpp" +#line 7788 "MachineIndependent/glslang_tab.cpp" break; case 297: /* type_specifier_nonarray: F16MAT4 */ @@ -7711,7 +7795,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 7715 "MachineIndependent/glslang_tab.cpp" +#line 7799 "MachineIndependent/glslang_tab.cpp" break; case 298: /* type_specifier_nonarray: F16MAT2X2 */ @@ -7722,7 +7806,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 2); } -#line 7726 "MachineIndependent/glslang_tab.cpp" +#line 7810 "MachineIndependent/glslang_tab.cpp" break; case 299: /* type_specifier_nonarray: F16MAT2X3 */ @@ -7733,7 +7817,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 3); } -#line 7737 "MachineIndependent/glslang_tab.cpp" +#line 7821 "MachineIndependent/glslang_tab.cpp" break; case 300: /* type_specifier_nonarray: F16MAT2X4 */ @@ -7744,7 +7828,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 4); } -#line 7748 "MachineIndependent/glslang_tab.cpp" +#line 7832 "MachineIndependent/glslang_tab.cpp" break; case 301: /* type_specifier_nonarray: F16MAT3X2 */ @@ -7755,7 +7839,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 2); } -#line 7759 "MachineIndependent/glslang_tab.cpp" +#line 7843 "MachineIndependent/glslang_tab.cpp" break; case 302: /* type_specifier_nonarray: F16MAT3X3 */ @@ -7766,7 +7850,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 3); } -#line 7770 "MachineIndependent/glslang_tab.cpp" +#line 7854 "MachineIndependent/glslang_tab.cpp" break; case 303: /* type_specifier_nonarray: F16MAT3X4 */ @@ -7777,7 +7861,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 4); } -#line 7781 "MachineIndependent/glslang_tab.cpp" +#line 7865 "MachineIndependent/glslang_tab.cpp" break; case 304: /* type_specifier_nonarray: F16MAT4X2 */ @@ -7788,7 +7872,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 2); } -#line 7792 "MachineIndependent/glslang_tab.cpp" +#line 7876 "MachineIndependent/glslang_tab.cpp" break; case 305: /* type_specifier_nonarray: F16MAT4X3 */ @@ -7799,7 +7883,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 3); } -#line 7803 "MachineIndependent/glslang_tab.cpp" +#line 7887 "MachineIndependent/glslang_tab.cpp" break; case 306: /* type_specifier_nonarray: F16MAT4X4 */ @@ -7810,7 +7894,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 7814 "MachineIndependent/glslang_tab.cpp" +#line 7898 "MachineIndependent/glslang_tab.cpp" break; case 307: /* type_specifier_nonarray: F32MAT2 */ @@ -7821,7 +7905,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 7825 "MachineIndependent/glslang_tab.cpp" +#line 7909 "MachineIndependent/glslang_tab.cpp" break; case 308: /* type_specifier_nonarray: F32MAT3 */ @@ -7832,7 +7916,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 7836 "MachineIndependent/glslang_tab.cpp" +#line 7920 "MachineIndependent/glslang_tab.cpp" break; case 309: /* type_specifier_nonarray: F32MAT4 */ @@ -7843,7 +7927,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7847 "MachineIndependent/glslang_tab.cpp" +#line 7931 "MachineIndependent/glslang_tab.cpp" break; case 310: /* type_specifier_nonarray: F32MAT2X2 */ @@ -7854,7 +7938,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 7858 "MachineIndependent/glslang_tab.cpp" +#line 7942 "MachineIndependent/glslang_tab.cpp" break; case 311: /* type_specifier_nonarray: F32MAT2X3 */ @@ -7865,7 +7949,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 7869 "MachineIndependent/glslang_tab.cpp" +#line 7953 "MachineIndependent/glslang_tab.cpp" break; case 312: /* type_specifier_nonarray: F32MAT2X4 */ @@ -7876,7 +7960,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 7880 "MachineIndependent/glslang_tab.cpp" +#line 7964 "MachineIndependent/glslang_tab.cpp" break; case 313: /* type_specifier_nonarray: F32MAT3X2 */ @@ -7887,7 +7971,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 7891 "MachineIndependent/glslang_tab.cpp" +#line 7975 "MachineIndependent/glslang_tab.cpp" break; case 314: /* type_specifier_nonarray: F32MAT3X3 */ @@ -7898,7 +7982,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 7902 "MachineIndependent/glslang_tab.cpp" +#line 7986 "MachineIndependent/glslang_tab.cpp" break; case 315: /* type_specifier_nonarray: F32MAT3X4 */ @@ -7909,7 +7993,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 7913 "MachineIndependent/glslang_tab.cpp" +#line 7997 "MachineIndependent/glslang_tab.cpp" break; case 316: /* type_specifier_nonarray: F32MAT4X2 */ @@ -7920,7 +8004,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 7924 "MachineIndependent/glslang_tab.cpp" +#line 8008 "MachineIndependent/glslang_tab.cpp" break; case 317: /* type_specifier_nonarray: F32MAT4X3 */ @@ -7931,7 +8015,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 7935 "MachineIndependent/glslang_tab.cpp" +#line 8019 "MachineIndependent/glslang_tab.cpp" break; case 318: /* type_specifier_nonarray: F32MAT4X4 */ @@ -7942,7 +8026,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7946 "MachineIndependent/glslang_tab.cpp" +#line 8030 "MachineIndependent/glslang_tab.cpp" break; case 319: /* type_specifier_nonarray: F64MAT2 */ @@ -7953,7 +8037,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 7957 "MachineIndependent/glslang_tab.cpp" +#line 8041 "MachineIndependent/glslang_tab.cpp" break; case 320: /* type_specifier_nonarray: F64MAT3 */ @@ -7964,7 +8048,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 7968 "MachineIndependent/glslang_tab.cpp" +#line 8052 "MachineIndependent/glslang_tab.cpp" break; case 321: /* type_specifier_nonarray: F64MAT4 */ @@ -7975,7 +8059,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 7979 "MachineIndependent/glslang_tab.cpp" +#line 8063 "MachineIndependent/glslang_tab.cpp" break; case 322: /* type_specifier_nonarray: F64MAT2X2 */ @@ -7986,7 +8070,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 7990 "MachineIndependent/glslang_tab.cpp" +#line 8074 "MachineIndependent/glslang_tab.cpp" break; case 323: /* type_specifier_nonarray: F64MAT2X3 */ @@ -7997,7 +8081,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 8001 "MachineIndependent/glslang_tab.cpp" +#line 8085 "MachineIndependent/glslang_tab.cpp" break; case 324: /* type_specifier_nonarray: F64MAT2X4 */ @@ -8008,7 +8092,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 8012 "MachineIndependent/glslang_tab.cpp" +#line 8096 "MachineIndependent/glslang_tab.cpp" break; case 325: /* type_specifier_nonarray: F64MAT3X2 */ @@ -8019,7 +8103,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 8023 "MachineIndependent/glslang_tab.cpp" +#line 8107 "MachineIndependent/glslang_tab.cpp" break; case 326: /* type_specifier_nonarray: F64MAT3X3 */ @@ -8030,7 +8114,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8034 "MachineIndependent/glslang_tab.cpp" +#line 8118 "MachineIndependent/glslang_tab.cpp" break; case 327: /* type_specifier_nonarray: F64MAT3X4 */ @@ -8041,7 +8125,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 8045 "MachineIndependent/glslang_tab.cpp" +#line 8129 "MachineIndependent/glslang_tab.cpp" break; case 328: /* type_specifier_nonarray: F64MAT4X2 */ @@ -8052,7 +8136,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 8056 "MachineIndependent/glslang_tab.cpp" +#line 8140 "MachineIndependent/glslang_tab.cpp" break; case 329: /* type_specifier_nonarray: F64MAT4X3 */ @@ -8063,7 +8147,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 8067 "MachineIndependent/glslang_tab.cpp" +#line 8151 "MachineIndependent/glslang_tab.cpp" break; case 330: /* type_specifier_nonarray: F64MAT4X4 */ @@ -8074,7 +8158,7 @@ yyreduce: (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8078 "MachineIndependent/glslang_tab.cpp" +#line 8162 "MachineIndependent/glslang_tab.cpp" break; case 331: /* type_specifier_nonarray: ACCSTRUCTNV */ @@ -8083,7 +8167,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 8087 "MachineIndependent/glslang_tab.cpp" +#line 8171 "MachineIndependent/glslang_tab.cpp" break; case 332: /* type_specifier_nonarray: ACCSTRUCTEXT */ @@ -8092,7 +8176,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 8096 "MachineIndependent/glslang_tab.cpp" +#line 8180 "MachineIndependent/glslang_tab.cpp" break; case 333: /* type_specifier_nonarray: RAYQUERYEXT */ @@ -8101,7 +8185,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtRayQuery; } -#line 8105 "MachineIndependent/glslang_tab.cpp" +#line 8189 "MachineIndependent/glslang_tab.cpp" break; case 334: /* type_specifier_nonarray: ATOMIC_UINT */ @@ -8111,7 +8195,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAtomicUint; } -#line 8115 "MachineIndependent/glslang_tab.cpp" +#line 8199 "MachineIndependent/glslang_tab.cpp" break; case 335: /* type_specifier_nonarray: SAMPLER1D */ @@ -8121,7 +8205,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D); } -#line 8125 "MachineIndependent/glslang_tab.cpp" +#line 8209 "MachineIndependent/glslang_tab.cpp" break; case 336: /* type_specifier_nonarray: SAMPLER2D */ @@ -8131,7 +8215,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); } -#line 8135 "MachineIndependent/glslang_tab.cpp" +#line 8219 "MachineIndependent/glslang_tab.cpp" break; case 337: /* type_specifier_nonarray: SAMPLER3D */ @@ -8141,7 +8225,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd3D); } -#line 8145 "MachineIndependent/glslang_tab.cpp" +#line 8229 "MachineIndependent/glslang_tab.cpp" break; case 338: /* type_specifier_nonarray: SAMPLERCUBE */ @@ -8151,7 +8235,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube); } -#line 8155 "MachineIndependent/glslang_tab.cpp" +#line 8239 "MachineIndependent/glslang_tab.cpp" break; case 339: /* type_specifier_nonarray: SAMPLER2DSHADOW */ @@ -8161,7 +8245,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true); } -#line 8165 "MachineIndependent/glslang_tab.cpp" +#line 8249 "MachineIndependent/glslang_tab.cpp" break; case 340: /* type_specifier_nonarray: SAMPLERCUBESHADOW */ @@ -8171,7 +8255,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true); } -#line 8175 "MachineIndependent/glslang_tab.cpp" +#line 8259 "MachineIndependent/glslang_tab.cpp" break; case 341: /* type_specifier_nonarray: SAMPLER2DARRAY */ @@ -8181,7 +8265,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true); } -#line 8185 "MachineIndependent/glslang_tab.cpp" +#line 8269 "MachineIndependent/glslang_tab.cpp" break; case 342: /* type_specifier_nonarray: SAMPLER2DARRAYSHADOW */ @@ -8191,7 +8275,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true); } -#line 8195 "MachineIndependent/glslang_tab.cpp" +#line 8279 "MachineIndependent/glslang_tab.cpp" break; case 343: /* type_specifier_nonarray: SAMPLER1DSHADOW */ @@ -8201,7 +8285,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true); } -#line 8205 "MachineIndependent/glslang_tab.cpp" +#line 8289 "MachineIndependent/glslang_tab.cpp" break; case 344: /* type_specifier_nonarray: SAMPLER1DARRAY */ @@ -8211,7 +8295,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true); } -#line 8215 "MachineIndependent/glslang_tab.cpp" +#line 8299 "MachineIndependent/glslang_tab.cpp" break; case 345: /* type_specifier_nonarray: SAMPLER1DARRAYSHADOW */ @@ -8221,7 +8305,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true); } -#line 8225 "MachineIndependent/glslang_tab.cpp" +#line 8309 "MachineIndependent/glslang_tab.cpp" break; case 346: /* type_specifier_nonarray: SAMPLERCUBEARRAY */ @@ -8231,7 +8315,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true); } -#line 8235 "MachineIndependent/glslang_tab.cpp" +#line 8319 "MachineIndependent/glslang_tab.cpp" break; case 347: /* type_specifier_nonarray: SAMPLERCUBEARRAYSHADOW */ @@ -8241,7 +8325,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true); } -#line 8245 "MachineIndependent/glslang_tab.cpp" +#line 8329 "MachineIndependent/glslang_tab.cpp" break; case 348: /* type_specifier_nonarray: F16SAMPLER1D */ @@ -8252,7 +8336,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D); } -#line 8256 "MachineIndependent/glslang_tab.cpp" +#line 8340 "MachineIndependent/glslang_tab.cpp" break; case 349: /* type_specifier_nonarray: F16SAMPLER2D */ @@ -8263,7 +8347,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D); } -#line 8267 "MachineIndependent/glslang_tab.cpp" +#line 8351 "MachineIndependent/glslang_tab.cpp" break; case 350: /* type_specifier_nonarray: F16SAMPLER3D */ @@ -8274,7 +8358,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd3D); } -#line 8278 "MachineIndependent/glslang_tab.cpp" +#line 8362 "MachineIndependent/glslang_tab.cpp" break; case 351: /* type_specifier_nonarray: F16SAMPLERCUBE */ @@ -8285,7 +8369,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube); } -#line 8289 "MachineIndependent/glslang_tab.cpp" +#line 8373 "MachineIndependent/glslang_tab.cpp" break; case 352: /* type_specifier_nonarray: F16SAMPLER1DSHADOW */ @@ -8296,7 +8380,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, false, true); } -#line 8300 "MachineIndependent/glslang_tab.cpp" +#line 8384 "MachineIndependent/glslang_tab.cpp" break; case 353: /* type_specifier_nonarray: F16SAMPLER2DSHADOW */ @@ -8307,7 +8391,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, true); } -#line 8311 "MachineIndependent/glslang_tab.cpp" +#line 8395 "MachineIndependent/glslang_tab.cpp" break; case 354: /* type_specifier_nonarray: F16SAMPLERCUBESHADOW */ @@ -8318,7 +8402,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, false, true); } -#line 8322 "MachineIndependent/glslang_tab.cpp" +#line 8406 "MachineIndependent/glslang_tab.cpp" break; case 355: /* type_specifier_nonarray: F16SAMPLER1DARRAY */ @@ -8329,7 +8413,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true); } -#line 8333 "MachineIndependent/glslang_tab.cpp" +#line 8417 "MachineIndependent/glslang_tab.cpp" break; case 356: /* type_specifier_nonarray: F16SAMPLER2DARRAY */ @@ -8340,7 +8424,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true); } -#line 8344 "MachineIndependent/glslang_tab.cpp" +#line 8428 "MachineIndependent/glslang_tab.cpp" break; case 357: /* type_specifier_nonarray: F16SAMPLER1DARRAYSHADOW */ @@ -8351,7 +8435,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true, true); } -#line 8355 "MachineIndependent/glslang_tab.cpp" +#line 8439 "MachineIndependent/glslang_tab.cpp" break; case 358: /* type_specifier_nonarray: F16SAMPLER2DARRAYSHADOW */ @@ -8362,7 +8446,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, true); } -#line 8366 "MachineIndependent/glslang_tab.cpp" +#line 8450 "MachineIndependent/glslang_tab.cpp" break; case 359: /* type_specifier_nonarray: F16SAMPLERCUBEARRAY */ @@ -8373,7 +8457,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true); } -#line 8377 "MachineIndependent/glslang_tab.cpp" +#line 8461 "MachineIndependent/glslang_tab.cpp" break; case 360: /* type_specifier_nonarray: F16SAMPLERCUBEARRAYSHADOW */ @@ -8384,7 +8468,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true, true); } -#line 8388 "MachineIndependent/glslang_tab.cpp" +#line 8472 "MachineIndependent/glslang_tab.cpp" break; case 361: /* type_specifier_nonarray: ISAMPLER1D */ @@ -8394,7 +8478,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D); } -#line 8398 "MachineIndependent/glslang_tab.cpp" +#line 8482 "MachineIndependent/glslang_tab.cpp" break; case 362: /* type_specifier_nonarray: ISAMPLER2D */ @@ -8404,7 +8488,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D); } -#line 8408 "MachineIndependent/glslang_tab.cpp" +#line 8492 "MachineIndependent/glslang_tab.cpp" break; case 363: /* type_specifier_nonarray: ISAMPLER3D */ @@ -8414,7 +8498,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd3D); } -#line 8418 "MachineIndependent/glslang_tab.cpp" +#line 8502 "MachineIndependent/glslang_tab.cpp" break; case 364: /* type_specifier_nonarray: ISAMPLERCUBE */ @@ -8424,7 +8508,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube); } -#line 8428 "MachineIndependent/glslang_tab.cpp" +#line 8512 "MachineIndependent/glslang_tab.cpp" break; case 365: /* type_specifier_nonarray: ISAMPLER2DARRAY */ @@ -8434,7 +8518,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true); } -#line 8438 "MachineIndependent/glslang_tab.cpp" +#line 8522 "MachineIndependent/glslang_tab.cpp" break; case 366: /* type_specifier_nonarray: USAMPLER2D */ @@ -8444,7 +8528,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D); } -#line 8448 "MachineIndependent/glslang_tab.cpp" +#line 8532 "MachineIndependent/glslang_tab.cpp" break; case 367: /* type_specifier_nonarray: USAMPLER3D */ @@ -8454,7 +8538,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd3D); } -#line 8458 "MachineIndependent/glslang_tab.cpp" +#line 8542 "MachineIndependent/glslang_tab.cpp" break; case 368: /* type_specifier_nonarray: USAMPLERCUBE */ @@ -8464,7 +8548,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube); } -#line 8468 "MachineIndependent/glslang_tab.cpp" +#line 8552 "MachineIndependent/glslang_tab.cpp" break; case 369: /* type_specifier_nonarray: ISAMPLER1DARRAY */ @@ -8474,7 +8558,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D, true); } -#line 8478 "MachineIndependent/glslang_tab.cpp" +#line 8562 "MachineIndependent/glslang_tab.cpp" break; case 370: /* type_specifier_nonarray: ISAMPLERCUBEARRAY */ @@ -8484,7 +8568,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube, true); } -#line 8488 "MachineIndependent/glslang_tab.cpp" +#line 8572 "MachineIndependent/glslang_tab.cpp" break; case 371: /* type_specifier_nonarray: USAMPLER1D */ @@ -8494,7 +8578,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D); } -#line 8498 "MachineIndependent/glslang_tab.cpp" +#line 8582 "MachineIndependent/glslang_tab.cpp" break; case 372: /* type_specifier_nonarray: USAMPLER1DARRAY */ @@ -8504,7 +8588,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D, true); } -#line 8508 "MachineIndependent/glslang_tab.cpp" +#line 8592 "MachineIndependent/glslang_tab.cpp" break; case 373: /* type_specifier_nonarray: USAMPLERCUBEARRAY */ @@ -8514,7 +8598,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube, true); } -#line 8518 "MachineIndependent/glslang_tab.cpp" +#line 8602 "MachineIndependent/glslang_tab.cpp" break; case 374: /* type_specifier_nonarray: TEXTURECUBEARRAY */ @@ -8524,7 +8608,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true); } -#line 8528 "MachineIndependent/glslang_tab.cpp" +#line 8612 "MachineIndependent/glslang_tab.cpp" break; case 375: /* type_specifier_nonarray: ITEXTURECUBEARRAY */ @@ -8534,7 +8618,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true); } -#line 8538 "MachineIndependent/glslang_tab.cpp" +#line 8622 "MachineIndependent/glslang_tab.cpp" break; case 376: /* type_specifier_nonarray: UTEXTURECUBEARRAY */ @@ -8544,7 +8628,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true); } -#line 8548 "MachineIndependent/glslang_tab.cpp" +#line 8632 "MachineIndependent/glslang_tab.cpp" break; case 377: /* type_specifier_nonarray: USAMPLER2DARRAY */ @@ -8554,7 +8638,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true); } -#line 8558 "MachineIndependent/glslang_tab.cpp" +#line 8642 "MachineIndependent/glslang_tab.cpp" break; case 378: /* type_specifier_nonarray: TEXTURE2D */ @@ -8564,7 +8648,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D); } -#line 8568 "MachineIndependent/glslang_tab.cpp" +#line 8652 "MachineIndependent/glslang_tab.cpp" break; case 379: /* type_specifier_nonarray: TEXTURE3D */ @@ -8574,7 +8658,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D); } -#line 8578 "MachineIndependent/glslang_tab.cpp" +#line 8662 "MachineIndependent/glslang_tab.cpp" break; case 380: /* type_specifier_nonarray: TEXTURE2DARRAY */ @@ -8584,7 +8668,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true); } -#line 8588 "MachineIndependent/glslang_tab.cpp" +#line 8672 "MachineIndependent/glslang_tab.cpp" break; case 381: /* type_specifier_nonarray: TEXTURECUBE */ @@ -8594,7 +8678,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube); } -#line 8598 "MachineIndependent/glslang_tab.cpp" +#line 8682 "MachineIndependent/glslang_tab.cpp" break; case 382: /* type_specifier_nonarray: ITEXTURE2D */ @@ -8604,7 +8688,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D); } -#line 8608 "MachineIndependent/glslang_tab.cpp" +#line 8692 "MachineIndependent/glslang_tab.cpp" break; case 383: /* type_specifier_nonarray: ITEXTURE3D */ @@ -8614,7 +8698,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D); } -#line 8618 "MachineIndependent/glslang_tab.cpp" +#line 8702 "MachineIndependent/glslang_tab.cpp" break; case 384: /* type_specifier_nonarray: ITEXTURECUBE */ @@ -8624,7 +8708,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube); } -#line 8628 "MachineIndependent/glslang_tab.cpp" +#line 8712 "MachineIndependent/glslang_tab.cpp" break; case 385: /* type_specifier_nonarray: ITEXTURE2DARRAY */ @@ -8634,7 +8718,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true); } -#line 8638 "MachineIndependent/glslang_tab.cpp" +#line 8722 "MachineIndependent/glslang_tab.cpp" break; case 386: /* type_specifier_nonarray: UTEXTURE2D */ @@ -8644,7 +8728,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D); } -#line 8648 "MachineIndependent/glslang_tab.cpp" +#line 8732 "MachineIndependent/glslang_tab.cpp" break; case 387: /* type_specifier_nonarray: UTEXTURE3D */ @@ -8654,7 +8738,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D); } -#line 8658 "MachineIndependent/glslang_tab.cpp" +#line 8742 "MachineIndependent/glslang_tab.cpp" break; case 388: /* type_specifier_nonarray: UTEXTURECUBE */ @@ -8664,7 +8748,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube); } -#line 8668 "MachineIndependent/glslang_tab.cpp" +#line 8752 "MachineIndependent/glslang_tab.cpp" break; case 389: /* type_specifier_nonarray: UTEXTURE2DARRAY */ @@ -8674,7 +8758,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true); } -#line 8678 "MachineIndependent/glslang_tab.cpp" +#line 8762 "MachineIndependent/glslang_tab.cpp" break; case 390: /* type_specifier_nonarray: SAMPLER */ @@ -8684,7 +8768,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(false); } -#line 8688 "MachineIndependent/glslang_tab.cpp" +#line 8772 "MachineIndependent/glslang_tab.cpp" break; case 391: /* type_specifier_nonarray: SAMPLERSHADOW */ @@ -8694,7 +8778,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(true); } -#line 8698 "MachineIndependent/glslang_tab.cpp" +#line 8782 "MachineIndependent/glslang_tab.cpp" break; case 392: /* type_specifier_nonarray: SAMPLER2DRECT */ @@ -8704,7 +8788,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect); } -#line 8708 "MachineIndependent/glslang_tab.cpp" +#line 8792 "MachineIndependent/glslang_tab.cpp" break; case 393: /* type_specifier_nonarray: SAMPLER2DRECTSHADOW */ @@ -8714,7 +8798,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true); } -#line 8718 "MachineIndependent/glslang_tab.cpp" +#line 8802 "MachineIndependent/glslang_tab.cpp" break; case 394: /* type_specifier_nonarray: F16SAMPLER2DRECT */ @@ -8725,7 +8809,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdRect); } -#line 8729 "MachineIndependent/glslang_tab.cpp" +#line 8813 "MachineIndependent/glslang_tab.cpp" break; case 395: /* type_specifier_nonarray: F16SAMPLER2DRECTSHADOW */ @@ -8736,7 +8820,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdRect, false, true); } -#line 8740 "MachineIndependent/glslang_tab.cpp" +#line 8824 "MachineIndependent/glslang_tab.cpp" break; case 396: /* type_specifier_nonarray: ISAMPLER2DRECT */ @@ -8746,7 +8830,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdRect); } -#line 8750 "MachineIndependent/glslang_tab.cpp" +#line 8834 "MachineIndependent/glslang_tab.cpp" break; case 397: /* type_specifier_nonarray: USAMPLER2DRECT */ @@ -8756,7 +8840,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdRect); } -#line 8760 "MachineIndependent/glslang_tab.cpp" +#line 8844 "MachineIndependent/glslang_tab.cpp" break; case 398: /* type_specifier_nonarray: SAMPLERBUFFER */ @@ -8766,7 +8850,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer); } -#line 8770 "MachineIndependent/glslang_tab.cpp" +#line 8854 "MachineIndependent/glslang_tab.cpp" break; case 399: /* type_specifier_nonarray: F16SAMPLERBUFFER */ @@ -8777,7 +8861,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdBuffer); } -#line 8781 "MachineIndependent/glslang_tab.cpp" +#line 8865 "MachineIndependent/glslang_tab.cpp" break; case 400: /* type_specifier_nonarray: ISAMPLERBUFFER */ @@ -8787,7 +8871,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdBuffer); } -#line 8791 "MachineIndependent/glslang_tab.cpp" +#line 8875 "MachineIndependent/glslang_tab.cpp" break; case 401: /* type_specifier_nonarray: USAMPLERBUFFER */ @@ -8797,7 +8881,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdBuffer); } -#line 8801 "MachineIndependent/glslang_tab.cpp" +#line 8885 "MachineIndependent/glslang_tab.cpp" break; case 402: /* type_specifier_nonarray: SAMPLER2DMS */ @@ -8807,7 +8891,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true); } -#line 8811 "MachineIndependent/glslang_tab.cpp" +#line 8895 "MachineIndependent/glslang_tab.cpp" break; case 403: /* type_specifier_nonarray: F16SAMPLER2DMS */ @@ -8818,7 +8902,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, false, true); } -#line 8822 "MachineIndependent/glslang_tab.cpp" +#line 8906 "MachineIndependent/glslang_tab.cpp" break; case 404: /* type_specifier_nonarray: ISAMPLER2DMS */ @@ -8828,7 +8912,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true); } -#line 8832 "MachineIndependent/glslang_tab.cpp" +#line 8916 "MachineIndependent/glslang_tab.cpp" break; case 405: /* type_specifier_nonarray: USAMPLER2DMS */ @@ -8838,7 +8922,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true); } -#line 8842 "MachineIndependent/glslang_tab.cpp" +#line 8926 "MachineIndependent/glslang_tab.cpp" break; case 406: /* type_specifier_nonarray: SAMPLER2DMSARRAY */ @@ -8848,7 +8932,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true); } -#line 8852 "MachineIndependent/glslang_tab.cpp" +#line 8936 "MachineIndependent/glslang_tab.cpp" break; case 407: /* type_specifier_nonarray: F16SAMPLER2DMSARRAY */ @@ -8859,7 +8943,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, false, true); } -#line 8863 "MachineIndependent/glslang_tab.cpp" +#line 8947 "MachineIndependent/glslang_tab.cpp" break; case 408: /* type_specifier_nonarray: ISAMPLER2DMSARRAY */ @@ -8869,7 +8953,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true); } -#line 8873 "MachineIndependent/glslang_tab.cpp" +#line 8957 "MachineIndependent/glslang_tab.cpp" break; case 409: /* type_specifier_nonarray: USAMPLER2DMSARRAY */ @@ -8879,7 +8963,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true); } -#line 8883 "MachineIndependent/glslang_tab.cpp" +#line 8967 "MachineIndependent/glslang_tab.cpp" break; case 410: /* type_specifier_nonarray: TEXTURE1D */ @@ -8889,7 +8973,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D); } -#line 8893 "MachineIndependent/glslang_tab.cpp" +#line 8977 "MachineIndependent/glslang_tab.cpp" break; case 411: /* type_specifier_nonarray: F16TEXTURE1D */ @@ -8900,7 +8984,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D); } -#line 8904 "MachineIndependent/glslang_tab.cpp" +#line 8988 "MachineIndependent/glslang_tab.cpp" break; case 412: /* type_specifier_nonarray: F16TEXTURE2D */ @@ -8911,7 +8995,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D); } -#line 8915 "MachineIndependent/glslang_tab.cpp" +#line 8999 "MachineIndependent/glslang_tab.cpp" break; case 413: /* type_specifier_nonarray: F16TEXTURE3D */ @@ -8922,7 +9006,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd3D); } -#line 8926 "MachineIndependent/glslang_tab.cpp" +#line 9010 "MachineIndependent/glslang_tab.cpp" break; case 414: /* type_specifier_nonarray: F16TEXTURECUBE */ @@ -8933,7 +9017,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube); } -#line 8937 "MachineIndependent/glslang_tab.cpp" +#line 9021 "MachineIndependent/glslang_tab.cpp" break; case 415: /* type_specifier_nonarray: TEXTURE1DARRAY */ @@ -8943,7 +9027,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true); } -#line 8947 "MachineIndependent/glslang_tab.cpp" +#line 9031 "MachineIndependent/glslang_tab.cpp" break; case 416: /* type_specifier_nonarray: F16TEXTURE1DARRAY */ @@ -8954,7 +9038,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D, true); } -#line 8958 "MachineIndependent/glslang_tab.cpp" +#line 9042 "MachineIndependent/glslang_tab.cpp" break; case 417: /* type_specifier_nonarray: F16TEXTURE2DARRAY */ @@ -8965,7 +9049,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true); } -#line 8969 "MachineIndependent/glslang_tab.cpp" +#line 9053 "MachineIndependent/glslang_tab.cpp" break; case 418: /* type_specifier_nonarray: F16TEXTURECUBEARRAY */ @@ -8976,7 +9060,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube, true); } -#line 8980 "MachineIndependent/glslang_tab.cpp" +#line 9064 "MachineIndependent/glslang_tab.cpp" break; case 419: /* type_specifier_nonarray: ITEXTURE1D */ @@ -8986,7 +9070,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D); } -#line 8990 "MachineIndependent/glslang_tab.cpp" +#line 9074 "MachineIndependent/glslang_tab.cpp" break; case 420: /* type_specifier_nonarray: ITEXTURE1DARRAY */ @@ -8996,7 +9080,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true); } -#line 9000 "MachineIndependent/glslang_tab.cpp" +#line 9084 "MachineIndependent/glslang_tab.cpp" break; case 421: /* type_specifier_nonarray: UTEXTURE1D */ @@ -9006,7 +9090,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D); } -#line 9010 "MachineIndependent/glslang_tab.cpp" +#line 9094 "MachineIndependent/glslang_tab.cpp" break; case 422: /* type_specifier_nonarray: UTEXTURE1DARRAY */ @@ -9016,7 +9100,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true); } -#line 9020 "MachineIndependent/glslang_tab.cpp" +#line 9104 "MachineIndependent/glslang_tab.cpp" break; case 423: /* type_specifier_nonarray: TEXTURE2DRECT */ @@ -9026,7 +9110,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect); } -#line 9030 "MachineIndependent/glslang_tab.cpp" +#line 9114 "MachineIndependent/glslang_tab.cpp" break; case 424: /* type_specifier_nonarray: F16TEXTURE2DRECT */ @@ -9037,7 +9121,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdRect); } -#line 9041 "MachineIndependent/glslang_tab.cpp" +#line 9125 "MachineIndependent/glslang_tab.cpp" break; case 425: /* type_specifier_nonarray: ITEXTURE2DRECT */ @@ -9047,7 +9131,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdRect); } -#line 9051 "MachineIndependent/glslang_tab.cpp" +#line 9135 "MachineIndependent/glslang_tab.cpp" break; case 426: /* type_specifier_nonarray: UTEXTURE2DRECT */ @@ -9057,7 +9141,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdRect); } -#line 9061 "MachineIndependent/glslang_tab.cpp" +#line 9145 "MachineIndependent/glslang_tab.cpp" break; case 427: /* type_specifier_nonarray: TEXTUREBUFFER */ @@ -9067,7 +9151,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer); } -#line 9071 "MachineIndependent/glslang_tab.cpp" +#line 9155 "MachineIndependent/glslang_tab.cpp" break; case 428: /* type_specifier_nonarray: F16TEXTUREBUFFER */ @@ -9078,7 +9162,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdBuffer); } -#line 9082 "MachineIndependent/glslang_tab.cpp" +#line 9166 "MachineIndependent/glslang_tab.cpp" break; case 429: /* type_specifier_nonarray: ITEXTUREBUFFER */ @@ -9088,7 +9172,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer); } -#line 9092 "MachineIndependent/glslang_tab.cpp" +#line 9176 "MachineIndependent/glslang_tab.cpp" break; case 430: /* type_specifier_nonarray: UTEXTUREBUFFER */ @@ -9098,7 +9182,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer); } -#line 9102 "MachineIndependent/glslang_tab.cpp" +#line 9186 "MachineIndependent/glslang_tab.cpp" break; case 431: /* type_specifier_nonarray: TEXTURE2DMS */ @@ -9108,7 +9192,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true); } -#line 9112 "MachineIndependent/glslang_tab.cpp" +#line 9196 "MachineIndependent/glslang_tab.cpp" break; case 432: /* type_specifier_nonarray: F16TEXTURE2DMS */ @@ -9119,7 +9203,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, false, false, true); } -#line 9123 "MachineIndependent/glslang_tab.cpp" +#line 9207 "MachineIndependent/glslang_tab.cpp" break; case 433: /* type_specifier_nonarray: ITEXTURE2DMS */ @@ -9129,7 +9213,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true); } -#line 9133 "MachineIndependent/glslang_tab.cpp" +#line 9217 "MachineIndependent/glslang_tab.cpp" break; case 434: /* type_specifier_nonarray: UTEXTURE2DMS */ @@ -9139,7 +9223,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true); } -#line 9143 "MachineIndependent/glslang_tab.cpp" +#line 9227 "MachineIndependent/glslang_tab.cpp" break; case 435: /* type_specifier_nonarray: TEXTURE2DMSARRAY */ @@ -9149,7 +9233,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true); } -#line 9153 "MachineIndependent/glslang_tab.cpp" +#line 9237 "MachineIndependent/glslang_tab.cpp" break; case 436: /* type_specifier_nonarray: F16TEXTURE2DMSARRAY */ @@ -9160,7 +9244,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true, false, true); } -#line 9164 "MachineIndependent/glslang_tab.cpp" +#line 9248 "MachineIndependent/glslang_tab.cpp" break; case 437: /* type_specifier_nonarray: ITEXTURE2DMSARRAY */ @@ -9170,7 +9254,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true); } -#line 9174 "MachineIndependent/glslang_tab.cpp" +#line 9258 "MachineIndependent/glslang_tab.cpp" break; case 438: /* type_specifier_nonarray: UTEXTURE2DMSARRAY */ @@ -9180,7 +9264,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true); } -#line 9184 "MachineIndependent/glslang_tab.cpp" +#line 9268 "MachineIndependent/glslang_tab.cpp" break; case 439: /* type_specifier_nonarray: IMAGE1D */ @@ -9190,7 +9274,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D); } -#line 9194 "MachineIndependent/glslang_tab.cpp" +#line 9278 "MachineIndependent/glslang_tab.cpp" break; case 440: /* type_specifier_nonarray: F16IMAGE1D */ @@ -9201,7 +9285,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D); } -#line 9205 "MachineIndependent/glslang_tab.cpp" +#line 9289 "MachineIndependent/glslang_tab.cpp" break; case 441: /* type_specifier_nonarray: IIMAGE1D */ @@ -9211,7 +9295,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D); } -#line 9215 "MachineIndependent/glslang_tab.cpp" +#line 9299 "MachineIndependent/glslang_tab.cpp" break; case 442: /* type_specifier_nonarray: UIMAGE1D */ @@ -9221,7 +9305,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D); } -#line 9225 "MachineIndependent/glslang_tab.cpp" +#line 9309 "MachineIndependent/glslang_tab.cpp" break; case 443: /* type_specifier_nonarray: IMAGE2D */ @@ -9231,7 +9315,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D); } -#line 9235 "MachineIndependent/glslang_tab.cpp" +#line 9319 "MachineIndependent/glslang_tab.cpp" break; case 444: /* type_specifier_nonarray: F16IMAGE2D */ @@ -9242,7 +9326,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D); } -#line 9246 "MachineIndependent/glslang_tab.cpp" +#line 9330 "MachineIndependent/glslang_tab.cpp" break; case 445: /* type_specifier_nonarray: IIMAGE2D */ @@ -9252,7 +9336,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D); } -#line 9256 "MachineIndependent/glslang_tab.cpp" +#line 9340 "MachineIndependent/glslang_tab.cpp" break; case 446: /* type_specifier_nonarray: UIMAGE2D */ @@ -9262,7 +9346,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D); } -#line 9266 "MachineIndependent/glslang_tab.cpp" +#line 9350 "MachineIndependent/glslang_tab.cpp" break; case 447: /* type_specifier_nonarray: IMAGE3D */ @@ -9272,7 +9356,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd3D); } -#line 9276 "MachineIndependent/glslang_tab.cpp" +#line 9360 "MachineIndependent/glslang_tab.cpp" break; case 448: /* type_specifier_nonarray: F16IMAGE3D */ @@ -9283,7 +9367,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd3D); } -#line 9287 "MachineIndependent/glslang_tab.cpp" +#line 9371 "MachineIndependent/glslang_tab.cpp" break; case 449: /* type_specifier_nonarray: IIMAGE3D */ @@ -9293,7 +9377,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd3D); } -#line 9297 "MachineIndependent/glslang_tab.cpp" +#line 9381 "MachineIndependent/glslang_tab.cpp" break; case 450: /* type_specifier_nonarray: UIMAGE3D */ @@ -9303,7 +9387,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd3D); } -#line 9307 "MachineIndependent/glslang_tab.cpp" +#line 9391 "MachineIndependent/glslang_tab.cpp" break; case 451: /* type_specifier_nonarray: IMAGE2DRECT */ @@ -9313,7 +9397,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdRect); } -#line 9317 "MachineIndependent/glslang_tab.cpp" +#line 9401 "MachineIndependent/glslang_tab.cpp" break; case 452: /* type_specifier_nonarray: F16IMAGE2DRECT */ @@ -9324,7 +9408,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdRect); } -#line 9328 "MachineIndependent/glslang_tab.cpp" +#line 9412 "MachineIndependent/glslang_tab.cpp" break; case 453: /* type_specifier_nonarray: IIMAGE2DRECT */ @@ -9334,7 +9418,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdRect); } -#line 9338 "MachineIndependent/glslang_tab.cpp" +#line 9422 "MachineIndependent/glslang_tab.cpp" break; case 454: /* type_specifier_nonarray: UIMAGE2DRECT */ @@ -9344,7 +9428,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdRect); } -#line 9348 "MachineIndependent/glslang_tab.cpp" +#line 9432 "MachineIndependent/glslang_tab.cpp" break; case 455: /* type_specifier_nonarray: IMAGECUBE */ @@ -9354,7 +9438,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube); } -#line 9358 "MachineIndependent/glslang_tab.cpp" +#line 9442 "MachineIndependent/glslang_tab.cpp" break; case 456: /* type_specifier_nonarray: F16IMAGECUBE */ @@ -9365,7 +9449,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube); } -#line 9369 "MachineIndependent/glslang_tab.cpp" +#line 9453 "MachineIndependent/glslang_tab.cpp" break; case 457: /* type_specifier_nonarray: IIMAGECUBE */ @@ -9375,7 +9459,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube); } -#line 9379 "MachineIndependent/glslang_tab.cpp" +#line 9463 "MachineIndependent/glslang_tab.cpp" break; case 458: /* type_specifier_nonarray: UIMAGECUBE */ @@ -9385,7 +9469,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube); } -#line 9389 "MachineIndependent/glslang_tab.cpp" +#line 9473 "MachineIndependent/glslang_tab.cpp" break; case 459: /* type_specifier_nonarray: IMAGEBUFFER */ @@ -9395,7 +9479,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer); } -#line 9399 "MachineIndependent/glslang_tab.cpp" +#line 9483 "MachineIndependent/glslang_tab.cpp" break; case 460: /* type_specifier_nonarray: F16IMAGEBUFFER */ @@ -9406,7 +9490,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdBuffer); } -#line 9410 "MachineIndependent/glslang_tab.cpp" +#line 9494 "MachineIndependent/glslang_tab.cpp" break; case 461: /* type_specifier_nonarray: IIMAGEBUFFER */ @@ -9416,7 +9500,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer); } -#line 9420 "MachineIndependent/glslang_tab.cpp" +#line 9504 "MachineIndependent/glslang_tab.cpp" break; case 462: /* type_specifier_nonarray: UIMAGEBUFFER */ @@ -9426,7 +9510,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer); } -#line 9430 "MachineIndependent/glslang_tab.cpp" +#line 9514 "MachineIndependent/glslang_tab.cpp" break; case 463: /* type_specifier_nonarray: IMAGE1DARRAY */ @@ -9436,7 +9520,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true); } -#line 9440 "MachineIndependent/glslang_tab.cpp" +#line 9524 "MachineIndependent/glslang_tab.cpp" break; case 464: /* type_specifier_nonarray: F16IMAGE1DARRAY */ @@ -9447,7 +9531,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D, true); } -#line 9451 "MachineIndependent/glslang_tab.cpp" +#line 9535 "MachineIndependent/glslang_tab.cpp" break; case 465: /* type_specifier_nonarray: IIMAGE1DARRAY */ @@ -9457,7 +9541,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true); } -#line 9461 "MachineIndependent/glslang_tab.cpp" +#line 9545 "MachineIndependent/glslang_tab.cpp" break; case 466: /* type_specifier_nonarray: UIMAGE1DARRAY */ @@ -9467,7 +9551,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true); } -#line 9471 "MachineIndependent/glslang_tab.cpp" +#line 9555 "MachineIndependent/glslang_tab.cpp" break; case 467: /* type_specifier_nonarray: IMAGE2DARRAY */ @@ -9477,7 +9561,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true); } -#line 9481 "MachineIndependent/glslang_tab.cpp" +#line 9565 "MachineIndependent/glslang_tab.cpp" break; case 468: /* type_specifier_nonarray: F16IMAGE2DARRAY */ @@ -9488,7 +9572,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true); } -#line 9492 "MachineIndependent/glslang_tab.cpp" +#line 9576 "MachineIndependent/glslang_tab.cpp" break; case 469: /* type_specifier_nonarray: IIMAGE2DARRAY */ @@ -9498,7 +9582,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true); } -#line 9502 "MachineIndependent/glslang_tab.cpp" +#line 9586 "MachineIndependent/glslang_tab.cpp" break; case 470: /* type_specifier_nonarray: UIMAGE2DARRAY */ @@ -9508,7 +9592,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true); } -#line 9512 "MachineIndependent/glslang_tab.cpp" +#line 9596 "MachineIndependent/glslang_tab.cpp" break; case 471: /* type_specifier_nonarray: IMAGECUBEARRAY */ @@ -9518,7 +9602,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true); } -#line 9522 "MachineIndependent/glslang_tab.cpp" +#line 9606 "MachineIndependent/glslang_tab.cpp" break; case 472: /* type_specifier_nonarray: F16IMAGECUBEARRAY */ @@ -9529,7 +9613,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube, true); } -#line 9533 "MachineIndependent/glslang_tab.cpp" +#line 9617 "MachineIndependent/glslang_tab.cpp" break; case 473: /* type_specifier_nonarray: IIMAGECUBEARRAY */ @@ -9539,7 +9623,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true); } -#line 9543 "MachineIndependent/glslang_tab.cpp" +#line 9627 "MachineIndependent/glslang_tab.cpp" break; case 474: /* type_specifier_nonarray: UIMAGECUBEARRAY */ @@ -9549,7 +9633,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true); } -#line 9553 "MachineIndependent/glslang_tab.cpp" +#line 9637 "MachineIndependent/glslang_tab.cpp" break; case 475: /* type_specifier_nonarray: IMAGE2DMS */ @@ -9559,7 +9643,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true); } -#line 9563 "MachineIndependent/glslang_tab.cpp" +#line 9647 "MachineIndependent/glslang_tab.cpp" break; case 476: /* type_specifier_nonarray: F16IMAGE2DMS */ @@ -9570,7 +9654,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, false, false, true); } -#line 9574 "MachineIndependent/glslang_tab.cpp" +#line 9658 "MachineIndependent/glslang_tab.cpp" break; case 477: /* type_specifier_nonarray: IIMAGE2DMS */ @@ -9580,7 +9664,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true); } -#line 9584 "MachineIndependent/glslang_tab.cpp" +#line 9668 "MachineIndependent/glslang_tab.cpp" break; case 478: /* type_specifier_nonarray: UIMAGE2DMS */ @@ -9590,7 +9674,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true); } -#line 9594 "MachineIndependent/glslang_tab.cpp" +#line 9678 "MachineIndependent/glslang_tab.cpp" break; case 479: /* type_specifier_nonarray: IMAGE2DMSARRAY */ @@ -9600,7 +9684,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true); } -#line 9604 "MachineIndependent/glslang_tab.cpp" +#line 9688 "MachineIndependent/glslang_tab.cpp" break; case 480: /* type_specifier_nonarray: F16IMAGE2DMSARRAY */ @@ -9611,7 +9695,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true, false, true); } -#line 9615 "MachineIndependent/glslang_tab.cpp" +#line 9699 "MachineIndependent/glslang_tab.cpp" break; case 481: /* type_specifier_nonarray: IIMAGE2DMSARRAY */ @@ -9621,7 +9705,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true); } -#line 9625 "MachineIndependent/glslang_tab.cpp" +#line 9709 "MachineIndependent/glslang_tab.cpp" break; case 482: /* type_specifier_nonarray: UIMAGE2DMSARRAY */ @@ -9631,7 +9715,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true); } -#line 9635 "MachineIndependent/glslang_tab.cpp" +#line 9719 "MachineIndependent/glslang_tab.cpp" break; case 483: /* type_specifier_nonarray: I64IMAGE1D */ @@ -9641,7 +9725,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D); } -#line 9645 "MachineIndependent/glslang_tab.cpp" +#line 9729 "MachineIndependent/glslang_tab.cpp" break; case 484: /* type_specifier_nonarray: U64IMAGE1D */ @@ -9651,7 +9735,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D); } -#line 9655 "MachineIndependent/glslang_tab.cpp" +#line 9739 "MachineIndependent/glslang_tab.cpp" break; case 485: /* type_specifier_nonarray: I64IMAGE2D */ @@ -9661,7 +9745,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D); } -#line 9665 "MachineIndependent/glslang_tab.cpp" +#line 9749 "MachineIndependent/glslang_tab.cpp" break; case 486: /* type_specifier_nonarray: U64IMAGE2D */ @@ -9671,7 +9755,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D); } -#line 9675 "MachineIndependent/glslang_tab.cpp" +#line 9759 "MachineIndependent/glslang_tab.cpp" break; case 487: /* type_specifier_nonarray: I64IMAGE3D */ @@ -9681,7 +9765,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd3D); } -#line 9685 "MachineIndependent/glslang_tab.cpp" +#line 9769 "MachineIndependent/glslang_tab.cpp" break; case 488: /* type_specifier_nonarray: U64IMAGE3D */ @@ -9691,7 +9775,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd3D); } -#line 9695 "MachineIndependent/glslang_tab.cpp" +#line 9779 "MachineIndependent/glslang_tab.cpp" break; case 489: /* type_specifier_nonarray: I64IMAGE2DRECT */ @@ -9701,7 +9785,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdRect); } -#line 9705 "MachineIndependent/glslang_tab.cpp" +#line 9789 "MachineIndependent/glslang_tab.cpp" break; case 490: /* type_specifier_nonarray: U64IMAGE2DRECT */ @@ -9711,7 +9795,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdRect); } -#line 9715 "MachineIndependent/glslang_tab.cpp" +#line 9799 "MachineIndependent/glslang_tab.cpp" break; case 491: /* type_specifier_nonarray: I64IMAGECUBE */ @@ -9721,7 +9805,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube); } -#line 9725 "MachineIndependent/glslang_tab.cpp" +#line 9809 "MachineIndependent/glslang_tab.cpp" break; case 492: /* type_specifier_nonarray: U64IMAGECUBE */ @@ -9731,7 +9815,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube); } -#line 9735 "MachineIndependent/glslang_tab.cpp" +#line 9819 "MachineIndependent/glslang_tab.cpp" break; case 493: /* type_specifier_nonarray: I64IMAGEBUFFER */ @@ -9741,7 +9825,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdBuffer); } -#line 9745 "MachineIndependent/glslang_tab.cpp" +#line 9829 "MachineIndependent/glslang_tab.cpp" break; case 494: /* type_specifier_nonarray: U64IMAGEBUFFER */ @@ -9751,7 +9835,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdBuffer); } -#line 9755 "MachineIndependent/glslang_tab.cpp" +#line 9839 "MachineIndependent/glslang_tab.cpp" break; case 495: /* type_specifier_nonarray: I64IMAGE1DARRAY */ @@ -9761,7 +9845,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D, true); } -#line 9765 "MachineIndependent/glslang_tab.cpp" +#line 9849 "MachineIndependent/glslang_tab.cpp" break; case 496: /* type_specifier_nonarray: U64IMAGE1DARRAY */ @@ -9771,7 +9855,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D, true); } -#line 9775 "MachineIndependent/glslang_tab.cpp" +#line 9859 "MachineIndependent/glslang_tab.cpp" break; case 497: /* type_specifier_nonarray: I64IMAGE2DARRAY */ @@ -9781,7 +9865,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true); } -#line 9785 "MachineIndependent/glslang_tab.cpp" +#line 9869 "MachineIndependent/glslang_tab.cpp" break; case 498: /* type_specifier_nonarray: U64IMAGE2DARRAY */ @@ -9791,7 +9875,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true); } -#line 9795 "MachineIndependent/glslang_tab.cpp" +#line 9879 "MachineIndependent/glslang_tab.cpp" break; case 499: /* type_specifier_nonarray: I64IMAGECUBEARRAY */ @@ -9801,7 +9885,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube, true); } -#line 9805 "MachineIndependent/glslang_tab.cpp" +#line 9889 "MachineIndependent/glslang_tab.cpp" break; case 500: /* type_specifier_nonarray: U64IMAGECUBEARRAY */ @@ -9811,7 +9895,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube, true); } -#line 9815 "MachineIndependent/glslang_tab.cpp" +#line 9899 "MachineIndependent/glslang_tab.cpp" break; case 501: /* type_specifier_nonarray: I64IMAGE2DMS */ @@ -9821,7 +9905,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, false, false, true); } -#line 9825 "MachineIndependent/glslang_tab.cpp" +#line 9909 "MachineIndependent/glslang_tab.cpp" break; case 502: /* type_specifier_nonarray: U64IMAGE2DMS */ @@ -9831,7 +9915,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, false, false, true); } -#line 9835 "MachineIndependent/glslang_tab.cpp" +#line 9919 "MachineIndependent/glslang_tab.cpp" break; case 503: /* type_specifier_nonarray: I64IMAGE2DMSARRAY */ @@ -9841,7 +9925,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true, false, true); } -#line 9845 "MachineIndependent/glslang_tab.cpp" +#line 9929 "MachineIndependent/glslang_tab.cpp" break; case 504: /* type_specifier_nonarray: U64IMAGE2DMSARRAY */ @@ -9851,7 +9935,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true, false, true); } -#line 9855 "MachineIndependent/glslang_tab.cpp" +#line 9939 "MachineIndependent/glslang_tab.cpp" break; case 505: /* type_specifier_nonarray: SAMPLEREXTERNALOES */ @@ -9862,7 +9946,7 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.external = true; } -#line 9866 "MachineIndependent/glslang_tab.cpp" +#line 9950 "MachineIndependent/glslang_tab.cpp" break; case 506: /* type_specifier_nonarray: SAMPLEREXTERNAL2DY2YEXT */ @@ -9873,7 +9957,7 @@ yyreduce: (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.yuv = true; } -#line 9877 "MachineIndependent/glslang_tab.cpp" +#line 9961 "MachineIndependent/glslang_tab.cpp" break; case 507: /* type_specifier_nonarray: SUBPASSINPUT */ @@ -9884,7 +9968,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat); } -#line 9888 "MachineIndependent/glslang_tab.cpp" +#line 9972 "MachineIndependent/glslang_tab.cpp" break; case 508: /* type_specifier_nonarray: SUBPASSINPUTMS */ @@ -9895,7 +9979,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat, true); } -#line 9899 "MachineIndependent/glslang_tab.cpp" +#line 9983 "MachineIndependent/glslang_tab.cpp" break; case 509: /* type_specifier_nonarray: F16SUBPASSINPUT */ @@ -9907,7 +9991,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16); } -#line 9911 "MachineIndependent/glslang_tab.cpp" +#line 9995 "MachineIndependent/glslang_tab.cpp" break; case 510: /* type_specifier_nonarray: F16SUBPASSINPUTMS */ @@ -9919,7 +10003,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16, true); } -#line 9923 "MachineIndependent/glslang_tab.cpp" +#line 10007 "MachineIndependent/glslang_tab.cpp" break; case 511: /* type_specifier_nonarray: ISUBPASSINPUT */ @@ -9930,7 +10014,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt); } -#line 9934 "MachineIndependent/glslang_tab.cpp" +#line 10018 "MachineIndependent/glslang_tab.cpp" break; case 512: /* type_specifier_nonarray: ISUBPASSINPUTMS */ @@ -9941,7 +10025,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt, true); } -#line 9945 "MachineIndependent/glslang_tab.cpp" +#line 10029 "MachineIndependent/glslang_tab.cpp" break; case 513: /* type_specifier_nonarray: USUBPASSINPUT */ @@ -9952,7 +10036,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint); } -#line 9956 "MachineIndependent/glslang_tab.cpp" +#line 10040 "MachineIndependent/glslang_tab.cpp" break; case 514: /* type_specifier_nonarray: USUBPASSINPUTMS */ @@ -9963,7 +10047,7 @@ yyreduce: (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint, true); } -#line 9967 "MachineIndependent/glslang_tab.cpp" +#line 10051 "MachineIndependent/glslang_tab.cpp" break; case 515: /* type_specifier_nonarray: FCOOPMATNV */ @@ -9974,7 +10058,7 @@ yyreduce: (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).coopmat = true; } -#line 9978 "MachineIndependent/glslang_tab.cpp" +#line 10062 "MachineIndependent/glslang_tab.cpp" break; case 516: /* type_specifier_nonarray: ICOOPMATNV */ @@ -9985,7 +10069,7 @@ yyreduce: (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).coopmat = true; } -#line 9989 "MachineIndependent/glslang_tab.cpp" +#line 10073 "MachineIndependent/glslang_tab.cpp" break; case 517: /* type_specifier_nonarray: UCOOPMATNV */ @@ -9996,7 +10080,7 @@ yyreduce: (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).coopmat = true; } -#line 10000 "MachineIndependent/glslang_tab.cpp" +#line 10084 "MachineIndependent/glslang_tab.cpp" break; case 518: /* type_specifier_nonarray: struct_specifier */ @@ -10006,7 +10090,7 @@ yyreduce: (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type)); } -#line 10010 "MachineIndependent/glslang_tab.cpp" +#line 10094 "MachineIndependent/glslang_tab.cpp" break; case 519: /* type_specifier_nonarray: TYPE_NAME */ @@ -10024,7 +10108,7 @@ yyreduce: } else parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), ""); } -#line 10028 "MachineIndependent/glslang_tab.cpp" +#line 10112 "MachineIndependent/glslang_tab.cpp" break; case 520: /* precision_qualifier: HIGH_PRECISION */ @@ -10034,7 +10118,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh); } -#line 10038 "MachineIndependent/glslang_tab.cpp" +#line 10122 "MachineIndependent/glslang_tab.cpp" break; case 521: /* precision_qualifier: MEDIUM_PRECISION */ @@ -10044,7 +10128,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium); } -#line 10048 "MachineIndependent/glslang_tab.cpp" +#line 10132 "MachineIndependent/glslang_tab.cpp" break; case 522: /* precision_qualifier: LOW_PRECISION */ @@ -10054,13 +10138,13 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow); } -#line 10058 "MachineIndependent/glslang_tab.cpp" +#line 10142 "MachineIndependent/glslang_tab.cpp" break; case 523: /* $@3: %empty */ #line 3450 "MachineIndependent/glslang.y" { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); } -#line 10064 "MachineIndependent/glslang_tab.cpp" +#line 10148 "MachineIndependent/glslang_tab.cpp" break; case 524: /* struct_specifier: STRUCT IDENTIFIER LEFT_BRACE $@3 struct_declaration_list RIGHT_BRACE */ @@ -10076,13 +10160,13 @@ yyreduce: (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 10080 "MachineIndependent/glslang_tab.cpp" +#line 10164 "MachineIndependent/glslang_tab.cpp" break; case 525: /* $@4: %empty */ #line 3461 "MachineIndependent/glslang.y" { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); } -#line 10086 "MachineIndependent/glslang_tab.cpp" +#line 10170 "MachineIndependent/glslang_tab.cpp" break; case 526: /* struct_specifier: STRUCT LEFT_BRACE $@4 struct_declaration_list RIGHT_BRACE */ @@ -10094,7 +10178,7 @@ yyreduce: (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 10098 "MachineIndependent/glslang_tab.cpp" +#line 10182 "MachineIndependent/glslang_tab.cpp" break; case 527: /* struct_declaration_list: struct_declaration */ @@ -10102,7 +10186,7 @@ yyreduce: { (yyval.interm.typeList) = (yyvsp[0].interm.typeList); } -#line 10106 "MachineIndependent/glslang_tab.cpp" +#line 10190 "MachineIndependent/glslang_tab.cpp" break; case 528: /* struct_declaration_list: struct_declaration_list struct_declaration */ @@ -10117,7 +10201,7 @@ yyreduce: (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]); } } -#line 10121 "MachineIndependent/glslang_tab.cpp" +#line 10205 "MachineIndependent/glslang_tab.cpp" break; case 529: /* struct_declaration: type_specifier struct_declarator_list SEMICOLON */ @@ -10144,7 +10228,7 @@ yyreduce: (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 10148 "MachineIndependent/glslang_tab.cpp" +#line 10232 "MachineIndependent/glslang_tab.cpp" break; case 530: /* struct_declaration: type_qualifier type_specifier struct_declarator_list SEMICOLON */ @@ -10173,7 +10257,7 @@ yyreduce: (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 10177 "MachineIndependent/glslang_tab.cpp" +#line 10261 "MachineIndependent/glslang_tab.cpp" break; case 531: /* struct_declarator_list: struct_declarator */ @@ -10182,7 +10266,7 @@ yyreduce: (yyval.interm.typeList) = new TTypeList; (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 10186 "MachineIndependent/glslang_tab.cpp" +#line 10270 "MachineIndependent/glslang_tab.cpp" break; case 532: /* struct_declarator_list: struct_declarator_list COMMA struct_declarator */ @@ -10190,7 +10274,7 @@ yyreduce: { (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 10194 "MachineIndependent/glslang_tab.cpp" +#line 10278 "MachineIndependent/glslang_tab.cpp" break; case 533: /* struct_declarator: IDENTIFIER */ @@ -10200,7 +10284,7 @@ yyreduce: (yyval.interm.typeLine).loc = (yyvsp[0].lex).loc; (yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string); } -#line 10204 "MachineIndependent/glslang_tab.cpp" +#line 10288 "MachineIndependent/glslang_tab.cpp" break; case 534: /* struct_declarator: IDENTIFIER array_specifier */ @@ -10213,7 +10297,7 @@ yyreduce: (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string); (yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes); } -#line 10217 "MachineIndependent/glslang_tab.cpp" +#line 10301 "MachineIndependent/glslang_tab.cpp" break; case 535: /* initializer: assignment_expression */ @@ -10221,7 +10305,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 10225 "MachineIndependent/glslang_tab.cpp" +#line 10309 "MachineIndependent/glslang_tab.cpp" break; case 536: /* initializer: LEFT_BRACE initializer_list RIGHT_BRACE */ @@ -10232,7 +10316,7 @@ yyreduce: parseContext.profileRequires((yyvsp[-2].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); } -#line 10236 "MachineIndependent/glslang_tab.cpp" +#line 10320 "MachineIndependent/glslang_tab.cpp" break; case 537: /* initializer: LEFT_BRACE initializer_list COMMA RIGHT_BRACE */ @@ -10243,205 +10327,216 @@ yyreduce: parseContext.profileRequires((yyvsp[-3].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 10247 "MachineIndependent/glslang_tab.cpp" +#line 10331 "MachineIndependent/glslang_tab.cpp" break; - case 538: /* initializer_list: initializer */ -#line 3583 "MachineIndependent/glslang.y" + case 538: /* initializer: LEFT_BRACE RIGHT_BRACE */ +#line 3578 "MachineIndependent/glslang.y" + { + const char* initFeature = "empty { } initializer"; + parseContext.profileRequires((yyvsp[-1].lex).loc, EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); + parseContext.profileRequires((yyvsp[-1].lex).loc, ~EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); + (yyval.interm.intermTypedNode) = parseContext.intermediate.makeAggregate((yyvsp[-1].lex).loc); + } +#line 10342 "MachineIndependent/glslang_tab.cpp" + break; + + case 539: /* initializer_list: initializer */ +#line 3589 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc()); } -#line 10255 "MachineIndependent/glslang_tab.cpp" +#line 10350 "MachineIndependent/glslang_tab.cpp" break; - case 539: /* initializer_list: initializer_list COMMA initializer */ -#line 3586 "MachineIndependent/glslang.y" + case 540: /* initializer_list: initializer_list COMMA initializer */ +#line 3592 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); } -#line 10263 "MachineIndependent/glslang_tab.cpp" +#line 10358 "MachineIndependent/glslang_tab.cpp" break; - case 540: /* declaration_statement: declaration */ -#line 3593 "MachineIndependent/glslang.y" + case 541: /* declaration_statement: declaration */ +#line 3599 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10269 "MachineIndependent/glslang_tab.cpp" +#line 10364 "MachineIndependent/glslang_tab.cpp" break; - case 541: /* statement: compound_statement */ -#line 3597 "MachineIndependent/glslang.y" + case 542: /* statement: compound_statement */ +#line 3603 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10275 "MachineIndependent/glslang_tab.cpp" +#line 10370 "MachineIndependent/glslang_tab.cpp" break; - case 542: /* statement: simple_statement */ -#line 3598 "MachineIndependent/glslang.y" + case 543: /* statement: simple_statement */ +#line 3604 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10281 "MachineIndependent/glslang_tab.cpp" +#line 10376 "MachineIndependent/glslang_tab.cpp" break; - case 543: /* simple_statement: declaration_statement */ -#line 3604 "MachineIndependent/glslang.y" + case 544: /* simple_statement: declaration_statement */ +#line 3610 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10287 "MachineIndependent/glslang_tab.cpp" +#line 10382 "MachineIndependent/glslang_tab.cpp" break; - case 544: /* simple_statement: expression_statement */ -#line 3605 "MachineIndependent/glslang.y" + case 545: /* simple_statement: expression_statement */ +#line 3611 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10293 "MachineIndependent/glslang_tab.cpp" +#line 10388 "MachineIndependent/glslang_tab.cpp" break; - case 545: /* simple_statement: selection_statement */ -#line 3606 "MachineIndependent/glslang.y" + case 546: /* simple_statement: selection_statement */ +#line 3612 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10299 "MachineIndependent/glslang_tab.cpp" +#line 10394 "MachineIndependent/glslang_tab.cpp" break; - case 546: /* simple_statement: switch_statement */ -#line 3607 "MachineIndependent/glslang.y" + case 547: /* simple_statement: switch_statement */ +#line 3613 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10305 "MachineIndependent/glslang_tab.cpp" +#line 10400 "MachineIndependent/glslang_tab.cpp" break; - case 547: /* simple_statement: case_label */ -#line 3608 "MachineIndependent/glslang.y" + case 548: /* simple_statement: case_label */ +#line 3614 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10311 "MachineIndependent/glslang_tab.cpp" +#line 10406 "MachineIndependent/glslang_tab.cpp" break; - case 548: /* simple_statement: iteration_statement */ -#line 3609 "MachineIndependent/glslang.y" + case 549: /* simple_statement: iteration_statement */ +#line 3615 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10317 "MachineIndependent/glslang_tab.cpp" +#line 10412 "MachineIndependent/glslang_tab.cpp" break; - case 549: /* simple_statement: jump_statement */ -#line 3610 "MachineIndependent/glslang.y" + case 550: /* simple_statement: jump_statement */ +#line 3616 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10323 "MachineIndependent/glslang_tab.cpp" +#line 10418 "MachineIndependent/glslang_tab.cpp" break; - case 550: /* simple_statement: demote_statement */ -#line 3612 "MachineIndependent/glslang.y" + case 551: /* simple_statement: demote_statement */ +#line 3618 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10329 "MachineIndependent/glslang_tab.cpp" +#line 10424 "MachineIndependent/glslang_tab.cpp" break; - case 551: /* demote_statement: DEMOTE SEMICOLON */ -#line 3618 "MachineIndependent/glslang.y" + case 552: /* demote_statement: DEMOTE SEMICOLON */ +#line 3624 "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 10339 "MachineIndependent/glslang_tab.cpp" +#line 10434 "MachineIndependent/glslang_tab.cpp" break; - case 552: /* compound_statement: LEFT_BRACE RIGHT_BRACE */ -#line 3627 "MachineIndependent/glslang.y" + case 553: /* compound_statement: LEFT_BRACE RIGHT_BRACE */ +#line 3633 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 10345 "MachineIndependent/glslang_tab.cpp" +#line 10440 "MachineIndependent/glslang_tab.cpp" break; - case 553: /* $@5: %empty */ -#line 3628 "MachineIndependent/glslang.y" + case 554: /* $@5: %empty */ +#line 3634 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; } -#line 10354 "MachineIndependent/glslang_tab.cpp" +#line 10449 "MachineIndependent/glslang_tab.cpp" break; - case 554: /* $@6: %empty */ -#line 3632 "MachineIndependent/glslang.y" + case 555: /* $@6: %empty */ +#line 3638 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; } -#line 10363 "MachineIndependent/glslang_tab.cpp" +#line 10458 "MachineIndependent/glslang_tab.cpp" break; - case 555: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE */ -#line 3636 "MachineIndependent/glslang.y" + case 556: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE */ +#line 3642 "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 10373 "MachineIndependent/glslang_tab.cpp" +#line 10468 "MachineIndependent/glslang_tab.cpp" break; - case 556: /* statement_no_new_scope: compound_statement_no_new_scope */ -#line 3644 "MachineIndependent/glslang.y" + case 557: /* statement_no_new_scope: compound_statement_no_new_scope */ +#line 3650 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10379 "MachineIndependent/glslang_tab.cpp" +#line 10474 "MachineIndependent/glslang_tab.cpp" break; - case 557: /* statement_no_new_scope: simple_statement */ -#line 3645 "MachineIndependent/glslang.y" + case 558: /* statement_no_new_scope: simple_statement */ +#line 3651 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10385 "MachineIndependent/glslang_tab.cpp" +#line 10480 "MachineIndependent/glslang_tab.cpp" break; - case 558: /* $@7: %empty */ -#line 3649 "MachineIndependent/glslang.y" + case 559: /* $@7: %empty */ +#line 3655 "MachineIndependent/glslang.y" { ++parseContext.controlFlowNestingLevel; } -#line 10393 "MachineIndependent/glslang_tab.cpp" +#line 10488 "MachineIndependent/glslang_tab.cpp" break; - case 559: /* statement_scoped: $@7 compound_statement */ -#line 3652 "MachineIndependent/glslang.y" + case 560: /* statement_scoped: $@7 compound_statement */ +#line 3658 "MachineIndependent/glslang.y" { --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10402 "MachineIndependent/glslang_tab.cpp" +#line 10497 "MachineIndependent/glslang_tab.cpp" break; - case 560: /* $@8: %empty */ -#line 3656 "MachineIndependent/glslang.y" + case 561: /* $@8: %empty */ +#line 3662 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 10412 "MachineIndependent/glslang_tab.cpp" +#line 10507 "MachineIndependent/glslang_tab.cpp" break; - case 561: /* statement_scoped: $@8 simple_statement */ -#line 3661 "MachineIndependent/glslang.y" + case 562: /* statement_scoped: $@8 simple_statement */ +#line 3667 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10423 "MachineIndependent/glslang_tab.cpp" +#line 10518 "MachineIndependent/glslang_tab.cpp" break; - case 562: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE */ -#line 3670 "MachineIndependent/glslang.y" + case 563: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE */ +#line 3676 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 10431 "MachineIndependent/glslang_tab.cpp" +#line 10526 "MachineIndependent/glslang_tab.cpp" break; - case 563: /* compound_statement_no_new_scope: LEFT_BRACE statement_list RIGHT_BRACE */ -#line 3673 "MachineIndependent/glslang.y" + case 564: /* compound_statement_no_new_scope: LEFT_BRACE statement_list RIGHT_BRACE */ +#line 3679 "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 10441 "MachineIndependent/glslang_tab.cpp" +#line 10536 "MachineIndependent/glslang_tab.cpp" break; - case 564: /* statement_list: statement */ -#line 3681 "MachineIndependent/glslang.y" + case 565: /* statement_list: statement */ +#line 3687 "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 || @@ -10450,11 +10545,11 @@ yyreduce: (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case } } -#line 10454 "MachineIndependent/glslang_tab.cpp" +#line 10549 "MachineIndependent/glslang_tab.cpp" break; - case 565: /* statement_list: statement_list statement */ -#line 3689 "MachineIndependent/glslang.y" + case 566: /* statement_list: statement_list statement */ +#line 3695 "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)) { @@ -10463,76 +10558,76 @@ yyreduce: } else (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 10467 "MachineIndependent/glslang_tab.cpp" +#line 10562 "MachineIndependent/glslang_tab.cpp" break; - case 566: /* expression_statement: SEMICOLON */ -#line 3700 "MachineIndependent/glslang.y" + case 567: /* expression_statement: SEMICOLON */ +#line 3706 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 10473 "MachineIndependent/glslang_tab.cpp" +#line 10568 "MachineIndependent/glslang_tab.cpp" break; - case 567: /* expression_statement: expression SEMICOLON */ -#line 3701 "MachineIndependent/glslang.y" + case 568: /* expression_statement: expression SEMICOLON */ +#line 3707 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = static_cast<TIntermNode*>((yyvsp[-1].interm.intermTypedNode)); } -#line 10479 "MachineIndependent/glslang_tab.cpp" +#line 10574 "MachineIndependent/glslang_tab.cpp" break; - case 568: /* selection_statement: selection_statement_nonattributed */ -#line 3705 "MachineIndependent/glslang.y" + case 569: /* selection_statement: selection_statement_nonattributed */ +#line 3711 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10487 "MachineIndependent/glslang_tab.cpp" +#line 10582 "MachineIndependent/glslang_tab.cpp" break; - case 569: /* selection_statement: attribute selection_statement_nonattributed */ -#line 3709 "MachineIndependent/glslang.y" + case 570: /* selection_statement: attribute selection_statement_nonattributed */ +#line 3715 "MachineIndependent/glslang.y" { parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10496 "MachineIndependent/glslang_tab.cpp" +#line 10591 "MachineIndependent/glslang_tab.cpp" break; - case 570: /* selection_statement_nonattributed: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement */ -#line 3716 "MachineIndependent/glslang.y" + case 571: /* selection_statement_nonattributed: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement */ +#line 3722 "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 10505 "MachineIndependent/glslang_tab.cpp" +#line 10600 "MachineIndependent/glslang_tab.cpp" break; - case 571: /* selection_rest_statement: statement_scoped ELSE statement_scoped */ -#line 3723 "MachineIndependent/glslang.y" + case 572: /* selection_rest_statement: statement_scoped ELSE statement_scoped */ +#line 3729 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode); } -#line 10514 "MachineIndependent/glslang_tab.cpp" +#line 10609 "MachineIndependent/glslang_tab.cpp" break; - case 572: /* selection_rest_statement: statement_scoped */ -#line 3727 "MachineIndependent/glslang.y" + case 573: /* selection_rest_statement: statement_scoped */ +#line 3733 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode); (yyval.interm.nodePair).node2 = 0; } -#line 10523 "MachineIndependent/glslang_tab.cpp" +#line 10618 "MachineIndependent/glslang_tab.cpp" break; - case 573: /* condition: expression */ -#line 3735 "MachineIndependent/glslang.y" + case 574: /* condition: expression */ +#line 3741 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)); } -#line 10532 "MachineIndependent/glslang_tab.cpp" +#line 10627 "MachineIndependent/glslang_tab.cpp" break; - case 574: /* condition: fully_specified_type IDENTIFIER EQUAL initializer */ -#line 3739 "MachineIndependent/glslang.y" + case 575: /* condition: fully_specified_type IDENTIFIER EQUAL initializer */ +#line 3745 "MachineIndependent/glslang.y" { parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type)); @@ -10543,28 +10638,28 @@ yyreduce: else (yyval.interm.intermTypedNode) = 0; } -#line 10547 "MachineIndependent/glslang_tab.cpp" +#line 10642 "MachineIndependent/glslang_tab.cpp" break; - case 575: /* switch_statement: switch_statement_nonattributed */ -#line 3752 "MachineIndependent/glslang.y" + case 576: /* switch_statement: switch_statement_nonattributed */ +#line 3758 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10555 "MachineIndependent/glslang_tab.cpp" +#line 10650 "MachineIndependent/glslang_tab.cpp" break; - case 576: /* switch_statement: attribute switch_statement_nonattributed */ -#line 3756 "MachineIndependent/glslang.y" + case 577: /* switch_statement: attribute switch_statement_nonattributed */ +#line 3762 "MachineIndependent/glslang.y" { parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10564 "MachineIndependent/glslang_tab.cpp" +#line 10659 "MachineIndependent/glslang_tab.cpp" break; - case 577: /* $@9: %empty */ -#line 3763 "MachineIndependent/glslang.y" + case 578: /* $@9: %empty */ +#line 3769 "MachineIndependent/glslang.y" { // start new switch sequence on the switch stack ++parseContext.controlFlowNestingLevel; @@ -10573,11 +10668,11 @@ yyreduce: parseContext.switchLevel.push_back(parseContext.statementNestingLevel); parseContext.symbolTable.push(); } -#line 10577 "MachineIndependent/glslang_tab.cpp" +#line 10672 "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 3771 "MachineIndependent/glslang.y" + case 579: /* switch_statement_nonattributed: SWITCH LEFT_PAREN expression RIGHT_PAREN $@9 LEFT_BRACE switch_statement_list RIGHT_BRACE */ +#line 3777 "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(); @@ -10587,27 +10682,27 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 10591 "MachineIndependent/glslang_tab.cpp" +#line 10686 "MachineIndependent/glslang_tab.cpp" break; - case 579: /* switch_statement_list: %empty */ -#line 3783 "MachineIndependent/glslang.y" + case 580: /* switch_statement_list: %empty */ +#line 3789 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 10599 "MachineIndependent/glslang_tab.cpp" +#line 10694 "MachineIndependent/glslang_tab.cpp" break; - case 580: /* switch_statement_list: statement_list */ -#line 3786 "MachineIndependent/glslang.y" + case 581: /* switch_statement_list: statement_list */ +#line 3792 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10607 "MachineIndependent/glslang_tab.cpp" +#line 10702 "MachineIndependent/glslang_tab.cpp" break; - case 581: /* case_label: CASE expression COLON */ -#line 3792 "MachineIndependent/glslang.y" + case 582: /* case_label: CASE expression COLON */ +#line 3798 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -10620,11 +10715,11 @@ yyreduce: (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc); } } -#line 10624 "MachineIndependent/glslang_tab.cpp" +#line 10719 "MachineIndependent/glslang_tab.cpp" break; - case 582: /* case_label: DEFAULT COLON */ -#line 3804 "MachineIndependent/glslang.y" + case 583: /* case_label: DEFAULT COLON */ +#line 3810 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -10634,28 +10729,28 @@ yyreduce: else (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc); } -#line 10638 "MachineIndependent/glslang_tab.cpp" +#line 10733 "MachineIndependent/glslang_tab.cpp" break; - case 583: /* iteration_statement: iteration_statement_nonattributed */ -#line 3816 "MachineIndependent/glslang.y" + case 584: /* iteration_statement: iteration_statement_nonattributed */ +#line 3822 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10646 "MachineIndependent/glslang_tab.cpp" +#line 10741 "MachineIndependent/glslang_tab.cpp" break; - case 584: /* iteration_statement: attribute iteration_statement_nonattributed */ -#line 3820 "MachineIndependent/glslang.y" + case 585: /* iteration_statement: attribute iteration_statement_nonattributed */ +#line 3826 "MachineIndependent/glslang.y" { parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10655 "MachineIndependent/glslang_tab.cpp" +#line 10750 "MachineIndependent/glslang_tab.cpp" break; - case 585: /* $@10: %empty */ -#line 3827 "MachineIndependent/glslang.y" + case 586: /* $@10: %empty */ +#line 3833 "MachineIndependent/glslang.y" { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", ""); @@ -10664,11 +10759,11 @@ yyreduce: ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 10668 "MachineIndependent/glslang_tab.cpp" +#line 10763 "MachineIndependent/glslang_tab.cpp" break; - case 586: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope */ -#line 3835 "MachineIndependent/glslang.y" + case 587: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope */ +#line 3841 "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); @@ -10676,21 +10771,21 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 10680 "MachineIndependent/glslang_tab.cpp" +#line 10775 "MachineIndependent/glslang_tab.cpp" break; - case 587: /* $@11: %empty */ -#line 3842 "MachineIndependent/glslang.y" + case 588: /* $@11: %empty */ +#line 3848 "MachineIndependent/glslang.y" { ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 10690 "MachineIndependent/glslang_tab.cpp" +#line 10785 "MachineIndependent/glslang_tab.cpp" break; - case 588: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON */ -#line 3847 "MachineIndependent/glslang.y" + case 589: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON */ +#line 3853 "MachineIndependent/glslang.y" { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", ""); @@ -10702,22 +10797,22 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 10706 "MachineIndependent/glslang_tab.cpp" +#line 10801 "MachineIndependent/glslang_tab.cpp" break; - case 589: /* $@12: %empty */ -#line 3858 "MachineIndependent/glslang.y" + case 590: /* $@12: %empty */ +#line 3864 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 10717 "MachineIndependent/glslang_tab.cpp" +#line 10812 "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 3864 "MachineIndependent/glslang.y" + case 591: /* iteration_statement_nonattributed: FOR LEFT_PAREN $@12 for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope */ +#line 3870 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc); @@ -10730,81 +10825,81 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 10734 "MachineIndependent/glslang_tab.cpp" +#line 10829 "MachineIndependent/glslang_tab.cpp" break; - case 591: /* for_init_statement: expression_statement */ -#line 3879 "MachineIndependent/glslang.y" + case 592: /* for_init_statement: expression_statement */ +#line 3885 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10742 "MachineIndependent/glslang_tab.cpp" +#line 10837 "MachineIndependent/glslang_tab.cpp" break; - case 592: /* for_init_statement: declaration_statement */ -#line 3882 "MachineIndependent/glslang.y" + case 593: /* for_init_statement: declaration_statement */ +#line 3888 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10750 "MachineIndependent/glslang_tab.cpp" +#line 10845 "MachineIndependent/glslang_tab.cpp" break; - case 593: /* conditionopt: condition */ -#line 3888 "MachineIndependent/glslang.y" + case 594: /* conditionopt: condition */ +#line 3894 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 10758 "MachineIndependent/glslang_tab.cpp" +#line 10853 "MachineIndependent/glslang_tab.cpp" break; - case 594: /* conditionopt: %empty */ -#line 3891 "MachineIndependent/glslang.y" + case 595: /* conditionopt: %empty */ +#line 3897 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = 0; } -#line 10766 "MachineIndependent/glslang_tab.cpp" +#line 10861 "MachineIndependent/glslang_tab.cpp" break; - case 595: /* for_rest_statement: conditionopt SEMICOLON */ -#line 3897 "MachineIndependent/glslang.y" + case 596: /* for_rest_statement: conditionopt SEMICOLON */ +#line 3903 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); (yyval.interm.nodePair).node2 = 0; } -#line 10775 "MachineIndependent/glslang_tab.cpp" +#line 10870 "MachineIndependent/glslang_tab.cpp" break; - case 596: /* for_rest_statement: conditionopt SEMICOLON expression */ -#line 3901 "MachineIndependent/glslang.y" + case 597: /* for_rest_statement: conditionopt SEMICOLON expression */ +#line 3907 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode); } -#line 10784 "MachineIndependent/glslang_tab.cpp" +#line 10879 "MachineIndependent/glslang_tab.cpp" break; - case 597: /* jump_statement: CONTINUE SEMICOLON */ -#line 3908 "MachineIndependent/glslang.y" + case 598: /* jump_statement: CONTINUE SEMICOLON */ +#line 3914 "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 10794 "MachineIndependent/glslang_tab.cpp" +#line 10889 "MachineIndependent/glslang_tab.cpp" break; - case 598: /* jump_statement: BREAK SEMICOLON */ -#line 3913 "MachineIndependent/glslang.y" + case 599: /* jump_statement: BREAK SEMICOLON */ +#line 3919 "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 10804 "MachineIndependent/glslang_tab.cpp" +#line 10899 "MachineIndependent/glslang_tab.cpp" break; - case 599: /* jump_statement: RETURN SEMICOLON */ -#line 3918 "MachineIndependent/glslang.y" + case 600: /* jump_statement: RETURN SEMICOLON */ +#line 3924 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc); if (parseContext.currentFunctionType->getBasicType() != EbtVoid) @@ -10812,101 +10907,101 @@ yyreduce: if (parseContext.inMain) parseContext.postEntryPointReturn = true; } -#line 10816 "MachineIndependent/glslang_tab.cpp" +#line 10911 "MachineIndependent/glslang_tab.cpp" break; - case 600: /* jump_statement: RETURN expression SEMICOLON */ -#line 3925 "MachineIndependent/glslang.y" + case 601: /* jump_statement: RETURN expression SEMICOLON */ +#line 3931 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); } -#line 10824 "MachineIndependent/glslang_tab.cpp" +#line 10919 "MachineIndependent/glslang_tab.cpp" break; - case 601: /* jump_statement: DISCARD SEMICOLON */ -#line 3928 "MachineIndependent/glslang.y" + case 602: /* jump_statement: DISCARD SEMICOLON */ +#line 3934 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc); } -#line 10833 "MachineIndependent/glslang_tab.cpp" +#line 10928 "MachineIndependent/glslang_tab.cpp" break; - case 602: /* jump_statement: TERMINATE_INVOCATION SEMICOLON */ -#line 3932 "MachineIndependent/glslang.y" + case 603: /* jump_statement: TERMINATE_INVOCATION SEMICOLON */ +#line 3938 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "terminateInvocation"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateInvocation, (yyvsp[-1].lex).loc); } -#line 10842 "MachineIndependent/glslang_tab.cpp" +#line 10937 "MachineIndependent/glslang_tab.cpp" break; - case 603: /* jump_statement: TERMINATE_RAY SEMICOLON */ -#line 3937 "MachineIndependent/glslang.y" + case 604: /* jump_statement: TERMINATE_RAY SEMICOLON */ +#line 3943 "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" +#line 10946 "MachineIndependent/glslang_tab.cpp" break; - case 604: /* jump_statement: IGNORE_INTERSECTION SEMICOLON */ -#line 3941 "MachineIndependent/glslang.y" + case 605: /* jump_statement: IGNORE_INTERSECTION SEMICOLON */ +#line 3947 "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" +#line 10955 "MachineIndependent/glslang_tab.cpp" break; - case 605: /* translation_unit: external_declaration */ -#line 3951 "MachineIndependent/glslang.y" + case 606: /* translation_unit: external_declaration */ +#line 3957 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } -#line 10869 "MachineIndependent/glslang_tab.cpp" +#line 10964 "MachineIndependent/glslang_tab.cpp" break; - case 606: /* translation_unit: translation_unit external_declaration */ -#line 3955 "MachineIndependent/glslang.y" + case 607: /* translation_unit: translation_unit external_declaration */ +#line 3961 "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 10880 "MachineIndependent/glslang_tab.cpp" +#line 10975 "MachineIndependent/glslang_tab.cpp" break; - case 607: /* external_declaration: function_definition */ -#line 3964 "MachineIndependent/glslang.y" + case 608: /* external_declaration: function_definition */ +#line 3970 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10888 "MachineIndependent/glslang_tab.cpp" +#line 10983 "MachineIndependent/glslang_tab.cpp" break; - case 608: /* external_declaration: declaration */ -#line 3967 "MachineIndependent/glslang.y" + case 609: /* external_declaration: declaration */ +#line 3973 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10896 "MachineIndependent/glslang_tab.cpp" +#line 10991 "MachineIndependent/glslang_tab.cpp" break; - case 609: /* external_declaration: SEMICOLON */ -#line 3971 "MachineIndependent/glslang.y" + case 610: /* external_declaration: SEMICOLON */ +#line 3977 "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 10906 "MachineIndependent/glslang_tab.cpp" +#line 11001 "MachineIndependent/glslang_tab.cpp" break; - case 610: /* $@13: %empty */ -#line 3980 "MachineIndependent/glslang.y" + case 611: /* $@13: %empty */ +#line 3986 "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); @@ -10919,11 +11014,11 @@ yyreduce: ++parseContext.statementNestingLevel; } } -#line 10923 "MachineIndependent/glslang_tab.cpp" +#line 11018 "MachineIndependent/glslang_tab.cpp" break; - case 611: /* function_definition: function_prototype $@13 compound_statement_no_new_scope */ -#line 3992 "MachineIndependent/glslang.y" + case 612: /* function_definition: function_prototype $@13 compound_statement_no_new_scope */ +#line 3998 "MachineIndependent/glslang.y" { // May be best done as post process phase on intermediate code if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) @@ -10950,52 +11045,52 @@ yyreduce: --parseContext.statementNestingLevel; } } -#line 10954 "MachineIndependent/glslang_tab.cpp" +#line 11049 "MachineIndependent/glslang_tab.cpp" break; - case 612: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET */ -#line 4022 "MachineIndependent/glslang.y" + case 613: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET */ +#line 4028 "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 10963 "MachineIndependent/glslang_tab.cpp" +#line 11058 "MachineIndependent/glslang_tab.cpp" break; - case 613: /* attribute_list: single_attribute */ -#line 4028 "MachineIndependent/glslang.y" + case 614: /* attribute_list: single_attribute */ +#line 4034 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = (yyvsp[0].interm.attributes); } -#line 10971 "MachineIndependent/glslang_tab.cpp" +#line 11066 "MachineIndependent/glslang_tab.cpp" break; - case 614: /* attribute_list: attribute_list COMMA single_attribute */ -#line 4031 "MachineIndependent/glslang.y" + case 615: /* attribute_list: attribute_list COMMA single_attribute */ +#line 4037 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes)); } -#line 10979 "MachineIndependent/glslang_tab.cpp" +#line 11074 "MachineIndependent/glslang_tab.cpp" break; - case 615: /* single_attribute: IDENTIFIER */ -#line 4036 "MachineIndependent/glslang.y" + case 616: /* single_attribute: IDENTIFIER */ +#line 4042 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string); } -#line 10987 "MachineIndependent/glslang_tab.cpp" +#line 11082 "MachineIndependent/glslang_tab.cpp" break; - case 616: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN */ -#line 4039 "MachineIndependent/glslang.y" + case 617: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN */ +#line 4045 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode)); } -#line 10995 "MachineIndependent/glslang_tab.cpp" +#line 11090 "MachineIndependent/glslang_tab.cpp" break; -#line 10999 "MachineIndependent/glslang_tab.cpp" +#line 11094 "MachineIndependent/glslang_tab.cpp" default: break; } @@ -11220,5 +11315,5 @@ yyreturn: return yyresult; } -#line 4044 "MachineIndependent/glslang.y" +#line 4050 "MachineIndependent/glslang.y" diff --git a/glslang/MachineIndependent/iomapper.h b/glslang/MachineIndependent/iomapper.h index 7934c4a9..1dce8ff5 100644 --- a/glslang/MachineIndependent/iomapper.h +++ b/glslang/MachineIndependent/iomapper.h @@ -52,7 +52,7 @@ namespace glslang { class TIntermediate; struct TVarEntryInfo { - int id; + long long id; TIntermSymbol* symbol; bool live; int newBinding; diff --git a/glslang/MachineIndependent/limits.cpp b/glslang/MachineIndependent/limits.cpp index 51d93003..39157057 100644 --- a/glslang/MachineIndependent/limits.cpp +++ b/glslang/MachineIndependent/limits.cpp @@ -63,14 +63,14 @@ namespace glslang { class TInductiveTraverser : public TIntermTraverser { public: - TInductiveTraverser(int id, TSymbolTable& st) + TInductiveTraverser(long long id, TSymbolTable& st) : loopId(id), symbolTable(st), bad(false) { } virtual bool visitBinary(TVisit, TIntermBinary* node); virtual bool visitUnary(TVisit, TIntermUnary* node); virtual bool visitAggregate(TVisit, TIntermAggregate* node); - int loopId; // unique ID of the symbol that's the loop inductive variable + long long loopId; // unique ID of the symbol that's the loop inductive variable TSymbolTable& symbolTable; bool bad; TSourceLoc badLoc; @@ -129,7 +129,7 @@ bool TInductiveTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* n // // External function to call for loop check. // -void TParseContext::inductiveLoopBodyCheck(TIntermNode* body, int loopId, TSymbolTable& symbolTable) +void TParseContext::inductiveLoopBodyCheck(TIntermNode* body, long long loopId, TSymbolTable& symbolTable) { TInductiveTraverser it(loopId, symbolTable); diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index 4e84adbf..3f3a3127 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -48,6 +48,7 @@ #include "localintermediate.h" #include "../Include/InfoSink.h" +#include "SymbolTable.h" namespace glslang { @@ -306,9 +307,9 @@ void TIntermediate::mergeTrees(TInfoSink& infoSink, TIntermediate& unit) // Map by global name to unique ID to rationalize the same object having // differing IDs in different trees. TIdMaps idMaps; - int maxId; - seedIdMap(idMaps, maxId); - remapIds(idMaps, maxId + 1, unit); + long long idShift; + seedIdMap(idMaps, idShift); + remapIds(idMaps, idShift + 1, unit); mergeBodies(infoSink, globals, unitGlobals); mergeLinkerObjects(infoSink, linkerObjects, unitLinkerObjects); @@ -329,14 +330,14 @@ static const TString& getNameForIdMap(TIntermSymbol* symbol) // Traverser that seeds an ID map with all built-ins, and tracks the -// maximum ID used. +// maximum ID used, currently using (maximum ID + 1) as new symbol id shift seed. +// Level id will keep same after shifting. // (It would be nice to put this in a function, but that causes warnings // on having no bodies for the copy-constructor/operator=.) class TBuiltInIdTraverser : public TIntermTraverser { public: - TBuiltInIdTraverser(TIdMaps& idMaps) : idMaps(idMaps), maxId(0) { } + TBuiltInIdTraverser(TIdMaps& idMaps) : idMaps(idMaps), idShift(0) { } // If it's a built in, add it to the map. - // Track the max ID. virtual void visitSymbol(TIntermSymbol* symbol) { const TQualifier& qualifier = symbol->getType().getQualifier(); @@ -344,14 +345,16 @@ public: TShaderInterface si = symbol->getType().getShaderInterface(); idMaps[si][getNameForIdMap(symbol)] = symbol->getId(); } - maxId = std::max(maxId, symbol->getId()); + idShift = (symbol->getId() & ~TSymbolTable::uniqueIdMask) | + std::max(idShift & TSymbolTable::uniqueIdMask, + symbol->getId() & TSymbolTable::uniqueIdMask); } - int getMaxId() const { return maxId; } + long long getIdShift() const { return idShift; } protected: TBuiltInIdTraverser(TBuiltInIdTraverser&); TBuiltInIdTraverser& operator=(TBuiltInIdTraverser&); TIdMaps& idMaps; - int maxId; + long long idShift; }; // Traverser that seeds an ID map with non-builtins. @@ -377,12 +380,12 @@ protected: }; // Initialize the the ID map with what we know of 'this' AST. -void TIntermediate::seedIdMap(TIdMaps& idMaps, int& maxId) +void TIntermediate::seedIdMap(TIdMaps& idMaps, long long& idShift) { // all built-ins everywhere need to align on IDs and contribute to the max ID TBuiltInIdTraverser builtInIdTraverser(idMaps); treeRoot->traverse(&builtInIdTraverser); - maxId = builtInIdTraverser.getMaxId(); + idShift = builtInIdTraverser.getIdShift() & TSymbolTable::uniqueIdMask; // user variables in the linker object list need to align on ids TUserIdTraverser userIdTraverser(idMaps); @@ -394,7 +397,7 @@ void TIntermediate::seedIdMap(TIdMaps& idMaps, int& maxId) // on having no bodies for the copy-constructor/operator=.) class TRemapIdTraverser : public TIntermTraverser { public: - TRemapIdTraverser(const TIdMaps& idMaps, int idShift) : idMaps(idMaps), idShift(idShift) { } + TRemapIdTraverser(const TIdMaps& idMaps, long long idShift) : idMaps(idMaps), idShift(idShift) { } // Do the mapping: // - if the same symbol, adopt the 'this' ID // - otherwise, ensure a unique ID by shifting to a new space @@ -406,7 +409,9 @@ public: TShaderInterface si = symbol->getType().getShaderInterface(); auto it = idMaps[si].find(getNameForIdMap(symbol)); if (it != idMaps[si].end()) { - symbol->changeId(it->second); + uint64_t id = (symbol->getId() & ~TSymbolTable::uniqueIdMask) | + (it->second & TSymbolTable::uniqueIdMask); + symbol->changeId(id); remapped = true; } } @@ -417,10 +422,10 @@ protected: TRemapIdTraverser(TRemapIdTraverser&); TRemapIdTraverser& operator=(TRemapIdTraverser&); const TIdMaps& idMaps; - int idShift; + long long idShift; }; -void TIntermediate::remapIds(const TIdMaps& idMaps, int idShift, TIntermediate& unit) +void TIntermediate::remapIds(const TIdMaps& idMaps, long long idShift, TIntermediate& unit) { // Remap all IDs to either share or be unique, as dictated by the idMap and idShift. TRemapIdTraverser idTraverser(idMaps, idShift); @@ -653,6 +658,25 @@ void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& sy #endif } +void TIntermediate::sharedBlockCheck(TInfoSink& infoSink) +{ + bool has_shared_block = false; + bool has_shared_non_block = false; + TIntermSequence& linkObjects = findLinkerObjects()->getSequence(); + for (size_t i = 0; i < linkObjects.size(); ++i) { + const TType& type = linkObjects[i]->getAsTyped()->getType(); + const TQualifier& qualifier = type.getQualifier(); + if (qualifier.storage == glslang::EvqShared) { + if (type.getBasicType() == glslang::EbtBlock) + has_shared_block = true; + else + has_shared_non_block = true; + } + } + if (has_shared_block && has_shared_non_block) + error(infoSink, "cannot mix use of shared variables inside and outside blocks"); +} + // // Do final link-time error checking of a complete (merged) intermediate representation. // (Much error checking was done during merging). @@ -778,6 +802,7 @@ void TIntermediate::finalCheck(TInfoSink& infoSink, bool keepUncalled) error(infoSink, "post_depth_coverage requires early_fragment_tests"); break; case EShLangCompute: + sharedBlockCheck(infoSink); break; case EShLangRayGen: case EShLangIntersect: @@ -810,6 +835,7 @@ void TIntermediate::finalCheck(TInfoSink& infoSink, bool keepUncalled) case EShLangTaskNV: if (numTaskNVBlocks > 1) error(infoSink, "Only one taskNV interface block is allowed per shader"); + sharedBlockCheck(infoSink); break; default: error(infoSink, "Unknown Stage."); diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index f8d8e801..1db3d1c3 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -227,10 +227,10 @@ enum ComputeDerivativeMode { class TIdMaps { public: - TMap<TString, int>& operator[](int i) { return maps[i]; } - const TMap<TString, int>& operator[](int i) const { return maps[i]; } + TMap<TString, long long>& operator[](long long i) { return maps[i]; } + const TMap<TString, long long>& operator[](long long i) const { return maps[i]; } private: - TMap<TString, int> maps[EsiCount]; + TMap<TString, long long> maps[EsiCount]; }; class TNumericFeatures { @@ -292,7 +292,8 @@ public: invertY(false), useStorageBuffer(false), nanMinMaxClamp(false), - depthReplacing(false) + depthReplacing(false), + uniqueId(0) #ifndef GLSLANG_WEB , implicitThisName("@this"), implicitCounterName("@count"), @@ -858,6 +859,14 @@ public: bool usingHlslIoMapping() { return false; } #endif + bool usingScalarBlockLayout() const { + for (auto extIt = requestedExtensions.begin(); extIt != requestedExtensions.end(); ++extIt) { + if (*extIt == E_GL_EXT_scalar_block_layout) + return true; + } + return false; + } + void addToCallGraph(TInfoSink&, const TString& caller, const TString& callee); void merge(TInfoSink&, TIntermediate&); void finalCheck(TInfoSink&, bool keepUncalled); @@ -903,6 +912,8 @@ public: void addProcess(const std::string& process) { processes.addProcess(process); } void addProcessArgument(const std::string& arg) { processes.addArgument(arg); } const std::vector<std::string>& getProcesses() const { return processes.getProcesses(); } + unsigned long long getUniqueId() const { return uniqueId; } + void setUniqueId(unsigned long long id) { uniqueId = id; } // Certain explicit conversions are allowed conditionally #ifdef GLSLANG_WEB @@ -931,14 +942,14 @@ public: #endif protected: - TIntermSymbol* addSymbol(int Id, const TString&, const TType&, const TConstUnionArray&, TIntermTyped* subtree, const TSourceLoc&); + TIntermSymbol* addSymbol(long long Id, const TString&, const TType&, const TConstUnionArray&, TIntermTyped* subtree, const TSourceLoc&); void error(TInfoSink& infoSink, const char*); void warn(TInfoSink& infoSink, const char*); void mergeCallGraphs(TInfoSink&, TIntermediate&); void mergeModes(TInfoSink&, TIntermediate&); void mergeTrees(TInfoSink&, TIntermediate&); - void seedIdMap(TIdMaps& idMaps, int& maxId); - void remapIds(const TIdMaps& idMaps, int idShift, TIntermediate&); + void seedIdMap(TIdMaps& idMaps, long long& IdShift); + void remapIds(const TIdMaps& idMaps, long long idShift, TIntermediate&); void mergeBodies(TInfoSink&, TIntermSequence& globals, const TIntermSequence& unitGlobals); void mergeLinkerObjects(TInfoSink&, TIntermSequence& linkerObjects, const TIntermSequence& unitLinkerObjects); void mergeImplicitArraySizes(TType&, const TType&); @@ -946,6 +957,7 @@ protected: void checkCallGraphCycles(TInfoSink&); void checkCallGraphBodies(TInfoSink&, bool keepUncalled); void inOutLocationCheck(TInfoSink&); + void sharedBlockCheck(TInfoSink&); bool userOutputUsed() const; bool isSpecializationOperation(const TIntermOperator&) const; bool isNonuniformPropagating(TOperator) const; @@ -990,6 +1002,7 @@ protected: int localSize[3]; bool localSizeNotDefault[3]; int localSizeSpecId[3]; + unsigned long long uniqueId; #ifndef GLSLANG_WEB public: const char* const implicitThisName; 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 } diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index 273f1569..e147b0dc 100644 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -167,7 +167,7 @@ typedef enum { EShTargetVulkan_1_1 = (1 << 22) | (1 << 12), // Vulkan 1.1 EShTargetVulkan_1_2 = (1 << 22) | (2 << 12), // Vulkan 1.2 EShTargetOpenGL_450 = 450, // OpenGL - LAST_ELEMENT_MARKER(EShTargetClientVersionCount), + LAST_ELEMENT_MARKER(EShTargetClientVersionCount = 4), } EShTargetClientVersion; typedef EShTargetClientVersion EshTargetClientVersion; @@ -179,7 +179,7 @@ typedef enum { EShTargetSpv_1_3 = (1 << 16) | (3 << 8), // SPIR-V 1.3 EShTargetSpv_1_4 = (1 << 16) | (4 << 8), // SPIR-V 1.4 EShTargetSpv_1_5 = (1 << 16) | (5 << 8), // SPIR-V 1.5 - LAST_ELEMENT_MARKER(EShTargetLanguageVersionCount), + LAST_ELEMENT_MARKER(EShTargetLanguageVersionCount = 6), } EShTargetLanguageVersion; struct TInputLanguage { @@ -458,6 +458,7 @@ public: GLSLANG_EXPORT void setEntryPoint(const char* entryPoint); GLSLANG_EXPORT void setSourceEntryPoint(const char* sourceEntryPointName); GLSLANG_EXPORT void addProcesses(const std::vector<std::string>&); + GLSLANG_EXPORT void setUniqueId(unsigned long long id); // IO resolver binding data: see comments in ShaderLang.cpp GLSLANG_EXPORT void setShiftBinding(TResourceType res, unsigned int base); 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<FileNameEntryPointPair>{ + {"hlsl.round.dx9.frag", "main"}, {"hlsl.sample.dx9.frag", "main"}, {"hlsl.sample.dx9.vert", "main"}, }), diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index a393cccc..2ee292e4 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", @@ -375,6 +376,7 @@ INSTANTIATE_TEST_SUITE_P( "spv.nonuniform4.frag", "spv.nonuniform5.frag", "spv.noWorkgroup.comp", + "spv.nullInit.comp", "spv.offsets.frag", "spv.Operations.frag", "spv.paramMemory.frag", @@ -501,6 +503,7 @@ INSTANTIATE_TEST_SUITE_P( "spv.memoryScopeSemantics.comp", "spv.memoryScopeSemantics_Error.comp", "spv.multiView.frag", + "spv.queueFamilyScope.comp", "spv.RayGenShader11.rgen", "spv.subgroup.frag", "spv.subgroup.geom", @@ -579,6 +582,17 @@ INSTANTIATE_TEST_SUITE_P( "spv.ext.World3x4.rahit", "spv.ext.AccelDecl.frag", "spv.ext.RayQueryDecl.frag", + + // SPV_KHR_workgroup_memory_explicit_layout depends on SPIR-V 1.4. + "spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp", + "spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp", + "spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp", + "spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp", + "spv.WorkgroupMemoryExplicitLayout.NonBlock.comp", + "spv.WorkgroupMemoryExplicitLayout.MixBlockNonBlock_Errors.comp", + "spv.WorkgroupMemoryExplicitLayout.std140.comp", + "spv.WorkgroupMemoryExplicitLayout.std430.comp", + "spv.WorkgroupMemoryExplicitLayout.scalar.comp", })), FileNameAsCustomTestSuffix ); diff --git a/known_good.json b/known_good.json index 81301e13..4442f892 100644 --- a/known_good.json +++ b/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "cd590fa3341284cd6d1ee82366155786cfd44c96" + "commit" : "c79edd260c2b503f0eca57310057b4a100999cc5" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "f027d53ded7e230e008d37c8b47ede7cd308e19d" + "commit" : "75b30a659c8a4979104986652c54cc421fc51129" } ] } diff --git a/license-checker.cfg b/license-checker.cfg index 886b3353..409f18ef 100644 --- a/license-checker.cfg +++ b/license-checker.cfg @@ -1,6 +1,7 @@ [
{
"licenses": [
+ "Apache-2.0",
"Apache-2.0-Header",
"BSD-2-Clause",
"BSD-3-Clause",
@@ -29,14 +30,19 @@ "build/**",
"out/**",
"Test/**",
- "External/spirv-tools/**"
+ "External/spirv-tools/**",
+
+ "SPIRV/GLSL.*.h",
+ "SPIRV/NonSemanticDebugPrintf.h",
+ "SPIRV/spirv.hpp"
]
}
]
},
{
"licenses": [
- "GPL-Header"
+ "GPL-Header",
+ "GPL-3.0-or-later"
],
"paths": [
{ "exclude": [ "**" ] },
diff --git a/parse_version.cmake b/parse_version.cmake new file mode 100644 index 00000000..b9ba4137 --- /dev/null +++ b/parse_version.cmake @@ -0,0 +1,41 @@ +# Copyright (C) 2020 Google, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# parse_version() reads and parses the version string from FILE, assigning the +# version string to ${PROJECT}_VERSION and the parsed version to +# ${PROJECT}_VERSION_MAJOR, ${PROJECT}_VERSION_MINOR, ${PROJECT}_VERSION_PATCH, +# and the optional ${PROJECT}_VERSION_FLAVOR. +# +# The version string take one of the forms: +# <major>.<minor>.<patch> +# <major>.<minor>.<patch>-<flavor> +function(parse_version FILE PROJECT) + configure_file(${FILE} "${CMAKE_CURRENT_BINARY_DIR}/CHANGES.md") # Required to re-run cmake on version change + file(READ ${FILE} CHANGES) + if(${CHANGES} MATCHES "#+ *([0-9]+)\\.([0-9]+)\\.([0-9]+)(-[a-zA-Z0-9]+)?") + set(FLAVOR "") + if(NOT "${CMAKE_MATCH_4}" STREQUAL "") + string(SUBSTRING ${CMAKE_MATCH_4} 1 -1 FLAVOR) + endif() + set("${PROJECT}_VERSION_MAJOR" ${CMAKE_MATCH_1} PARENT_SCOPE) + set("${PROJECT}_VERSION_MINOR" ${CMAKE_MATCH_2} PARENT_SCOPE) + set("${PROJECT}_VERSION_PATCH" ${CMAKE_MATCH_3} PARENT_SCOPE) + set("${PROJECT}_VERSION_FLAVOR" ${FLAVOR} PARENT_SCOPE) + set("${PROJECT}_VERSION" + "${CMAKE_MATCH_1}.${CMAKE_MATCH_2}.${CMAKE_MATCH_3}${CMAKE_MATCH_4}" + PARENT_SCOPE) + else() + message(FATAL_ERROR "Unable to parse version from '${FILE}'") + endif() +endfunction() |