diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2021-11-30 21:31:11 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2021-11-30 21:31:11 +0000 |
commit | c57a86e31559ecee42f9429531ad4fd331bf978d (patch) | |
tree | 7133505ef9ee56b47cda7dd37e75f833ef3e6777 | |
parent | 0666707e85ef4ed344eab22e9c7240023592ecc4 (diff) | |
parent | 153d3c46363b5b47423e15aab803c8e9139c3d42 (diff) | |
download | glslang-ndk-r24-release.tar.gz |
Snap for 7956253 from 153d3c46363b5b47423e15aab803c8e9139c3d42 to ndk-r24-releasendk-r24-rc1ndk-r24-beta2ndk-r24ndk-r24-release
Change-Id: Ifd9d3a9c79131deca827d2186d3502dedb51793b
115 files changed, 5720 insertions, 4460 deletions
diff --git a/BUILD.bazel b/BUILD.bazel index e8cf6a86..1115b7de 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -49,6 +49,11 @@ py_binary( srcs = ["build_info.py"], ) +py_binary( + name = "gen_extension_headers", + srcs = ["gen_extension_headers.py"], +) + genrule( name = "gen_build_info_h", srcs = ["CHANGES.md", "build_info.h.tmpl"], @@ -58,6 +63,14 @@ genrule( tools = [":build_info"], ) +genrule( + name = "gen_extension_headers_h", + srcs = ["glslang/ExtensionHeaders", "gen_extension_headers.py"], + outs = ["glslang/glsl_intrinsic_header.h"], + cmd_bash = "$(location gen_extension_headers) -i $(location glslang/ExtensionHeaders) -o $(location glslang/glsl_intrinsic_header.h)", + tools = [":gen_extension_headers"], +) + COMMON_COPTS = select({ "@bazel_tools//src/conditions:windows": [""], "//conditions:default": [ @@ -206,6 +219,7 @@ cc_binary( srcs = [ "StandAlone/StandAlone.cpp", "StandAlone/Worklist.h", + ":glslang/glsl_intrinsic_header.h" ], copts = COMMON_COPTS, deps = [ @@ -69,6 +69,23 @@ action("glslang_build_info") { ] } +action("glslang_extension_headers") { + script = "gen_extension_headers.py" + + out_file = "${target_gen_dir}/include/glslang/glsl_intrinsic_header.h" + + inputs = [ + script + ] + outputs = [ out_file ] + args = [ + "-i", + rebase_path("glslang/ExtensionHeaders", root_build_dir), + "-o", + rebase_path(out_file, root_build_dir), + ] +} + spirv_tools_dir = glslang_spirv_tools_dir if (!defined(glslang_angle)) { glslang_angle = false @@ -302,6 +319,7 @@ executable("glslang_validator") { ":glslang_build_info", ":glslang_default_resource_limits_sources", ":glslang_sources", + ":glslang_extension_headers", ] public_configs = [ ":glslang_hlsl" ] diff --git a/CMakeLists.txt b/CMakeLists.txt index c318eef9..d5b727ac 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -118,7 +118,7 @@ if(USE_CCACHE) find_program(CCACHE_FOUND ccache) if(CCACHE_FOUND) set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache) - endif(CCACHE_FOUND) + endif() endif() if(ENABLE_CTEST) @@ -127,27 +127,27 @@ endif() if(ENABLE_HLSL) add_definitions(-DENABLE_HLSL) -endif(ENABLE_HLSL) +endif() if(ENABLE_GLSLANG_WEBMIN) add_definitions(-DGLSLANG_WEB) if(ENABLE_GLSLANG_WEBMIN_DEVEL) add_definitions(-DGLSLANG_WEB_DEVEL) - endif(ENABLE_GLSLANG_WEBMIN_DEVEL) -endif(ENABLE_GLSLANG_WEBMIN) + endif() +endif() if(WIN32) set(CMAKE_DEBUG_POSTFIX "d") option(OVERRIDE_MSVCCRT "Overrides runtime of MSVC " ON) if(MSVC AND OVERRIDE_MSVCCRT) include(ChooseMSVCCRT.cmake) - endif(MSVC) + endif() add_definitions(-DGLSLANG_OSINCLUDE_WIN32) elseif(UNIX) add_definitions(-DGLSLANG_OSINCLUDE_UNIX) -else(WIN32) +else() message("unknown platform") -endif(WIN32) +endif() if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU") add_compile_options(-Wall -Wmaybe-uninitialized -Wuninitialized -Wunused -Wunused-local-typedefs @@ -213,7 +213,7 @@ if(ENABLE_GLSLANG_JS) add_compile_options(-Wno-unused-variable -Wno-unused-const-variable) endif() endif() -endif(ENABLE_GLSLANG_JS) +endif() # Request C++11 if(${CMAKE_VERSION} VERSION_LESS 3.1) @@ -329,7 +329,7 @@ endif() add_subdirectory(SPIRV) if(ENABLE_HLSL) add_subdirectory(hlsl) -endif(ENABLE_HLSL) +endif() if(ENABLE_CTEST) add_subdirectory(gtests) endif() @@ -346,11 +346,11 @@ if(ENABLE_CTEST AND BUILD_TESTING) set(RESULTS_PATH ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIGURATION>/localResults) set(VALIDATOR_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$<CONFIGURATION>/glslangValidator) set(REMAP_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$<CONFIGURATION>/spirv-remap) - else(CMAKE_CONFIGURATION_TYPES) + else() set(RESULTS_PATH ${CMAKE_CURRENT_BINARY_DIR}/localResults) set(VALIDATOR_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/glslangValidator) set(REMAP_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/spirv-remap) - endif(CMAKE_CONFIGURATION_TYPES) + endif() add_test(NAME glslang-testsuite COMMAND bash ${IGNORE_CR_FLAG} runtests ${RESULTS_PATH} ${VALIDATOR_PATH} ${REMAP_PATH} diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt index d699dadd..22f767d7 100644 --- a/SPIRV/CMakeLists.txt +++ b/SPIRV/CMakeLists.txt @@ -101,12 +101,12 @@ if(ENABLE_OPT) $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/External>) else() target_link_libraries(SPIRV PRIVATE MachineIndependent) -endif(ENABLE_OPT) +endif() if(WIN32) source_group("Source" FILES ${SOURCES} ${HEADERS}) source_group("Source" FILES ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS}) -endif(WIN32) +endif() if(ENABLE_GLSLANG_INSTALL) if(BUILD_SHARED_LIBS) @@ -135,4 +135,4 @@ if(ENABLE_GLSLANG_INSTALL) install(EXPORT SPIRVTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) install(FILES ${HEADERS} ${SPVREMAP_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang/SPIRV/) -endif(ENABLE_GLSLANG_INSTALL) +endif() diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index c323bcdb..43aba9cb 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -1830,10 +1830,10 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, std::vector<spv::Id> operandIds; assert(!modeId.second.empty()); for (auto extraOperand : modeId.second) { - int nextConst = 0; - spv::Id operandId = createSpvConstantFromConstUnionArray( - extraOperand->getType(), extraOperand->getConstArray(), nextConst, false); - operandIds.push_back(operandId); + if (extraOperand->getType().getQualifier().isSpecConstant()) + operandIds.push_back(getSymbolId(extraOperand->getAsSymbolNode())); + else + operandIds.push_back(createSpvConstant(*extraOperand)); } builder.addExecutionModeId(shaderEntry, static_cast<spv::ExecutionMode>(modeId.first), operandIds); } @@ -3384,7 +3384,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt const auto& spirvInst = node->getSpirvInstruction(); if (spirvInst.set == "") { std::vector<spv::IdImmediate> idImmOps; - for (int i = 0; i < glslangOperands.size(); ++i) { + for (unsigned int i = 0; i < glslangOperands.size(); ++i) { if (glslangOperands[i]->getAsTyped()->getQualifier().isSpirvLiteral()) { // Translate the constant to a literal value std::vector<unsigned> literals; @@ -3940,12 +3940,14 @@ spv::Id TGlslangToSpvTraverser::getSampledType(const glslang::TSampler& sampler) builder.addExtension(spv::E_SPV_AMD_gpu_shader_half_float_fetch); builder.addCapability(spv::CapabilityFloat16ImageAMD); return builder.makeFloatType(16); - case glslang::EbtInt64: return builder.makeIntType(64); + case glslang::EbtInt64: builder.addExtension(spv::E_SPV_EXT_shader_image_int64); - builder.addCapability(spv::CapabilityFloat16ImageAMD); - case glslang::EbtUint64: return builder.makeUintType(64); + builder.addCapability(spv::CapabilityInt64ImageEXT); + return builder.makeIntType(64); + case glslang::EbtUint64: builder.addExtension(spv::E_SPV_EXT_shader_image_int64); - builder.addCapability(spv::CapabilityFloat16ImageAMD); + builder.addCapability(spv::CapabilityInt64ImageEXT); + return builder.makeUintType(64); #endif default: assert(0); @@ -4148,58 +4150,48 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty std::vector<spv::Id> operands; for (const auto& typeParam : spirvType.typeParams) { - if (typeParam.isConstant) { - // Constant expression - if (typeParam.constant->isLiteral()) { - if (typeParam.constant->getBasicType() == glslang::EbtFloat) { - float floatValue = static_cast<float>(typeParam.constant->getConstArray()[0].getDConst()); - unsigned literal = *reinterpret_cast<unsigned*>(&floatValue); - operands.push_back(literal); - } else if (typeParam.constant->getBasicType() == glslang::EbtInt) { - unsigned literal = typeParam.constant->getConstArray()[0].getIConst(); - operands.push_back(literal); - } else if (typeParam.constant->getBasicType() == glslang::EbtUint) { - unsigned literal = typeParam.constant->getConstArray()[0].getUConst(); - operands.push_back(literal); - } else if (typeParam.constant->getBasicType() == glslang::EbtBool) { - unsigned literal = typeParam.constant->getConstArray()[0].getBConst(); - operands.push_back(literal); - } else if (typeParam.constant->getBasicType() == glslang::EbtString) { - auto str = typeParam.constant->getConstArray()[0].getSConst()->c_str(); - unsigned literal = 0; - char* literalPtr = reinterpret_cast<char*>(&literal); - unsigned charCount = 0; - char ch = 0; - do { - ch = *(str++); - *(literalPtr++) = ch; - ++charCount; - if (charCount == 4) { - operands.push_back(literal); - literalPtr = reinterpret_cast<char*>(&literal); - charCount = 0; - } - } while (ch != 0); - - // Partial literal is padded with 0 - if (charCount > 0) { - for (; charCount < 4; ++charCount) - *(literalPtr++) = 0; + // Constant expression + if (typeParam.constant->isLiteral()) { + if (typeParam.constant->getBasicType() == glslang::EbtFloat) { + float floatValue = static_cast<float>(typeParam.constant->getConstArray()[0].getDConst()); + unsigned literal = *reinterpret_cast<unsigned*>(&floatValue); + operands.push_back(literal); + } else if (typeParam.constant->getBasicType() == glslang::EbtInt) { + unsigned literal = typeParam.constant->getConstArray()[0].getIConst(); + operands.push_back(literal); + } else if (typeParam.constant->getBasicType() == glslang::EbtUint) { + unsigned literal = typeParam.constant->getConstArray()[0].getUConst(); + operands.push_back(literal); + } else if (typeParam.constant->getBasicType() == glslang::EbtBool) { + unsigned literal = typeParam.constant->getConstArray()[0].getBConst(); + operands.push_back(literal); + } else if (typeParam.constant->getBasicType() == glslang::EbtString) { + auto str = typeParam.constant->getConstArray()[0].getSConst()->c_str(); + unsigned literal = 0; + char* literalPtr = reinterpret_cast<char*>(&literal); + unsigned charCount = 0; + char ch = 0; + do { + ch = *(str++); + *(literalPtr++) = ch; + ++charCount; + if (charCount == 4) { operands.push_back(literal); + literalPtr = reinterpret_cast<char*>(&literal); + charCount = 0; } - } else - assert(0); // Unexpected type - } else { - int nextConst = 0; - spv::Id constant = createSpvConstantFromConstUnionArray( - typeParam.constant->getType(), typeParam.constant->getConstArray(), nextConst, false); - operands.push_back(constant); - } - } else { - // Type specifier - spv::Id typeId = convertGlslangToSpvType(*typeParam.type); - operands.push_back(typeId); - } + } while (ch != 0); + + // Partial literal is padded with 0 + if (charCount > 0) { + for (; charCount < 4; ++charCount) + *(literalPtr++) = 0; + operands.push_back(literal); + } + } else + assert(0); // Unexpected type + } else + operands.push_back(createSpvConstant(*typeParam.constant)); } if (spirvInst.set == "") @@ -7506,6 +7498,8 @@ spv::Id TGlslangToSpvTraverser::createInvocationsOperation(glslang::TOperator op break; case glslang::EOpReadFirstInvocation: opCode = spv::OpSubgroupFirstInvocationKHR; + if (builder.isVectorType(typeId)) + return CreateInvocationsVectorOperation(opCode, groupOperation, typeId, operands); break; case glslang::EOpBallot: { @@ -7630,7 +7624,7 @@ spv::Id TGlslangToSpvTraverser::CreateInvocationsVectorOperation(spv::Op op, spv assert(op == spv::OpGroupFMin || op == spv::OpGroupUMin || op == spv::OpGroupSMin || op == spv::OpGroupFMax || op == spv::OpGroupUMax || op == spv::OpGroupSMax || op == spv::OpGroupFAdd || op == spv::OpGroupIAdd || op == spv::OpGroupBroadcast || - op == spv::OpSubgroupReadInvocationKHR || + op == spv::OpSubgroupReadInvocationKHR || op == spv::OpSubgroupFirstInvocationKHR || op == spv::OpGroupFMinNonUniformAMD || op == spv::OpGroupUMinNonUniformAMD || op == spv::OpGroupSMinNonUniformAMD || op == spv::OpGroupFMaxNonUniformAMD || op == spv::OpGroupUMaxNonUniformAMD || @@ -7659,6 +7653,8 @@ spv::Id TGlslangToSpvTraverser::CreateInvocationsVectorOperation(spv::Op op, spv spvGroupOperands.push_back(scalar); spv::IdImmediate operand = { true, operands[1] }; spvGroupOperands.push_back(operand); + } else if (op == spv::OpSubgroupFirstInvocationKHR) { + spvGroupOperands.push_back(scalar); } else if (op == spv::OpGroupBroadcast) { spv::IdImmediate scope = { true, builder.makeUintConstant(spv::ScopeSubgroup) }; spvGroupOperands.push_back(scope); @@ -8841,12 +8837,12 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol std::vector<spv::Id> operandIds; assert(!decorateId.second.empty()); for (auto extraOperand : decorateId.second) { - int nextConst = 0; - spv::Id operandId = createSpvConstantFromConstUnionArray( - extraOperand->getType(), extraOperand->getConstArray(), nextConst, false); - operandIds.push_back(operandId); + if (extraOperand->getQualifier().isSpecConstant()) + operandIds.push_back(getSymbolId(extraOperand->getAsSymbolNode())); + else + operandIds.push_back(createSpvConstant(*extraOperand)); } - builder.addDecoration(id, static_cast<spv::Decoration>(decorateId.first), operandIds); + builder.addDecorationId(id, static_cast<spv::Decoration>(decorateId.first), operandIds); } // Add spirv_decorate_string diff --git a/SPIRV/SpvPostProcess.cpp b/SPIRV/SpvPostProcess.cpp index 23d7b5a4..dd6dabce 100644 --- a/SPIRV/SpvPostProcess.cpp +++ b/SPIRV/SpvPostProcess.cpp @@ -44,10 +44,8 @@ #include <algorithm> #include "SpvBuilder.h" - #include "spirv.hpp" -#include "GlslangToSpv.h" -#include "SpvBuilder.h" + namespace spv { #include "GLSL.std.450.h" #include "GLSL.ext.KHR.h" @@ -113,8 +111,6 @@ void Builder::postProcessType(const Instruction& inst, Id typeId) } } break; - case OpAccessChain: - case OpPtrAccessChain: case OpCopyObject: break; case OpFConvert: @@ -161,26 +157,43 @@ void Builder::postProcessType(const Instruction& inst, Id typeId) switch (inst.getImmediateOperand(1)) { case GLSLstd450Frexp: case GLSLstd450FrexpStruct: - if (getSpvVersion() < glslang::EShTargetSpv_1_3 && containsType(typeId, OpTypeInt, 16)) + if (getSpvVersion() < spv::Spv_1_3 && containsType(typeId, OpTypeInt, 16)) addExtension(spv::E_SPV_AMD_gpu_shader_int16); break; case GLSLstd450InterpolateAtCentroid: case GLSLstd450InterpolateAtSample: case GLSLstd450InterpolateAtOffset: - if (getSpvVersion() < glslang::EShTargetSpv_1_3 && containsType(typeId, OpTypeFloat, 16)) + if (getSpvVersion() < spv::Spv_1_3 && containsType(typeId, OpTypeFloat, 16)) addExtension(spv::E_SPV_AMD_gpu_shader_half_float); break; default: break; } break; + case OpAccessChain: + case OpPtrAccessChain: + if (isPointerType(typeId)) + break; + if (basicTypeOp == OpTypeInt) { + if (width == 16) + addCapability(CapabilityInt16); + else if (width == 8) + addCapability(CapabilityInt8); + } default: - if (basicTypeOp == OpTypeFloat && width == 16) - addCapability(CapabilityFloat16); - if (basicTypeOp == OpTypeInt && width == 16) - addCapability(CapabilityInt16); - if (basicTypeOp == OpTypeInt && width == 8) - addCapability(CapabilityInt8); + if (basicTypeOp == OpTypeInt) { + if (width == 16) + addCapability(CapabilityInt16); + else if (width == 8) + addCapability(CapabilityInt8); + else if (width == 64) + addCapability(CapabilityInt64); + } else if (basicTypeOp == OpTypeFloat) { + if (width == 16) + addCapability(CapabilityFloat16); + else if (width == 64) + addCapability(CapabilityFloat64); + } break; } } diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt index 751d1cd7..2b163e7f 100644 --- a/StandAlone/CMakeLists.txt +++ b/StandAlone/CMakeLists.txt @@ -31,6 +31,22 @@ # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. +find_host_package(PythonInterp 3 REQUIRED) + +set(GLSLANG_INTRINSIC_H "${GLSLANG_GENERATED_INCLUDEDIR}/glslang/glsl_intrinsic_header.h") +set(GLSLANG_INTRINSIC_PY "${CMAKE_CURRENT_SOURCE_DIR}/../gen_extension_headers.py") +set(GLSLANG_INTRINSIC_HEADER_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../glslang/ExtensionHeaders") + +add_custom_command( + OUTPUT ${GLSLANG_INTRINSIC_H} + COMMAND ${PYTHON_EXECUTABLE} "${GLSLANG_INTRINSIC_PY}" + "-i" ${GLSLANG_INTRINSIC_HEADER_DIR} + "-o" ${GLSLANG_INTRINSIC_H} + DEPENDS ${GLSLANG_INTRINSIC_PY} + COMMENT "Generating ${GLSLANG_INTRINSIC_H}") + +#add_custom_target(glslangValidator DEPENDS ${GLSLANG_INTRINSIC_H}) + add_library(glslang-default-resource-limits ${CMAKE_CURRENT_SOURCE_DIR}/ResourceLimits.cpp ${CMAKE_CURRENT_SOURCE_DIR}/resource_limits_c.cpp) @@ -41,7 +57,7 @@ target_include_directories(glslang-default-resource-limits PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>) -set(SOURCES StandAlone.cpp DirStackFileIncluder.h) +set(SOURCES StandAlone.cpp DirStackFileIncluder.h ${GLSLANG_INTRINSIC_H}) add_executable(glslangValidator ${SOURCES}) set_property(TARGET glslangValidator PROPERTY FOLDER tools) @@ -62,7 +78,7 @@ elseif(UNIX) if(NOT ANDROID) set(LIBRARIES ${LIBRARIES} pthread) endif() -endif(WIN32) +endif() target_link_libraries(glslangValidator ${LIBRARIES}) target_include_directories(glslangValidator PUBLIC @@ -73,7 +89,7 @@ if(ENABLE_OPT) target_include_directories(glslangValidator PRIVATE ${spirv-tools_SOURCE_DIR}/include ) -endif(ENABLE_OPT) +endif() if(ENABLE_SPVREMAPPER) set(REMAPPER_SOURCES spirv-remap.cpp) @@ -85,7 +101,7 @@ endif() if(WIN32) source_group("Source" FILES ${SOURCES}) -endif(WIN32) +endif() if(ENABLE_GLSLANG_INSTALL) install(TARGETS glslangValidator EXPORT glslangValidatorTargets @@ -108,4 +124,4 @@ if(ENABLE_GLSLANG_INSTALL) ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() install(EXPORT glslang-default-resource-limitsTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) -endif(ENABLE_GLSLANG_INSTALL) +endif() diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index e62f92f7..23e510c2 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -2,6 +2,7 @@ // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2013-2016 LunarG, Inc. // Copyright (C) 2016-2020 Google, Inc. +// Modifications Copyright(C) 2021 Advanced Micro Devices, Inc.All rights reserved. // // All rights reserved. // @@ -65,6 +66,8 @@ // Build-time generated includes #include "glslang/build_info.h" +#include "glslang/glsl_intrinsic_header.h" + extern "C" { GLSLANG_EXPORT void ShOutputHtml(); } @@ -263,6 +266,7 @@ protected: // Track the user's #define and #undef from the command line. TPreamble UserPreamble; +std::string PreambleString; // // Create the default name for saving a binary if -o is not provided. @@ -1204,8 +1208,17 @@ void CompileAndLinkShaderUnits(std::vector<ShaderCompUnit> compUnits) "Use '-e <name>'.\n"); shader->setSourceEntryPoint(sourceEntryPointName); } + + std::string intrinsicString = getIntrinsic(compUnit.text, compUnit.count); + + PreambleString = ""; if (UserPreamble.isSet()) - shader->setPreamble(UserPreamble.get()); + PreambleString.append(UserPreamble.get()); + + if (!intrinsicString.empty()) + PreambleString.append(intrinsicString); + + shader->setPreamble(PreambleString.c_str()); shader->addProcesses(Processes); #ifndef GLSLANG_WEB diff --git a/Test/GL_ARB_draw_instanced.vert b/Test/GL_ARB_draw_instanced.vert new file mode 100644 index 00000000..6e390866 --- /dev/null +++ b/Test/GL_ARB_draw_instanced.vert @@ -0,0 +1,18 @@ +#version 150 +#extension GL_ARB_draw_instanced : require +#define ID gl_InstanceID + +uniform mat4 gtf_ModelViewProjectionMatrix; +uniform vec3 instanceOffsets[3]; +in vec4 va[gl_MaxVertexAttribs]; +out vec4 color; + +void main (void) +{ + vec4 vertex = vec4(va[0].xy / 3.0, va[0].zw) + vec4(instanceOffsets[ID], 1.0); + color = vec4(0, 0, 0, 0); + for (int i = 1; i < gl_MaxVertexAttribs; i++) + color += va[i]; + gl_Position = gtf_ModelViewProjectionMatrix * vertex; + gl_PointSize = 1.0; +} diff --git a/Test/GL_EXT_shader_integer_mix.vert b/Test/GL_EXT_shader_integer_mix.vert new file mode 100644 index 00000000..3616e58c --- /dev/null +++ b/Test/GL_EXT_shader_integer_mix.vert @@ -0,0 +1,13 @@ +#version 330 +#extension GL_EXT_shader_integer_mix: require + + +#if !defined GL_EXT_shader_integer_mix +# error GL_EXT_shader_integer_mix is not defined +#elif GL_EXT_shader_integer_mix != 1 +# error GL_EXT_shader_integer_mix is not equal to 1 +#endif + +void main(void) { + gl_Position = vec4(0); +} diff --git a/Test/baseResults/300block.frag.out b/Test/baseResults/300block.frag.out index e5b07dd9..1a5bd9b6 100644 --- a/Test/baseResults/300block.frag.out +++ b/Test/baseResults/300block.frag.out @@ -24,18 +24,18 @@ ERROR: node is still EOpNull! 0:42 Function Definition: main( ( global void) 0:42 Function Parameters: 0:44 Sequence -0:44 texture ( global lowp 4-component vector of int) +0:44 texture ( global lowp 4-component vector of int, operation at mediump) 0:44 sampler: direct index for structure ( global lowp isampler3D) 0:44 's' ( uniform structure{ global mediump 4-component vector of float u, global mediump 4-component vector of uint v, global lowp isampler3D sampler, global mediump 3-component vector of float w, global structure{ global mediump int a} t}) 0:44 Constant: 0:44 2 (const int) -0:44 Construct vec3 ( temp lowp 3-component vector of float) -0:44 Convert int to float ( temp lowp float) +0:44 Construct vec3 ( temp mediump 3-component vector of float) +0:44 Convert int to float ( temp mediump float) 0:44 ni: direct index for structure (layout( column_major shared) uniform mediump int) 0:44 'inst' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump 4-component vector of uint nbv, layout( column_major shared) uniform mediump int ni}) 0:44 Constant: 0:44 1 (const int) -0:44 Convert uint to float ( temp lowp float) +0:44 Convert uint to float ( temp mediump float) 0:44 direct index ( temp mediump uint) 0:44 bv: direct index for structure (layout( column_major shared) uniform mediump 4-component vector of uint) 0:44 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump 4-component vector of uint bv, layout( column_major shared) uniform mediump 2X2 matrix of float bm2, layout( column_major shared) uniform lowp isampler2D sampler, layout( column_major shared) uniform structure{ global mediump int a} t, layout( column_major shared) uniform structure{ global mediump 4-component vector of float u, global mediump 4-component vector of uint v, global lowp isampler3D sampler, global mediump 3-component vector of float w, layout( column_major) global structure{ global mediump int a} t} fbs}) @@ -43,7 +43,7 @@ ERROR: node is still EOpNull! 0:44 0 (const uint) 0:44 Constant: 0:44 1 (const int) -0:44 Convert uint to float ( temp lowp float) +0:44 Convert uint to float ( temp mediump float) 0:44 direct index ( temp mediump uint) 0:44 nbv: direct index for structure (layout( column_major shared) uniform mediump 4-component vector of uint) 0:44 direct index (layout( column_major shared) temp block{layout( column_major shared) uniform mediump 4-component vector of uint nbv, layout( column_major shared) uniform mediump int ni}) @@ -92,18 +92,18 @@ ERROR: node is still EOpNull! 0:42 Function Definition: main( ( global void) 0:42 Function Parameters: 0:44 Sequence -0:44 texture ( global lowp 4-component vector of int) +0:44 texture ( global lowp 4-component vector of int, operation at mediump) 0:44 sampler: direct index for structure ( global lowp isampler3D) 0:44 's' ( uniform structure{ global mediump 4-component vector of float u, global mediump 4-component vector of uint v, global lowp isampler3D sampler, global mediump 3-component vector of float w, global structure{ global mediump int a} t}) 0:44 Constant: 0:44 2 (const int) -0:44 Construct vec3 ( temp lowp 3-component vector of float) -0:44 Convert int to float ( temp lowp float) +0:44 Construct vec3 ( temp mediump 3-component vector of float) +0:44 Convert int to float ( temp mediump float) 0:44 ni: direct index for structure (layout( column_major shared) uniform mediump int) 0:44 'inst' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump 4-component vector of uint nbv, layout( column_major shared) uniform mediump int ni}) 0:44 Constant: 0:44 1 (const int) -0:44 Convert uint to float ( temp lowp float) +0:44 Convert uint to float ( temp mediump float) 0:44 direct index ( temp mediump uint) 0:44 bv: direct index for structure (layout( column_major shared) uniform mediump 4-component vector of uint) 0:44 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump 4-component vector of uint bv, layout( column_major shared) uniform mediump 2X2 matrix of float bm2, layout( column_major shared) uniform lowp isampler2D sampler, layout( column_major shared) uniform structure{ global mediump int a} t, layout( column_major shared) uniform structure{ global mediump 4-component vector of float u, global mediump 4-component vector of uint v, global lowp isampler3D sampler, global mediump 3-component vector of float w, layout( column_major) global structure{ global mediump int a} t} fbs}) @@ -111,7 +111,7 @@ ERROR: node is still EOpNull! 0:44 0 (const uint) 0:44 Constant: 0:44 1 (const int) -0:44 Convert uint to float ( temp lowp float) +0:44 Convert uint to float ( temp mediump float) 0:44 direct index ( temp mediump uint) 0:44 nbv: direct index for structure (layout( column_major shared) uniform mediump 4-component vector of uint) 0:44 direct index (layout( column_major shared) temp block{layout( column_major shared) uniform mediump 4-component vector of uint nbv, layout( column_major shared) uniform mediump int ni}) diff --git a/Test/baseResults/310.comp.out b/Test/baseResults/310.comp.out index 85b01161..ac76cbdf 100644 --- a/Test/baseResults/310.comp.out +++ b/Test/baseResults/310.comp.out @@ -180,7 +180,7 @@ ERROR: node is still EOpNull! 0:91 'i' ( temp highp int) 0:92 imageStore ( global highp void) 0:92 'ii2da' ( writeonly uniform highp iimage2DArray) -0:92 Construct ivec3 ( temp 3-component vector of int) +0:92 Construct ivec3 ( temp highp 3-component vector of int) 0:92 'i' ( temp highp int) 0:92 'i' ( temp highp int) 0:92 'i' ( temp highp int) @@ -189,9 +189,9 @@ ERROR: node is still EOpNull! 0:92 0 (const int) 0:92 0 (const int) 0:92 0 (const int) -0:93 imageLoad ( global mediump 4-component vector of float) +0:93 imageLoad ( global mediump 4-component vector of float, operation at highp) 0:93 'img2Drgba' (layout( rgba32f) readonly uniform mediump image2D) -0:93 Construct ivec2 ( temp mediump 2-component vector of int) +0:93 Construct ivec2 ( temp highp 2-component vector of int) 0:93 'i' ( temp highp int) 0:93 'i' ( temp highp int) 0:94 imageLoad ( global highp 4-component vector of int) diff --git a/Test/baseResults/310.frag.out b/Test/baseResults/310.frag.out index 9f73c675..e43a887c 100644 --- a/Test/baseResults/310.frag.out +++ b/Test/baseResults/310.frag.out @@ -270,7 +270,7 @@ ERROR: node is still EOpNull! 0:42 Constant: 0:42 0.000000 0:42 0.000000 -0:42 Convert float to int ( temp highp 2-component vector of int) +0:42 Convert float to int ( temp mediump 2-component vector of int) 0:42 'c2D' ( smooth in mediump 2-component vector of float) 0:43 textureProjGradOffset ( global highp 4-component vector of uint) 0:43 'usamp2d' ( uniform highp usampler2D) @@ -471,7 +471,7 @@ ERROR: node is still EOpNull! 0:211 Constant: 0:211 0.100000 0:211 0.100000 -0:211 Convert float to int ( temp highp 2-component vector of int) +0:211 Convert float to int ( temp mediump 2-component vector of int) 0:211 'inf' ( smooth in mediump 2-component vector of float) 0:212 textureGatherOffsets ( global highp 4-component vector of float) 0:212 direct index ( temp highp sampler2D) @@ -507,7 +507,7 @@ ERROR: node is still EOpNull! 0:221 Constant: 0:221 0.100000 0:221 0.100000 -0:221 Convert float to int ( temp highp 2-component vector of int) +0:221 Convert float to int ( temp mediump 2-component vector of int) 0:221 'inf' ( smooth in mediump 2-component vector of float) 0:222 textureGatherOffsets ( global highp 4-component vector of float) 0:222 direct index ( temp highp sampler2D) diff --git a/Test/baseResults/310.vert.out b/Test/baseResults/310.vert.out index 1d2152dd..13a88dff 100644 --- a/Test/baseResults/310.vert.out +++ b/Test/baseResults/310.vert.out @@ -330,7 +330,7 @@ ERROR: node is still EOpNull! 0:164 'sIndex' ( uniform highp int) 0:164 Constant: 0:164 2 (const int) -0:165 textureGatherOffset ( global lowp 4-component vector of float) +0:165 textureGatherOffset ( global lowp 4-component vector of float, operation at highp) 0:165 direct index ( temp lowp sampler2D) 0:165 'sArray' ( uniform 4-element array of lowp sampler2D) 0:165 Constant: @@ -338,7 +338,7 @@ ERROR: node is still EOpNull! 0:165 Constant: 0:165 0.100000 0:165 0.100000 -0:165 Convert float to int ( temp lowp 2-component vector of int) +0:165 Convert float to int ( temp highp 2-component vector of int) 0:165 'inf' ( in highp 2-component vector of float) 0:166 textureGatherOffsets ( global lowp 4-component vector of float, operation at highp) 0:166 direct index ( temp lowp sampler2D) @@ -394,7 +394,7 @@ ERROR: node is still EOpNull! 0:179 'sIndex' ( uniform highp int) 0:179 Constant: 0:179 2 (const int) -0:180 textureGatherOffset ( global lowp 4-component vector of float) +0:180 textureGatherOffset ( global lowp 4-component vector of float, operation at highp) 0:180 direct index ( temp lowp sampler2D) 0:180 'sArray' ( uniform 4-element array of lowp sampler2D) 0:180 Constant: @@ -402,7 +402,7 @@ ERROR: node is still EOpNull! 0:180 Constant: 0:180 0.100000 0:180 0.100000 -0:180 Convert float to int ( temp lowp 2-component vector of int) +0:180 Convert float to int ( temp highp 2-component vector of int) 0:180 'inf' ( in highp 2-component vector of float) 0:181 textureGatherOffsets ( global lowp 4-component vector of float, operation at highp) 0:181 direct index ( temp lowp sampler2D) diff --git a/Test/baseResults/320.frag.out b/Test/baseResults/320.frag.out index 002aa7f6..9f4a817b 100644 --- a/Test/baseResults/320.frag.out +++ b/Test/baseResults/320.frag.out @@ -121,7 +121,7 @@ ERROR: node is still EOpNull! 0:76 'inf' ( smooth in mediump 2-component vector of float) 0:76 'ing' ( smooth in mediump 2-component vector of float) 0:76 'h' ( noContraction temp mediump 2-component vector of float) -0:77 textureGatherOffset ( global lowp 4-component vector of float) +0:77 textureGatherOffset ( global lowp 4-component vector of float, operation at mediump) 0:77 direct index ( temp lowp sampler2D) 0:77 'sArray' ( uniform 4-element array of lowp sampler2D) 0:77 Constant: @@ -129,7 +129,7 @@ ERROR: node is still EOpNull! 0:77 Constant: 0:77 0.100000 0:77 0.100000 -0:77 Convert float to int ( temp lowp 2-component vector of int) +0:77 Convert float to int ( temp mediump 2-component vector of int) 0:77 'inf' ( smooth in mediump 2-component vector of float) 0:78 textureGatherOffsets ( global lowp 4-component vector of float, operation at mediump) 0:78 direct index ( temp lowp sampler2D) diff --git a/Test/baseResults/320.vert.out b/Test/baseResults/320.vert.out index 0313b619..5e80d141 100644 --- a/Test/baseResults/320.vert.out +++ b/Test/baseResults/320.vert.out @@ -99,7 +99,7 @@ ERROR: node is still EOpNull! 0:70 'sIndex' ( uniform highp int) 0:70 Constant: 0:70 2 (const int) -0:71 textureGatherOffset ( global lowp 4-component vector of float) +0:71 textureGatherOffset ( global lowp 4-component vector of float, operation at highp) 0:71 direct index ( temp lowp sampler2D) 0:71 'sArray' ( uniform 4-element array of lowp sampler2D) 0:71 Constant: @@ -107,7 +107,7 @@ ERROR: node is still EOpNull! 0:71 Constant: 0:71 0.100000 0:71 0.100000 -0:71 Convert float to int ( temp lowp 2-component vector of int) +0:71 Convert float to int ( temp highp 2-component vector of int) 0:71 'inf' ( in highp 2-component vector of float) 0:72 textureGatherOffsets ( global lowp 4-component vector of float, operation at highp) 0:72 direct index ( temp lowp sampler2D) diff --git a/Test/baseResults/GL_ARB_draw_instanced.vert.out b/Test/baseResults/GL_ARB_draw_instanced.vert.out new file mode 100644 index 00000000..e601bc86 --- /dev/null +++ b/Test/baseResults/GL_ARB_draw_instanced.vert.out @@ -0,0 +1,189 @@ +GL_ARB_draw_instanced.vert +Shader version: 150 +Requested GL_ARB_draw_instanced +0:? Sequence +0:10 Function Definition: main( ( global void) +0:10 Function Parameters: +0:12 Sequence +0:12 Sequence +0:12 move second child to first child ( temp 4-component vector of float) +0:12 'vertex' ( temp 4-component vector of float) +0:12 add ( temp 4-component vector of float) +0:12 Construct vec4 ( temp 4-component vector of float) +0:12 divide ( temp 2-component vector of float) +0:12 vector swizzle ( temp 2-component vector of float) +0:12 direct index ( temp 4-component vector of float) +0:12 'va' ( in 64-element array of 4-component vector of float) +0:12 Constant: +0:12 0 (const int) +0:12 Sequence +0:12 Constant: +0:12 0 (const int) +0:12 Constant: +0:12 1 (const int) +0:12 Constant: +0:12 3.000000 +0:12 vector swizzle ( temp 2-component vector of float) +0:12 direct index ( temp 4-component vector of float) +0:12 'va' ( in 64-element array of 4-component vector of float) +0:12 Constant: +0:12 0 (const int) +0:12 Sequence +0:12 Constant: +0:12 2 (const int) +0:12 Constant: +0:12 3 (const int) +0:12 Construct vec4 ( temp 4-component vector of float) +0:12 indirect index ( temp 3-component vector of float) +0:12 'instanceOffsets' ( uniform 3-element array of 3-component vector of float) +0:12 'gl_InstanceID' ( gl_InstanceId int InstanceId) +0:12 Constant: +0:12 1.000000 +0:13 move second child to first child ( temp 4-component vector of float) +0:13 'color' ( smooth out 4-component vector of float) +0:13 Constant: +0:13 0.000000 +0:13 0.000000 +0:13 0.000000 +0:13 0.000000 +0:14 Sequence +0:14 Sequence +0:14 move second child to first child ( temp int) +0:14 'i' ( temp int) +0:14 Constant: +0:14 1 (const int) +0:14 Loop with condition tested first +0:14 Loop Condition +0:14 Compare Less Than ( temp bool) +0:14 'i' ( temp int) +0:14 Constant: +0:14 64 (const int) +0:14 Loop Body +0:15 add second child into first child ( temp 4-component vector of float) +0:15 'color' ( smooth out 4-component vector of float) +0:15 indirect index ( temp 4-component vector of float) +0:15 'va' ( in 64-element array of 4-component vector of float) +0:15 'i' ( temp int) +0:14 Loop Terminal Expression +0:14 Post-Increment ( temp int) +0:14 'i' ( temp int) +0:16 move second child to first child ( temp 4-component vector of float) +0:16 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) +0:16 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) +0:16 Constant: +0:16 0 (const uint) +0:16 matrix-times-vector ( temp 4-component vector of float) +0:16 'gtf_ModelViewProjectionMatrix' ( uniform 4X4 matrix of float) +0:16 'vertex' ( temp 4-component vector of float) +0:17 move second child to first child ( temp float) +0:17 gl_PointSize: direct index for structure ( gl_PointSize float PointSize) +0:17 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) +0:17 Constant: +0:17 1 (const uint) +0:17 Constant: +0:17 1.000000 +0:? Linker Objects +0:? 'gtf_ModelViewProjectionMatrix' ( uniform 4X4 matrix of float) +0:? 'instanceOffsets' ( uniform 3-element array of 3-component vector of float) +0:? 'va' ( in 64-element array of 4-component vector of float) +0:? 'color' ( smooth out 4-component vector of float) +0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) +0:? 'gl_VertexID' ( gl_VertexId int VertexId) +0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) + + +Linked vertex stage: + + +Shader version: 150 +Requested GL_ARB_draw_instanced +0:? Sequence +0:10 Function Definition: main( ( global void) +0:10 Function Parameters: +0:12 Sequence +0:12 Sequence +0:12 move second child to first child ( temp 4-component vector of float) +0:12 'vertex' ( temp 4-component vector of float) +0:12 add ( temp 4-component vector of float) +0:12 Construct vec4 ( temp 4-component vector of float) +0:12 divide ( temp 2-component vector of float) +0:12 vector swizzle ( temp 2-component vector of float) +0:12 direct index ( temp 4-component vector of float) +0:12 'va' ( in 64-element array of 4-component vector of float) +0:12 Constant: +0:12 0 (const int) +0:12 Sequence +0:12 Constant: +0:12 0 (const int) +0:12 Constant: +0:12 1 (const int) +0:12 Constant: +0:12 3.000000 +0:12 vector swizzle ( temp 2-component vector of float) +0:12 direct index ( temp 4-component vector of float) +0:12 'va' ( in 64-element array of 4-component vector of float) +0:12 Constant: +0:12 0 (const int) +0:12 Sequence +0:12 Constant: +0:12 2 (const int) +0:12 Constant: +0:12 3 (const int) +0:12 Construct vec4 ( temp 4-component vector of float) +0:12 indirect index ( temp 3-component vector of float) +0:12 'instanceOffsets' ( uniform 3-element array of 3-component vector of float) +0:12 'gl_InstanceID' ( gl_InstanceId int InstanceId) +0:12 Constant: +0:12 1.000000 +0:13 move second child to first child ( temp 4-component vector of float) +0:13 'color' ( smooth out 4-component vector of float) +0:13 Constant: +0:13 0.000000 +0:13 0.000000 +0:13 0.000000 +0:13 0.000000 +0:14 Sequence +0:14 Sequence +0:14 move second child to first child ( temp int) +0:14 'i' ( temp int) +0:14 Constant: +0:14 1 (const int) +0:14 Loop with condition tested first +0:14 Loop Condition +0:14 Compare Less Than ( temp bool) +0:14 'i' ( temp int) +0:14 Constant: +0:14 64 (const int) +0:14 Loop Body +0:15 add second child into first child ( temp 4-component vector of float) +0:15 'color' ( smooth out 4-component vector of float) +0:15 indirect index ( temp 4-component vector of float) +0:15 'va' ( in 64-element array of 4-component vector of float) +0:15 'i' ( temp int) +0:14 Loop Terminal Expression +0:14 Post-Increment ( temp int) +0:14 'i' ( temp int) +0:16 move second child to first child ( temp 4-component vector of float) +0:16 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) +0:16 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) +0:16 Constant: +0:16 0 (const uint) +0:16 matrix-times-vector ( temp 4-component vector of float) +0:16 'gtf_ModelViewProjectionMatrix' ( uniform 4X4 matrix of float) +0:16 'vertex' ( temp 4-component vector of float) +0:17 move second child to first child ( temp float) +0:17 gl_PointSize: direct index for structure ( gl_PointSize float PointSize) +0:17 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) +0:17 Constant: +0:17 1 (const uint) +0:17 Constant: +0:17 1.000000 +0:? Linker Objects +0:? 'gtf_ModelViewProjectionMatrix' ( uniform 4X4 matrix of float) +0:? 'instanceOffsets' ( uniform 3-element array of 3-component vector of float) +0:? 'va' ( in 64-element array of 4-component vector of float) +0:? 'color' ( smooth out 4-component vector of float) +0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) +0:? 'gl_VertexID' ( gl_VertexId int VertexId) +0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) + diff --git a/Test/baseResults/GL_EXT_shader_integer_mix.vert.out b/Test/baseResults/GL_EXT_shader_integer_mix.vert.out new file mode 100644 index 00000000..4a62b579 --- /dev/null +++ b/Test/baseResults/GL_EXT_shader_integer_mix.vert.out @@ -0,0 +1,47 @@ +GL_EXT_shader_integer_mix.vert +Shader version: 330 +Requested GL_EXT_shader_integer_mix +0:? Sequence +0:11 Function Definition: main( ( global void) +0:11 Function Parameters: +0:12 Sequence +0:12 move second child to first child ( temp 4-component vector of float) +0:12 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) +0:12 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) +0:12 Constant: +0:12 0 (const uint) +0:12 Constant: +0:12 0.000000 +0:12 0.000000 +0:12 0.000000 +0:12 0.000000 +0:? Linker Objects +0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) +0:? 'gl_VertexID' ( gl_VertexId int VertexId) +0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) + + +Linked vertex stage: + + +Shader version: 330 +Requested GL_EXT_shader_integer_mix +0:? Sequence +0:11 Function Definition: main( ( global void) +0:11 Function Parameters: +0:12 Sequence +0:12 move second child to first child ( temp 4-component vector of float) +0:12 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) +0:12 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) +0:12 Constant: +0:12 0 (const uint) +0:12 Constant: +0:12 0.000000 +0:12 0.000000 +0:12 0.000000 +0:12 0.000000 +0:? Linker Objects +0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) +0:? 'gl_VertexID' ( gl_VertexId int VertexId) +0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) + diff --git a/Test/baseResults/glsl.es320.subgroup.geom.out b/Test/baseResults/glsl.es320.subgroup.geom.out index 5d18d30a..eab54542 100644 --- a/Test/baseResults/glsl.es320.subgroup.geom.out +++ b/Test/baseResults/glsl.es320.subgroup.geom.out @@ -16,7 +16,7 @@ output primitive = points 0:12 Constant: 0:12 0 (const uint) 0:12 'gl_PrimitiveIDIn' ( in highp int PrimitiveID) -0:12 Construct uvec4 ( temp highp 4-component vector of uint) +0:12 Construct uvec4 ( temp mediump 4-component vector of uint) 0:12 'gl_SubgroupSize' ( in mediump uint SubgroupSize) 0:12 'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID) 0:12 Constant: @@ -47,7 +47,7 @@ output primitive = points 0:12 Constant: 0:12 0 (const uint) 0:12 'gl_PrimitiveIDIn' ( in highp int PrimitiveID) -0:12 Construct uvec4 ( temp highp 4-component vector of uint) +0:12 Construct uvec4 ( temp mediump 4-component vector of uint) 0:12 'gl_SubgroupSize' ( in mediump uint SubgroupSize) 0:12 'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID) 0:12 Constant: diff --git a/Test/baseResults/glsl.es320.subgroup.tesc.out b/Test/baseResults/glsl.es320.subgroup.tesc.out index 9512bc53..431a3c3f 100644 --- a/Test/baseResults/glsl.es320.subgroup.tesc.out +++ b/Test/baseResults/glsl.es320.subgroup.tesc.out @@ -13,7 +13,7 @@ vertices = 1 0:11 Constant: 0:11 0 (const uint) 0:11 'gl_PrimitiveID' ( in highp int PrimitiveID) -0:11 Construct uvec4 ( temp highp 4-component vector of uint) +0:11 Construct uvec4 ( temp mediump 4-component vector of uint) 0:11 'gl_SubgroupSize' ( in mediump uint SubgroupSize) 0:11 'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID) 0:11 Constant: @@ -41,7 +41,7 @@ vertices = 1 0:11 Constant: 0:11 0 (const uint) 0:11 'gl_PrimitiveID' ( in highp int PrimitiveID) -0:11 Construct uvec4 ( temp highp 4-component vector of uint) +0:11 Construct uvec4 ( temp mediump 4-component vector of uint) 0:11 'gl_SubgroupSize' ( in mediump uint SubgroupSize) 0:11 'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID) 0:11 Constant: diff --git a/Test/baseResults/glsl.es320.subgroup.tese.out b/Test/baseResults/glsl.es320.subgroup.tese.out index 29f7b73c..198a757a 100644 --- a/Test/baseResults/glsl.es320.subgroup.tese.out +++ b/Test/baseResults/glsl.es320.subgroup.tese.out @@ -15,7 +15,7 @@ triangle order = none 0:11 Constant: 0:11 0 (const uint) 0:11 'gl_PrimitiveID' ( in highp int PrimitiveID) -0:11 Construct uvec4 ( temp highp 4-component vector of uint) +0:11 Construct uvec4 ( temp mediump 4-component vector of uint) 0:11 'gl_SubgroupSize' ( in mediump uint SubgroupSize) 0:11 'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID) 0:11 Constant: @@ -45,7 +45,7 @@ triangle order = ccw 0:11 Constant: 0:11 0 (const uint) 0:11 'gl_PrimitiveID' ( in highp int PrimitiveID) -0:11 Construct uvec4 ( temp highp 4-component vector of uint) +0:11 Construct uvec4 ( temp mediump 4-component vector of uint) 0:11 'gl_SubgroupSize' ( in mediump uint SubgroupSize) 0:11 'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID) 0:11 Constant: diff --git a/Test/baseResults/glsl.es320.subgroup.vert.out b/Test/baseResults/glsl.es320.subgroup.vert.out index bf1da492..e1a6bea7 100644 --- a/Test/baseResults/glsl.es320.subgroup.vert.out +++ b/Test/baseResults/glsl.es320.subgroup.vert.out @@ -12,7 +12,7 @@ Requested GL_KHR_shader_subgroup_basic 0:10 Constant: 0:10 0 (const uint) 0:10 'gl_VertexID' ( gl_VertexId highp int VertexId) -0:10 Construct uvec4 ( temp highp 4-component vector of uint) +0:10 Construct uvec4 ( temp mediump 4-component vector of uint) 0:10 'gl_SubgroupSize' ( in mediump uint SubgroupSize) 0:10 'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID) 0:10 Constant: @@ -41,7 +41,7 @@ Requested GL_KHR_shader_subgroup_basic 0:10 Constant: 0:10 0 (const uint) 0:10 'gl_VertexID' ( gl_VertexId highp int VertexId) -0:10 Construct uvec4 ( temp highp 4-component vector of uint) +0:10 Construct uvec4 ( temp mediump 4-component vector of uint) 0:10 'gl_SubgroupSize' ( in mediump uint SubgroupSize) 0:10 'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID) 0:10 Constant: diff --git a/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out b/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out index 478091db..291f6248 100644 --- a/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out @@ -16,9 +16,9 @@ using depth_any 0:31 Constant: 0:31 0.100000 0:31 Constant: -0:31 0.500000 -0:31 Constant: 0:31 1 (const int) +0:31 Constant: +0:31 0.500000 0:32 Sequence 0:32 move second child to first child ( temp 4-component vector of int) 0:32 'txval11' ( temp 4-component vector of int) @@ -29,9 +29,9 @@ using depth_any 0:32 Constant: 0:32 0.200000 0:32 Constant: -0:32 0.500000 -0:32 Constant: 0:32 1 (const int) +0:32 Constant: +0:32 0.500000 0:33 Sequence 0:33 move second child to first child ( temp 4-component vector of uint) 0:33 'txval12' ( temp 4-component vector of uint) @@ -42,9 +42,9 @@ using depth_any 0:33 Constant: 0:33 0.300000 0:33 Constant: -0:33 0.500000 -0:33 Constant: 0:33 1 (const int) +0:33 Constant: +0:33 0.500000 0:35 Sequence 0:35 move second child to first child ( temp 4-component vector of float) 0:35 'txval20' ( temp 4-component vector of float) @@ -56,10 +56,10 @@ using depth_any 0:35 0.100000 0:35 0.200000 0:35 Constant: -0:35 0.500000 -0:35 Constant: 0:35 1 (const int) 0:35 0 (const int) +0:35 Constant: +0:35 0.500000 0:36 Sequence 0:36 move second child to first child ( temp 4-component vector of int) 0:36 'txval21' ( temp 4-component vector of int) @@ -71,10 +71,10 @@ using depth_any 0:36 0.300000 0:36 0.400000 0:36 Constant: -0:36 0.500000 -0:36 Constant: 0:36 1 (const int) 0:36 1 (const int) +0:36 Constant: +0:36 0.500000 0:37 Sequence 0:37 move second child to first child ( temp 4-component vector of uint) 0:37 'txval22' ( temp 4-component vector of uint) @@ -86,10 +86,10 @@ using depth_any 0:37 0.500000 0:37 0.600000 0:37 Constant: -0:37 0.500000 -0:37 Constant: 0:37 1 (const int) 0:37 -1 (const int) +0:37 Constant: +0:37 0.500000 0:39 Sequence 0:39 move second child to first child ( temp 4-component vector of float) 0:39 'txval30' ( temp 4-component vector of float) @@ -102,11 +102,11 @@ using depth_any 0:39 0.200000 0:39 0.300000 0:39 Constant: -0:39 0.500000 -0:39 Constant: 0:39 1 (const int) 0:39 0 (const int) 0:39 1 (const int) +0:39 Constant: +0:39 0.500000 0:40 Sequence 0:40 move second child to first child ( temp 4-component vector of int) 0:40 'txval31' ( temp 4-component vector of int) @@ -119,11 +119,11 @@ using depth_any 0:40 0.500000 0:40 0.600000 0:40 Constant: -0:40 0.500000 -0:40 Constant: 0:40 1 (const int) 0:40 1 (const int) 0:40 1 (const int) +0:40 Constant: +0:40 0.500000 0:41 Sequence 0:41 move second child to first child ( temp 4-component vector of uint) 0:41 'txval32' ( temp 4-component vector of uint) @@ -136,11 +136,11 @@ using depth_any 0:41 0.800000 0:41 0.900000 0:41 Constant: -0:41 0.500000 -0:41 Constant: 0:41 1 (const int) 0:41 0 (const int) 0:41 -1 (const int) +0:41 Constant: +0:41 0.500000 0:45 move second child to first child ( temp 4-component vector of float) 0:45 Color: direct index for structure ( temp 4-component vector of float) 0:45 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) @@ -218,9 +218,9 @@ using depth_any 0:31 Constant: 0:31 0.100000 0:31 Constant: -0:31 0.500000 -0:31 Constant: 0:31 1 (const int) +0:31 Constant: +0:31 0.500000 0:32 Sequence 0:32 move second child to first child ( temp 4-component vector of int) 0:32 'txval11' ( temp 4-component vector of int) @@ -231,9 +231,9 @@ using depth_any 0:32 Constant: 0:32 0.200000 0:32 Constant: -0:32 0.500000 -0:32 Constant: 0:32 1 (const int) +0:32 Constant: +0:32 0.500000 0:33 Sequence 0:33 move second child to first child ( temp 4-component vector of uint) 0:33 'txval12' ( temp 4-component vector of uint) @@ -244,9 +244,9 @@ using depth_any 0:33 Constant: 0:33 0.300000 0:33 Constant: -0:33 0.500000 -0:33 Constant: 0:33 1 (const int) +0:33 Constant: +0:33 0.500000 0:35 Sequence 0:35 move second child to first child ( temp 4-component vector of float) 0:35 'txval20' ( temp 4-component vector of float) @@ -258,10 +258,10 @@ using depth_any 0:35 0.100000 0:35 0.200000 0:35 Constant: -0:35 0.500000 -0:35 Constant: 0:35 1 (const int) 0:35 0 (const int) +0:35 Constant: +0:35 0.500000 0:36 Sequence 0:36 move second child to first child ( temp 4-component vector of int) 0:36 'txval21' ( temp 4-component vector of int) @@ -273,10 +273,10 @@ using depth_any 0:36 0.300000 0:36 0.400000 0:36 Constant: -0:36 0.500000 -0:36 Constant: 0:36 1 (const int) 0:36 1 (const int) +0:36 Constant: +0:36 0.500000 0:37 Sequence 0:37 move second child to first child ( temp 4-component vector of uint) 0:37 'txval22' ( temp 4-component vector of uint) @@ -288,10 +288,10 @@ using depth_any 0:37 0.500000 0:37 0.600000 0:37 Constant: -0:37 0.500000 -0:37 Constant: 0:37 1 (const int) 0:37 -1 (const int) +0:37 Constant: +0:37 0.500000 0:39 Sequence 0:39 move second child to first child ( temp 4-component vector of float) 0:39 'txval30' ( temp 4-component vector of float) @@ -304,11 +304,11 @@ using depth_any 0:39 0.200000 0:39 0.300000 0:39 Constant: -0:39 0.500000 -0:39 Constant: 0:39 1 (const int) 0:39 0 (const int) 0:39 1 (const int) +0:39 Constant: +0:39 0.500000 0:40 Sequence 0:40 move second child to first child ( temp 4-component vector of int) 0:40 'txval31' ( temp 4-component vector of int) @@ -321,11 +321,11 @@ using depth_any 0:40 0.500000 0:40 0.600000 0:40 Constant: -0:40 0.500000 -0:40 Constant: 0:40 1 (const int) 0:40 1 (const int) 0:40 1 (const int) +0:40 Constant: +0:40 0.500000 0:41 Sequence 0:41 move second child to first child ( temp 4-component vector of uint) 0:41 'txval32' ( temp 4-component vector of uint) @@ -338,11 +338,11 @@ using depth_any 0:41 0.800000 0:41 0.900000 0:41 Constant: -0:41 0.500000 -0:41 Constant: 0:41 1 (const int) 0:41 0 (const int) 0:41 -1 (const int) +0:41 Constant: +0:41 0.500000 0:45 move second child to first child ( temp 4-component vector of float) 0:45 Color: direct index for structure ( temp 4-component vector of float) 0:45 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) @@ -399,7 +399,6 @@ 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 161 @@ -489,12 +488,12 @@ Validation failed 20(g_sSamp): 19(ptr) Variable UniformConstant 22: TypeSampledImage 14 24: 6(float) Constant 1036831949 - 25: 6(float) Constant 1056964608 - 26: TypeInt 32 1 - 27: 26(int) Constant 1 - 29: TypeVector 26(int) 4 + 25: TypeInt 32 1 + 26: 25(int) Constant 1 + 27: 6(float) Constant 1056964608 + 29: TypeVector 25(int) 4 30: TypePointer Function 29(ivec4) - 32: TypeImage 26(int) 1D sampled format:Unknown + 32: TypeImage 25(int) 1D sampled format:Unknown 33: TypePointer UniformConstant 32 34(g_tTex1di4): 33(ptr) Variable UniformConstant 37: TypeSampledImage 32 @@ -513,38 +512,38 @@ Validation failed 60: TypeSampledImage 55 62: TypeVector 6(float) 2 63: 62(fvec2) ConstantComposite 24 39 - 64: TypeVector 26(int) 2 - 65: 26(int) Constant 0 - 66: 64(ivec2) ConstantComposite 27 65 - 69: TypeImage 26(int) 2D sampled format:Unknown + 64: TypeVector 25(int) 2 + 65: 25(int) Constant 0 + 66: 64(ivec2) ConstantComposite 26 65 + 69: TypeImage 25(int) 2D sampled format:Unknown 70: TypePointer UniformConstant 69 71(g_tTex2di4): 70(ptr) Variable UniformConstant 74: TypeSampledImage 69 76: 6(float) Constant 1053609165 77: 62(fvec2) ConstantComposite 52 76 - 78: 64(ivec2) ConstantComposite 27 27 + 78: 64(ivec2) ConstantComposite 26 26 81: TypeImage 41(int) 2D sampled format:Unknown 82: TypePointer UniformConstant 81 83(g_tTex2du4): 82(ptr) Variable UniformConstant 86: TypeSampledImage 81 88: 6(float) Constant 1058642330 - 89: 62(fvec2) ConstantComposite 25 88 - 90: 26(int) Constant 4294967295 - 91: 64(ivec2) ConstantComposite 27 90 + 89: 62(fvec2) ConstantComposite 27 88 + 90: 25(int) Constant 4294967295 + 91: 64(ivec2) ConstantComposite 26 90 94: TypeImage 6(float) 3D sampled format:Unknown 95: TypePointer UniformConstant 94 96(g_tTex3df4): 95(ptr) Variable UniformConstant 99: TypeSampledImage 94 101: TypeVector 6(float) 3 102: 101(fvec3) ConstantComposite 24 39 52 - 103: TypeVector 26(int) 3 - 104: 103(ivec3) ConstantComposite 27 65 27 - 107: TypeImage 26(int) 3D sampled format:Unknown + 103: TypeVector 25(int) 3 + 104: 103(ivec3) ConstantComposite 26 65 26 + 107: TypeImage 25(int) 3D sampled format:Unknown 108: TypePointer UniformConstant 107 109(g_tTex3di4): 108(ptr) Variable UniformConstant 112: TypeSampledImage 107 - 114: 101(fvec3) ConstantComposite 76 25 88 - 115: 103(ivec3) ConstantComposite 27 27 27 + 114: 101(fvec3) ConstantComposite 76 27 88 + 115: 103(ivec3) ConstantComposite 26 26 26 118: TypeImage 41(int) 3D sampled format:Unknown 119: TypePointer UniformConstant 118 120(g_tTex3du4): 119(ptr) Variable UniformConstant @@ -553,7 +552,7 @@ Validation failed 126: 6(float) Constant 1061997773 127: 6(float) Constant 1063675494 128: 101(fvec3) ConstantComposite 125 126 127 - 129: 103(ivec3) ConstantComposite 27 65 90 + 129: 103(ivec3) ConstantComposite 26 65 90 131: TypePointer Function 8(PS_OUTPUT) 133: 6(float) Constant 1065353216 134: 7(fvec4) ConstantComposite 133 133 133 133 @@ -566,7 +565,7 @@ Validation failed 152: TypeImage 6(float) Cube sampled format:Unknown 153: TypePointer UniformConstant 152 154(g_tTexcdf4): 153(ptr) Variable UniformConstant - 155: TypeImage 26(int) Cube sampled format:Unknown + 155: TypeImage 25(int) Cube sampled format:Unknown 156: TypePointer UniformConstant 155 157(g_tTexcdi4): 156(ptr) Variable UniformConstant 158: TypeImage 41(int) Cube sampled format:Unknown @@ -580,7 +579,7 @@ Validation failed 145: 12(ptr) AccessChain 141(flattenTemp) 65 146: 7(fvec4) Load 145 Store 144(@entryPointOutput.Color) 146 - 149: 136(ptr) AccessChain 141(flattenTemp) 27 + 149: 136(ptr) AccessChain 141(flattenTemp) 26 150: 6(float) Load 149 Store 148(@entryPointOutput.Depth) 150 Return @@ -600,51 +599,51 @@ Validation failed 17: 14 Load 16(g_tTex1df4) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 - 28: 7(fvec4) ImageSampleImplicitLod 23 24 Bias ConstOffset 27 25 + 28: 7(fvec4) ImageSampleImplicitLod 23 24 Bias ConstOffset 27 26 Store 13(txval10) 28 35: 32 Load 34(g_tTex1di4) 36: 18 Load 20(g_sSamp) 38: 37 SampledImage 35 36 - 40: 29(ivec4) ImageSampleImplicitLod 38 39 Bias ConstOffset 27 25 + 40: 29(ivec4) ImageSampleImplicitLod 38 39 Bias ConstOffset 27 26 Store 31(txval11) 40 48: 45 Load 47(g_tTex1du4) 49: 18 Load 20(g_sSamp) 51: 50 SampledImage 48 49 - 53: 42(ivec4) ImageSampleImplicitLod 51 52 Bias ConstOffset 27 25 + 53: 42(ivec4) ImageSampleImplicitLod 51 52 Bias ConstOffset 27 26 Store 44(txval12) 53 58: 55 Load 57(g_tTex2df4) 59: 18 Load 20(g_sSamp) 61: 60 SampledImage 58 59 - 67: 7(fvec4) ImageSampleImplicitLod 61 63 Bias ConstOffset 66 25 + 67: 7(fvec4) ImageSampleImplicitLod 61 63 Bias ConstOffset 27 66 Store 54(txval20) 67 72: 69 Load 71(g_tTex2di4) 73: 18 Load 20(g_sSamp) 75: 74 SampledImage 72 73 - 79: 29(ivec4) ImageSampleImplicitLod 75 77 Bias ConstOffset 78 25 + 79: 29(ivec4) ImageSampleImplicitLod 75 77 Bias ConstOffset 27 78 Store 68(txval21) 79 84: 81 Load 83(g_tTex2du4) 85: 18 Load 20(g_sSamp) 87: 86 SampledImage 84 85 - 92: 42(ivec4) ImageSampleImplicitLod 87 89 Bias ConstOffset 91 25 + 92: 42(ivec4) ImageSampleImplicitLod 87 89 Bias ConstOffset 27 91 Store 80(txval22) 92 97: 94 Load 96(g_tTex3df4) 98: 18 Load 20(g_sSamp) 100: 99 SampledImage 97 98 - 105: 7(fvec4) ImageSampleImplicitLod 100 102 Bias ConstOffset 104 25 + 105: 7(fvec4) ImageSampleImplicitLod 100 102 Bias ConstOffset 27 104 Store 93(txval30) 105 110: 107 Load 109(g_tTex3di4) 111: 18 Load 20(g_sSamp) 113: 112 SampledImage 110 111 - 116: 29(ivec4) ImageSampleImplicitLod 113 114 Bias ConstOffset 115 25 + 116: 29(ivec4) ImageSampleImplicitLod 113 114 Bias ConstOffset 27 115 Store 106(txval31) 116 121: 118 Load 120(g_tTex3du4) 122: 18 Load 20(g_sSamp) 124: 123 SampledImage 121 122 - 130: 42(ivec4) ImageSampleImplicitLod 124 128 Bias ConstOffset 129 25 + 130: 42(ivec4) ImageSampleImplicitLod 124 128 Bias ConstOffset 27 129 Store 117(txval32) 130 135: 12(ptr) AccessChain 132(psout) 65 Store 135 134 - 137: 136(ptr) AccessChain 132(psout) 27 + 137: 136(ptr) AccessChain 132(psout) 26 Store 137 133 138:8(PS_OUTPUT) Load 132(psout) ReturnValue 138 diff --git a/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out index f5aff67f..a5bb6139 100644 --- a/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out @@ -17,9 +17,9 @@ using depth_any 0:23 0.100000 0:23 0.200000 0:23 Constant: -0:23 0.500000 -0:23 Constant: 0:23 0 (const int) +0:23 Constant: +0:23 0.500000 0:24 Sequence 0:24 move second child to first child ( temp 4-component vector of int) 0:24 'txval11' ( temp 4-component vector of int) @@ -31,9 +31,9 @@ using depth_any 0:24 0.200000 0:24 0.300000 0:24 Constant: -0:24 0.500000 -0:24 Constant: 0:24 1 (const int) +0:24 Constant: +0:24 0.500000 0:25 Sequence 0:25 move second child to first child ( temp 4-component vector of uint) 0:25 'txval12' ( temp 4-component vector of uint) @@ -45,9 +45,9 @@ using depth_any 0:25 0.300000 0:25 0.400000 0:25 Constant: -0:25 0.500000 -0:25 Constant: 0:25 2 (const int) +0:25 Constant: +0:25 0.500000 0:27 Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:27 'txval20' ( temp 4-component vector of float) @@ -60,10 +60,10 @@ using depth_any 0:27 0.200000 0:27 0.300000 0:27 Constant: -0:27 0.500000 -0:27 Constant: 0:27 0 (const int) 0:27 0 (const int) +0:27 Constant: +0:27 0.500000 0:28 Sequence 0:28 move second child to first child ( temp 4-component vector of int) 0:28 'txval21' ( temp 4-component vector of int) @@ -76,10 +76,10 @@ using depth_any 0:28 0.400000 0:28 0.500000 0:28 Constant: -0:28 0.500000 -0:28 Constant: 0:28 0 (const int) 0:28 0 (const int) +0:28 Constant: +0:28 0.500000 0:29 Sequence 0:29 move second child to first child ( temp 4-component vector of uint) 0:29 'txval22' ( temp 4-component vector of uint) @@ -92,10 +92,10 @@ using depth_any 0:29 0.600000 0:29 0.700000 0:29 Constant: -0:29 0.500000 -0:29 Constant: 0:29 0 (const int) 0:29 1 (const int) +0:29 Constant: +0:29 0.500000 0:33 move second child to first child ( temp 4-component vector of float) 0:33 Color: direct index for structure ( temp 4-component vector of float) 0:33 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) @@ -168,9 +168,9 @@ using depth_any 0:23 0.100000 0:23 0.200000 0:23 Constant: -0:23 0.500000 -0:23 Constant: 0:23 0 (const int) +0:23 Constant: +0:23 0.500000 0:24 Sequence 0:24 move second child to first child ( temp 4-component vector of int) 0:24 'txval11' ( temp 4-component vector of int) @@ -182,9 +182,9 @@ using depth_any 0:24 0.200000 0:24 0.300000 0:24 Constant: -0:24 0.500000 -0:24 Constant: 0:24 1 (const int) +0:24 Constant: +0:24 0.500000 0:25 Sequence 0:25 move second child to first child ( temp 4-component vector of uint) 0:25 'txval12' ( temp 4-component vector of uint) @@ -196,9 +196,9 @@ using depth_any 0:25 0.300000 0:25 0.400000 0:25 Constant: -0:25 0.500000 -0:25 Constant: 0:25 2 (const int) +0:25 Constant: +0:25 0.500000 0:27 Sequence 0:27 move second child to first child ( temp 4-component vector of float) 0:27 'txval20' ( temp 4-component vector of float) @@ -211,10 +211,10 @@ using depth_any 0:27 0.200000 0:27 0.300000 0:27 Constant: -0:27 0.500000 -0:27 Constant: 0:27 0 (const int) 0:27 0 (const int) +0:27 Constant: +0:27 0.500000 0:28 Sequence 0:28 move second child to first child ( temp 4-component vector of int) 0:28 'txval21' ( temp 4-component vector of int) @@ -227,10 +227,10 @@ using depth_any 0:28 0.400000 0:28 0.500000 0:28 Constant: -0:28 0.500000 -0:28 Constant: 0:28 0 (const int) 0:28 0 (const int) +0:28 Constant: +0:28 0.500000 0:29 Sequence 0:29 move second child to first child ( temp 4-component vector of uint) 0:29 'txval22' ( temp 4-component vector of uint) @@ -243,10 +243,10 @@ using depth_any 0:29 0.600000 0:29 0.700000 0:29 Constant: -0:29 0.500000 -0:29 Constant: 0:29 0 (const int) 0:29 1 (const int) +0:29 Constant: +0:29 0.500000 0:33 move second child to first child ( temp 4-component vector of float) 0:33 Color: direct index for structure ( temp 4-component vector of float) 0:33 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) @@ -297,7 +297,6 @@ 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 118 @@ -369,18 +368,18 @@ Validation failed 25: 6(float) Constant 1036831949 26: 6(float) Constant 1045220557 27: 24(fvec2) ConstantComposite 25 26 - 28: 6(float) Constant 1056964608 - 29: TypeInt 32 1 - 30: 29(int) Constant 0 - 32: TypeVector 29(int) 4 + 28: TypeInt 32 1 + 29: 28(int) Constant 0 + 30: 6(float) Constant 1056964608 + 32: TypeVector 28(int) 4 33: TypePointer Function 32(ivec4) - 35: TypeImage 29(int) 1D array sampled format:Unknown + 35: TypeImage 28(int) 1D array sampled format:Unknown 36: TypePointer UniformConstant 35 37(g_tTex1di4): 36(ptr) Variable UniformConstant 40: TypeSampledImage 35 42: 6(float) Constant 1050253722 43: 24(fvec2) ConstantComposite 26 42 - 44: 29(int) Constant 1 + 44: 28(int) Constant 1 46: TypeInt 32 0 47: TypeVector 46(int) 4 48: TypePointer Function 47(ivec4) @@ -390,28 +389,28 @@ Validation failed 55: TypeSampledImage 50 57: 6(float) Constant 1053609165 58: 24(fvec2) ConstantComposite 42 57 - 59: 29(int) Constant 2 + 59: 28(int) Constant 2 62: TypeImage 6(float) 2D array sampled format:Unknown 63: TypePointer UniformConstant 62 64(g_tTex2df4): 63(ptr) Variable UniformConstant 67: TypeSampledImage 62 69: TypeVector 6(float) 3 70: 69(fvec3) ConstantComposite 25 26 42 - 71: TypeVector 29(int) 2 - 72: 71(ivec2) ConstantComposite 30 30 - 75: TypeImage 29(int) 2D array sampled format:Unknown + 71: TypeVector 28(int) 2 + 72: 71(ivec2) ConstantComposite 29 29 + 75: TypeImage 28(int) 2D array sampled format:Unknown 76: TypePointer UniformConstant 75 77(g_tTex2di4): 76(ptr) Variable UniformConstant 80: TypeSampledImage 75 - 82: 69(fvec3) ConstantComposite 42 57 28 + 82: 69(fvec3) ConstantComposite 42 57 30 85: TypeImage 46(int) 2D array sampled format:Unknown 86: TypePointer UniformConstant 85 87(g_tTex2du4): 86(ptr) Variable UniformConstant 90: TypeSampledImage 85 92: 6(float) Constant 1058642330 93: 6(float) Constant 1060320051 - 94: 69(fvec3) ConstantComposite 28 92 93 - 95: 71(ivec2) ConstantComposite 30 44 + 94: 69(fvec3) ConstantComposite 30 92 93 + 95: 71(ivec2) ConstantComposite 29 44 97: TypePointer Function 8(PS_OUTPUT) 99: 6(float) Constant 1065353216 100: 7(fvec4) ConstantComposite 99 99 99 99 @@ -426,7 +425,7 @@ Validation failed 107(flattenTemp): 97(ptr) Variable Function 108:8(PS_OUTPUT) FunctionCall 10(@main() Store 107(flattenTemp) 108 - 111: 12(ptr) AccessChain 107(flattenTemp) 30 + 111: 12(ptr) AccessChain 107(flattenTemp) 29 112: 7(fvec4) Load 111 Store 110(@entryPointOutput.Color) 112 115: 102(ptr) AccessChain 107(flattenTemp) 44 @@ -446,34 +445,34 @@ Validation failed 17: 14 Load 16(g_tTex1df4) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 - 31: 7(fvec4) ImageSampleImplicitLod 23 27 Bias ConstOffset 30 28 + 31: 7(fvec4) ImageSampleImplicitLod 23 27 Bias ConstOffset 30 29 Store 13(txval10) 31 38: 35 Load 37(g_tTex1di4) 39: 18 Load 20(g_sSamp) 41: 40 SampledImage 38 39 - 45: 32(ivec4) ImageSampleImplicitLod 41 43 Bias ConstOffset 44 28 + 45: 32(ivec4) ImageSampleImplicitLod 41 43 Bias ConstOffset 30 44 Store 34(txval11) 45 53: 50 Load 52(g_tTex1du4) 54: 18 Load 20(g_sSamp) 56: 55 SampledImage 53 54 - 60: 47(ivec4) ImageSampleImplicitLod 56 58 Bias ConstOffset 59 28 + 60: 47(ivec4) ImageSampleImplicitLod 56 58 Bias ConstOffset 30 59 Store 49(txval12) 60 65: 62 Load 64(g_tTex2df4) 66: 18 Load 20(g_sSamp) 68: 67 SampledImage 65 66 - 73: 7(fvec4) ImageSampleImplicitLod 68 70 Bias ConstOffset 72 28 + 73: 7(fvec4) ImageSampleImplicitLod 68 70 Bias ConstOffset 30 72 Store 61(txval20) 73 78: 75 Load 77(g_tTex2di4) 79: 18 Load 20(g_sSamp) 81: 80 SampledImage 78 79 - 83: 32(ivec4) ImageSampleImplicitLod 81 82 Bias ConstOffset 72 28 + 83: 32(ivec4) ImageSampleImplicitLod 81 82 Bias ConstOffset 30 72 Store 74(txval21) 83 88: 85 Load 87(g_tTex2du4) 89: 18 Load 20(g_sSamp) 91: 90 SampledImage 88 89 - 96: 47(ivec4) ImageSampleImplicitLod 91 94 Bias ConstOffset 95 28 + 96: 47(ivec4) ImageSampleImplicitLod 91 94 Bias ConstOffset 30 95 Store 84(txval22) 96 - 101: 12(ptr) AccessChain 98(psout) 30 + 101: 12(ptr) AccessChain 98(psout) 29 Store 101 100 103: 102(ptr) AccessChain 98(psout) 44 Store 103 99 diff --git a/Test/baseResults/link.redeclareBuiltin.vert.out b/Test/baseResults/link.redeclareBuiltin.vert.out new file mode 100644 index 00000000..2cd42b9e --- /dev/null +++ b/Test/baseResults/link.redeclareBuiltin.vert.out @@ -0,0 +1,154 @@ +link.redeclareBuiltin.vert +Shader version: 410 +0:? Sequence +0:8 Function Definition: main( ( global void) +0:8 Function Parameters: +0:10 Sequence +0:10 move second child to first child ( temp 4-component vector of float) +0:10 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) +0:10 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position}) +0:10 Constant: +0:10 0 (const uint) +0:10 Constant: +0:10 1.000000 +0:10 1.000000 +0:10 1.000000 +0:10 1.000000 +0:? Linker Objects +0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position}) +0:? 'gl_VertexID' ( gl_VertexId int VertexId) +0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) + +link.redeclareBuiltin.geom +Shader version: 410 +invocations = -1 +max_vertices = 3 +input primitive = triangles +output primitive = triangle_strip +0:? Sequence +0:11 Function Definition: main( ( global void) +0:11 Function Parameters: +0:13 Sequence +0:13 move second child to first child ( temp 4-component vector of float) +0:13 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position) +0:13 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out unsized 1-element array of float ClipDistance gl_ClipDistance}) +0:13 Constant: +0:13 0 (const uint) +0:13 gl_Position: direct index for structure ( in 4-component vector of float Position) +0:13 direct index ( temp block{ in 4-component vector of float Position gl_Position}) +0:13 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position}) +0:13 Constant: +0:13 0 (const int) +0:13 Constant: +0:13 0 (const int) +0:14 EmitVertex ( global void) +0:16 move second child to first child ( temp 4-component vector of float) +0:16 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position) +0:16 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out unsized 1-element array of float ClipDistance gl_ClipDistance}) +0:16 Constant: +0:16 0 (const uint) +0:16 gl_Position: direct index for structure ( in 4-component vector of float Position) +0:16 direct index ( temp block{ in 4-component vector of float Position gl_Position}) +0:16 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position}) +0:16 Constant: +0:16 1 (const int) +0:16 Constant: +0:16 0 (const int) +0:17 EmitVertex ( global void) +0:19 move second child to first child ( temp 4-component vector of float) +0:19 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position) +0:19 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out unsized 1-element array of float ClipDistance gl_ClipDistance}) +0:19 Constant: +0:19 0 (const uint) +0:19 gl_Position: direct index for structure ( in 4-component vector of float Position) +0:19 direct index ( temp block{ in 4-component vector of float Position gl_Position}) +0:19 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position}) +0:19 Constant: +0:19 2 (const int) +0:19 Constant: +0:19 0 (const int) +0:20 EmitVertex ( global void) +0:22 EndPrimitive ( global void) +0:? Linker Objects +0:? 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position}) +0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out unsized 1-element array of float ClipDistance gl_ClipDistance}) + + +Linked vertex stage: + + +Linked geometry stage: + + +Shader version: 410 +0:? Sequence +0:8 Function Definition: main( ( global void) +0:8 Function Parameters: +0:10 Sequence +0:10 move second child to first child ( temp 4-component vector of float) +0:10 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) +0:10 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position}) +0:10 Constant: +0:10 0 (const uint) +0:10 Constant: +0:10 1.000000 +0:10 1.000000 +0:10 1.000000 +0:10 1.000000 +0:? Linker Objects +0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position}) +0:? 'gl_VertexID' ( gl_VertexId int VertexId) +0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) +Shader version: 410 +invocations = 1 +max_vertices = 3 +input primitive = triangles +output primitive = triangle_strip +0:? Sequence +0:11 Function Definition: main( ( global void) +0:11 Function Parameters: +0:13 Sequence +0:13 move second child to first child ( temp 4-component vector of float) +0:13 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position) +0:13 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out 1-element array of float ClipDistance gl_ClipDistance}) +0:13 Constant: +0:13 0 (const uint) +0:13 gl_Position: direct index for structure ( in 4-component vector of float Position) +0:13 direct index ( temp block{ in 4-component vector of float Position gl_Position}) +0:13 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position}) +0:13 Constant: +0:13 0 (const int) +0:13 Constant: +0:13 0 (const int) +0:14 EmitVertex ( global void) +0:16 move second child to first child ( temp 4-component vector of float) +0:16 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position) +0:16 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out 1-element array of float ClipDistance gl_ClipDistance}) +0:16 Constant: +0:16 0 (const uint) +0:16 gl_Position: direct index for structure ( in 4-component vector of float Position) +0:16 direct index ( temp block{ in 4-component vector of float Position gl_Position}) +0:16 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position}) +0:16 Constant: +0:16 1 (const int) +0:16 Constant: +0:16 0 (const int) +0:17 EmitVertex ( global void) +0:19 move second child to first child ( temp 4-component vector of float) +0:19 gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position) +0:19 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out 1-element array of float ClipDistance gl_ClipDistance}) +0:19 Constant: +0:19 0 (const uint) +0:19 gl_Position: direct index for structure ( in 4-component vector of float Position) +0:19 direct index ( temp block{ in 4-component vector of float Position gl_Position}) +0:19 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position}) +0:19 Constant: +0:19 2 (const int) +0:19 Constant: +0:19 0 (const int) +0:20 EmitVertex ( global void) +0:22 EndPrimitive ( global void) +0:? Linker Objects +0:? 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position}) +0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out 1-element array of float ClipDistance gl_ClipDistance}) + diff --git a/Test/baseResults/link.tesselation.tese.out b/Test/baseResults/link.tesselation.tese.out new file mode 100644 index 00000000..056459f5 --- /dev/null +++ b/Test/baseResults/link.tesselation.tese.out @@ -0,0 +1,254 @@ +link.tesselation.tese +Shader version: 440 +input primitive = triangles +vertex spacing = fractional_odd_spacing +triangle order = cw +0:? Sequence +0:15 Function Definition: main( ( global void) +0:15 Function Parameters: +0:17 Sequence +0:17 Sequence +0:17 move second child to first child ( temp float) +0:17 'u' ( temp float) +0:17 direct index ( temp float) +0:17 'gl_TessCoord' ( in 3-component vector of float TessCoord) +0:17 Constant: +0:17 0 (const int) +0:18 Sequence +0:18 move second child to first child ( temp float) +0:18 'v' ( temp float) +0:18 direct index ( temp float) +0:18 'gl_TessCoord' ( in 3-component vector of float TessCoord) +0:18 Constant: +0:18 1 (const int) +0:19 Sequence +0:19 move second child to first child ( temp float) +0:19 'w' ( temp float) +0:19 direct index ( temp float) +0:19 'gl_TessCoord' ( in 3-component vector of float TessCoord) +0:19 Constant: +0:19 2 (const int) +0:21 Sequence +0:21 move second child to first child ( temp 2-component vector of float) +0:21 'newUv' ( temp 2-component vector of float) +0:21 Construct vec2 ( temp 2-component vector of float) +0:21 add ( temp 2-component vector of float) +0:21 add ( temp 2-component vector of float) +0:21 vector-scale ( temp 2-component vector of float) +0:21 'u' ( temp float) +0:21 texCoord: direct index for structure ( in 2-component vector of float) +0:21 direct index (layout( location=0) temp block{ in 2-component vector of float texCoord}) +0:21 'IN' (layout( location=0) in 32-element array of block{ in 2-component vector of float texCoord}) +0:21 Constant: +0:21 0 (const int) +0:21 Constant: +0:21 0 (const int) +0:21 vector-scale ( temp 2-component vector of float) +0:21 'v' ( temp float) +0:21 texCoord: direct index for structure ( in 2-component vector of float) +0:21 direct index (layout( location=0) temp block{ in 2-component vector of float texCoord}) +0:21 'IN' (layout( location=0) in 32-element array of block{ in 2-component vector of float texCoord}) +0:21 Constant: +0:21 1 (const int) +0:21 Constant: +0:21 0 (const int) +0:21 vector-scale ( temp 2-component vector of float) +0:21 'w' ( temp float) +0:21 texCoord: direct index for structure ( in 2-component vector of float) +0:21 direct index (layout( location=0) temp block{ in 2-component vector of float texCoord}) +0:21 'IN' (layout( location=0) in 32-element array of block{ in 2-component vector of float texCoord}) +0:21 Constant: +0:21 2 (const int) +0:21 Constant: +0:21 0 (const int) +0:22 move second child to first child ( temp 2-component vector of float) +0:22 texCoord: direct index for structure ( out 2-component vector of float) +0:22 'OUT' (layout( location=0) out block{ out 2-component vector of float texCoord}) +0:22 Constant: +0:22 0 (const int) +0:22 'newUv' ( temp 2-component vector of float) +0:23 move second child to first child ( temp 4-component vector of float) +0:23 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) +0:23 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) +0:23 Constant: +0:23 0 (const uint) +0:23 gl_Position: direct index for structure ( in 4-component vector of float Position) +0:23 indirect index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance}) +0:23 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 1-element array of float ClipDistance gl_ClipDistance}) +0:23 'gl_PatchVerticesIn' ( in int PatchVertices) +0:23 Constant: +0:23 0 (const int) +0:? Linker Objects +0:? 'IN' (layout( location=0) in 32-element array of block{ in 2-component vector of float texCoord}) +0:? 'OUT' (layout( location=0) out block{ out 2-component vector of float texCoord}) +0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) + +link.tesselation.tesc +Shader version: 440 +vertices = 3 +0:? Sequence +0:14 Function Definition: main( ( global void) +0:14 Function Parameters: +0:16 Sequence +0:16 move second child to first child ( temp 2-component vector of float) +0:16 texCoord: direct index for structure ( out 2-component vector of float) +0:16 indirect index (layout( location=0) temp block{ out 2-component vector of float texCoord}) +0:16 'OUT' (layout( location=0) out 3-element array of block{ out 2-component vector of float texCoord}) +0:16 'gl_InvocationID' ( in int InvocationID) +0:16 Constant: +0:16 0 (const int) +0:16 texCoord: direct index for structure ( in 2-component vector of float) +0:16 indirect index (layout( location=0) temp block{ in 2-component vector of float texCoord}) +0:16 'IN' (layout( location=0) in 32-element array of block{ in 2-component vector of float texCoord}) +0:16 'gl_InvocationID' ( in int InvocationID) +0:16 Constant: +0:16 0 (const int) +0:18 Sequence +0:18 move second child to first child ( temp float) +0:18 'tessLevel' ( temp float) +0:18 Constant: +0:18 10.000000 +0:19 move second child to first child ( temp float) +0:19 indirect index ( patch temp float TessLevelOuter) +0:19 'gl_TessLevelOuter' ( patch out 4-element array of float TessLevelOuter) +0:19 'gl_InvocationID' ( in int InvocationID) +0:19 'tessLevel' ( temp float) +0:20 move second child to first child ( temp float) +0:20 direct index ( patch temp float TessLevelInner) +0:20 'gl_TessLevelInner' ( patch out 2-element array of float TessLevelInner) +0:20 Constant: +0:20 0 (const int) +0:20 'tessLevel' ( temp float) +0:? Linker Objects +0:? 'IN' (layout( location=0) in 32-element array of block{ in 2-component vector of float texCoord}) +0:? 'OUT' (layout( location=0) out 3-element array of block{ out 2-component vector of float texCoord}) + + +Linked tessellation control stage: + + +Linked tessellation evaluation stage: + + +Shader version: 440 +vertices = 3 +0:? Sequence +0:14 Function Definition: main( ( global void) +0:14 Function Parameters: +0:16 Sequence +0:16 move second child to first child ( temp 2-component vector of float) +0:16 texCoord: direct index for structure ( out 2-component vector of float) +0:16 indirect index (layout( location=0) temp block{ out 2-component vector of float texCoord}) +0:16 'OUT' (layout( location=0) out 3-element array of block{ out 2-component vector of float texCoord}) +0:16 'gl_InvocationID' ( in int InvocationID) +0:16 Constant: +0:16 0 (const int) +0:16 texCoord: direct index for structure ( in 2-component vector of float) +0:16 indirect index (layout( location=0) temp block{ in 2-component vector of float texCoord}) +0:16 'IN' (layout( location=0) in 32-element array of block{ in 2-component vector of float texCoord}) +0:16 'gl_InvocationID' ( in int InvocationID) +0:16 Constant: +0:16 0 (const int) +0:18 Sequence +0:18 move second child to first child ( temp float) +0:18 'tessLevel' ( temp float) +0:18 Constant: +0:18 10.000000 +0:19 move second child to first child ( temp float) +0:19 indirect index ( patch temp float TessLevelOuter) +0:19 'gl_TessLevelOuter' ( patch out 4-element array of float TessLevelOuter) +0:19 'gl_InvocationID' ( in int InvocationID) +0:19 'tessLevel' ( temp float) +0:20 move second child to first child ( temp float) +0:20 direct index ( patch temp float TessLevelInner) +0:20 'gl_TessLevelInner' ( patch out 2-element array of float TessLevelInner) +0:20 Constant: +0:20 0 (const int) +0:20 'tessLevel' ( temp float) +0:? Linker Objects +0:? 'IN' (layout( location=0) in 32-element array of block{ in 2-component vector of float texCoord}) +0:? 'OUT' (layout( location=0) out 3-element array of block{ out 2-component vector of float texCoord}) +Shader version: 440 +input primitive = triangles +vertex spacing = fractional_odd_spacing +triangle order = cw +0:? Sequence +0:15 Function Definition: main( ( global void) +0:15 Function Parameters: +0:17 Sequence +0:17 Sequence +0:17 move second child to first child ( temp float) +0:17 'u' ( temp float) +0:17 direct index ( temp float) +0:17 'gl_TessCoord' ( in 3-component vector of float TessCoord) +0:17 Constant: +0:17 0 (const int) +0:18 Sequence +0:18 move second child to first child ( temp float) +0:18 'v' ( temp float) +0:18 direct index ( temp float) +0:18 'gl_TessCoord' ( in 3-component vector of float TessCoord) +0:18 Constant: +0:18 1 (const int) +0:19 Sequence +0:19 move second child to first child ( temp float) +0:19 'w' ( temp float) +0:19 direct index ( temp float) +0:19 'gl_TessCoord' ( in 3-component vector of float TessCoord) +0:19 Constant: +0:19 2 (const int) +0:21 Sequence +0:21 move second child to first child ( temp 2-component vector of float) +0:21 'newUv' ( temp 2-component vector of float) +0:21 Construct vec2 ( temp 2-component vector of float) +0:21 add ( temp 2-component vector of float) +0:21 add ( temp 2-component vector of float) +0:21 vector-scale ( temp 2-component vector of float) +0:21 'u' ( temp float) +0:21 texCoord: direct index for structure ( in 2-component vector of float) +0:21 direct index (layout( location=0) temp block{ in 2-component vector of float texCoord}) +0:21 'IN' (layout( location=0) in 32-element array of block{ in 2-component vector of float texCoord}) +0:21 Constant: +0:21 0 (const int) +0:21 Constant: +0:21 0 (const int) +0:21 vector-scale ( temp 2-component vector of float) +0:21 'v' ( temp float) +0:21 texCoord: direct index for structure ( in 2-component vector of float) +0:21 direct index (layout( location=0) temp block{ in 2-component vector of float texCoord}) +0:21 'IN' (layout( location=0) in 32-element array of block{ in 2-component vector of float texCoord}) +0:21 Constant: +0:21 1 (const int) +0:21 Constant: +0:21 0 (const int) +0:21 vector-scale ( temp 2-component vector of float) +0:21 'w' ( temp float) +0:21 texCoord: direct index for structure ( in 2-component vector of float) +0:21 direct index (layout( location=0) temp block{ in 2-component vector of float texCoord}) +0:21 'IN' (layout( location=0) in 32-element array of block{ in 2-component vector of float texCoord}) +0:21 Constant: +0:21 2 (const int) +0:21 Constant: +0:21 0 (const int) +0:22 move second child to first child ( temp 2-component vector of float) +0:22 texCoord: direct index for structure ( out 2-component vector of float) +0:22 'OUT' (layout( location=0) out block{ out 2-component vector of float texCoord}) +0:22 Constant: +0:22 0 (const int) +0:22 'newUv' ( temp 2-component vector of float) +0:23 move second child to first child ( temp 4-component vector of float) +0:23 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) +0:23 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) +0:23 Constant: +0:23 0 (const uint) +0:23 gl_Position: direct index for structure ( in 4-component vector of float Position) +0:23 indirect index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance}) +0:23 'gl_in' ( in 32-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance}) +0:23 'gl_PatchVerticesIn' ( in int PatchVertices) +0:23 Constant: +0:23 0 (const int) +0:? Linker Objects +0:? 'IN' (layout( location=0) in 32-element array of block{ in 2-component vector of float texCoord}) +0:? 'OUT' (layout( location=0) out block{ out 2-component vector of float texCoord}) +0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) + diff --git a/Test/baseResults/link.tesselation.vert.out b/Test/baseResults/link.tesselation.vert.out new file mode 100644 index 00000000..d56c3402 --- /dev/null +++ b/Test/baseResults/link.tesselation.vert.out @@ -0,0 +1,94 @@ +link.tesselation.vert +Shader version: 440 +0:? Sequence +0:11 Function Definition: main( ( global void) +0:11 Function Parameters: +0:13 Sequence +0:13 move second child to first child ( temp 4-component vector of float) +0:13 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) +0:13 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) +0:13 Constant: +0:13 0 (const uint) +0:13 'i_Pos' (layout( location=0) in 4-component vector of float) +0:14 move second child to first child ( temp 2-component vector of float) +0:14 texCoord: direct index for structure ( out 2-component vector of float) +0:14 'OUT' (layout( location=0) out block{ out 2-component vector of float texCoord}) +0:14 Constant: +0:14 0 (const int) +0:14 'i_Tex' (layout( location=1) in 2-component vector of float) +0:? Linker Objects +0:? 'i_Pos' (layout( location=0) in 4-component vector of float) +0:? 'i_Tex' (layout( location=1) in 2-component vector of float) +0:? 'OUT' (layout( location=0) out block{ out 2-component vector of float texCoord}) +0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance}) +0:? 'gl_VertexID' ( gl_VertexId int VertexId) +0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) + +link.tesselation.frag +Shader version: 440 +0:? Sequence +0:12 Function Definition: main( ( global void) +0:12 Function Parameters: +0:14 Sequence +0:14 move second child to first child ( temp 4-component vector of float) +0:14 'oColor' (layout( location=0) out 4-component vector of float) +0:14 texture ( global 4-component vector of float) +0:14 'mytex' (layout( binding=0) uniform sampler2D) +0:14 texCoord: direct index for structure ( in 2-component vector of float) +0:14 'IN' (layout( location=0) in block{ in 2-component vector of float texCoord}) +0:14 Constant: +0:14 0 (const int) +0:? Linker Objects +0:? 'IN' (layout( location=0) in block{ in 2-component vector of float texCoord}) +0:? 'oColor' (layout( location=0) out 4-component vector of float) +0:? 'mytex' (layout( binding=0) uniform sampler2D) + + +Linked vertex stage: + + +Linked fragment stage: + + +Shader version: 440 +0:? Sequence +0:11 Function Definition: main( ( global void) +0:11 Function Parameters: +0:13 Sequence +0:13 move second child to first child ( temp 4-component vector of float) +0:13 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) +0:13 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) +0:13 Constant: +0:13 0 (const uint) +0:13 'i_Pos' (layout( location=0) in 4-component vector of float) +0:14 move second child to first child ( temp 2-component vector of float) +0:14 texCoord: direct index for structure ( out 2-component vector of float) +0:14 'OUT' (layout( location=0) out block{ out 2-component vector of float texCoord}) +0:14 Constant: +0:14 0 (const int) +0:14 'i_Tex' (layout( location=1) in 2-component vector of float) +0:? Linker Objects +0:? 'i_Pos' (layout( location=0) in 4-component vector of float) +0:? 'i_Tex' (layout( location=1) in 2-component vector of float) +0:? 'OUT' (layout( location=0) out block{ out 2-component vector of float texCoord}) +0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance}) +0:? 'gl_VertexID' ( gl_VertexId int VertexId) +0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) +Shader version: 440 +0:? Sequence +0:12 Function Definition: main( ( global void) +0:12 Function Parameters: +0:14 Sequence +0:14 move second child to first child ( temp 4-component vector of float) +0:14 'oColor' (layout( location=0) out 4-component vector of float) +0:14 texture ( global 4-component vector of float) +0:14 'mytex' (layout( binding=0) uniform sampler2D) +0:14 texCoord: direct index for structure ( in 2-component vector of float) +0:14 'IN' (layout( location=0) in block{ in 2-component vector of float texCoord}) +0:14 Constant: +0:14 0 (const int) +0:? Linker Objects +0:? 'IN' (layout( location=0) in block{ in 2-component vector of float texCoord}) +0:? 'oColor' (layout( location=0) out 4-component vector of float) +0:? 'mytex' (layout( binding=0) uniform sampler2D) + diff --git a/Test/baseResults/rayQuery.rgen.out b/Test/baseResults/rayQuery.rgen.out index 80e9916e..06a1a5a8 100644 --- a/Test/baseResults/rayQuery.rgen.out +++ b/Test/baseResults/rayQuery.rgen.out @@ -28,8 +28,6 @@ rayQuery.rgen MemberDecorate 26(block) 0 Offset 0 MemberDecorate 26(block) 1 Offset 16 Decorate 26(block) BufferBlock - Decorate 28 DescriptorSet 0 - Decorate 28 Binding 1 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.1.4.OpEntryPoint.frag.out b/Test/baseResults/spv.1.4.OpEntryPoint.frag.out index cf5d98a0..e43e954e 100644 --- a/Test/baseResults/spv.1.4.OpEntryPoint.frag.out +++ b/Test/baseResults/spv.1.4.OpEntryPoint.frag.out @@ -31,7 +31,6 @@ spv.1.4.OpEntryPoint.frag Decorate 25(uniformv) Binding 0 MemberDecorate 31(pushB) 0 Offset 0 Decorate 31(pushB) Block - Decorate 33(pushv) Binding 2 MemberDecorate 39(bbt) 0 Offset 0 Decorate 39(bbt) Block Decorate 41(bufferv) DescriptorSet 0 diff --git a/Test/baseResults/spv.RayGenShader.rgen.out b/Test/baseResults/spv.RayGenShader.rgen.out index f8f3fd65..b7085378 100644 --- a/Test/baseResults/spv.RayGenShader.rgen.out +++ b/Test/baseResults/spv.RayGenShader.rgen.out @@ -31,8 +31,6 @@ spv.RayGenShader.rgen MemberDecorate 37(block) 0 Offset 0 MemberDecorate 37(block) 1 Offset 16 Decorate 37(block) BufferBlock - Decorate 39 DescriptorSet 0 - Decorate 39 Binding 2 Decorate 50(accNV1) DescriptorSet 0 Decorate 50(accNV1) Binding 1 Decorate 53(payload) Location 0 diff --git a/Test/baseResults/spv.RayGenShader11.rgen.out b/Test/baseResults/spv.RayGenShader11.rgen.out index f6b79c57..48509b0d 100644 --- a/Test/baseResults/spv.RayGenShader11.rgen.out +++ b/Test/baseResults/spv.RayGenShader11.rgen.out @@ -30,8 +30,6 @@ spv.RayGenShader11.rgen MemberDecorate 37(block) 0 Offset 0 MemberDecorate 37(block) 1 Offset 16 Decorate 37(block) Block - Decorate 39 DescriptorSet 0 - Decorate 39 Binding 1 Decorate 52(payload) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.RayGenShaderArray.rgen.out b/Test/baseResults/spv.RayGenShaderArray.rgen.out index 63a04b3e..8ddfca97 100644 --- a/Test/baseResults/spv.RayGenShaderArray.rgen.out +++ b/Test/baseResults/spv.RayGenShaderArray.rgen.out @@ -37,8 +37,6 @@ spv.RayGenShaderArray.rgen MemberDecorate 34(block) 1 Offset 16 MemberDecorate 34(block) 2 Offset 28 Decorate 34(block) BufferBlock - Decorate 36 DescriptorSet 0 - Decorate 36 Binding 2 Decorate 60(accNV1) DescriptorSet 0 Decorate 60(accNV1) Binding 1 Decorate 75 DecorationNonUniformEXT diff --git a/Test/baseResults/spv.ext.AnyHitShader.rahit.out b/Test/baseResults/spv.ext.AnyHitShader.rahit.out index 7bcf8120..880be339 100644 --- a/Test/baseResults/spv.ext.AnyHitShader.rahit.out +++ b/Test/baseResults/spv.ext.AnyHitShader.rahit.out @@ -73,6 +73,7 @@ spv.ext.AnyHitShader.rahit Decorate 98(gl_SubgroupSize) RelaxedPrecision Decorate 98(gl_SubgroupSize) BuiltIn SubgroupSize Decorate 99 RelaxedPrecision + Decorate 100 RelaxedPrecision 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out b/Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out index 14ec09b8..7f5af89d 100644 --- a/Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out +++ b/Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out @@ -38,10 +38,21 @@ spv.ext.ClosestHitShader_Subgroup.rchit Decorate 28(gl_SubgroupInvocationID) RelaxedPrecision Decorate 28(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 29 RelaxedPrecision + Decorate 30 RelaxedPrecision Decorate 34(gl_SubGroupGeMaskARB) BuiltIn SubgroupGeMaskKHR + Decorate 41 RelaxedPrecision + Decorate 42 RelaxedPrecision Decorate 43(gl_SubgroupGtMask) BuiltIn SubgroupGtMaskKHR + Decorate 46 RelaxedPrecision + Decorate 46 RelaxedPrecision + Decorate 47 RelaxedPrecision Decorate 48(gl_SubgroupLeMask) BuiltIn SubgroupLeMaskKHR + Decorate 51 RelaxedPrecision + Decorate 51 RelaxedPrecision + Decorate 52 RelaxedPrecision Decorate 53(gl_SubGroupLtMaskARB) BuiltIn SubgroupLtMaskKHR + Decorate 59 RelaxedPrecision + Decorate 60 RelaxedPrecision Decorate 61(gl_SMIDNV) BuiltIn SMIDNV 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out index 60b5e937..95d92136 100644 --- a/Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out +++ b/Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out @@ -49,8 +49,6 @@ spv.ext.RayGenSBTlayout.rgen MemberDecorate 36(block) 9 Offset 120 MemberDecorate 36(block) 10 Offset 128 Decorate 36(block) Block - Decorate 38 DescriptorSet 0 - Decorate 38 Binding 0 Decorate 60(payload) Location 1 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out index cc175f71..f5e32c13 100644 --- a/Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out +++ b/Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out @@ -49,8 +49,6 @@ spv.ext.RayGenSBTlayout140.rgen MemberDecorate 36(block) 9 Offset 136 MemberDecorate 36(block) 10 Offset 144 Decorate 36(block) Block - Decorate 38 DescriptorSet 0 - Decorate 38 Binding 0 Decorate 60(payload) Location 1 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out index afcfa9cd..d952adfd 100644 --- a/Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out +++ b/Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out @@ -49,8 +49,6 @@ spv.ext.RayGenSBTlayout430.rgen MemberDecorate 36(block) 9 Offset 120 MemberDecorate 36(block) 10 Offset 128 Decorate 36(block) Block - Decorate 38 DescriptorSet 0 - Decorate 38 Binding 0 Decorate 60(payload) Location 1 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out index eac481ac..c6d65304 100644 --- a/Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out +++ b/Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out @@ -50,8 +50,6 @@ spv.ext.RayGenSBTlayoutscalar.rgen MemberDecorate 36(block) 9 Offset 96 MemberDecorate 36(block) 10 Offset 104 Decorate 36(block) Block - Decorate 38 DescriptorSet 0 - Decorate 38 Binding 0 Decorate 60(payload) Location 1 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.ext.RayGenShader.rgen.out b/Test/baseResults/spv.ext.RayGenShader.rgen.out index da516f38..bfaf64b1 100644 --- a/Test/baseResults/spv.ext.RayGenShader.rgen.out +++ b/Test/baseResults/spv.ext.RayGenShader.rgen.out @@ -34,8 +34,6 @@ spv.ext.RayGenShader.rgen MemberDecorate 38(block) 0 Offset 0 MemberDecorate 38(block) 1 Offset 16 Decorate 38(block) Block - Decorate 40 DescriptorSet 0 - Decorate 40 Binding 3 Decorate 53(payload) Location 1 Decorate 54(accEXT1) DescriptorSet 0 Decorate 54(accEXT1) Binding 1 diff --git a/Test/baseResults/spv.ext.RayGenShader11.rgen.out b/Test/baseResults/spv.ext.RayGenShader11.rgen.out index 00262ac2..048b02b2 100644 --- a/Test/baseResults/spv.ext.RayGenShader11.rgen.out +++ b/Test/baseResults/spv.ext.RayGenShader11.rgen.out @@ -30,8 +30,6 @@ spv.ext.RayGenShader11.rgen MemberDecorate 37(block) 0 Offset 0 MemberDecorate 37(block) 1 Offset 16 Decorate 37(block) Block - Decorate 39 DescriptorSet 0 - Decorate 39 Binding 1 Decorate 52(payload) Location 1 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out b/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out index 473937df..ee39e358 100644 --- a/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out +++ b/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out @@ -43,8 +43,6 @@ spv.ext.RayGenShaderArray.rgen MemberDecorate 36(block) 3 Offset 32 MemberDecorate 36(block) 4 Offset 40 Decorate 36(block) Block - Decorate 38 DescriptorSet 0 - Decorate 38 Binding 2 Decorate 61(payload) Location 1 Decorate 65(accEXT1) DescriptorSet 0 Decorate 65(accEXT1) Binding 1 diff --git a/Test/baseResults/spv.float64.frag.out b/Test/baseResults/spv.float64.frag.out index dfcfc2d7..cd5f80d6 100644 --- a/Test/baseResults/spv.float64.frag.out +++ b/Test/baseResults/spv.float64.frag.out @@ -2,7 +2,7 @@ spv.float64.frag Validation failed // Module Version 10300 // Generated by (magic number): 8000a -// Id's are bound by 532 +// Id's are bound by 485 Capability Shader Capability Float16 @@ -14,7 +14,7 @@ Validation failed Capability InterpolationFunction 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 461 + EntryPoint Fragment 4 "main" 414 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_EXT_shader_explicit_arithmetic_types" @@ -29,782 +29,710 @@ Validation failed Name 6 "literal(" Name 8 "operators(" Name 10 "typeCast(" - Name 12 "builtinAngleTrigFuncs(" - Name 14 "builtinExpFuncs(" - Name 16 "builtinCommonFuncs(" - Name 18 "builtinGeometryFuncs(" - Name 20 "builtinMatrixFuncs(" - Name 22 "builtinVecRelFuncs(" - Name 24 "builtinFragProcFuncs(" - Name 29 "f64v" - Name 40 "f64v" - Name 62 "f64m" - Name 85 "f64" - Name 109 "b" - Name 151 "f64v" - Name 154 "bv" - Name 165 "f16v" - Name 173 "i8v" - Name 179 "i16v" - Name 185 "i32v" - Name 191 "i64v" - Name 197 "u8v" - Name 203 "u16v" - Name 208 "u32v" - Name 214 "u64v" - Name 219 "f64v2" - Name 220 "f64v1" - Name 252 "f64v2" - Name 253 "f64v1" - Name 269 "f64v2" - Name 270 "f64v1" - Name 291 "f64" - Name 295 "f64v3" - Name 335 "bv" - Name 356 "b" - Name 366 "iv" - Name 367 "ResType" - Name 374 "f64" - Name 375 "f64v1" - Name 379 "f64v2" - Name 385 "f64v3" - Name 404 "f64m3" - Name 405 "f64m1" - Name 407 "f64m2" - Name 416 "f64v1" - Name 418 "f64v2" - Name 423 "f64m4" - Name 426 "f64" - Name 429 "f64m5" - Name 434 "f64m6" - Name 435 "f64m7" - Name 438 "bv" - Name 439 "f64v1" - Name 441 "f64v2" - Name 459 "f64v" - Name 461 "if64v" - Name 518 "S" - MemberName 518(S) 0 "x" - MemberName 518(S) 1 "y" - MemberName 518(S) 2 "z" - Name 520 "B1" - MemberName 520(B1) 0 "a" - MemberName 520(B1) 1 "b" - MemberName 520(B1) 2 "c" - MemberName 520(B1) 3 "d" - MemberName 520(B1) 4 "e" - MemberName 520(B1) 5 "f" - MemberName 520(B1) 6 "g" - MemberName 520(B1) 7 "h" - Name 522 "" - Name 523 "sf16" - Name 525 "sf" - Name 526 "sd" - Name 527 "f16_to_f" - Name 529 "f16_to_d" - Name 530 "f_to_f16" - Name 531 "d_to_f16" - Decorate 461(if64v) Flat - Decorate 461(if64v) Location 0 - Decorate 516 ArrayStride 16 - Decorate 517 ArrayStride 64 - MemberDecorate 518(S) 0 Offset 0 - MemberDecorate 518(S) 1 Offset 16 - MemberDecorate 518(S) 2 Offset 32 - Decorate 519 ArrayStride 64 - MemberDecorate 520(B1) 0 Offset 0 - MemberDecorate 520(B1) 1 Offset 16 - MemberDecorate 520(B1) 2 Offset 32 - MemberDecorate 520(B1) 3 Offset 64 - MemberDecorate 520(B1) 4 ColMajor - MemberDecorate 520(B1) 4 Offset 96 - MemberDecorate 520(B1) 4 MatrixStride 32 - MemberDecorate 520(B1) 5 ColMajor - MemberDecorate 520(B1) 5 Offset 160 - MemberDecorate 520(B1) 5 MatrixStride 32 - MemberDecorate 520(B1) 6 Offset 288 - MemberDecorate 520(B1) 7 Offset 352 - Decorate 520(B1) Block - Decorate 522 DescriptorSet 0 - Decorate 522 Binding 0 - Decorate 523(sf16) SpecId 100 - Decorate 525(sf) SpecId 101 - Decorate 526(sd) SpecId 102 + Name 12 "builtinTranscendentalFuncs(" + Name 14 "builtinCommonFuncs(" + Name 16 "builtinGeometryFuncs(" + Name 18 "builtinMatrixFuncs(" + Name 20 "builtinVecRelFuncs(" + Name 22 "builtinFragProcFuncs(" + Name 27 "f64v" + Name 38 "f64v" + Name 60 "f64m" + Name 83 "f64" + Name 107 "b" + Name 149 "f64v" + Name 152 "bv" + Name 163 "f16v" + Name 171 "i8v" + Name 177 "i16v" + Name 183 "i32v" + Name 189 "i64v" + Name 195 "u8v" + Name 201 "u16v" + Name 206 "u32v" + Name 212 "u64v" + Name 215 "f64v2" + Name 216 "f64v1" + Name 221 "f64v2" + Name 222 "f64v1" + Name 243 "f64" + Name 247 "f64v3" + Name 287 "bv" + Name 308 "b" + Name 318 "iv" + Name 319 "ResType" + Name 326 "f64" + Name 327 "f64v1" + Name 331 "f64v2" + Name 337 "f64v3" + Name 356 "f64m3" + Name 357 "f64m1" + Name 359 "f64m2" + Name 368 "f64v1" + Name 370 "f64v2" + Name 375 "f64m4" + Name 378 "f64" + Name 381 "f64m5" + Name 387 "f64m6" + Name 388 "f64m7" + Name 391 "bv" + Name 392 "f64v1" + Name 394 "f64v2" + Name 412 "f64v" + Name 414 "if64v" + Name 471 "S" + MemberName 471(S) 0 "x" + MemberName 471(S) 1 "y" + MemberName 471(S) 2 "z" + Name 473 "B1" + MemberName 473(B1) 0 "a" + MemberName 473(B1) 1 "b" + MemberName 473(B1) 2 "c" + MemberName 473(B1) 3 "d" + MemberName 473(B1) 4 "e" + MemberName 473(B1) 5 "f" + MemberName 473(B1) 6 "g" + MemberName 473(B1) 7 "h" + Name 475 "" + Name 476 "sf16" + Name 478 "sf" + Name 479 "sd" + Name 480 "f16_to_f" + Name 482 "f16_to_d" + Name 483 "f_to_f16" + Name 484 "d_to_f16" + Decorate 414(if64v) Flat + Decorate 414(if64v) Location 0 + Decorate 469 ArrayStride 16 + Decorate 470 ArrayStride 64 + MemberDecorate 471(S) 0 Offset 0 + MemberDecorate 471(S) 1 Offset 16 + MemberDecorate 471(S) 2 Offset 32 + Decorate 472 ArrayStride 64 + MemberDecorate 473(B1) 0 Offset 0 + MemberDecorate 473(B1) 1 Offset 16 + MemberDecorate 473(B1) 2 Offset 32 + MemberDecorate 473(B1) 3 Offset 64 + MemberDecorate 473(B1) 4 ColMajor + MemberDecorate 473(B1) 4 Offset 96 + MemberDecorate 473(B1) 4 MatrixStride 32 + MemberDecorate 473(B1) 5 ColMajor + MemberDecorate 473(B1) 5 Offset 160 + MemberDecorate 473(B1) 5 MatrixStride 32 + MemberDecorate 473(B1) 6 Offset 288 + MemberDecorate 473(B1) 7 Offset 352 + Decorate 473(B1) Block + Decorate 475 DescriptorSet 0 + Decorate 475 Binding 0 + Decorate 476(sf16) SpecId 100 + Decorate 478(sf) SpecId 101 + Decorate 479(sd) SpecId 102 2: TypeVoid 3: TypeFunction 2 - 26: TypeFloat 64 - 27: TypeVector 26(float64_t) 2 - 28: TypePointer Function 27(f64vec2) - 30:26(float64_t) Constant 2696277389 1051772663 - 31: TypeInt 32 0 - 32: 31(int) Constant 0 - 33: TypePointer Function 26(float64_t) - 35:26(float64_t) Constant 0 3218079744 - 36:26(float64_t) Constant 3951369912 1067366481 - 37: 27(f64vec2) ConstantComposite 35 36 - 54:26(float64_t) Constant 0 1072693248 - 60: TypeMatrix 27(f64vec2) 2 - 61: TypePointer Function 60 - 88: 31(int) Constant 1 - 107: TypeBool - 108: TypePointer Function 107(bool) - 149: TypeVector 26(float64_t) 3 - 150: TypePointer Function 149(f64vec3) - 152: TypeVector 107(bool) 3 - 153: TypePointer Function 152(bvec3) - 156:26(float64_t) Constant 0 0 - 157:149(f64vec3) ConstantComposite 156 156 156 - 158:149(f64vec3) ConstantComposite 54 54 54 - 162: TypeFloat 16 - 163: TypeVector 162(float16_t) 3 - 164: TypePointer Function 163(f16vec3) - 170: TypeInt 8 1 - 171: TypeVector 170(int8_t) 3 - 172: TypePointer Function 171(i8vec3) - 176: TypeInt 16 1 - 177: TypeVector 176(int16_t) 3 - 178: TypePointer Function 177(i16vec3) - 182: TypeInt 32 1 - 183: TypeVector 182(int) 3 - 184: TypePointer Function 183(ivec3) - 188: TypeInt 64 1 - 189: TypeVector 188(int64_t) 3 - 190: TypePointer Function 189(i64vec3) - 194: TypeInt 8 0 - 195: TypeVector 194(int8_t) 3 - 196: TypePointer Function 195(i8vec3) - 200: TypeInt 16 0 - 201: TypeVector 200(int16_t) 3 - 202: TypePointer Function 201(i16vec3) - 206: TypeVector 31(int) 3 - 207: TypePointer Function 206(ivec3) - 211: TypeInt 64 0 - 212: TypeVector 211(int64_t) 3 - 213: TypePointer Function 212(i64vec3) - 217: TypeVector 26(float64_t) 4 - 218: TypePointer Function 217(f64vec4) - 367(ResType): TypeStruct 149(f64vec3) 183(ivec3) - 402: TypeMatrix 149(f64vec3) 2 - 403: TypePointer Function 402 - 421: TypeMatrix 27(f64vec2) 3 - 422: TypePointer Function 421 - 427: TypeMatrix 149(f64vec3) 3 - 428: TypePointer Function 427 - 432: TypeMatrix 217(f64vec4) 4 - 433: TypePointer Function 432 - 460: TypePointer Input 149(f64vec3) - 461(if64v): 460(ptr) Variable Input - 462: TypePointer Input 26(float64_t) - 505: 182(int) Constant 1 - 512:26(float64_t) Constant 0 1071644672 - 513: 27(f64vec2) ConstantComposite 512 512 - 515: 31(int) Constant 2 - 516: TypeArray 26(float64_t) 515 - 517: TypeArray 402 515 - 518(S): TypeStruct 26(float64_t) 27(f64vec2) 149(f64vec3) - 519: TypeArray 518(S) 515 - 520(B1): TypeStruct 26(float64_t) 27(f64vec2) 149(f64vec3) 516 402 517 518(S) 519 - 521: TypePointer Uniform 520(B1) - 522: 521(ptr) Variable Uniform - 523(sf16):162(float16_t) SpecConstant 12288 - 524: TypeFloat 32 - 525(sf): 524(float) SpecConstant 1048576000 - 526(sd):26(float64_t) SpecConstant 0 1071644672 - 527(f16_to_f): 524(float) SpecConstantOp 115 523(sf16) - 528: 524(float) SpecConstantOp 115 523(sf16) - 529(f16_to_d):26(float64_t) SpecConstantOp 115 528 - 530(f_to_f16):162(float16_t) SpecConstantOp 115 525(sf) - 531(d_to_f16):162(float16_t) SpecConstantOp 115 526(sd) + 24: TypeFloat 64 + 25: TypeVector 24(float64_t) 2 + 26: TypePointer Function 25(f64vec2) + 28:24(float64_t) Constant 2696277389 1051772663 + 29: TypeInt 32 0 + 30: 29(int) Constant 0 + 31: TypePointer Function 24(float64_t) + 33:24(float64_t) Constant 0 3218079744 + 34:24(float64_t) Constant 3951369912 1067366481 + 35: 25(f64vec2) ConstantComposite 33 34 + 52:24(float64_t) Constant 0 1072693248 + 58: TypeMatrix 25(f64vec2) 2 + 59: TypePointer Function 58 + 86: 29(int) Constant 1 + 105: TypeBool + 106: TypePointer Function 105(bool) + 147: TypeVector 24(float64_t) 3 + 148: TypePointer Function 147(f64vec3) + 150: TypeVector 105(bool) 3 + 151: TypePointer Function 150(bvec3) + 154:24(float64_t) Constant 0 0 + 155:147(f64vec3) ConstantComposite 154 154 154 + 156:147(f64vec3) ConstantComposite 52 52 52 + 160: TypeFloat 16 + 161: TypeVector 160(float16_t) 3 + 162: TypePointer Function 161(f16vec3) + 168: TypeInt 8 1 + 169: TypeVector 168(int8_t) 3 + 170: TypePointer Function 169(i8vec3) + 174: TypeInt 16 1 + 175: TypeVector 174(int16_t) 3 + 176: TypePointer Function 175(i16vec3) + 180: TypeInt 32 1 + 181: TypeVector 180(int) 3 + 182: TypePointer Function 181(ivec3) + 186: TypeInt 64 1 + 187: TypeVector 186(int64_t) 3 + 188: TypePointer Function 187(i64vec3) + 192: TypeInt 8 0 + 193: TypeVector 192(int8_t) 3 + 194: TypePointer Function 193(i8vec3) + 198: TypeInt 16 0 + 199: TypeVector 198(int16_t) 3 + 200: TypePointer Function 199(i16vec3) + 204: TypeVector 29(int) 3 + 205: TypePointer Function 204(ivec3) + 209: TypeInt 64 0 + 210: TypeVector 209(int64_t) 3 + 211: TypePointer Function 210(i64vec3) + 319(ResType): TypeStruct 147(f64vec3) 181(ivec3) + 354: TypeMatrix 147(f64vec3) 2 + 355: TypePointer Function 354 + 373: TypeMatrix 25(f64vec2) 3 + 374: TypePointer Function 373 + 379: TypeMatrix 147(f64vec3) 3 + 380: TypePointer Function 379 + 384: TypeVector 24(float64_t) 4 + 385: TypeMatrix 384(f64vec4) 4 + 386: TypePointer Function 385 + 413: TypePointer Input 147(f64vec3) + 414(if64v): 413(ptr) Variable Input + 415: TypePointer Input 24(float64_t) + 458: 180(int) Constant 1 + 465:24(float64_t) Constant 0 1071644672 + 466: 25(f64vec2) ConstantComposite 465 465 + 468: 29(int) Constant 2 + 469: TypeArray 24(float64_t) 468 + 470: TypeArray 354 468 + 471(S): TypeStruct 24(float64_t) 25(f64vec2) 147(f64vec3) + 472: TypeArray 471(S) 468 + 473(B1): TypeStruct 24(float64_t) 25(f64vec2) 147(f64vec3) 469 354 470 471(S) 472 + 474: TypePointer Uniform 473(B1) + 475: 474(ptr) Variable Uniform + 476(sf16):160(float16_t) SpecConstant 12288 + 477: TypeFloat 32 + 478(sf): 477(float) SpecConstant 1048576000 + 479(sd):24(float64_t) SpecConstant 0 1071644672 + 480(f16_to_f): 477(float) SpecConstantOp 115 476(sf16) + 481: 477(float) SpecConstantOp 115 476(sf16) + 482(f16_to_d):24(float64_t) SpecConstantOp 115 481 + 483(f_to_f16):160(float16_t) SpecConstantOp 115 478(sf) + 484(d_to_f16):160(float16_t) SpecConstantOp 115 479(sd) 4(main): 2 Function None 3 5: Label Return FunctionEnd 6(literal(): 2 Function None 3 7: Label - 29(f64v): 28(ptr) Variable Function - 34: 33(ptr) AccessChain 29(f64v) 32 - Store 34 30 - 38: 27(f64vec2) Load 29(f64v) - 39: 27(f64vec2) FAdd 38 37 - Store 29(f64v) 39 + 27(f64v): 26(ptr) Variable Function + 32: 31(ptr) AccessChain 27(f64v) 30 + Store 32 28 + 36: 25(f64vec2) Load 27(f64v) + 37: 25(f64vec2) FAdd 36 35 + Store 27(f64v) 37 Return FunctionEnd 8(operators(): 2 Function None 3 9: Label - 40(f64v): 28(ptr) Variable Function - 62(f64m): 61(ptr) Variable Function - 85(f64): 33(ptr) Variable Function - 109(b): 108(ptr) Variable Function - 41: 27(f64vec2) Load 40(f64v) - 42: 27(f64vec2) Load 40(f64v) - 43: 27(f64vec2) FAdd 42 41 - Store 40(f64v) 43 - 44: 27(f64vec2) Load 40(f64v) - 45: 27(f64vec2) Load 40(f64v) - 46: 27(f64vec2) FSub 45 44 - Store 40(f64v) 46 - 47: 27(f64vec2) Load 40(f64v) - 48: 27(f64vec2) Load 40(f64v) - 49: 27(f64vec2) FMul 48 47 - Store 40(f64v) 49 - 50: 27(f64vec2) Load 40(f64v) - 51: 27(f64vec2) Load 40(f64v) - 52: 27(f64vec2) FDiv 51 50 - Store 40(f64v) 52 - 53: 27(f64vec2) Load 40(f64v) - 55: 27(f64vec2) CompositeConstruct 54 54 - 56: 27(f64vec2) FAdd 53 55 - Store 40(f64v) 56 - 57: 27(f64vec2) Load 40(f64v) - 58: 27(f64vec2) CompositeConstruct 54 54 - 59: 27(f64vec2) FSub 57 58 - Store 40(f64v) 59 - 63: 60 Load 62(f64m) - 64: 27(f64vec2) CompositeConstruct 54 54 - 65: 27(f64vec2) CompositeExtract 63 0 - 66: 27(f64vec2) FAdd 65 64 - 67: 27(f64vec2) CompositeExtract 63 1 - 68: 27(f64vec2) FAdd 67 64 - 69: 60 CompositeConstruct 66 68 - Store 62(f64m) 69 - 70: 60 Load 62(f64m) - 71: 27(f64vec2) CompositeConstruct 54 54 - 72: 27(f64vec2) CompositeExtract 70 0 - 73: 27(f64vec2) FSub 72 71 - 74: 27(f64vec2) CompositeExtract 70 1 - 75: 27(f64vec2) FSub 74 71 - 76: 60 CompositeConstruct 73 75 - Store 62(f64m) 76 - 77: 27(f64vec2) Load 40(f64v) - 78: 27(f64vec2) FNegate 77 - Store 40(f64v) 78 - 79: 60 Load 62(f64m) - 80: 27(f64vec2) CompositeExtract 79 0 - 81: 27(f64vec2) FNegate 80 - 82: 27(f64vec2) CompositeExtract 79 1 - 83: 27(f64vec2) FNegate 82 - 84: 60 CompositeConstruct 81 83 - Store 62(f64m) 84 - 86: 33(ptr) AccessChain 40(f64v) 32 - 87:26(float64_t) Load 86 - 89: 33(ptr) AccessChain 40(f64v) 88 - 90:26(float64_t) Load 89 - 91:26(float64_t) FAdd 87 90 - Store 85(f64) 91 - 92: 33(ptr) AccessChain 40(f64v) 32 - 93:26(float64_t) Load 92 - 94: 33(ptr) AccessChain 40(f64v) 88 - 95:26(float64_t) Load 94 - 96:26(float64_t) FSub 93 95 - Store 85(f64) 96 - 97: 33(ptr) AccessChain 40(f64v) 32 - 98:26(float64_t) Load 97 - 99: 33(ptr) AccessChain 40(f64v) 88 - 100:26(float64_t) Load 99 - 101:26(float64_t) FMul 98 100 - Store 85(f64) 101 - 102: 33(ptr) AccessChain 40(f64v) 32 - 103:26(float64_t) Load 102 - 104: 33(ptr) AccessChain 40(f64v) 88 - 105:26(float64_t) Load 104 - 106:26(float64_t) FDiv 103 105 - Store 85(f64) 106 - 110: 33(ptr) AccessChain 40(f64v) 32 - 111:26(float64_t) Load 110 - 112:26(float64_t) Load 85(f64) - 113: 107(bool) FUnordNotEqual 111 112 - Store 109(b) 113 - 114: 33(ptr) AccessChain 40(f64v) 88 - 115:26(float64_t) Load 114 - 116:26(float64_t) Load 85(f64) - 117: 107(bool) FOrdEqual 115 116 - Store 109(b) 117 - 118: 33(ptr) AccessChain 40(f64v) 32 - 119:26(float64_t) Load 118 - 120:26(float64_t) Load 85(f64) - 121: 107(bool) FOrdGreaterThan 119 120 - Store 109(b) 121 - 122: 33(ptr) AccessChain 40(f64v) 88 - 123:26(float64_t) Load 122 - 124:26(float64_t) Load 85(f64) - 125: 107(bool) FOrdLessThan 123 124 - Store 109(b) 125 - 126: 33(ptr) AccessChain 40(f64v) 32 - 127:26(float64_t) Load 126 - 128:26(float64_t) Load 85(f64) - 129: 107(bool) FOrdGreaterThanEqual 127 128 - Store 109(b) 129 - 130: 33(ptr) AccessChain 40(f64v) 88 - 131:26(float64_t) Load 130 - 132:26(float64_t) Load 85(f64) - 133: 107(bool) FOrdLessThanEqual 131 132 - Store 109(b) 133 - 134: 27(f64vec2) Load 40(f64v) - 135:26(float64_t) Load 85(f64) - 136: 27(f64vec2) VectorTimesScalar 134 135 - Store 40(f64v) 136 - 137: 60 Load 62(f64m) - 138:26(float64_t) Load 85(f64) - 139: 60 MatrixTimesScalar 137 138 - Store 62(f64m) 139 - 140: 60 Load 62(f64m) - 141: 27(f64vec2) Load 40(f64v) - 142: 27(f64vec2) MatrixTimesVector 140 141 - Store 40(f64v) 142 - 143: 27(f64vec2) Load 40(f64v) - 144: 60 Load 62(f64m) - 145: 27(f64vec2) VectorTimesMatrix 143 144 - Store 40(f64v) 145 - 146: 60 Load 62(f64m) - 147: 60 Load 62(f64m) - 148: 60 MatrixTimesMatrix 146 147 - Store 62(f64m) 148 + 38(f64v): 26(ptr) Variable Function + 60(f64m): 59(ptr) Variable Function + 83(f64): 31(ptr) Variable Function + 107(b): 106(ptr) Variable Function + 39: 25(f64vec2) Load 38(f64v) + 40: 25(f64vec2) Load 38(f64v) + 41: 25(f64vec2) FAdd 40 39 + Store 38(f64v) 41 + 42: 25(f64vec2) Load 38(f64v) + 43: 25(f64vec2) Load 38(f64v) + 44: 25(f64vec2) FSub 43 42 + Store 38(f64v) 44 + 45: 25(f64vec2) Load 38(f64v) + 46: 25(f64vec2) Load 38(f64v) + 47: 25(f64vec2) FMul 46 45 + Store 38(f64v) 47 + 48: 25(f64vec2) Load 38(f64v) + 49: 25(f64vec2) Load 38(f64v) + 50: 25(f64vec2) FDiv 49 48 + Store 38(f64v) 50 + 51: 25(f64vec2) Load 38(f64v) + 53: 25(f64vec2) CompositeConstruct 52 52 + 54: 25(f64vec2) FAdd 51 53 + Store 38(f64v) 54 + 55: 25(f64vec2) Load 38(f64v) + 56: 25(f64vec2) CompositeConstruct 52 52 + 57: 25(f64vec2) FSub 55 56 + Store 38(f64v) 57 + 61: 58 Load 60(f64m) + 62: 25(f64vec2) CompositeConstruct 52 52 + 63: 25(f64vec2) CompositeExtract 61 0 + 64: 25(f64vec2) FAdd 63 62 + 65: 25(f64vec2) CompositeExtract 61 1 + 66: 25(f64vec2) FAdd 65 62 + 67: 58 CompositeConstruct 64 66 + Store 60(f64m) 67 + 68: 58 Load 60(f64m) + 69: 25(f64vec2) CompositeConstruct 52 52 + 70: 25(f64vec2) CompositeExtract 68 0 + 71: 25(f64vec2) FSub 70 69 + 72: 25(f64vec2) CompositeExtract 68 1 + 73: 25(f64vec2) FSub 72 69 + 74: 58 CompositeConstruct 71 73 + Store 60(f64m) 74 + 75: 25(f64vec2) Load 38(f64v) + 76: 25(f64vec2) FNegate 75 + Store 38(f64v) 76 + 77: 58 Load 60(f64m) + 78: 25(f64vec2) CompositeExtract 77 0 + 79: 25(f64vec2) FNegate 78 + 80: 25(f64vec2) CompositeExtract 77 1 + 81: 25(f64vec2) FNegate 80 + 82: 58 CompositeConstruct 79 81 + Store 60(f64m) 82 + 84: 31(ptr) AccessChain 38(f64v) 30 + 85:24(float64_t) Load 84 + 87: 31(ptr) AccessChain 38(f64v) 86 + 88:24(float64_t) Load 87 + 89:24(float64_t) FAdd 85 88 + Store 83(f64) 89 + 90: 31(ptr) AccessChain 38(f64v) 30 + 91:24(float64_t) Load 90 + 92: 31(ptr) AccessChain 38(f64v) 86 + 93:24(float64_t) Load 92 + 94:24(float64_t) FSub 91 93 + Store 83(f64) 94 + 95: 31(ptr) AccessChain 38(f64v) 30 + 96:24(float64_t) Load 95 + 97: 31(ptr) AccessChain 38(f64v) 86 + 98:24(float64_t) Load 97 + 99:24(float64_t) FMul 96 98 + Store 83(f64) 99 + 100: 31(ptr) AccessChain 38(f64v) 30 + 101:24(float64_t) Load 100 + 102: 31(ptr) AccessChain 38(f64v) 86 + 103:24(float64_t) Load 102 + 104:24(float64_t) FDiv 101 103 + Store 83(f64) 104 + 108: 31(ptr) AccessChain 38(f64v) 30 + 109:24(float64_t) Load 108 + 110:24(float64_t) Load 83(f64) + 111: 105(bool) FUnordNotEqual 109 110 + Store 107(b) 111 + 112: 31(ptr) AccessChain 38(f64v) 86 + 113:24(float64_t) Load 112 + 114:24(float64_t) Load 83(f64) + 115: 105(bool) FOrdEqual 113 114 + Store 107(b) 115 + 116: 31(ptr) AccessChain 38(f64v) 30 + 117:24(float64_t) Load 116 + 118:24(float64_t) Load 83(f64) + 119: 105(bool) FOrdGreaterThan 117 118 + Store 107(b) 119 + 120: 31(ptr) AccessChain 38(f64v) 86 + 121:24(float64_t) Load 120 + 122:24(float64_t) Load 83(f64) + 123: 105(bool) FOrdLessThan 121 122 + Store 107(b) 123 + 124: 31(ptr) AccessChain 38(f64v) 30 + 125:24(float64_t) Load 124 + 126:24(float64_t) Load 83(f64) + 127: 105(bool) FOrdGreaterThanEqual 125 126 + Store 107(b) 127 + 128: 31(ptr) AccessChain 38(f64v) 86 + 129:24(float64_t) Load 128 + 130:24(float64_t) Load 83(f64) + 131: 105(bool) FOrdLessThanEqual 129 130 + Store 107(b) 131 + 132: 25(f64vec2) Load 38(f64v) + 133:24(float64_t) Load 83(f64) + 134: 25(f64vec2) VectorTimesScalar 132 133 + Store 38(f64v) 134 + 135: 58 Load 60(f64m) + 136:24(float64_t) Load 83(f64) + 137: 58 MatrixTimesScalar 135 136 + Store 60(f64m) 137 + 138: 58 Load 60(f64m) + 139: 25(f64vec2) Load 38(f64v) + 140: 25(f64vec2) MatrixTimesVector 138 139 + Store 38(f64v) 140 + 141: 25(f64vec2) Load 38(f64v) + 142: 58 Load 60(f64m) + 143: 25(f64vec2) VectorTimesMatrix 141 142 + Store 38(f64v) 143 + 144: 58 Load 60(f64m) + 145: 58 Load 60(f64m) + 146: 58 MatrixTimesMatrix 144 145 + Store 60(f64m) 146 Return FunctionEnd 10(typeCast(): 2 Function None 3 11: Label - 151(f64v): 150(ptr) Variable Function - 154(bv): 153(ptr) Variable Function - 165(f16v): 164(ptr) Variable Function - 173(i8v): 172(ptr) Variable Function - 179(i16v): 178(ptr) Variable Function - 185(i32v): 184(ptr) Variable Function - 191(i64v): 190(ptr) Variable Function - 197(u8v): 196(ptr) Variable Function - 203(u16v): 202(ptr) Variable Function - 208(u32v): 207(ptr) Variable Function - 214(u64v): 213(ptr) Variable Function - 155: 152(bvec3) Load 154(bv) - 159:149(f64vec3) Select 155 158 157 - Store 151(f64v) 159 - 160:149(f64vec3) Load 151(f64v) - 161: 152(bvec3) FUnordNotEqual 160 157 - Store 154(bv) 161 - 166:163(f16vec3) Load 165(f16v) - 167:149(f64vec3) FConvert 166 - Store 151(f64v) 167 - 168:149(f64vec3) Load 151(f64v) - 169:163(f16vec3) FConvert 168 - Store 165(f16v) 169 - 174:149(f64vec3) Load 151(f64v) - 175: 171(i8vec3) ConvertFToS 174 - Store 173(i8v) 175 - 180:149(f64vec3) Load 151(f64v) - 181:177(i16vec3) ConvertFToS 180 - Store 179(i16v) 181 - 186:149(f64vec3) Load 151(f64v) - 187: 183(ivec3) ConvertFToS 186 - Store 185(i32v) 187 - 192:149(f64vec3) Load 151(f64v) - 193:189(i64vec3) ConvertFToS 192 - Store 191(i64v) 193 - 198:149(f64vec3) Load 151(f64v) - 199: 195(i8vec3) ConvertFToU 198 - Store 197(u8v) 199 - 204:149(f64vec3) Load 151(f64v) - 205:201(i16vec3) ConvertFToU 204 - Store 203(u16v) 205 - 209:149(f64vec3) Load 151(f64v) - 210: 206(ivec3) ConvertFToU 209 - Store 208(u32v) 210 - 215:149(f64vec3) Load 151(f64v) - 216:212(i64vec3) ConvertFToU 215 - Store 214(u64v) 216 + 149(f64v): 148(ptr) Variable Function + 152(bv): 151(ptr) Variable Function + 163(f16v): 162(ptr) Variable Function + 171(i8v): 170(ptr) Variable Function + 177(i16v): 176(ptr) Variable Function + 183(i32v): 182(ptr) Variable Function + 189(i64v): 188(ptr) Variable Function + 195(u8v): 194(ptr) Variable Function + 201(u16v): 200(ptr) Variable Function + 206(u32v): 205(ptr) Variable Function + 212(u64v): 211(ptr) Variable Function + 153: 150(bvec3) Load 152(bv) + 157:147(f64vec3) Select 153 156 155 + Store 149(f64v) 157 + 158:147(f64vec3) Load 149(f64v) + 159: 150(bvec3) FUnordNotEqual 158 155 + Store 152(bv) 159 + 164:161(f16vec3) Load 163(f16v) + 165:147(f64vec3) FConvert 164 + Store 149(f64v) 165 + 166:147(f64vec3) Load 149(f64v) + 167:161(f16vec3) FConvert 166 + Store 163(f16v) 167 + 172:147(f64vec3) Load 149(f64v) + 173: 169(i8vec3) ConvertFToS 172 + Store 171(i8v) 173 + 178:147(f64vec3) Load 149(f64v) + 179:175(i16vec3) ConvertFToS 178 + Store 177(i16v) 179 + 184:147(f64vec3) Load 149(f64v) + 185: 181(ivec3) ConvertFToS 184 + Store 183(i32v) 185 + 190:147(f64vec3) Load 149(f64v) + 191:187(i64vec3) ConvertFToS 190 + Store 189(i64v) 191 + 196:147(f64vec3) Load 149(f64v) + 197: 193(i8vec3) ConvertFToU 196 + Store 195(u8v) 197 + 202:147(f64vec3) Load 149(f64v) + 203:199(i16vec3) ConvertFToU 202 + Store 201(u16v) 203 + 207:147(f64vec3) Load 149(f64v) + 208: 204(ivec3) ConvertFToU 207 + Store 206(u32v) 208 + 213:147(f64vec3) Load 149(f64v) + 214:210(i64vec3) ConvertFToU 213 + Store 212(u64v) 214 Return FunctionEnd -12(builtinAngleTrigFuncs(): 2 Function None 3 +12(builtinTranscendentalFuncs(): 2 Function None 3 13: Label - 219(f64v2): 218(ptr) Variable Function - 220(f64v1): 218(ptr) Variable Function - 221:217(f64vec4) Load 220(f64v1) - 222:217(f64vec4) ExtInst 1(GLSL.std.450) 11(Radians) 221 - Store 219(f64v2) 222 - 223:217(f64vec4) Load 220(f64v1) - 224:217(f64vec4) ExtInst 1(GLSL.std.450) 12(Degrees) 223 - Store 219(f64v2) 224 - 225:217(f64vec4) Load 220(f64v1) - 226:217(f64vec4) ExtInst 1(GLSL.std.450) 13(Sin) 225 - Store 219(f64v2) 226 - 227:217(f64vec4) Load 220(f64v1) - 228:217(f64vec4) ExtInst 1(GLSL.std.450) 14(Cos) 227 - Store 219(f64v2) 228 - 229:217(f64vec4) Load 220(f64v1) - 230:217(f64vec4) ExtInst 1(GLSL.std.450) 15(Tan) 229 - Store 219(f64v2) 230 - 231:217(f64vec4) Load 220(f64v1) - 232:217(f64vec4) ExtInst 1(GLSL.std.450) 16(Asin) 231 - Store 219(f64v2) 232 - 233:217(f64vec4) Load 220(f64v1) - 234:217(f64vec4) ExtInst 1(GLSL.std.450) 17(Acos) 233 - Store 219(f64v2) 234 - 235:217(f64vec4) Load 220(f64v1) - 236:217(f64vec4) Load 219(f64v2) - 237:217(f64vec4) ExtInst 1(GLSL.std.450) 25(Atan2) 235 236 - Store 219(f64v2) 237 - 238:217(f64vec4) Load 220(f64v1) - 239:217(f64vec4) ExtInst 1(GLSL.std.450) 18(Atan) 238 - Store 219(f64v2) 239 - 240:217(f64vec4) Load 220(f64v1) - 241:217(f64vec4) ExtInst 1(GLSL.std.450) 19(Sinh) 240 - Store 219(f64v2) 241 - 242:217(f64vec4) Load 220(f64v1) - 243:217(f64vec4) ExtInst 1(GLSL.std.450) 20(Cosh) 242 - Store 219(f64v2) 243 - 244:217(f64vec4) Load 220(f64v1) - 245:217(f64vec4) ExtInst 1(GLSL.std.450) 21(Tanh) 244 - Store 219(f64v2) 245 - 246:217(f64vec4) Load 220(f64v1) - 247:217(f64vec4) ExtInst 1(GLSL.std.450) 22(Asinh) 246 - Store 219(f64v2) 247 - 248:217(f64vec4) Load 220(f64v1) - 249:217(f64vec4) ExtInst 1(GLSL.std.450) 23(Acosh) 248 - Store 219(f64v2) 249 - 250:217(f64vec4) Load 220(f64v1) - 251:217(f64vec4) ExtInst 1(GLSL.std.450) 24(Atanh) 250 - Store 219(f64v2) 251 + 215(f64v2): 26(ptr) Variable Function + 216(f64v1): 26(ptr) Variable Function + 217: 25(f64vec2) Load 216(f64v1) + 218: 25(f64vec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 217 + Store 215(f64v2) 218 + 219: 25(f64vec2) Load 216(f64v1) + 220: 25(f64vec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 219 + Store 215(f64v2) 220 Return FunctionEnd -14(builtinExpFuncs(): 2 Function None 3 +14(builtinCommonFuncs(): 2 Function None 3 15: Label - 252(f64v2): 28(ptr) Variable Function - 253(f64v1): 28(ptr) Variable Function - 254: 27(f64vec2) Load 253(f64v1) - 255: 27(f64vec2) Load 252(f64v2) - 256: 27(f64vec2) ExtInst 1(GLSL.std.450) 26(Pow) 254 255 - Store 252(f64v2) 256 - 257: 27(f64vec2) Load 253(f64v1) - 258: 27(f64vec2) ExtInst 1(GLSL.std.450) 27(Exp) 257 - Store 252(f64v2) 258 - 259: 27(f64vec2) Load 253(f64v1) - 260: 27(f64vec2) ExtInst 1(GLSL.std.450) 28(Log) 259 - Store 252(f64v2) 260 - 261: 27(f64vec2) Load 253(f64v1) - 262: 27(f64vec2) ExtInst 1(GLSL.std.450) 29(Exp2) 261 - Store 252(f64v2) 262 - 263: 27(f64vec2) Load 253(f64v1) - 264: 27(f64vec2) ExtInst 1(GLSL.std.450) 30(Log2) 263 - Store 252(f64v2) 264 - 265: 27(f64vec2) Load 253(f64v1) - 266: 27(f64vec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 265 - Store 252(f64v2) 266 - 267: 27(f64vec2) Load 253(f64v1) - 268: 27(f64vec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 267 - Store 252(f64v2) 268 + 221(f64v2): 148(ptr) Variable Function + 222(f64v1): 148(ptr) Variable Function + 243(f64): 31(ptr) Variable Function + 247(f64v3): 148(ptr) Variable Function + 287(bv): 151(ptr) Variable Function + 308(b): 106(ptr) Variable Function + 318(iv): 182(ptr) Variable Function + 223:147(f64vec3) Load 222(f64v1) + 224:147(f64vec3) ExtInst 1(GLSL.std.450) 4(FAbs) 223 + Store 221(f64v2) 224 + 225:147(f64vec3) Load 222(f64v1) + 226:147(f64vec3) ExtInst 1(GLSL.std.450) 6(FSign) 225 + Store 221(f64v2) 226 + 227:147(f64vec3) Load 222(f64v1) + 228:147(f64vec3) ExtInst 1(GLSL.std.450) 8(Floor) 227 + Store 221(f64v2) 228 + 229:147(f64vec3) Load 222(f64v1) + 230:147(f64vec3) ExtInst 1(GLSL.std.450) 3(Trunc) 229 + Store 221(f64v2) 230 + 231:147(f64vec3) Load 222(f64v1) + 232:147(f64vec3) ExtInst 1(GLSL.std.450) 1(Round) 231 + Store 221(f64v2) 232 + 233:147(f64vec3) Load 222(f64v1) + 234:147(f64vec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 233 + Store 221(f64v2) 234 + 235:147(f64vec3) Load 222(f64v1) + 236:147(f64vec3) ExtInst 1(GLSL.std.450) 9(Ceil) 235 + Store 221(f64v2) 236 + 237:147(f64vec3) Load 222(f64v1) + 238:147(f64vec3) ExtInst 1(GLSL.std.450) 10(Fract) 237 + Store 221(f64v2) 238 + 239:147(f64vec3) Load 222(f64v1) + 240:147(f64vec3) Load 221(f64v2) + 241:147(f64vec3) FMod 239 240 + Store 221(f64v2) 241 + 242:147(f64vec3) Load 222(f64v1) + 244:24(float64_t) Load 243(f64) + 245:147(f64vec3) CompositeConstruct 244 244 244 + 246:147(f64vec3) FMod 242 245 + Store 221(f64v2) 246 + 248:147(f64vec3) Load 222(f64v1) + 249:147(f64vec3) ExtInst 1(GLSL.std.450) 35(Modf) 248 221(f64v2) + Store 247(f64v3) 249 + 250:147(f64vec3) Load 222(f64v1) + 251:147(f64vec3) Load 221(f64v2) + 252:147(f64vec3) ExtInst 1(GLSL.std.450) 37(FMin) 250 251 + Store 247(f64v3) 252 + 253:147(f64vec3) Load 222(f64v1) + 254:24(float64_t) Load 243(f64) + 255:147(f64vec3) CompositeConstruct 254 254 254 + 256:147(f64vec3) ExtInst 1(GLSL.std.450) 37(FMin) 253 255 + Store 247(f64v3) 256 + 257:147(f64vec3) Load 222(f64v1) + 258:147(f64vec3) Load 221(f64v2) + 259:147(f64vec3) ExtInst 1(GLSL.std.450) 40(FMax) 257 258 + Store 247(f64v3) 259 + 260:147(f64vec3) Load 222(f64v1) + 261:24(float64_t) Load 243(f64) + 262:147(f64vec3) CompositeConstruct 261 261 261 + 263:147(f64vec3) ExtInst 1(GLSL.std.450) 40(FMax) 260 262 + Store 247(f64v3) 263 + 264:147(f64vec3) Load 222(f64v1) + 265:24(float64_t) Load 243(f64) + 266: 31(ptr) AccessChain 221(f64v2) 30 + 267:24(float64_t) Load 266 + 268:147(f64vec3) CompositeConstruct 265 265 265 + 269:147(f64vec3) CompositeConstruct 267 267 267 + 270:147(f64vec3) ExtInst 1(GLSL.std.450) 43(FClamp) 264 268 269 + Store 247(f64v3) 270 + 271:147(f64vec3) Load 222(f64v1) + 272:147(f64vec3) Load 221(f64v2) + 273:24(float64_t) Load 243(f64) + 274:147(f64vec3) CompositeConstruct 273 273 273 + 275:147(f64vec3) ExtInst 1(GLSL.std.450) 43(FClamp) 271 272 274 + Store 247(f64v3) 275 + 276:147(f64vec3) Load 222(f64v1) + 277:147(f64vec3) Load 221(f64v2) + 278:24(float64_t) Load 243(f64) + 279:147(f64vec3) CompositeConstruct 278 278 278 + 280:147(f64vec3) ExtInst 1(GLSL.std.450) 46(FMix) 276 277 279 + Store 247(f64v3) 280 + 281:147(f64vec3) Load 222(f64v1) + 282:147(f64vec3) Load 221(f64v2) + 283:147(f64vec3) Load 247(f64v3) + 284:147(f64vec3) ExtInst 1(GLSL.std.450) 46(FMix) 281 282 283 + Store 247(f64v3) 284 + 285:147(f64vec3) Load 222(f64v1) + 286:147(f64vec3) Load 221(f64v2) + 288: 150(bvec3) Load 287(bv) + 289:147(f64vec3) Select 288 286 285 + Store 247(f64v3) 289 + 290:147(f64vec3) Load 222(f64v1) + 291:147(f64vec3) Load 221(f64v2) + 292:147(f64vec3) ExtInst 1(GLSL.std.450) 48(Step) 290 291 + Store 247(f64v3) 292 + 293:24(float64_t) Load 243(f64) + 294:147(f64vec3) Load 247(f64v3) + 295:147(f64vec3) CompositeConstruct 293 293 293 + 296:147(f64vec3) ExtInst 1(GLSL.std.450) 48(Step) 295 294 + Store 247(f64v3) 296 + 297:147(f64vec3) Load 222(f64v1) + 298:147(f64vec3) Load 221(f64v2) + 299:147(f64vec3) Load 247(f64v3) + 300:147(f64vec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 297 298 299 + Store 247(f64v3) 300 + 301:24(float64_t) Load 243(f64) + 302: 31(ptr) AccessChain 222(f64v1) 30 + 303:24(float64_t) Load 302 + 304:147(f64vec3) Load 221(f64v2) + 305:147(f64vec3) CompositeConstruct 301 301 301 + 306:147(f64vec3) CompositeConstruct 303 303 303 + 307:147(f64vec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 305 306 304 + Store 247(f64v3) 307 + 309:24(float64_t) Load 243(f64) + 310: 105(bool) IsNan 309 + Store 308(b) 310 + 311:147(f64vec3) Load 222(f64v1) + 312: 150(bvec3) IsInf 311 + Store 287(bv) 312 + 313:147(f64vec3) Load 222(f64v1) + 314:147(f64vec3) Load 221(f64v2) + 315:147(f64vec3) Load 247(f64v3) + 316:147(f64vec3) ExtInst 1(GLSL.std.450) 50(Fma) 313 314 315 + Store 247(f64v3) 316 + 317:147(f64vec3) Load 222(f64v1) + 320:319(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 317 + 321: 181(ivec3) CompositeExtract 320 1 + Store 318(iv) 321 + 322:147(f64vec3) CompositeExtract 320 0 + Store 221(f64v2) 322 + 323:147(f64vec3) Load 222(f64v1) + 324: 181(ivec3) Load 318(iv) + 325:147(f64vec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 323 324 + Store 221(f64v2) 325 Return FunctionEnd -16(builtinCommonFuncs(): 2 Function None 3 +16(builtinGeometryFuncs(): 2 Function None 3 17: Label - 269(f64v2): 150(ptr) Variable Function - 270(f64v1): 150(ptr) Variable Function - 291(f64): 33(ptr) Variable Function - 295(f64v3): 150(ptr) Variable Function - 335(bv): 153(ptr) Variable Function - 356(b): 108(ptr) Variable Function - 366(iv): 184(ptr) Variable Function - 271:149(f64vec3) Load 270(f64v1) - 272:149(f64vec3) ExtInst 1(GLSL.std.450) 4(FAbs) 271 - Store 269(f64v2) 272 - 273:149(f64vec3) Load 270(f64v1) - 274:149(f64vec3) ExtInst 1(GLSL.std.450) 6(FSign) 273 - Store 269(f64v2) 274 - 275:149(f64vec3) Load 270(f64v1) - 276:149(f64vec3) ExtInst 1(GLSL.std.450) 8(Floor) 275 - Store 269(f64v2) 276 - 277:149(f64vec3) Load 270(f64v1) - 278:149(f64vec3) ExtInst 1(GLSL.std.450) 3(Trunc) 277 - Store 269(f64v2) 278 - 279:149(f64vec3) Load 270(f64v1) - 280:149(f64vec3) ExtInst 1(GLSL.std.450) 1(Round) 279 - Store 269(f64v2) 280 - 281:149(f64vec3) Load 270(f64v1) - 282:149(f64vec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 281 - Store 269(f64v2) 282 - 283:149(f64vec3) Load 270(f64v1) - 284:149(f64vec3) ExtInst 1(GLSL.std.450) 9(Ceil) 283 - Store 269(f64v2) 284 - 285:149(f64vec3) Load 270(f64v1) - 286:149(f64vec3) ExtInst 1(GLSL.std.450) 10(Fract) 285 - Store 269(f64v2) 286 - 287:149(f64vec3) Load 270(f64v1) - 288:149(f64vec3) Load 269(f64v2) - 289:149(f64vec3) FMod 287 288 - Store 269(f64v2) 289 - 290:149(f64vec3) Load 270(f64v1) - 292:26(float64_t) Load 291(f64) - 293:149(f64vec3) CompositeConstruct 292 292 292 - 294:149(f64vec3) FMod 290 293 - Store 269(f64v2) 294 - 296:149(f64vec3) Load 270(f64v1) - 297:149(f64vec3) ExtInst 1(GLSL.std.450) 35(Modf) 296 269(f64v2) - Store 295(f64v3) 297 - 298:149(f64vec3) Load 270(f64v1) - 299:149(f64vec3) Load 269(f64v2) - 300:149(f64vec3) ExtInst 1(GLSL.std.450) 37(FMin) 298 299 - Store 295(f64v3) 300 - 301:149(f64vec3) Load 270(f64v1) - 302:26(float64_t) Load 291(f64) - 303:149(f64vec3) CompositeConstruct 302 302 302 - 304:149(f64vec3) ExtInst 1(GLSL.std.450) 37(FMin) 301 303 - Store 295(f64v3) 304 - 305:149(f64vec3) Load 270(f64v1) - 306:149(f64vec3) Load 269(f64v2) - 307:149(f64vec3) ExtInst 1(GLSL.std.450) 40(FMax) 305 306 - Store 295(f64v3) 307 - 308:149(f64vec3) Load 270(f64v1) - 309:26(float64_t) Load 291(f64) - 310:149(f64vec3) CompositeConstruct 309 309 309 - 311:149(f64vec3) ExtInst 1(GLSL.std.450) 40(FMax) 308 310 - Store 295(f64v3) 311 - 312:149(f64vec3) Load 270(f64v1) - 313:26(float64_t) Load 291(f64) - 314: 33(ptr) AccessChain 269(f64v2) 32 - 315:26(float64_t) Load 314 - 316:149(f64vec3) CompositeConstruct 313 313 313 - 317:149(f64vec3) CompositeConstruct 315 315 315 - 318:149(f64vec3) ExtInst 1(GLSL.std.450) 43(FClamp) 312 316 317 - Store 295(f64v3) 318 - 319:149(f64vec3) Load 270(f64v1) - 320:149(f64vec3) Load 269(f64v2) - 321:26(float64_t) Load 291(f64) - 322:149(f64vec3) CompositeConstruct 321 321 321 - 323:149(f64vec3) ExtInst 1(GLSL.std.450) 43(FClamp) 319 320 322 - Store 295(f64v3) 323 - 324:149(f64vec3) Load 270(f64v1) - 325:149(f64vec3) Load 269(f64v2) - 326:26(float64_t) Load 291(f64) - 327:149(f64vec3) CompositeConstruct 326 326 326 - 328:149(f64vec3) ExtInst 1(GLSL.std.450) 46(FMix) 324 325 327 - Store 295(f64v3) 328 - 329:149(f64vec3) Load 270(f64v1) - 330:149(f64vec3) Load 269(f64v2) - 331:149(f64vec3) Load 295(f64v3) - 332:149(f64vec3) ExtInst 1(GLSL.std.450) 46(FMix) 329 330 331 - Store 295(f64v3) 332 - 333:149(f64vec3) Load 270(f64v1) - 334:149(f64vec3) Load 269(f64v2) - 336: 152(bvec3) Load 335(bv) - 337:149(f64vec3) Select 336 334 333 - Store 295(f64v3) 337 - 338:149(f64vec3) Load 270(f64v1) - 339:149(f64vec3) Load 269(f64v2) - 340:149(f64vec3) ExtInst 1(GLSL.std.450) 48(Step) 338 339 - Store 295(f64v3) 340 - 341:26(float64_t) Load 291(f64) - 342:149(f64vec3) Load 295(f64v3) - 343:149(f64vec3) CompositeConstruct 341 341 341 - 344:149(f64vec3) ExtInst 1(GLSL.std.450) 48(Step) 343 342 - Store 295(f64v3) 344 - 345:149(f64vec3) Load 270(f64v1) - 346:149(f64vec3) Load 269(f64v2) - 347:149(f64vec3) Load 295(f64v3) - 348:149(f64vec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 345 346 347 - Store 295(f64v3) 348 - 349:26(float64_t) Load 291(f64) - 350: 33(ptr) AccessChain 270(f64v1) 32 - 351:26(float64_t) Load 350 - 352:149(f64vec3) Load 269(f64v2) - 353:149(f64vec3) CompositeConstruct 349 349 349 - 354:149(f64vec3) CompositeConstruct 351 351 351 - 355:149(f64vec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 353 354 352 - Store 295(f64v3) 355 - 357:26(float64_t) Load 291(f64) - 358: 107(bool) IsNan 357 - Store 356(b) 358 - 359:149(f64vec3) Load 270(f64v1) - 360: 152(bvec3) IsInf 359 - Store 335(bv) 360 - 361:149(f64vec3) Load 270(f64v1) - 362:149(f64vec3) Load 269(f64v2) - 363:149(f64vec3) Load 295(f64v3) - 364:149(f64vec3) ExtInst 1(GLSL.std.450) 50(Fma) 361 362 363 - Store 295(f64v3) 364 - 365:149(f64vec3) Load 270(f64v1) - 368:367(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 365 - 369: 183(ivec3) CompositeExtract 368 1 - Store 366(iv) 369 - 370:149(f64vec3) CompositeExtract 368 0 - Store 269(f64v2) 370 - 371:149(f64vec3) Load 270(f64v1) - 372: 183(ivec3) Load 366(iv) - 373:149(f64vec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 371 372 - Store 269(f64v2) 373 + 326(f64): 31(ptr) Variable Function + 327(f64v1): 148(ptr) Variable Function + 331(f64v2): 148(ptr) Variable Function + 337(f64v3): 148(ptr) Variable Function + 328:147(f64vec3) Load 327(f64v1) + 329:24(float64_t) ExtInst 1(GLSL.std.450) 66(Length) 328 + Store 326(f64) 329 + 330:147(f64vec3) Load 327(f64v1) + 332:147(f64vec3) Load 331(f64v2) + 333:24(float64_t) ExtInst 1(GLSL.std.450) 67(Distance) 330 332 + Store 326(f64) 333 + 334:147(f64vec3) Load 327(f64v1) + 335:147(f64vec3) Load 331(f64v2) + 336:24(float64_t) Dot 334 335 + Store 326(f64) 336 + 338:147(f64vec3) Load 327(f64v1) + 339:147(f64vec3) Load 331(f64v2) + 340:147(f64vec3) ExtInst 1(GLSL.std.450) 68(Cross) 338 339 + Store 337(f64v3) 340 + 341:147(f64vec3) Load 327(f64v1) + 342:147(f64vec3) ExtInst 1(GLSL.std.450) 69(Normalize) 341 + Store 331(f64v2) 342 + 343:147(f64vec3) Load 327(f64v1) + 344:147(f64vec3) Load 331(f64v2) + 345:147(f64vec3) Load 337(f64v3) + 346:147(f64vec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 343 344 345 + Store 337(f64v3) 346 + 347:147(f64vec3) Load 327(f64v1) + 348:147(f64vec3) Load 331(f64v2) + 349:147(f64vec3) ExtInst 1(GLSL.std.450) 71(Reflect) 347 348 + Store 337(f64v3) 349 + 350:147(f64vec3) Load 327(f64v1) + 351:147(f64vec3) Load 331(f64v2) + 352:24(float64_t) Load 326(f64) + 353:147(f64vec3) ExtInst 1(GLSL.std.450) 72(Refract) 350 351 352 + Store 337(f64v3) 353 Return FunctionEnd -18(builtinGeometryFuncs(): 2 Function None 3 +18(builtinMatrixFuncs(): 2 Function None 3 19: Label - 374(f64): 33(ptr) Variable Function - 375(f64v1): 150(ptr) Variable Function - 379(f64v2): 150(ptr) Variable Function - 385(f64v3): 150(ptr) Variable Function - 376:149(f64vec3) Load 375(f64v1) - 377:26(float64_t) ExtInst 1(GLSL.std.450) 66(Length) 376 - Store 374(f64) 377 - 378:149(f64vec3) Load 375(f64v1) - 380:149(f64vec3) Load 379(f64v2) - 381:26(float64_t) ExtInst 1(GLSL.std.450) 67(Distance) 378 380 - Store 374(f64) 381 - 382:149(f64vec3) Load 375(f64v1) - 383:149(f64vec3) Load 379(f64v2) - 384:26(float64_t) Dot 382 383 - Store 374(f64) 384 - 386:149(f64vec3) Load 375(f64v1) - 387:149(f64vec3) Load 379(f64v2) - 388:149(f64vec3) ExtInst 1(GLSL.std.450) 68(Cross) 386 387 - Store 385(f64v3) 388 - 389:149(f64vec3) Load 375(f64v1) - 390:149(f64vec3) ExtInst 1(GLSL.std.450) 69(Normalize) 389 - Store 379(f64v2) 390 - 391:149(f64vec3) Load 375(f64v1) - 392:149(f64vec3) Load 379(f64v2) - 393:149(f64vec3) Load 385(f64v3) - 394:149(f64vec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 391 392 393 - Store 385(f64v3) 394 - 395:149(f64vec3) Load 375(f64v1) - 396:149(f64vec3) Load 379(f64v2) - 397:149(f64vec3) ExtInst 1(GLSL.std.450) 71(Reflect) 395 396 - Store 385(f64v3) 397 - 398:149(f64vec3) Load 375(f64v1) - 399:149(f64vec3) Load 379(f64v2) - 400:26(float64_t) Load 374(f64) - 401:149(f64vec3) ExtInst 1(GLSL.std.450) 72(Refract) 398 399 400 - Store 385(f64v3) 401 + 356(f64m3): 355(ptr) Variable Function + 357(f64m1): 355(ptr) Variable Function + 359(f64m2): 355(ptr) Variable Function + 368(f64v1): 148(ptr) Variable Function + 370(f64v2): 26(ptr) Variable Function + 375(f64m4): 374(ptr) Variable Function + 378(f64): 31(ptr) Variable Function + 381(f64m5): 380(ptr) Variable Function + 387(f64m6): 386(ptr) Variable Function + 388(f64m7): 386(ptr) Variable Function + 358: 354 Load 357(f64m1) + 360: 354 Load 359(f64m2) + 361:147(f64vec3) CompositeExtract 358 0 + 362:147(f64vec3) CompositeExtract 360 0 + 363:147(f64vec3) FMul 361 362 + 364:147(f64vec3) CompositeExtract 358 1 + 365:147(f64vec3) CompositeExtract 360 1 + 366:147(f64vec3) FMul 364 365 + 367: 354 CompositeConstruct 363 366 + Store 356(f64m3) 367 + 369:147(f64vec3) Load 368(f64v1) + 371: 25(f64vec2) Load 370(f64v2) + 372: 354 OuterProduct 369 371 + Store 357(f64m1) 372 + 376: 354 Load 357(f64m1) + 377: 373 Transpose 376 + Store 375(f64m4) 377 + 382: 379 Load 381(f64m5) + 383:24(float64_t) ExtInst 1(GLSL.std.450) 33(Determinant) 382 + Store 378(f64) 383 + 389: 385 Load 388(f64m7) + 390: 385 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 389 + Store 387(f64m6) 390 Return FunctionEnd -20(builtinMatrixFuncs(): 2 Function None 3 +20(builtinVecRelFuncs(): 2 Function None 3 21: Label - 404(f64m3): 403(ptr) Variable Function - 405(f64m1): 403(ptr) Variable Function - 407(f64m2): 403(ptr) Variable Function - 416(f64v1): 150(ptr) Variable Function - 418(f64v2): 28(ptr) Variable Function - 423(f64m4): 422(ptr) Variable Function - 426(f64): 33(ptr) Variable Function - 429(f64m5): 428(ptr) Variable Function - 434(f64m6): 433(ptr) Variable Function - 435(f64m7): 433(ptr) Variable Function - 406: 402 Load 405(f64m1) - 408: 402 Load 407(f64m2) - 409:149(f64vec3) CompositeExtract 406 0 - 410:149(f64vec3) CompositeExtract 408 0 - 411:149(f64vec3) FMul 409 410 - 412:149(f64vec3) CompositeExtract 406 1 - 413:149(f64vec3) CompositeExtract 408 1 - 414:149(f64vec3) FMul 412 413 - 415: 402 CompositeConstruct 411 414 - Store 404(f64m3) 415 - 417:149(f64vec3) Load 416(f64v1) - 419: 27(f64vec2) Load 418(f64v2) - 420: 402 OuterProduct 417 419 - Store 405(f64m1) 420 - 424: 402 Load 405(f64m1) - 425: 421 Transpose 424 - Store 423(f64m4) 425 - 430: 427 Load 429(f64m5) - 431:26(float64_t) ExtInst 1(GLSL.std.450) 33(Determinant) 430 - Store 426(f64) 431 - 436: 432 Load 435(f64m7) - 437: 432 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 436 - Store 434(f64m6) 437 + 391(bv): 151(ptr) Variable Function + 392(f64v1): 148(ptr) Variable Function + 394(f64v2): 148(ptr) Variable Function + 393:147(f64vec3) Load 392(f64v1) + 395:147(f64vec3) Load 394(f64v2) + 396: 150(bvec3) FOrdLessThan 393 395 + Store 391(bv) 396 + 397:147(f64vec3) Load 392(f64v1) + 398:147(f64vec3) Load 394(f64v2) + 399: 150(bvec3) FOrdLessThanEqual 397 398 + Store 391(bv) 399 + 400:147(f64vec3) Load 392(f64v1) + 401:147(f64vec3) Load 394(f64v2) + 402: 150(bvec3) FOrdGreaterThan 400 401 + Store 391(bv) 402 + 403:147(f64vec3) Load 392(f64v1) + 404:147(f64vec3) Load 394(f64v2) + 405: 150(bvec3) FOrdGreaterThanEqual 403 404 + Store 391(bv) 405 + 406:147(f64vec3) Load 392(f64v1) + 407:147(f64vec3) Load 394(f64v2) + 408: 150(bvec3) FOrdEqual 406 407 + Store 391(bv) 408 + 409:147(f64vec3) Load 392(f64v1) + 410:147(f64vec3) Load 394(f64v2) + 411: 150(bvec3) FUnordNotEqual 409 410 + Store 391(bv) 411 Return FunctionEnd -22(builtinVecRelFuncs(): 2 Function None 3 +22(builtinFragProcFuncs(): 2 Function None 3 23: Label - 438(bv): 153(ptr) Variable Function - 439(f64v1): 150(ptr) Variable Function - 441(f64v2): 150(ptr) Variable Function - 440:149(f64vec3) Load 439(f64v1) - 442:149(f64vec3) Load 441(f64v2) - 443: 152(bvec3) FOrdLessThan 440 442 - Store 438(bv) 443 - 444:149(f64vec3) Load 439(f64v1) - 445:149(f64vec3) Load 441(f64v2) - 446: 152(bvec3) FOrdLessThanEqual 444 445 - Store 438(bv) 446 - 447:149(f64vec3) Load 439(f64v1) - 448:149(f64vec3) Load 441(f64v2) - 449: 152(bvec3) FOrdGreaterThan 447 448 - Store 438(bv) 449 - 450:149(f64vec3) Load 439(f64v1) - 451:149(f64vec3) Load 441(f64v2) - 452: 152(bvec3) FOrdGreaterThanEqual 450 451 - Store 438(bv) 452 - 453:149(f64vec3) Load 439(f64v1) - 454:149(f64vec3) Load 441(f64v2) - 455: 152(bvec3) FOrdEqual 453 454 - Store 438(bv) 455 - 456:149(f64vec3) Load 439(f64v1) - 457:149(f64vec3) Load 441(f64v2) - 458: 152(bvec3) FUnordNotEqual 456 457 - Store 438(bv) 458 - Return - FunctionEnd -24(builtinFragProcFuncs(): 2 Function None 3 - 25: Label - 459(f64v): 150(ptr) Variable Function - 463: 462(ptr) AccessChain 461(if64v) 32 - 464:26(float64_t) Load 463 - 465:26(float64_t) DPdx 464 - 466: 33(ptr) AccessChain 459(f64v) 32 - Store 466 465 - 467: 462(ptr) AccessChain 461(if64v) 88 - 468:26(float64_t) Load 467 - 469:26(float64_t) DPdy 468 - 470: 33(ptr) AccessChain 459(f64v) 88 - Store 470 469 - 471:149(f64vec3) Load 461(if64v) - 472: 27(f64vec2) VectorShuffle 471 471 0 1 - 473: 27(f64vec2) DPdxFine 472 - 474: 33(ptr) AccessChain 459(f64v) 32 - 475:26(float64_t) CompositeExtract 473 0 - Store 474 475 - 476: 33(ptr) AccessChain 459(f64v) 88 - 477:26(float64_t) CompositeExtract 473 1 - Store 476 477 - 478:149(f64vec3) Load 461(if64v) - 479: 27(f64vec2) VectorShuffle 478 478 0 1 - 480: 27(f64vec2) DPdyFine 479 - 481: 33(ptr) AccessChain 459(f64v) 32 - 482:26(float64_t) CompositeExtract 480 0 - Store 481 482 - 483: 33(ptr) AccessChain 459(f64v) 88 - 484:26(float64_t) CompositeExtract 480 1 - Store 483 484 - 485:149(f64vec3) Load 461(if64v) - 486:149(f64vec3) DPdxCoarse 485 - Store 459(f64v) 486 - 487:149(f64vec3) Load 461(if64v) - 488:149(f64vec3) DPdxCoarse 487 - Store 459(f64v) 488 - 489: 462(ptr) AccessChain 461(if64v) 32 - 490:26(float64_t) Load 489 - 491:26(float64_t) Fwidth 490 - 492: 33(ptr) AccessChain 459(f64v) 32 - Store 492 491 - 493:149(f64vec3) Load 461(if64v) - 494: 27(f64vec2) VectorShuffle 493 493 0 1 - 495: 27(f64vec2) FwidthFine 494 - 496: 33(ptr) AccessChain 459(f64v) 32 - 497:26(float64_t) CompositeExtract 495 0 - Store 496 497 - 498: 33(ptr) AccessChain 459(f64v) 88 - 499:26(float64_t) CompositeExtract 495 1 - Store 498 499 - 500:149(f64vec3) Load 461(if64v) - 501:149(f64vec3) FwidthCoarse 500 - Store 459(f64v) 501 - 502: 462(ptr) AccessChain 461(if64v) 32 - 503:26(float64_t) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 502 - 504: 33(ptr) AccessChain 459(f64v) 32 - Store 504 503 - 506:149(f64vec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 461(if64v) 505 - 507: 27(f64vec2) VectorShuffle 506 506 0 1 - 508: 33(ptr) AccessChain 459(f64v) 32 - 509:26(float64_t) CompositeExtract 507 0 - Store 508 509 - 510: 33(ptr) AccessChain 459(f64v) 88 - 511:26(float64_t) CompositeExtract 507 1 - Store 510 511 - 514:149(f64vec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 461(if64v) 513 - Store 459(f64v) 514 + 412(f64v): 148(ptr) Variable Function + 416: 415(ptr) AccessChain 414(if64v) 30 + 417:24(float64_t) Load 416 + 418:24(float64_t) DPdx 417 + 419: 31(ptr) AccessChain 412(f64v) 30 + Store 419 418 + 420: 415(ptr) AccessChain 414(if64v) 86 + 421:24(float64_t) Load 420 + 422:24(float64_t) DPdy 421 + 423: 31(ptr) AccessChain 412(f64v) 86 + Store 423 422 + 424:147(f64vec3) Load 414(if64v) + 425: 25(f64vec2) VectorShuffle 424 424 0 1 + 426: 25(f64vec2) DPdxFine 425 + 427: 31(ptr) AccessChain 412(f64v) 30 + 428:24(float64_t) CompositeExtract 426 0 + Store 427 428 + 429: 31(ptr) AccessChain 412(f64v) 86 + 430:24(float64_t) CompositeExtract 426 1 + Store 429 430 + 431:147(f64vec3) Load 414(if64v) + 432: 25(f64vec2) VectorShuffle 431 431 0 1 + 433: 25(f64vec2) DPdyFine 432 + 434: 31(ptr) AccessChain 412(f64v) 30 + 435:24(float64_t) CompositeExtract 433 0 + Store 434 435 + 436: 31(ptr) AccessChain 412(f64v) 86 + 437:24(float64_t) CompositeExtract 433 1 + Store 436 437 + 438:147(f64vec3) Load 414(if64v) + 439:147(f64vec3) DPdxCoarse 438 + Store 412(f64v) 439 + 440:147(f64vec3) Load 414(if64v) + 441:147(f64vec3) DPdxCoarse 440 + Store 412(f64v) 441 + 442: 415(ptr) AccessChain 414(if64v) 30 + 443:24(float64_t) Load 442 + 444:24(float64_t) Fwidth 443 + 445: 31(ptr) AccessChain 412(f64v) 30 + Store 445 444 + 446:147(f64vec3) Load 414(if64v) + 447: 25(f64vec2) VectorShuffle 446 446 0 1 + 448: 25(f64vec2) FwidthFine 447 + 449: 31(ptr) AccessChain 412(f64v) 30 + 450:24(float64_t) CompositeExtract 448 0 + Store 449 450 + 451: 31(ptr) AccessChain 412(f64v) 86 + 452:24(float64_t) CompositeExtract 448 1 + Store 451 452 + 453:147(f64vec3) Load 414(if64v) + 454:147(f64vec3) FwidthCoarse 453 + Store 412(f64v) 454 + 455: 415(ptr) AccessChain 414(if64v) 30 + 456:24(float64_t) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 455 + 457: 31(ptr) AccessChain 412(f64v) 30 + Store 457 456 + 459:147(f64vec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 414(if64v) 458 + 460: 25(f64vec2) VectorShuffle 459 459 0 1 + 461: 31(ptr) AccessChain 412(f64v) 30 + 462:24(float64_t) CompositeExtract 460 0 + Store 461 462 + 463: 31(ptr) AccessChain 412(f64v) 86 + 464:24(float64_t) CompositeExtract 460 1 + Store 463 464 + 467:147(f64vec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 414(if64v) 466 + Store 412(f64v) 467 Return FunctionEnd diff --git a/Test/baseResults/spv.int16.frag.out b/Test/baseResults/spv.int16.frag.out index 43cb09fe..3e10a7db 100644 --- a/Test/baseResults/spv.int16.frag.out +++ b/Test/baseResults/spv.int16.frag.out @@ -1,7 +1,7 @@ spv.int16.frag // Module Version 10000 // Generated by (magic number): 8000a -// Id's are bound by 535 +// Id's are bound by 549 Capability Shader Capability Float16 @@ -48,53 +48,55 @@ spv.int16.frag Name 154 "i8v" Name 163 "u8v" Name 176 "bv" - Name 195 "u16v" - Name 200 "i16" - Name 220 "i" - Name 227 "uv" - Name 243 "i64" - Name 281 "b" - Name 343 "i16v" - Name 346 "i16" - Name 356 "u16v" - Name 358 "u16" - Name 428 "i32" - Name 431 "i64" - Name 434 "i16v4" - Name 437 "u32" - Name 438 "u16v2" - Name 442 "u64" - Name 445 "u16v4" - Name 457 "bv" - Name 530 "Block" - MemberName 530(Block) 0 "i16" - MemberName 530(Block) 1 "i16v2" - MemberName 530(Block) 2 "i16v3" - MemberName 530(Block) 3 "i16v4" - MemberName 530(Block) 4 "u16" - MemberName 530(Block) 5 "u16v2" - MemberName 530(Block) 6 "u16v3" - MemberName 530(Block) 7 "u16v4" - Name 532 "block" - Name 533 "si16" - Name 534 "su16" + Name 196 "arr" + Name 204 "u16v" + Name 209 "i16" + Name 229 "i" + Name 236 "uv" + Name 252 "i64" + Name 290 "b" + Name 353 "f" + Name 357 "i16v" + Name 360 "i16" + Name 370 "u16v" + Name 372 "u16" + Name 442 "i32" + Name 445 "i64" + Name 448 "i16v4" + Name 451 "u32" + Name 452 "u16v2" + Name 456 "u64" + Name 459 "u16v4" + Name 471 "bv" + Name 544 "Block" + MemberName 544(Block) 0 "i16" + MemberName 544(Block) 1 "i16v2" + MemberName 544(Block) 2 "i16v3" + MemberName 544(Block) 3 "i16v4" + MemberName 544(Block) 4 "u16" + MemberName 544(Block) 5 "u16v2" + MemberName 544(Block) 6 "u16v3" + MemberName 544(Block) 7 "u16v4" + Name 546 "block" + Name 547 "si16" + Name 548 "su16" MemberDecorate 24(Uniforms) 0 Offset 0 Decorate 24(Uniforms) Block Decorate 26 DescriptorSet 0 Decorate 26 Binding 0 - MemberDecorate 530(Block) 0 Offset 0 - MemberDecorate 530(Block) 1 Offset 4 - MemberDecorate 530(Block) 2 Offset 8 - MemberDecorate 530(Block) 3 Offset 16 - MemberDecorate 530(Block) 4 Offset 24 - MemberDecorate 530(Block) 5 Offset 28 - MemberDecorate 530(Block) 6 Offset 32 - MemberDecorate 530(Block) 7 Offset 40 - Decorate 530(Block) Block - Decorate 532(block) DescriptorSet 0 - Decorate 532(block) Binding 1 - Decorate 533(si16) SpecId 100 - Decorate 534(su16) SpecId 101 + MemberDecorate 544(Block) 0 Offset 0 + MemberDecorate 544(Block) 1 Offset 4 + MemberDecorate 544(Block) 2 Offset 8 + MemberDecorate 544(Block) 3 Offset 16 + MemberDecorate 544(Block) 4 Offset 24 + MemberDecorate 544(Block) 5 Offset 28 + MemberDecorate 544(Block) 6 Offset 32 + MemberDecorate 544(Block) 7 Offset 40 + Decorate 544(Block) Block + Decorate 546(block) DescriptorSet 0 + Decorate 546(block) Binding 1 + Decorate 547(si16) SpecId 100 + Decorate 548(su16) SpecId 101 2: TypeVoid 3: TypeFunction 2 14: TypeInt 16 1 @@ -160,37 +162,46 @@ spv.int16.frag 185: 36(int16_t) Constant 1 186: 57(i16vec2) ConstantComposite 184 184 187: 57(i16vec2) ConstantComposite 185 185 - 193: TypeVector 36(int16_t) 3 - 194: TypePointer Function 193(i16vec3) - 197: TypeVector 14(int16_t) 3 - 219: TypePointer Function 27(int) - 225: TypeVector 17(int) 3 - 226: TypePointer Function 225(ivec3) - 242: TypePointer Function 71(int64_t) - 264: 17(int) Constant 1 - 270: 17(int) Constant 2 - 276: TypeVector 27(int) 3 - 280: TypePointer Function 173(bool) - 282: 17(int) Constant 0 - 296: TypePointer Function 17(int) - 354: 52(i16vec2) ConstantComposite 21 21 - 363:193(i16vec3) ConstantComposite 184 184 184 - 405: 173(bool) ConstantTrue - 412: 173(bool) ConstantFalse - 413: 174(bvec2) ConstantComposite 412 412 - 425: TypeVector 173(bool) 3 - 426: 425(bvec3) ConstantComposite 412 412 412 - 432: TypeVector 14(int16_t) 4 - 433: TypePointer Function 432(i16vec4) - 441: TypePointer Function 77(int64_t) - 443: TypeVector 36(int16_t) 4 - 444: TypePointer Function 443(i16vec4) - 456: TypePointer Function 425(bvec3) - 530(Block): TypeStruct 14(int16_t) 52(i16vec2) 197(i16vec3) 432(i16vec4) 36(int16_t) 57(i16vec2) 193(i16vec3) 443(i16vec4) - 531: TypePointer Uniform 530(Block) - 532(block): 531(ptr) Variable Uniform - 533(si16): 14(int16_t) SpecConstant 4294967286 - 534(su16): 36(int16_t) SpecConstant 20 + 193: 17(int) Constant 4 + 194: TypeArray 97(float) 193 + 195: TypePointer Function 194 + 197: 97(float) Constant 1065353216 + 198: 97(float) Constant 1073741824 + 199: 97(float) Constant 1077936128 + 200: 97(float) Constant 1082130432 + 201: 194 ConstantComposite 197 198 199 200 + 202: TypeVector 36(int16_t) 3 + 203: TypePointer Function 202(i16vec3) + 206: TypeVector 14(int16_t) 3 + 228: TypePointer Function 27(int) + 234: TypeVector 17(int) 3 + 235: TypePointer Function 234(ivec3) + 251: TypePointer Function 71(int64_t) + 273: 17(int) Constant 1 + 279: 17(int) Constant 2 + 285: TypeVector 27(int) 3 + 289: TypePointer Function 173(bool) + 291: 17(int) Constant 0 + 305: TypePointer Function 17(int) + 352: TypePointer Function 97(float) + 368: 52(i16vec2) ConstantComposite 21 21 + 377:202(i16vec3) ConstantComposite 184 184 184 + 419: 173(bool) ConstantTrue + 426: 173(bool) ConstantFalse + 427: 174(bvec2) ConstantComposite 426 426 + 439: TypeVector 173(bool) 3 + 440: 439(bvec3) ConstantComposite 426 426 426 + 446: TypeVector 14(int16_t) 4 + 447: TypePointer Function 446(i16vec4) + 455: TypePointer Function 77(int64_t) + 457: TypeVector 36(int16_t) 4 + 458: TypePointer Function 457(i16vec4) + 470: TypePointer Function 439(bvec3) + 544(Block): TypeStruct 14(int16_t) 52(i16vec2) 206(i16vec3) 446(i16vec4) 36(int16_t) 57(i16vec2) 202(i16vec3) 457(i16vec4) + 545: TypePointer Uniform 544(Block) + 546(block): 545(ptr) Variable Uniform + 547(si16): 14(int16_t) SpecConstant 4294967286 + 548(su16): 36(int16_t) SpecConstant 20 4(main): 2 Function None 3 5: Label Return @@ -364,397 +375,404 @@ spv.int16.frag FunctionEnd 10(operators(): 2 Function None 3 11: Label - 195(u16v): 194(ptr) Variable Function - 200(i16): 15(ptr) Variable Function - 220(i): 219(ptr) Variable Function - 227(uv): 226(ptr) Variable Function - 243(i64): 242(ptr) Variable Function - 281(b): 280(ptr) Variable Function - 196:193(i16vec3) Load 195(u16v) - 198:197(i16vec3) CompositeConstruct 179 179 179 - 199:193(i16vec3) IAdd 196 198 - Store 195(u16v) 199 - 201: 14(int16_t) Load 200(i16) - 202: 14(int16_t) ISub 201 179 - Store 200(i16) 202 - 203: 14(int16_t) Load 200(i16) - 204: 14(int16_t) IAdd 203 179 - Store 200(i16) 204 - 205:193(i16vec3) Load 195(u16v) - 206:197(i16vec3) CompositeConstruct 179 179 179 - 207:193(i16vec3) ISub 205 206 - Store 195(u16v) 207 - 208:193(i16vec3) Load 195(u16v) - 209:193(i16vec3) Not 208 - Store 195(u16v) 209 - 210: 14(int16_t) Load 200(i16) - Store 200(i16) 210 - 211:193(i16vec3) Load 195(u16v) - 212:193(i16vec3) SNegate 211 - Store 195(u16v) 212 - 213: 14(int16_t) Load 200(i16) - 214: 14(int16_t) Load 200(i16) - 215: 14(int16_t) IAdd 214 213 - Store 200(i16) 215 - 216:193(i16vec3) Load 195(u16v) - 217:193(i16vec3) Load 195(u16v) - 218:193(i16vec3) ISub 217 216 - Store 195(u16v) 218 - 221: 14(int16_t) Load 200(i16) - 222: 27(int) SConvert 221 - 223: 27(int) Load 220(i) - 224: 27(int) IMul 223 222 - Store 220(i) 224 - 228:193(i16vec3) Load 195(u16v) - 229: 225(ivec3) UConvert 228 - 230: 225(ivec3) Load 227(uv) - 231: 225(ivec3) UDiv 230 229 - Store 227(uv) 231 - 232: 14(int16_t) Load 200(i16) - 233: 27(int) SConvert 232 - 234: 17(int) Bitcast 233 - 235: 225(ivec3) Load 227(uv) - 236: 225(ivec3) CompositeConstruct 234 234 234 - 237: 225(ivec3) UMod 235 236 - Store 227(uv) 237 - 238:193(i16vec3) Load 195(u16v) - 239: 225(ivec3) UConvert 238 - 240: 225(ivec3) Load 227(uv) - 241: 225(ivec3) IAdd 239 240 - Store 227(uv) 241 - 244: 14(int16_t) Load 200(i16) - 245: 71(int64_t) SConvert 244 - 246: 71(int64_t) Load 243(i64) - 247: 71(int64_t) ISub 245 246 - Store 243(i64) 247 - 248:193(i16vec3) Load 195(u16v) - 249: 225(ivec3) UConvert 248 - 250: 225(ivec3) Load 227(uv) - 251: 225(ivec3) IMul 249 250 - Store 227(uv) 251 - 252: 14(int16_t) Load 200(i16) - 253: 71(int64_t) SConvert 252 - 254: 71(int64_t) Load 243(i64) - 255: 71(int64_t) IMul 253 254 - Store 243(i64) 255 - 256: 14(int16_t) Load 200(i16) - 257: 27(int) SConvert 256 - 258: 27(int) Load 220(i) - 259: 27(int) SMod 257 258 - Store 220(i) 259 - 260: 14(int16_t) Load 200(i16) - 261:193(i16vec3) Load 195(u16v) - 262:197(i16vec3) CompositeConstruct 260 260 260 - 263:193(i16vec3) ShiftLeftLogical 261 262 - Store 195(u16v) 263 - 265: 37(ptr) AccessChain 195(u16v) 264 - 266: 36(int16_t) Load 265 - 267: 14(int16_t) Load 200(i16) - 268: 14(int16_t) ShiftRightArithmetic 267 266 - Store 200(i16) 268 - 269: 14(int16_t) Load 200(i16) - 271: 37(ptr) AccessChain 195(u16v) 270 - 272: 36(int16_t) Load 271 - 273: 14(int16_t) ShiftLeftLogical 269 272 - Store 200(i16) 273 - 274:193(i16vec3) Load 195(u16v) - 275: 27(int) Load 220(i) - 277: 276(ivec3) CompositeConstruct 275 275 275 - 278:193(i16vec3) ShiftLeftLogical 274 277 - 279: 225(ivec3) UConvert 278 - Store 227(uv) 279 - 283: 37(ptr) AccessChain 195(u16v) 282 - 284: 36(int16_t) Load 283 - 285: 14(int16_t) Load 200(i16) - 286: 36(int16_t) Bitcast 285 - 287: 173(bool) INotEqual 284 286 - Store 281(b) 287 - 288: 14(int16_t) Load 200(i16) - 289: 36(int16_t) Bitcast 288 - 290: 37(ptr) AccessChain 195(u16v) 282 - 291: 36(int16_t) Load 290 - 292: 173(bool) IEqual 289 291 - Store 281(b) 292 - 293: 37(ptr) AccessChain 195(u16v) 282 - 294: 36(int16_t) Load 293 - 295: 17(int) UConvert 294 - 297: 296(ptr) AccessChain 227(uv) 264 - 298: 17(int) Load 297 - 299: 173(bool) UGreaterThan 295 298 - Store 281(b) 299 - 300: 14(int16_t) Load 200(i16) - 301: 27(int) SConvert 300 - 302: 27(int) Load 220(i) - 303: 173(bool) SLessThan 301 302 - Store 281(b) 303 - 304: 37(ptr) AccessChain 195(u16v) 264 - 305: 36(int16_t) Load 304 - 306: 17(int) UConvert 305 - 307: 296(ptr) AccessChain 227(uv) 282 - 308: 17(int) Load 307 - 309: 173(bool) UGreaterThanEqual 306 308 - Store 281(b) 309 - 310: 14(int16_t) Load 200(i16) - 311: 27(int) SConvert 310 - 312: 27(int) Load 220(i) - 313: 173(bool) SLessThanEqual 311 312 - Store 281(b) 313 - 314: 14(int16_t) Load 200(i16) - 315: 27(int) SConvert 314 - 316: 17(int) Bitcast 315 - 317: 225(ivec3) Load 227(uv) - 318: 225(ivec3) CompositeConstruct 316 316 316 - 319: 225(ivec3) BitwiseOr 317 318 - Store 227(uv) 319 - 320: 14(int16_t) Load 200(i16) - 321: 27(int) SConvert 320 - 322: 27(int) Load 220(i) - 323: 27(int) BitwiseOr 321 322 - Store 220(i) 323 - 324: 14(int16_t) Load 200(i16) - 325: 71(int64_t) SConvert 324 - 326: 71(int64_t) Load 243(i64) - 327: 71(int64_t) BitwiseAnd 326 325 - Store 243(i64) 327 - 328:193(i16vec3) Load 195(u16v) - 329: 225(ivec3) UConvert 328 - 330: 225(ivec3) Load 227(uv) - 331: 225(ivec3) BitwiseAnd 329 330 - Store 227(uv) 331 - 332: 14(int16_t) Load 200(i16) - 333: 27(int) SConvert 332 - 334: 17(int) Bitcast 333 - 335: 225(ivec3) Load 227(uv) - 336: 225(ivec3) CompositeConstruct 334 334 334 - 337: 225(ivec3) BitwiseXor 335 336 - Store 227(uv) 337 - 338:193(i16vec3) Load 195(u16v) - 339: 14(int16_t) Load 200(i16) - 340: 36(int16_t) Bitcast 339 - 341:193(i16vec3) CompositeConstruct 340 340 340 - 342:193(i16vec3) BitwiseXor 338 341 - Store 195(u16v) 342 + 196(arr): 195(ptr) Variable Function + 204(u16v): 203(ptr) Variable Function + 209(i16): 15(ptr) Variable Function + 229(i): 228(ptr) Variable Function + 236(uv): 235(ptr) Variable Function + 252(i64): 251(ptr) Variable Function + 290(b): 289(ptr) Variable Function + 353(f): 352(ptr) Variable Function + Store 196(arr) 201 + 205:202(i16vec3) Load 204(u16v) + 207:206(i16vec3) CompositeConstruct 179 179 179 + 208:202(i16vec3) IAdd 205 207 + Store 204(u16v) 208 + 210: 14(int16_t) Load 209(i16) + 211: 14(int16_t) ISub 210 179 + Store 209(i16) 211 + 212: 14(int16_t) Load 209(i16) + 213: 14(int16_t) IAdd 212 179 + Store 209(i16) 213 + 214:202(i16vec3) Load 204(u16v) + 215:206(i16vec3) CompositeConstruct 179 179 179 + 216:202(i16vec3) ISub 214 215 + Store 204(u16v) 216 + 217:202(i16vec3) Load 204(u16v) + 218:202(i16vec3) Not 217 + Store 204(u16v) 218 + 219: 14(int16_t) Load 209(i16) + Store 209(i16) 219 + 220:202(i16vec3) Load 204(u16v) + 221:202(i16vec3) SNegate 220 + Store 204(u16v) 221 + 222: 14(int16_t) Load 209(i16) + 223: 14(int16_t) Load 209(i16) + 224: 14(int16_t) IAdd 223 222 + Store 209(i16) 224 + 225:202(i16vec3) Load 204(u16v) + 226:202(i16vec3) Load 204(u16v) + 227:202(i16vec3) ISub 226 225 + Store 204(u16v) 227 + 230: 14(int16_t) Load 209(i16) + 231: 27(int) SConvert 230 + 232: 27(int) Load 229(i) + 233: 27(int) IMul 232 231 + Store 229(i) 233 + 237:202(i16vec3) Load 204(u16v) + 238: 234(ivec3) UConvert 237 + 239: 234(ivec3) Load 236(uv) + 240: 234(ivec3) UDiv 239 238 + Store 236(uv) 240 + 241: 14(int16_t) Load 209(i16) + 242: 27(int) SConvert 241 + 243: 17(int) Bitcast 242 + 244: 234(ivec3) Load 236(uv) + 245: 234(ivec3) CompositeConstruct 243 243 243 + 246: 234(ivec3) UMod 244 245 + Store 236(uv) 246 + 247:202(i16vec3) Load 204(u16v) + 248: 234(ivec3) UConvert 247 + 249: 234(ivec3) Load 236(uv) + 250: 234(ivec3) IAdd 248 249 + Store 236(uv) 250 + 253: 14(int16_t) Load 209(i16) + 254: 71(int64_t) SConvert 253 + 255: 71(int64_t) Load 252(i64) + 256: 71(int64_t) ISub 254 255 + Store 252(i64) 256 + 257:202(i16vec3) Load 204(u16v) + 258: 234(ivec3) UConvert 257 + 259: 234(ivec3) Load 236(uv) + 260: 234(ivec3) IMul 258 259 + Store 236(uv) 260 + 261: 14(int16_t) Load 209(i16) + 262: 71(int64_t) SConvert 261 + 263: 71(int64_t) Load 252(i64) + 264: 71(int64_t) IMul 262 263 + Store 252(i64) 264 + 265: 14(int16_t) Load 209(i16) + 266: 27(int) SConvert 265 + 267: 27(int) Load 229(i) + 268: 27(int) SMod 266 267 + Store 229(i) 268 + 269: 14(int16_t) Load 209(i16) + 270:202(i16vec3) Load 204(u16v) + 271:206(i16vec3) CompositeConstruct 269 269 269 + 272:202(i16vec3) ShiftLeftLogical 270 271 + Store 204(u16v) 272 + 274: 37(ptr) AccessChain 204(u16v) 273 + 275: 36(int16_t) Load 274 + 276: 14(int16_t) Load 209(i16) + 277: 14(int16_t) ShiftRightArithmetic 276 275 + Store 209(i16) 277 + 278: 14(int16_t) Load 209(i16) + 280: 37(ptr) AccessChain 204(u16v) 279 + 281: 36(int16_t) Load 280 + 282: 14(int16_t) ShiftLeftLogical 278 281 + Store 209(i16) 282 + 283:202(i16vec3) Load 204(u16v) + 284: 27(int) Load 229(i) + 286: 285(ivec3) CompositeConstruct 284 284 284 + 287:202(i16vec3) ShiftLeftLogical 283 286 + 288: 234(ivec3) UConvert 287 + Store 236(uv) 288 + 292: 37(ptr) AccessChain 204(u16v) 291 + 293: 36(int16_t) Load 292 + 294: 14(int16_t) Load 209(i16) + 295: 36(int16_t) Bitcast 294 + 296: 173(bool) INotEqual 293 295 + Store 290(b) 296 + 297: 14(int16_t) Load 209(i16) + 298: 36(int16_t) Bitcast 297 + 299: 37(ptr) AccessChain 204(u16v) 291 + 300: 36(int16_t) Load 299 + 301: 173(bool) IEqual 298 300 + Store 290(b) 301 + 302: 37(ptr) AccessChain 204(u16v) 291 + 303: 36(int16_t) Load 302 + 304: 17(int) UConvert 303 + 306: 305(ptr) AccessChain 236(uv) 273 + 307: 17(int) Load 306 + 308: 173(bool) UGreaterThan 304 307 + Store 290(b) 308 + 309: 14(int16_t) Load 209(i16) + 310: 27(int) SConvert 309 + 311: 27(int) Load 229(i) + 312: 173(bool) SLessThan 310 311 + Store 290(b) 312 + 313: 37(ptr) AccessChain 204(u16v) 273 + 314: 36(int16_t) Load 313 + 315: 17(int) UConvert 314 + 316: 305(ptr) AccessChain 236(uv) 291 + 317: 17(int) Load 316 + 318: 173(bool) UGreaterThanEqual 315 317 + Store 290(b) 318 + 319: 14(int16_t) Load 209(i16) + 320: 27(int) SConvert 319 + 321: 27(int) Load 229(i) + 322: 173(bool) SLessThanEqual 320 321 + Store 290(b) 322 + 323: 14(int16_t) Load 209(i16) + 324: 27(int) SConvert 323 + 325: 17(int) Bitcast 324 + 326: 234(ivec3) Load 236(uv) + 327: 234(ivec3) CompositeConstruct 325 325 325 + 328: 234(ivec3) BitwiseOr 326 327 + Store 236(uv) 328 + 329: 14(int16_t) Load 209(i16) + 330: 27(int) SConvert 329 + 331: 27(int) Load 229(i) + 332: 27(int) BitwiseOr 330 331 + Store 229(i) 332 + 333: 14(int16_t) Load 209(i16) + 334: 71(int64_t) SConvert 333 + 335: 71(int64_t) Load 252(i64) + 336: 71(int64_t) BitwiseAnd 335 334 + Store 252(i64) 336 + 337:202(i16vec3) Load 204(u16v) + 338: 234(ivec3) UConvert 337 + 339: 234(ivec3) Load 236(uv) + 340: 234(ivec3) BitwiseAnd 338 339 + Store 236(uv) 340 + 341: 14(int16_t) Load 209(i16) + 342: 27(int) SConvert 341 + 343: 17(int) Bitcast 342 + 344: 234(ivec3) Load 236(uv) + 345: 234(ivec3) CompositeConstruct 343 343 343 + 346: 234(ivec3) BitwiseXor 344 345 + Store 236(uv) 346 + 347:202(i16vec3) Load 204(u16v) + 348: 14(int16_t) Load 209(i16) + 349: 36(int16_t) Bitcast 348 + 350:202(i16vec3) CompositeConstruct 349 349 349 + 351:202(i16vec3) BitwiseXor 347 350 + Store 204(u16v) 351 + 354: 14(int16_t) Load 209(i16) + 355: 352(ptr) AccessChain 196(arr) 354 + 356: 97(float) Load 355 + Store 353(f) 356 Return FunctionEnd 12(builtinFuncs(): 2 Function None 3 13: Label - 343(i16v): 53(ptr) Variable Function - 346(i16): 15(ptr) Variable Function - 356(u16v): 194(ptr) Variable Function - 358(u16): 37(ptr) Variable Function - 428(i32): 219(ptr) Variable Function - 431(i64): 242(ptr) Variable Function - 434(i16v4): 433(ptr) Variable Function - 437(u32): 296(ptr) Variable Function - 438(u16v2): 58(ptr) Variable Function - 442(u64): 441(ptr) Variable Function - 445(u16v4): 444(ptr) Variable Function - 457(bv): 456(ptr) Variable Function - 344: 52(i16vec2) Load 343(i16v) - 345: 52(i16vec2) ExtInst 1(GLSL.std.450) 5(SAbs) 344 - Store 343(i16v) 345 - 347: 14(int16_t) Load 346(i16) - 348: 14(int16_t) ExtInst 1(GLSL.std.450) 7(SSign) 347 - Store 346(i16) 348 - 349: 52(i16vec2) Load 343(i16v) - 350: 14(int16_t) Load 346(i16) - 351: 52(i16vec2) CompositeConstruct 350 350 - 352: 52(i16vec2) ExtInst 1(GLSL.std.450) 39(SMin) 349 351 - Store 343(i16v) 352 - 353: 52(i16vec2) Load 343(i16v) - 355: 52(i16vec2) ExtInst 1(GLSL.std.450) 39(SMin) 353 354 - Store 343(i16v) 355 - 357:193(i16vec3) Load 356(u16v) - 359: 36(int16_t) Load 358(u16) - 360:193(i16vec3) CompositeConstruct 359 359 359 - 361:193(i16vec3) ExtInst 1(GLSL.std.450) 38(UMin) 357 360 - Store 356(u16v) 361 - 362:193(i16vec3) Load 356(u16v) - 364:193(i16vec3) ExtInst 1(GLSL.std.450) 38(UMin) 362 363 - Store 356(u16v) 364 - 365: 52(i16vec2) Load 343(i16v) - 366: 14(int16_t) Load 346(i16) - 367: 52(i16vec2) CompositeConstruct 366 366 - 368: 52(i16vec2) ExtInst 1(GLSL.std.450) 42(SMax) 365 367 - Store 343(i16v) 368 - 369: 52(i16vec2) Load 343(i16v) - 370: 52(i16vec2) ExtInst 1(GLSL.std.450) 42(SMax) 369 354 - Store 343(i16v) 370 - 371:193(i16vec3) Load 356(u16v) - 372: 36(int16_t) Load 358(u16) - 373:193(i16vec3) CompositeConstruct 372 372 372 - 374:193(i16vec3) ExtInst 1(GLSL.std.450) 41(UMax) 371 373 - Store 356(u16v) 374 - 375:193(i16vec3) Load 356(u16v) - 376:193(i16vec3) ExtInst 1(GLSL.std.450) 41(UMax) 375 363 - Store 356(u16v) 376 - 377: 52(i16vec2) Load 343(i16v) - 378: 14(int16_t) Load 346(i16) - 379: 14(int16_t) SNegate 378 - 380: 14(int16_t) Load 346(i16) - 381: 52(i16vec2) CompositeConstruct 379 379 - 382: 52(i16vec2) CompositeConstruct 380 380 - 383: 52(i16vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 377 381 382 - Store 343(i16v) 383 - 384: 52(i16vec2) Load 343(i16v) - 385: 52(i16vec2) Load 343(i16v) - 386: 52(i16vec2) SNegate 385 - 387: 52(i16vec2) Load 343(i16v) - 388: 52(i16vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 384 386 387 - Store 343(i16v) 388 - 389:193(i16vec3) Load 356(u16v) - 390: 36(int16_t) Load 358(u16) - 391: 36(int16_t) SNegate 390 - 392: 36(int16_t) Load 358(u16) - 393:193(i16vec3) CompositeConstruct 391 391 391 - 394:193(i16vec3) CompositeConstruct 392 392 392 - 395:193(i16vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 389 393 394 - Store 356(u16v) 395 - 396:193(i16vec3) Load 356(u16v) - 397:193(i16vec3) Load 356(u16v) - 398:193(i16vec3) SNegate 397 - 399:193(i16vec3) Load 356(u16v) - 400:193(i16vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 396 398 399 - Store 356(u16v) 400 - 401: 15(ptr) AccessChain 343(i16v) 282 - 402: 14(int16_t) Load 401 - 403: 15(ptr) AccessChain 343(i16v) 264 - 404: 14(int16_t) Load 403 - 406: 14(int16_t) Select 405 404 402 - Store 346(i16) 406 - 407: 14(int16_t) Load 346(i16) - 408: 52(i16vec2) CompositeConstruct 407 407 - 409: 14(int16_t) Load 346(i16) - 410: 14(int16_t) SNegate 409 - 411: 52(i16vec2) CompositeConstruct 410 410 - 414: 52(i16vec2) Select 413 411 408 - Store 343(i16v) 414 - 415: 37(ptr) AccessChain 356(u16v) 282 - 416: 36(int16_t) Load 415 - 417: 37(ptr) AccessChain 356(u16v) 264 - 418: 36(int16_t) Load 417 - 419: 36(int16_t) Select 405 418 416 - Store 358(u16) 419 - 420: 36(int16_t) Load 358(u16) - 421:193(i16vec3) CompositeConstruct 420 420 420 - 422: 36(int16_t) Load 358(u16) - 423: 36(int16_t) SNegate 422 - 424:193(i16vec3) CompositeConstruct 423 423 423 - 427:193(i16vec3) Select 426 424 421 - Store 356(u16v) 427 - 429: 52(i16vec2) Load 343(i16v) - 430: 27(int) Bitcast 429 - Store 428(i32) 430 - 435:432(i16vec4) Load 434(i16v4) - 436: 71(int64_t) Bitcast 435 - Store 431(i64) 436 - 439: 57(i16vec2) Load 438(u16v2) - 440: 17(int) Bitcast 439 - Store 437(u32) 440 - 446:443(i16vec4) Load 445(u16v4) - 447: 77(int64_t) Bitcast 446 - Store 442(u64) 447 - 448: 27(int) Load 428(i32) - 449: 52(i16vec2) Bitcast 448 - Store 343(i16v) 449 - 450: 71(int64_t) Load 431(i64) - 451:432(i16vec4) Bitcast 450 - Store 434(i16v4) 451 - 452: 17(int) Load 437(u32) - 453: 57(i16vec2) Bitcast 452 - Store 438(u16v2) 453 - 454: 77(int64_t) Load 442(u64) - 455:443(i16vec4) Bitcast 454 - Store 445(u16v4) 455 - 458:193(i16vec3) Load 356(u16v) - 459: 36(int16_t) Load 358(u16) - 460:193(i16vec3) CompositeConstruct 459 459 459 - 461: 425(bvec3) ULessThan 458 460 - Store 457(bv) 461 - 462: 52(i16vec2) Load 343(i16v) - 463: 14(int16_t) Load 346(i16) - 464: 52(i16vec2) CompositeConstruct 463 463 - 465: 174(bvec2) SLessThan 462 464 - 466: 280(ptr) AccessChain 457(bv) 282 - 467: 173(bool) CompositeExtract 465 0 - Store 466 467 - 468: 280(ptr) AccessChain 457(bv) 264 - 469: 173(bool) CompositeExtract 465 1 - Store 468 469 - 470:193(i16vec3) Load 356(u16v) - 471: 36(int16_t) Load 358(u16) - 472:193(i16vec3) CompositeConstruct 471 471 471 - 473: 425(bvec3) ULessThanEqual 470 472 - Store 457(bv) 473 - 474: 52(i16vec2) Load 343(i16v) - 475: 14(int16_t) Load 346(i16) - 476: 52(i16vec2) CompositeConstruct 475 475 - 477: 174(bvec2) SLessThanEqual 474 476 - 478: 280(ptr) AccessChain 457(bv) 282 - 479: 173(bool) CompositeExtract 477 0 - Store 478 479 - 480: 280(ptr) AccessChain 457(bv) 264 - 481: 173(bool) CompositeExtract 477 1 + 357(i16v): 53(ptr) Variable Function + 360(i16): 15(ptr) Variable Function + 370(u16v): 203(ptr) Variable Function + 372(u16): 37(ptr) Variable Function + 442(i32): 228(ptr) Variable Function + 445(i64): 251(ptr) Variable Function + 448(i16v4): 447(ptr) Variable Function + 451(u32): 305(ptr) Variable Function + 452(u16v2): 58(ptr) Variable Function + 456(u64): 455(ptr) Variable Function + 459(u16v4): 458(ptr) Variable Function + 471(bv): 470(ptr) Variable Function + 358: 52(i16vec2) Load 357(i16v) + 359: 52(i16vec2) ExtInst 1(GLSL.std.450) 5(SAbs) 358 + Store 357(i16v) 359 + 361: 14(int16_t) Load 360(i16) + 362: 14(int16_t) ExtInst 1(GLSL.std.450) 7(SSign) 361 + Store 360(i16) 362 + 363: 52(i16vec2) Load 357(i16v) + 364: 14(int16_t) Load 360(i16) + 365: 52(i16vec2) CompositeConstruct 364 364 + 366: 52(i16vec2) ExtInst 1(GLSL.std.450) 39(SMin) 363 365 + Store 357(i16v) 366 + 367: 52(i16vec2) Load 357(i16v) + 369: 52(i16vec2) ExtInst 1(GLSL.std.450) 39(SMin) 367 368 + Store 357(i16v) 369 + 371:202(i16vec3) Load 370(u16v) + 373: 36(int16_t) Load 372(u16) + 374:202(i16vec3) CompositeConstruct 373 373 373 + 375:202(i16vec3) ExtInst 1(GLSL.std.450) 38(UMin) 371 374 + Store 370(u16v) 375 + 376:202(i16vec3) Load 370(u16v) + 378:202(i16vec3) ExtInst 1(GLSL.std.450) 38(UMin) 376 377 + Store 370(u16v) 378 + 379: 52(i16vec2) Load 357(i16v) + 380: 14(int16_t) Load 360(i16) + 381: 52(i16vec2) CompositeConstruct 380 380 + 382: 52(i16vec2) ExtInst 1(GLSL.std.450) 42(SMax) 379 381 + Store 357(i16v) 382 + 383: 52(i16vec2) Load 357(i16v) + 384: 52(i16vec2) ExtInst 1(GLSL.std.450) 42(SMax) 383 368 + Store 357(i16v) 384 + 385:202(i16vec3) Load 370(u16v) + 386: 36(int16_t) Load 372(u16) + 387:202(i16vec3) CompositeConstruct 386 386 386 + 388:202(i16vec3) ExtInst 1(GLSL.std.450) 41(UMax) 385 387 + Store 370(u16v) 388 + 389:202(i16vec3) Load 370(u16v) + 390:202(i16vec3) ExtInst 1(GLSL.std.450) 41(UMax) 389 377 + Store 370(u16v) 390 + 391: 52(i16vec2) Load 357(i16v) + 392: 14(int16_t) Load 360(i16) + 393: 14(int16_t) SNegate 392 + 394: 14(int16_t) Load 360(i16) + 395: 52(i16vec2) CompositeConstruct 393 393 + 396: 52(i16vec2) CompositeConstruct 394 394 + 397: 52(i16vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 391 395 396 + Store 357(i16v) 397 + 398: 52(i16vec2) Load 357(i16v) + 399: 52(i16vec2) Load 357(i16v) + 400: 52(i16vec2) SNegate 399 + 401: 52(i16vec2) Load 357(i16v) + 402: 52(i16vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 398 400 401 + Store 357(i16v) 402 + 403:202(i16vec3) Load 370(u16v) + 404: 36(int16_t) Load 372(u16) + 405: 36(int16_t) SNegate 404 + 406: 36(int16_t) Load 372(u16) + 407:202(i16vec3) CompositeConstruct 405 405 405 + 408:202(i16vec3) CompositeConstruct 406 406 406 + 409:202(i16vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 403 407 408 + Store 370(u16v) 409 + 410:202(i16vec3) Load 370(u16v) + 411:202(i16vec3) Load 370(u16v) + 412:202(i16vec3) SNegate 411 + 413:202(i16vec3) Load 370(u16v) + 414:202(i16vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 410 412 413 + Store 370(u16v) 414 + 415: 15(ptr) AccessChain 357(i16v) 291 + 416: 14(int16_t) Load 415 + 417: 15(ptr) AccessChain 357(i16v) 273 + 418: 14(int16_t) Load 417 + 420: 14(int16_t) Select 419 418 416 + Store 360(i16) 420 + 421: 14(int16_t) Load 360(i16) + 422: 52(i16vec2) CompositeConstruct 421 421 + 423: 14(int16_t) Load 360(i16) + 424: 14(int16_t) SNegate 423 + 425: 52(i16vec2) CompositeConstruct 424 424 + 428: 52(i16vec2) Select 427 425 422 + Store 357(i16v) 428 + 429: 37(ptr) AccessChain 370(u16v) 291 + 430: 36(int16_t) Load 429 + 431: 37(ptr) AccessChain 370(u16v) 273 + 432: 36(int16_t) Load 431 + 433: 36(int16_t) Select 419 432 430 + Store 372(u16) 433 + 434: 36(int16_t) Load 372(u16) + 435:202(i16vec3) CompositeConstruct 434 434 434 + 436: 36(int16_t) Load 372(u16) + 437: 36(int16_t) SNegate 436 + 438:202(i16vec3) CompositeConstruct 437 437 437 + 441:202(i16vec3) Select 440 438 435 + Store 370(u16v) 441 + 443: 52(i16vec2) Load 357(i16v) + 444: 27(int) Bitcast 443 + Store 442(i32) 444 + 449:446(i16vec4) Load 448(i16v4) + 450: 71(int64_t) Bitcast 449 + Store 445(i64) 450 + 453: 57(i16vec2) Load 452(u16v2) + 454: 17(int) Bitcast 453 + Store 451(u32) 454 + 460:457(i16vec4) Load 459(u16v4) + 461: 77(int64_t) Bitcast 460 + Store 456(u64) 461 + 462: 27(int) Load 442(i32) + 463: 52(i16vec2) Bitcast 462 + Store 357(i16v) 463 + 464: 71(int64_t) Load 445(i64) + 465:446(i16vec4) Bitcast 464 + Store 448(i16v4) 465 + 466: 17(int) Load 451(u32) + 467: 57(i16vec2) Bitcast 466 + Store 452(u16v2) 467 + 468: 77(int64_t) Load 456(u64) + 469:457(i16vec4) Bitcast 468 + Store 459(u16v4) 469 + 472:202(i16vec3) Load 370(u16v) + 473: 36(int16_t) Load 372(u16) + 474:202(i16vec3) CompositeConstruct 473 473 473 + 475: 439(bvec3) ULessThan 472 474 + Store 471(bv) 475 + 476: 52(i16vec2) Load 357(i16v) + 477: 14(int16_t) Load 360(i16) + 478: 52(i16vec2) CompositeConstruct 477 477 + 479: 174(bvec2) SLessThan 476 478 + 480: 289(ptr) AccessChain 471(bv) 291 + 481: 173(bool) CompositeExtract 479 0 Store 480 481 - 482:193(i16vec3) Load 356(u16v) - 483: 36(int16_t) Load 358(u16) - 484:193(i16vec3) CompositeConstruct 483 483 483 - 485: 425(bvec3) UGreaterThan 482 484 - Store 457(bv) 485 - 486: 52(i16vec2) Load 343(i16v) - 487: 14(int16_t) Load 346(i16) - 488: 52(i16vec2) CompositeConstruct 487 487 - 489: 174(bvec2) SGreaterThan 486 488 - 490: 280(ptr) AccessChain 457(bv) 282 - 491: 173(bool) CompositeExtract 489 0 - Store 490 491 - 492: 280(ptr) AccessChain 457(bv) 264 - 493: 173(bool) CompositeExtract 489 1 + 482: 289(ptr) AccessChain 471(bv) 273 + 483: 173(bool) CompositeExtract 479 1 + Store 482 483 + 484:202(i16vec3) Load 370(u16v) + 485: 36(int16_t) Load 372(u16) + 486:202(i16vec3) CompositeConstruct 485 485 485 + 487: 439(bvec3) ULessThanEqual 484 486 + Store 471(bv) 487 + 488: 52(i16vec2) Load 357(i16v) + 489: 14(int16_t) Load 360(i16) + 490: 52(i16vec2) CompositeConstruct 489 489 + 491: 174(bvec2) SLessThanEqual 488 490 + 492: 289(ptr) AccessChain 471(bv) 291 + 493: 173(bool) CompositeExtract 491 0 Store 492 493 - 494:193(i16vec3) Load 356(u16v) - 495: 36(int16_t) Load 358(u16) - 496:193(i16vec3) CompositeConstruct 495 495 495 - 497: 425(bvec3) UGreaterThanEqual 494 496 - Store 457(bv) 497 - 498: 52(i16vec2) Load 343(i16v) - 499: 14(int16_t) Load 346(i16) - 500: 52(i16vec2) CompositeConstruct 499 499 - 501: 174(bvec2) SGreaterThanEqual 498 500 - 502: 280(ptr) AccessChain 457(bv) 282 - 503: 173(bool) CompositeExtract 501 0 - Store 502 503 - 504: 280(ptr) AccessChain 457(bv) 264 - 505: 173(bool) CompositeExtract 501 1 + 494: 289(ptr) AccessChain 471(bv) 273 + 495: 173(bool) CompositeExtract 491 1 + Store 494 495 + 496:202(i16vec3) Load 370(u16v) + 497: 36(int16_t) Load 372(u16) + 498:202(i16vec3) CompositeConstruct 497 497 497 + 499: 439(bvec3) UGreaterThan 496 498 + Store 471(bv) 499 + 500: 52(i16vec2) Load 357(i16v) + 501: 14(int16_t) Load 360(i16) + 502: 52(i16vec2) CompositeConstruct 501 501 + 503: 174(bvec2) SGreaterThan 500 502 + 504: 289(ptr) AccessChain 471(bv) 291 + 505: 173(bool) CompositeExtract 503 0 Store 504 505 - 506:193(i16vec3) Load 356(u16v) - 507: 36(int16_t) Load 358(u16) - 508:193(i16vec3) CompositeConstruct 507 507 507 - 509: 425(bvec3) IEqual 506 508 - Store 457(bv) 509 - 510: 52(i16vec2) Load 343(i16v) - 511: 14(int16_t) Load 346(i16) - 512: 52(i16vec2) CompositeConstruct 511 511 - 513: 174(bvec2) IEqual 510 512 - 514: 280(ptr) AccessChain 457(bv) 282 - 515: 173(bool) CompositeExtract 513 0 - Store 514 515 - 516: 280(ptr) AccessChain 457(bv) 264 - 517: 173(bool) CompositeExtract 513 1 + 506: 289(ptr) AccessChain 471(bv) 273 + 507: 173(bool) CompositeExtract 503 1 + Store 506 507 + 508:202(i16vec3) Load 370(u16v) + 509: 36(int16_t) Load 372(u16) + 510:202(i16vec3) CompositeConstruct 509 509 509 + 511: 439(bvec3) UGreaterThanEqual 508 510 + Store 471(bv) 511 + 512: 52(i16vec2) Load 357(i16v) + 513: 14(int16_t) Load 360(i16) + 514: 52(i16vec2) CompositeConstruct 513 513 + 515: 174(bvec2) SGreaterThanEqual 512 514 + 516: 289(ptr) AccessChain 471(bv) 291 + 517: 173(bool) CompositeExtract 515 0 Store 516 517 - 518:193(i16vec3) Load 356(u16v) - 519: 36(int16_t) Load 358(u16) - 520:193(i16vec3) CompositeConstruct 519 519 519 - 521: 425(bvec3) INotEqual 518 520 - Store 457(bv) 521 - 522: 52(i16vec2) Load 343(i16v) - 523: 14(int16_t) Load 346(i16) - 524: 52(i16vec2) CompositeConstruct 523 523 - 525: 174(bvec2) INotEqual 522 524 - 526: 280(ptr) AccessChain 457(bv) 282 - 527: 173(bool) CompositeExtract 525 0 - Store 526 527 - 528: 280(ptr) AccessChain 457(bv) 264 - 529: 173(bool) CompositeExtract 525 1 + 518: 289(ptr) AccessChain 471(bv) 273 + 519: 173(bool) CompositeExtract 515 1 + Store 518 519 + 520:202(i16vec3) Load 370(u16v) + 521: 36(int16_t) Load 372(u16) + 522:202(i16vec3) CompositeConstruct 521 521 521 + 523: 439(bvec3) IEqual 520 522 + Store 471(bv) 523 + 524: 52(i16vec2) Load 357(i16v) + 525: 14(int16_t) Load 360(i16) + 526: 52(i16vec2) CompositeConstruct 525 525 + 527: 174(bvec2) IEqual 524 526 + 528: 289(ptr) AccessChain 471(bv) 291 + 529: 173(bool) CompositeExtract 527 0 Store 528 529 + 530: 289(ptr) AccessChain 471(bv) 273 + 531: 173(bool) CompositeExtract 527 1 + Store 530 531 + 532:202(i16vec3) Load 370(u16v) + 533: 36(int16_t) Load 372(u16) + 534:202(i16vec3) CompositeConstruct 533 533 533 + 535: 439(bvec3) INotEqual 532 534 + Store 471(bv) 535 + 536: 52(i16vec2) Load 357(i16v) + 537: 14(int16_t) Load 360(i16) + 538: 52(i16vec2) CompositeConstruct 537 537 + 539: 174(bvec2) INotEqual 536 538 + 540: 289(ptr) AccessChain 471(bv) 291 + 541: 173(bool) CompositeExtract 539 0 + Store 540 541 + 542: 289(ptr) AccessChain 471(bv) 273 + 543: 173(bool) CompositeExtract 539 1 + Store 542 543 Return FunctionEnd diff --git a/Test/baseResults/spv.int8.frag.out b/Test/baseResults/spv.int8.frag.out index a0da3e99..e9cd5f86 100644 --- a/Test/baseResults/spv.int8.frag.out +++ b/Test/baseResults/spv.int8.frag.out @@ -1,7 +1,7 @@ spv.int8.frag // Module Version 10300 // Generated by (magic number): 8000a -// Id's are bound by 530 +// Id's are bound by 544 Capability Shader Capability Float16 @@ -48,53 +48,55 @@ spv.int8.frag Name 117 "f64v" Name 144 "u16v" Name 174 "bv" - Name 192 "u8v" - Name 197 "i8" - Name 217 "i" - Name 224 "uv" - Name 240 "i16" - Name 276 "b" - Name 338 "i8v" - Name 341 "i8" - Name 351 "u8v" - Name 353 "u8" - Name 423 "i16" - Name 426 "i32" - Name 429 "i8v4" - Name 433 "u16" - Name 434 "u8v2" - Name 437 "u32" - Name 440 "u8v4" - Name 452 "bv" - Name 525 "Block" - MemberName 525(Block) 0 "i8" - MemberName 525(Block) 1 "i8v2" - MemberName 525(Block) 2 "i8v3" - MemberName 525(Block) 3 "i8v4" - MemberName 525(Block) 4 "u8" - MemberName 525(Block) 5 "u8v2" - MemberName 525(Block) 6 "u8v3" - MemberName 525(Block) 7 "u8v4" - Name 527 "block" - Name 528 "si8" - Name 529 "su8" + Name 193 "arr" + Name 201 "u8v" + Name 206 "i8" + Name 226 "i" + Name 233 "uv" + Name 249 "i16" + Name 285 "b" + Name 348 "f" + Name 352 "i8v" + Name 355 "i8" + Name 365 "u8v" + Name 367 "u8" + Name 437 "i16" + Name 440 "i32" + Name 443 "i8v4" + Name 447 "u16" + Name 448 "u8v2" + Name 451 "u32" + Name 454 "u8v4" + Name 466 "bv" + Name 539 "Block" + MemberName 539(Block) 0 "i8" + MemberName 539(Block) 1 "i8v2" + MemberName 539(Block) 2 "i8v3" + MemberName 539(Block) 3 "i8v4" + MemberName 539(Block) 4 "u8" + MemberName 539(Block) 5 "u8v2" + MemberName 539(Block) 6 "u8v3" + MemberName 539(Block) 7 "u8v4" + Name 541 "block" + Name 542 "si8" + Name 543 "su8" MemberDecorate 24(Uniforms) 0 Offset 0 Decorate 24(Uniforms) Block Decorate 26 DescriptorSet 0 Decorate 26 Binding 0 - MemberDecorate 525(Block) 0 Offset 0 - MemberDecorate 525(Block) 1 Offset 2 - MemberDecorate 525(Block) 2 Offset 4 - MemberDecorate 525(Block) 3 Offset 8 - MemberDecorate 525(Block) 4 Offset 12 - MemberDecorate 525(Block) 5 Offset 14 - MemberDecorate 525(Block) 6 Offset 16 - MemberDecorate 525(Block) 7 Offset 20 - Decorate 525(Block) Block - Decorate 527(block) DescriptorSet 0 - Decorate 527(block) Binding 1 - Decorate 528(si8) SpecId 100 - Decorate 529(su8) SpecId 101 + MemberDecorate 539(Block) 0 Offset 0 + MemberDecorate 539(Block) 1 Offset 2 + MemberDecorate 539(Block) 2 Offset 4 + MemberDecorate 539(Block) 3 Offset 8 + MemberDecorate 539(Block) 4 Offset 12 + MemberDecorate 539(Block) 5 Offset 14 + MemberDecorate 539(Block) 6 Offset 16 + MemberDecorate 539(Block) 7 Offset 20 + Decorate 539(Block) Block + Decorate 541(block) DescriptorSet 0 + Decorate 541(block) Binding 1 + Decorate 542(si8) SpecId 100 + Decorate 543(su8) SpecId 101 2: TypeVoid 3: TypeFunction 2 14: TypeInt 8 1 @@ -159,36 +161,45 @@ spv.int8.frag 182: 36(int8_t) Constant 1 183: 49(i8vec2) ConstantComposite 181 181 184: 49(i8vec2) ConstantComposite 182 182 - 190: TypeVector 36(int8_t) 3 - 191: TypePointer Function 190(i8vec3) - 194: TypeVector 14(int8_t) 3 - 216: TypePointer Function 27(int) - 222: TypeVector 17(int) 3 - 223: TypePointer Function 222(ivec3) - 239: TypePointer Function 57(int16_t) - 261: 17(int) Constant 1 - 267: 17(int) Constant 2 - 275: TypePointer Function 171(bool) - 277: 17(int) Constant 0 - 291: TypePointer Function 17(int) - 349: 52(i8vec2) ConstantComposite 21 21 - 358: 190(i8vec3) ConstantComposite 181 181 181 - 400: 171(bool) ConstantTrue - 407: 171(bool) ConstantFalse - 408: 172(bvec2) ConstantComposite 407 407 - 420: TypeVector 171(bool) 3 - 421: 420(bvec3) ConstantComposite 407 407 407 - 427: TypeVector 14(int8_t) 4 - 428: TypePointer Function 427(i8vec4) - 432: TypePointer Function 64(int16_t) - 438: TypeVector 36(int8_t) 4 - 439: TypePointer Function 438(i8vec4) - 451: TypePointer Function 420(bvec3) - 525(Block): TypeStruct 14(int8_t) 52(i8vec2) 194(i8vec3) 427(i8vec4) 36(int8_t) 49(i8vec2) 190(i8vec3) 438(i8vec4) - 526: TypePointer Uniform 525(Block) - 527(block): 526(ptr) Variable Uniform - 528(si8): 14(int8_t) SpecConstant 4294967286 - 529(su8): 36(int8_t) SpecConstant 20 + 190: 17(int) Constant 4 + 191: TypeArray 108(float) 190 + 192: TypePointer Function 191 + 194: 108(float) Constant 1065353216 + 195: 108(float) Constant 1073741824 + 196: 108(float) Constant 1077936128 + 197: 108(float) Constant 1082130432 + 198: 191 ConstantComposite 194 195 196 197 + 199: TypeVector 36(int8_t) 3 + 200: TypePointer Function 199(i8vec3) + 203: TypeVector 14(int8_t) 3 + 225: TypePointer Function 27(int) + 231: TypeVector 17(int) 3 + 232: TypePointer Function 231(ivec3) + 248: TypePointer Function 57(int16_t) + 270: 17(int) Constant 1 + 276: 17(int) Constant 2 + 284: TypePointer Function 171(bool) + 286: 17(int) Constant 0 + 300: TypePointer Function 17(int) + 347: TypePointer Function 108(float) + 363: 52(i8vec2) ConstantComposite 21 21 + 372: 199(i8vec3) ConstantComposite 181 181 181 + 414: 171(bool) ConstantTrue + 421: 171(bool) ConstantFalse + 422: 172(bvec2) ConstantComposite 421 421 + 434: TypeVector 171(bool) 3 + 435: 434(bvec3) ConstantComposite 421 421 421 + 441: TypeVector 14(int8_t) 4 + 442: TypePointer Function 441(i8vec4) + 446: TypePointer Function 64(int16_t) + 452: TypeVector 36(int8_t) 4 + 453: TypePointer Function 452(i8vec4) + 465: TypePointer Function 434(bvec3) + 539(Block): TypeStruct 14(int8_t) 52(i8vec2) 203(i8vec3) 441(i8vec4) 36(int8_t) 49(i8vec2) 199(i8vec3) 452(i8vec4) + 540: TypePointer Uniform 539(Block) + 541(block): 540(ptr) Variable Uniform + 542(si8): 14(int8_t) SpecConstant 4294967286 + 543(su8): 36(int8_t) SpecConstant 20 4(main): 2 Function None 3 5: Label Return @@ -360,396 +371,403 @@ spv.int8.frag FunctionEnd 10(operators(): 2 Function None 3 11: Label - 192(u8v): 191(ptr) Variable Function - 197(i8): 15(ptr) Variable Function - 217(i): 216(ptr) Variable Function - 224(uv): 223(ptr) Variable Function - 240(i16): 239(ptr) Variable Function - 276(b): 275(ptr) Variable Function - 193: 190(i8vec3) Load 192(u8v) - 195: 194(i8vec3) CompositeConstruct 176 176 176 - 196: 190(i8vec3) IAdd 193 195 - Store 192(u8v) 196 - 198: 14(int8_t) Load 197(i8) - 199: 14(int8_t) ISub 198 176 - Store 197(i8) 199 - 200: 14(int8_t) Load 197(i8) - 201: 14(int8_t) IAdd 200 176 - Store 197(i8) 201 - 202: 190(i8vec3) Load 192(u8v) - 203: 194(i8vec3) CompositeConstruct 176 176 176 - 204: 190(i8vec3) ISub 202 203 - Store 192(u8v) 204 - 205: 190(i8vec3) Load 192(u8v) - 206: 190(i8vec3) Not 205 - Store 192(u8v) 206 - 207: 14(int8_t) Load 197(i8) - Store 197(i8) 207 - 208: 190(i8vec3) Load 192(u8v) - 209: 190(i8vec3) SNegate 208 - Store 192(u8v) 209 - 210: 14(int8_t) Load 197(i8) - 211: 14(int8_t) Load 197(i8) - 212: 14(int8_t) IAdd 211 210 - Store 197(i8) 212 - 213: 190(i8vec3) Load 192(u8v) - 214: 190(i8vec3) Load 192(u8v) - 215: 190(i8vec3) ISub 214 213 - Store 192(u8v) 215 - 218: 14(int8_t) Load 197(i8) - 219: 27(int) SConvert 218 - 220: 27(int) Load 217(i) - 221: 27(int) IMul 220 219 - Store 217(i) 221 - 225: 190(i8vec3) Load 192(u8v) - 226: 222(ivec3) UConvert 225 - 227: 222(ivec3) Load 224(uv) - 228: 222(ivec3) UDiv 227 226 - Store 224(uv) 228 - 229: 14(int8_t) Load 197(i8) - 230: 27(int) SConvert 229 - 231: 17(int) Bitcast 230 - 232: 222(ivec3) Load 224(uv) - 233: 222(ivec3) CompositeConstruct 231 231 231 - 234: 222(ivec3) UMod 232 233 - Store 224(uv) 234 - 235: 190(i8vec3) Load 192(u8v) - 236: 222(ivec3) UConvert 235 - 237: 222(ivec3) Load 224(uv) - 238: 222(ivec3) IAdd 236 237 - Store 224(uv) 238 - 241: 14(int8_t) Load 197(i8) - 242: 57(int16_t) SConvert 241 - 243: 57(int16_t) Load 240(i16) - 244: 57(int16_t) ISub 242 243 - Store 240(i16) 244 - 245: 190(i8vec3) Load 192(u8v) - 246: 222(ivec3) UConvert 245 - 247: 222(ivec3) Load 224(uv) - 248: 222(ivec3) IMul 246 247 - Store 224(uv) 248 - 249: 14(int8_t) Load 197(i8) - 250: 57(int16_t) SConvert 249 - 251: 57(int16_t) Load 240(i16) - 252: 57(int16_t) IMul 250 251 - Store 240(i16) 252 - 253: 14(int8_t) Load 197(i8) - 254: 27(int) SConvert 253 - 255: 27(int) Load 217(i) - 256: 27(int) SMod 254 255 - Store 217(i) 256 - 257: 14(int8_t) Load 197(i8) - 258: 190(i8vec3) Load 192(u8v) - 259: 194(i8vec3) CompositeConstruct 257 257 257 - 260: 190(i8vec3) ShiftLeftLogical 258 259 - Store 192(u8v) 260 - 262: 37(ptr) AccessChain 192(u8v) 261 - 263: 36(int8_t) Load 262 - 264: 14(int8_t) Load 197(i8) - 265: 14(int8_t) ShiftRightArithmetic 264 263 - Store 197(i8) 265 - 266: 14(int8_t) Load 197(i8) - 268: 37(ptr) AccessChain 192(u8v) 267 - 269: 36(int8_t) Load 268 - 270: 14(int8_t) ShiftLeftLogical 266 269 - Store 197(i8) 270 - 271: 190(i8vec3) Load 192(u8v) - 272: 14(int8_t) Load 197(i8) - 273: 194(i8vec3) CompositeConstruct 272 272 272 - 274: 190(i8vec3) ShiftLeftLogical 271 273 - Store 192(u8v) 274 - 278: 37(ptr) AccessChain 192(u8v) 277 - 279: 36(int8_t) Load 278 - 280: 14(int8_t) Load 197(i8) - 281: 36(int8_t) Bitcast 280 - 282: 171(bool) INotEqual 279 281 - Store 276(b) 282 - 283: 14(int8_t) Load 197(i8) - 284: 36(int8_t) Bitcast 283 - 285: 37(ptr) AccessChain 192(u8v) 277 - 286: 36(int8_t) Load 285 - 287: 171(bool) IEqual 284 286 - Store 276(b) 287 - 288: 37(ptr) AccessChain 192(u8v) 277 - 289: 36(int8_t) Load 288 - 290: 17(int) UConvert 289 - 292: 291(ptr) AccessChain 224(uv) 261 - 293: 17(int) Load 292 - 294: 171(bool) UGreaterThan 290 293 - Store 276(b) 294 - 295: 14(int8_t) Load 197(i8) - 296: 27(int) SConvert 295 - 297: 27(int) Load 217(i) - 298: 171(bool) SLessThan 296 297 - Store 276(b) 298 - 299: 37(ptr) AccessChain 192(u8v) 261 - 300: 36(int8_t) Load 299 - 301: 17(int) UConvert 300 - 302: 291(ptr) AccessChain 224(uv) 277 - 303: 17(int) Load 302 - 304: 171(bool) UGreaterThanEqual 301 303 - Store 276(b) 304 - 305: 14(int8_t) Load 197(i8) - 306: 27(int) SConvert 305 - 307: 27(int) Load 217(i) - 308: 171(bool) SLessThanEqual 306 307 - Store 276(b) 308 - 309: 14(int8_t) Load 197(i8) - 310: 27(int) SConvert 309 - 311: 17(int) Bitcast 310 - 312: 222(ivec3) Load 224(uv) - 313: 222(ivec3) CompositeConstruct 311 311 311 - 314: 222(ivec3) BitwiseOr 312 313 - Store 224(uv) 314 - 315: 14(int8_t) Load 197(i8) - 316: 27(int) SConvert 315 - 317: 27(int) Load 217(i) - 318: 27(int) BitwiseOr 316 317 - Store 217(i) 318 - 319: 14(int8_t) Load 197(i8) - 320: 57(int16_t) SConvert 319 - 321: 57(int16_t) Load 240(i16) - 322: 57(int16_t) BitwiseAnd 321 320 - Store 240(i16) 322 - 323: 190(i8vec3) Load 192(u8v) - 324: 222(ivec3) UConvert 323 - 325: 222(ivec3) Load 224(uv) - 326: 222(ivec3) BitwiseAnd 324 325 - Store 224(uv) 326 - 327: 14(int8_t) Load 197(i8) - 328: 27(int) SConvert 327 - 329: 17(int) Bitcast 328 - 330: 222(ivec3) Load 224(uv) - 331: 222(ivec3) CompositeConstruct 329 329 329 - 332: 222(ivec3) BitwiseXor 330 331 - Store 224(uv) 332 - 333: 190(i8vec3) Load 192(u8v) - 334: 14(int8_t) Load 197(i8) - 335: 36(int8_t) Bitcast 334 - 336: 190(i8vec3) CompositeConstruct 335 335 335 - 337: 190(i8vec3) BitwiseXor 333 336 - Store 192(u8v) 337 + 193(arr): 192(ptr) Variable Function + 201(u8v): 200(ptr) Variable Function + 206(i8): 15(ptr) Variable Function + 226(i): 225(ptr) Variable Function + 233(uv): 232(ptr) Variable Function + 249(i16): 248(ptr) Variable Function + 285(b): 284(ptr) Variable Function + 348(f): 347(ptr) Variable Function + Store 193(arr) 198 + 202: 199(i8vec3) Load 201(u8v) + 204: 203(i8vec3) CompositeConstruct 176 176 176 + 205: 199(i8vec3) IAdd 202 204 + Store 201(u8v) 205 + 207: 14(int8_t) Load 206(i8) + 208: 14(int8_t) ISub 207 176 + Store 206(i8) 208 + 209: 14(int8_t) Load 206(i8) + 210: 14(int8_t) IAdd 209 176 + Store 206(i8) 210 + 211: 199(i8vec3) Load 201(u8v) + 212: 203(i8vec3) CompositeConstruct 176 176 176 + 213: 199(i8vec3) ISub 211 212 + Store 201(u8v) 213 + 214: 199(i8vec3) Load 201(u8v) + 215: 199(i8vec3) Not 214 + Store 201(u8v) 215 + 216: 14(int8_t) Load 206(i8) + Store 206(i8) 216 + 217: 199(i8vec3) Load 201(u8v) + 218: 199(i8vec3) SNegate 217 + Store 201(u8v) 218 + 219: 14(int8_t) Load 206(i8) + 220: 14(int8_t) Load 206(i8) + 221: 14(int8_t) IAdd 220 219 + Store 206(i8) 221 + 222: 199(i8vec3) Load 201(u8v) + 223: 199(i8vec3) Load 201(u8v) + 224: 199(i8vec3) ISub 223 222 + Store 201(u8v) 224 + 227: 14(int8_t) Load 206(i8) + 228: 27(int) SConvert 227 + 229: 27(int) Load 226(i) + 230: 27(int) IMul 229 228 + Store 226(i) 230 + 234: 199(i8vec3) Load 201(u8v) + 235: 231(ivec3) UConvert 234 + 236: 231(ivec3) Load 233(uv) + 237: 231(ivec3) UDiv 236 235 + Store 233(uv) 237 + 238: 14(int8_t) Load 206(i8) + 239: 27(int) SConvert 238 + 240: 17(int) Bitcast 239 + 241: 231(ivec3) Load 233(uv) + 242: 231(ivec3) CompositeConstruct 240 240 240 + 243: 231(ivec3) UMod 241 242 + Store 233(uv) 243 + 244: 199(i8vec3) Load 201(u8v) + 245: 231(ivec3) UConvert 244 + 246: 231(ivec3) Load 233(uv) + 247: 231(ivec3) IAdd 245 246 + Store 233(uv) 247 + 250: 14(int8_t) Load 206(i8) + 251: 57(int16_t) SConvert 250 + 252: 57(int16_t) Load 249(i16) + 253: 57(int16_t) ISub 251 252 + Store 249(i16) 253 + 254: 199(i8vec3) Load 201(u8v) + 255: 231(ivec3) UConvert 254 + 256: 231(ivec3) Load 233(uv) + 257: 231(ivec3) IMul 255 256 + Store 233(uv) 257 + 258: 14(int8_t) Load 206(i8) + 259: 57(int16_t) SConvert 258 + 260: 57(int16_t) Load 249(i16) + 261: 57(int16_t) IMul 259 260 + Store 249(i16) 261 + 262: 14(int8_t) Load 206(i8) + 263: 27(int) SConvert 262 + 264: 27(int) Load 226(i) + 265: 27(int) SMod 263 264 + Store 226(i) 265 + 266: 14(int8_t) Load 206(i8) + 267: 199(i8vec3) Load 201(u8v) + 268: 203(i8vec3) CompositeConstruct 266 266 266 + 269: 199(i8vec3) ShiftLeftLogical 267 268 + Store 201(u8v) 269 + 271: 37(ptr) AccessChain 201(u8v) 270 + 272: 36(int8_t) Load 271 + 273: 14(int8_t) Load 206(i8) + 274: 14(int8_t) ShiftRightArithmetic 273 272 + Store 206(i8) 274 + 275: 14(int8_t) Load 206(i8) + 277: 37(ptr) AccessChain 201(u8v) 276 + 278: 36(int8_t) Load 277 + 279: 14(int8_t) ShiftLeftLogical 275 278 + Store 206(i8) 279 + 280: 199(i8vec3) Load 201(u8v) + 281: 14(int8_t) Load 206(i8) + 282: 203(i8vec3) CompositeConstruct 281 281 281 + 283: 199(i8vec3) ShiftLeftLogical 280 282 + Store 201(u8v) 283 + 287: 37(ptr) AccessChain 201(u8v) 286 + 288: 36(int8_t) Load 287 + 289: 14(int8_t) Load 206(i8) + 290: 36(int8_t) Bitcast 289 + 291: 171(bool) INotEqual 288 290 + Store 285(b) 291 + 292: 14(int8_t) Load 206(i8) + 293: 36(int8_t) Bitcast 292 + 294: 37(ptr) AccessChain 201(u8v) 286 + 295: 36(int8_t) Load 294 + 296: 171(bool) IEqual 293 295 + Store 285(b) 296 + 297: 37(ptr) AccessChain 201(u8v) 286 + 298: 36(int8_t) Load 297 + 299: 17(int) UConvert 298 + 301: 300(ptr) AccessChain 233(uv) 270 + 302: 17(int) Load 301 + 303: 171(bool) UGreaterThan 299 302 + Store 285(b) 303 + 304: 14(int8_t) Load 206(i8) + 305: 27(int) SConvert 304 + 306: 27(int) Load 226(i) + 307: 171(bool) SLessThan 305 306 + Store 285(b) 307 + 308: 37(ptr) AccessChain 201(u8v) 270 + 309: 36(int8_t) Load 308 + 310: 17(int) UConvert 309 + 311: 300(ptr) AccessChain 233(uv) 286 + 312: 17(int) Load 311 + 313: 171(bool) UGreaterThanEqual 310 312 + Store 285(b) 313 + 314: 14(int8_t) Load 206(i8) + 315: 27(int) SConvert 314 + 316: 27(int) Load 226(i) + 317: 171(bool) SLessThanEqual 315 316 + Store 285(b) 317 + 318: 14(int8_t) Load 206(i8) + 319: 27(int) SConvert 318 + 320: 17(int) Bitcast 319 + 321: 231(ivec3) Load 233(uv) + 322: 231(ivec3) CompositeConstruct 320 320 320 + 323: 231(ivec3) BitwiseOr 321 322 + Store 233(uv) 323 + 324: 14(int8_t) Load 206(i8) + 325: 27(int) SConvert 324 + 326: 27(int) Load 226(i) + 327: 27(int) BitwiseOr 325 326 + Store 226(i) 327 + 328: 14(int8_t) Load 206(i8) + 329: 57(int16_t) SConvert 328 + 330: 57(int16_t) Load 249(i16) + 331: 57(int16_t) BitwiseAnd 330 329 + Store 249(i16) 331 + 332: 199(i8vec3) Load 201(u8v) + 333: 231(ivec3) UConvert 332 + 334: 231(ivec3) Load 233(uv) + 335: 231(ivec3) BitwiseAnd 333 334 + Store 233(uv) 335 + 336: 14(int8_t) Load 206(i8) + 337: 27(int) SConvert 336 + 338: 17(int) Bitcast 337 + 339: 231(ivec3) Load 233(uv) + 340: 231(ivec3) CompositeConstruct 338 338 338 + 341: 231(ivec3) BitwiseXor 339 340 + Store 233(uv) 341 + 342: 199(i8vec3) Load 201(u8v) + 343: 14(int8_t) Load 206(i8) + 344: 36(int8_t) Bitcast 343 + 345: 199(i8vec3) CompositeConstruct 344 344 344 + 346: 199(i8vec3) BitwiseXor 342 345 + Store 201(u8v) 346 + 349: 14(int8_t) Load 206(i8) + 350: 347(ptr) AccessChain 193(arr) 349 + 351: 108(float) Load 350 + Store 348(f) 351 Return FunctionEnd 12(builtinFuncs(): 2 Function None 3 13: Label - 338(i8v): 53(ptr) Variable Function - 341(i8): 15(ptr) Variable Function - 351(u8v): 191(ptr) Variable Function - 353(u8): 37(ptr) Variable Function - 423(i16): 239(ptr) Variable Function - 426(i32): 216(ptr) Variable Function - 429(i8v4): 428(ptr) Variable Function - 433(u16): 432(ptr) Variable Function - 434(u8v2): 50(ptr) Variable Function - 437(u32): 291(ptr) Variable Function - 440(u8v4): 439(ptr) Variable Function - 452(bv): 451(ptr) Variable Function - 339: 52(i8vec2) Load 338(i8v) - 340: 52(i8vec2) ExtInst 1(GLSL.std.450) 5(SAbs) 339 - Store 338(i8v) 340 - 342: 14(int8_t) Load 341(i8) - 343: 14(int8_t) ExtInst 1(GLSL.std.450) 7(SSign) 342 - Store 341(i8) 343 - 344: 52(i8vec2) Load 338(i8v) - 345: 14(int8_t) Load 341(i8) - 346: 52(i8vec2) CompositeConstruct 345 345 - 347: 52(i8vec2) ExtInst 1(GLSL.std.450) 39(SMin) 344 346 - Store 338(i8v) 347 - 348: 52(i8vec2) Load 338(i8v) - 350: 52(i8vec2) ExtInst 1(GLSL.std.450) 39(SMin) 348 349 - Store 338(i8v) 350 - 352: 190(i8vec3) Load 351(u8v) - 354: 36(int8_t) Load 353(u8) - 355: 190(i8vec3) CompositeConstruct 354 354 354 - 356: 190(i8vec3) ExtInst 1(GLSL.std.450) 38(UMin) 352 355 - Store 351(u8v) 356 - 357: 190(i8vec3) Load 351(u8v) - 359: 190(i8vec3) ExtInst 1(GLSL.std.450) 38(UMin) 357 358 - Store 351(u8v) 359 - 360: 52(i8vec2) Load 338(i8v) - 361: 14(int8_t) Load 341(i8) - 362: 52(i8vec2) CompositeConstruct 361 361 - 363: 52(i8vec2) ExtInst 1(GLSL.std.450) 42(SMax) 360 362 - Store 338(i8v) 363 - 364: 52(i8vec2) Load 338(i8v) - 365: 52(i8vec2) ExtInst 1(GLSL.std.450) 42(SMax) 364 349 - Store 338(i8v) 365 - 366: 190(i8vec3) Load 351(u8v) - 367: 36(int8_t) Load 353(u8) - 368: 190(i8vec3) CompositeConstruct 367 367 367 - 369: 190(i8vec3) ExtInst 1(GLSL.std.450) 41(UMax) 366 368 - Store 351(u8v) 369 - 370: 190(i8vec3) Load 351(u8v) - 371: 190(i8vec3) ExtInst 1(GLSL.std.450) 41(UMax) 370 358 - Store 351(u8v) 371 - 372: 52(i8vec2) Load 338(i8v) - 373: 14(int8_t) Load 341(i8) - 374: 14(int8_t) SNegate 373 - 375: 14(int8_t) Load 341(i8) - 376: 52(i8vec2) CompositeConstruct 374 374 - 377: 52(i8vec2) CompositeConstruct 375 375 - 378: 52(i8vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 372 376 377 - Store 338(i8v) 378 - 379: 52(i8vec2) Load 338(i8v) - 380: 52(i8vec2) Load 338(i8v) - 381: 52(i8vec2) SNegate 380 - 382: 52(i8vec2) Load 338(i8v) - 383: 52(i8vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 379 381 382 - Store 338(i8v) 383 - 384: 190(i8vec3) Load 351(u8v) - 385: 36(int8_t) Load 353(u8) - 386: 36(int8_t) SNegate 385 - 387: 36(int8_t) Load 353(u8) - 388: 190(i8vec3) CompositeConstruct 386 386 386 - 389: 190(i8vec3) CompositeConstruct 387 387 387 - 390: 190(i8vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 384 388 389 - Store 351(u8v) 390 - 391: 190(i8vec3) Load 351(u8v) - 392: 190(i8vec3) Load 351(u8v) - 393: 190(i8vec3) SNegate 392 - 394: 190(i8vec3) Load 351(u8v) - 395: 190(i8vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 391 393 394 - Store 351(u8v) 395 - 396: 15(ptr) AccessChain 338(i8v) 277 - 397: 14(int8_t) Load 396 - 398: 15(ptr) AccessChain 338(i8v) 261 - 399: 14(int8_t) Load 398 - 401: 14(int8_t) Select 400 399 397 - Store 341(i8) 401 - 402: 14(int8_t) Load 341(i8) - 403: 52(i8vec2) CompositeConstruct 402 402 - 404: 14(int8_t) Load 341(i8) - 405: 14(int8_t) SNegate 404 - 406: 52(i8vec2) CompositeConstruct 405 405 - 409: 52(i8vec2) Select 408 406 403 - Store 338(i8v) 409 - 410: 37(ptr) AccessChain 351(u8v) 277 - 411: 36(int8_t) Load 410 - 412: 37(ptr) AccessChain 351(u8v) 261 - 413: 36(int8_t) Load 412 - 414: 36(int8_t) Select 400 413 411 - Store 353(u8) 414 - 415: 36(int8_t) Load 353(u8) - 416: 190(i8vec3) CompositeConstruct 415 415 415 - 417: 36(int8_t) Load 353(u8) - 418: 36(int8_t) SNegate 417 - 419: 190(i8vec3) CompositeConstruct 418 418 418 - 422: 190(i8vec3) Select 421 419 416 - Store 351(u8v) 422 - 424: 52(i8vec2) Load 338(i8v) - 425: 57(int16_t) Bitcast 424 - Store 423(i16) 425 - 430: 427(i8vec4) Load 429(i8v4) - 431: 27(int) Bitcast 430 - Store 426(i32) 431 - 435: 49(i8vec2) Load 434(u8v2) - 436: 64(int16_t) Bitcast 435 - Store 433(u16) 436 - 441: 438(i8vec4) Load 440(u8v4) - 442: 17(int) Bitcast 441 - Store 437(u32) 442 - 443: 57(int16_t) Load 423(i16) - 444: 52(i8vec2) Bitcast 443 - Store 338(i8v) 444 - 445: 27(int) Load 426(i32) - 446: 427(i8vec4) Bitcast 445 - Store 429(i8v4) 446 - 447: 64(int16_t) Load 433(u16) - 448: 49(i8vec2) Bitcast 447 - Store 434(u8v2) 448 - 449: 17(int) Load 437(u32) - 450: 438(i8vec4) Bitcast 449 - Store 440(u8v4) 450 - 453: 190(i8vec3) Load 351(u8v) - 454: 36(int8_t) Load 353(u8) - 455: 190(i8vec3) CompositeConstruct 454 454 454 - 456: 420(bvec3) ULessThan 453 455 - Store 452(bv) 456 - 457: 52(i8vec2) Load 338(i8v) - 458: 14(int8_t) Load 341(i8) - 459: 52(i8vec2) CompositeConstruct 458 458 - 460: 172(bvec2) SLessThan 457 459 - 461: 275(ptr) AccessChain 452(bv) 277 - 462: 171(bool) CompositeExtract 460 0 - Store 461 462 - 463: 275(ptr) AccessChain 452(bv) 261 - 464: 171(bool) CompositeExtract 460 1 - Store 463 464 - 465: 190(i8vec3) Load 351(u8v) - 466: 36(int8_t) Load 353(u8) - 467: 190(i8vec3) CompositeConstruct 466 466 466 - 468: 420(bvec3) ULessThanEqual 465 467 - Store 452(bv) 468 - 469: 52(i8vec2) Load 338(i8v) - 470: 14(int8_t) Load 341(i8) - 471: 52(i8vec2) CompositeConstruct 470 470 - 472: 172(bvec2) SLessThanEqual 469 471 - 473: 275(ptr) AccessChain 452(bv) 277 - 474: 171(bool) CompositeExtract 472 0 - Store 473 474 - 475: 275(ptr) AccessChain 452(bv) 261 - 476: 171(bool) CompositeExtract 472 1 + 352(i8v): 53(ptr) Variable Function + 355(i8): 15(ptr) Variable Function + 365(u8v): 200(ptr) Variable Function + 367(u8): 37(ptr) Variable Function + 437(i16): 248(ptr) Variable Function + 440(i32): 225(ptr) Variable Function + 443(i8v4): 442(ptr) Variable Function + 447(u16): 446(ptr) Variable Function + 448(u8v2): 50(ptr) Variable Function + 451(u32): 300(ptr) Variable Function + 454(u8v4): 453(ptr) Variable Function + 466(bv): 465(ptr) Variable Function + 353: 52(i8vec2) Load 352(i8v) + 354: 52(i8vec2) ExtInst 1(GLSL.std.450) 5(SAbs) 353 + Store 352(i8v) 354 + 356: 14(int8_t) Load 355(i8) + 357: 14(int8_t) ExtInst 1(GLSL.std.450) 7(SSign) 356 + Store 355(i8) 357 + 358: 52(i8vec2) Load 352(i8v) + 359: 14(int8_t) Load 355(i8) + 360: 52(i8vec2) CompositeConstruct 359 359 + 361: 52(i8vec2) ExtInst 1(GLSL.std.450) 39(SMin) 358 360 + Store 352(i8v) 361 + 362: 52(i8vec2) Load 352(i8v) + 364: 52(i8vec2) ExtInst 1(GLSL.std.450) 39(SMin) 362 363 + Store 352(i8v) 364 + 366: 199(i8vec3) Load 365(u8v) + 368: 36(int8_t) Load 367(u8) + 369: 199(i8vec3) CompositeConstruct 368 368 368 + 370: 199(i8vec3) ExtInst 1(GLSL.std.450) 38(UMin) 366 369 + Store 365(u8v) 370 + 371: 199(i8vec3) Load 365(u8v) + 373: 199(i8vec3) ExtInst 1(GLSL.std.450) 38(UMin) 371 372 + Store 365(u8v) 373 + 374: 52(i8vec2) Load 352(i8v) + 375: 14(int8_t) Load 355(i8) + 376: 52(i8vec2) CompositeConstruct 375 375 + 377: 52(i8vec2) ExtInst 1(GLSL.std.450) 42(SMax) 374 376 + Store 352(i8v) 377 + 378: 52(i8vec2) Load 352(i8v) + 379: 52(i8vec2) ExtInst 1(GLSL.std.450) 42(SMax) 378 363 + Store 352(i8v) 379 + 380: 199(i8vec3) Load 365(u8v) + 381: 36(int8_t) Load 367(u8) + 382: 199(i8vec3) CompositeConstruct 381 381 381 + 383: 199(i8vec3) ExtInst 1(GLSL.std.450) 41(UMax) 380 382 + Store 365(u8v) 383 + 384: 199(i8vec3) Load 365(u8v) + 385: 199(i8vec3) ExtInst 1(GLSL.std.450) 41(UMax) 384 372 + Store 365(u8v) 385 + 386: 52(i8vec2) Load 352(i8v) + 387: 14(int8_t) Load 355(i8) + 388: 14(int8_t) SNegate 387 + 389: 14(int8_t) Load 355(i8) + 390: 52(i8vec2) CompositeConstruct 388 388 + 391: 52(i8vec2) CompositeConstruct 389 389 + 392: 52(i8vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 386 390 391 + Store 352(i8v) 392 + 393: 52(i8vec2) Load 352(i8v) + 394: 52(i8vec2) Load 352(i8v) + 395: 52(i8vec2) SNegate 394 + 396: 52(i8vec2) Load 352(i8v) + 397: 52(i8vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 393 395 396 + Store 352(i8v) 397 + 398: 199(i8vec3) Load 365(u8v) + 399: 36(int8_t) Load 367(u8) + 400: 36(int8_t) SNegate 399 + 401: 36(int8_t) Load 367(u8) + 402: 199(i8vec3) CompositeConstruct 400 400 400 + 403: 199(i8vec3) CompositeConstruct 401 401 401 + 404: 199(i8vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 398 402 403 + Store 365(u8v) 404 + 405: 199(i8vec3) Load 365(u8v) + 406: 199(i8vec3) Load 365(u8v) + 407: 199(i8vec3) SNegate 406 + 408: 199(i8vec3) Load 365(u8v) + 409: 199(i8vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 405 407 408 + Store 365(u8v) 409 + 410: 15(ptr) AccessChain 352(i8v) 286 + 411: 14(int8_t) Load 410 + 412: 15(ptr) AccessChain 352(i8v) 270 + 413: 14(int8_t) Load 412 + 415: 14(int8_t) Select 414 413 411 + Store 355(i8) 415 + 416: 14(int8_t) Load 355(i8) + 417: 52(i8vec2) CompositeConstruct 416 416 + 418: 14(int8_t) Load 355(i8) + 419: 14(int8_t) SNegate 418 + 420: 52(i8vec2) CompositeConstruct 419 419 + 423: 52(i8vec2) Select 422 420 417 + Store 352(i8v) 423 + 424: 37(ptr) AccessChain 365(u8v) 286 + 425: 36(int8_t) Load 424 + 426: 37(ptr) AccessChain 365(u8v) 270 + 427: 36(int8_t) Load 426 + 428: 36(int8_t) Select 414 427 425 + Store 367(u8) 428 + 429: 36(int8_t) Load 367(u8) + 430: 199(i8vec3) CompositeConstruct 429 429 429 + 431: 36(int8_t) Load 367(u8) + 432: 36(int8_t) SNegate 431 + 433: 199(i8vec3) CompositeConstruct 432 432 432 + 436: 199(i8vec3) Select 435 433 430 + Store 365(u8v) 436 + 438: 52(i8vec2) Load 352(i8v) + 439: 57(int16_t) Bitcast 438 + Store 437(i16) 439 + 444: 441(i8vec4) Load 443(i8v4) + 445: 27(int) Bitcast 444 + Store 440(i32) 445 + 449: 49(i8vec2) Load 448(u8v2) + 450: 64(int16_t) Bitcast 449 + Store 447(u16) 450 + 455: 452(i8vec4) Load 454(u8v4) + 456: 17(int) Bitcast 455 + Store 451(u32) 456 + 457: 57(int16_t) Load 437(i16) + 458: 52(i8vec2) Bitcast 457 + Store 352(i8v) 458 + 459: 27(int) Load 440(i32) + 460: 441(i8vec4) Bitcast 459 + Store 443(i8v4) 460 + 461: 64(int16_t) Load 447(u16) + 462: 49(i8vec2) Bitcast 461 + Store 448(u8v2) 462 + 463: 17(int) Load 451(u32) + 464: 452(i8vec4) Bitcast 463 + Store 454(u8v4) 464 + 467: 199(i8vec3) Load 365(u8v) + 468: 36(int8_t) Load 367(u8) + 469: 199(i8vec3) CompositeConstruct 468 468 468 + 470: 434(bvec3) ULessThan 467 469 + Store 466(bv) 470 + 471: 52(i8vec2) Load 352(i8v) + 472: 14(int8_t) Load 355(i8) + 473: 52(i8vec2) CompositeConstruct 472 472 + 474: 172(bvec2) SLessThan 471 473 + 475: 284(ptr) AccessChain 466(bv) 286 + 476: 171(bool) CompositeExtract 474 0 Store 475 476 - 477: 190(i8vec3) Load 351(u8v) - 478: 36(int8_t) Load 353(u8) - 479: 190(i8vec3) CompositeConstruct 478 478 478 - 480: 420(bvec3) UGreaterThan 477 479 - Store 452(bv) 480 - 481: 52(i8vec2) Load 338(i8v) - 482: 14(int8_t) Load 341(i8) - 483: 52(i8vec2) CompositeConstruct 482 482 - 484: 172(bvec2) SGreaterThan 481 483 - 485: 275(ptr) AccessChain 452(bv) 277 - 486: 171(bool) CompositeExtract 484 0 - Store 485 486 - 487: 275(ptr) AccessChain 452(bv) 261 - 488: 171(bool) CompositeExtract 484 1 + 477: 284(ptr) AccessChain 466(bv) 270 + 478: 171(bool) CompositeExtract 474 1 + Store 477 478 + 479: 199(i8vec3) Load 365(u8v) + 480: 36(int8_t) Load 367(u8) + 481: 199(i8vec3) CompositeConstruct 480 480 480 + 482: 434(bvec3) ULessThanEqual 479 481 + Store 466(bv) 482 + 483: 52(i8vec2) Load 352(i8v) + 484: 14(int8_t) Load 355(i8) + 485: 52(i8vec2) CompositeConstruct 484 484 + 486: 172(bvec2) SLessThanEqual 483 485 + 487: 284(ptr) AccessChain 466(bv) 286 + 488: 171(bool) CompositeExtract 486 0 Store 487 488 - 489: 190(i8vec3) Load 351(u8v) - 490: 36(int8_t) Load 353(u8) - 491: 190(i8vec3) CompositeConstruct 490 490 490 - 492: 420(bvec3) UGreaterThanEqual 489 491 - Store 452(bv) 492 - 493: 52(i8vec2) Load 338(i8v) - 494: 14(int8_t) Load 341(i8) - 495: 52(i8vec2) CompositeConstruct 494 494 - 496: 172(bvec2) SGreaterThanEqual 493 495 - 497: 275(ptr) AccessChain 452(bv) 277 - 498: 171(bool) CompositeExtract 496 0 - Store 497 498 - 499: 275(ptr) AccessChain 452(bv) 261 - 500: 171(bool) CompositeExtract 496 1 + 489: 284(ptr) AccessChain 466(bv) 270 + 490: 171(bool) CompositeExtract 486 1 + Store 489 490 + 491: 199(i8vec3) Load 365(u8v) + 492: 36(int8_t) Load 367(u8) + 493: 199(i8vec3) CompositeConstruct 492 492 492 + 494: 434(bvec3) UGreaterThan 491 493 + Store 466(bv) 494 + 495: 52(i8vec2) Load 352(i8v) + 496: 14(int8_t) Load 355(i8) + 497: 52(i8vec2) CompositeConstruct 496 496 + 498: 172(bvec2) SGreaterThan 495 497 + 499: 284(ptr) AccessChain 466(bv) 286 + 500: 171(bool) CompositeExtract 498 0 Store 499 500 - 501: 190(i8vec3) Load 351(u8v) - 502: 36(int8_t) Load 353(u8) - 503: 190(i8vec3) CompositeConstruct 502 502 502 - 504: 420(bvec3) IEqual 501 503 - Store 452(bv) 504 - 505: 52(i8vec2) Load 338(i8v) - 506: 14(int8_t) Load 341(i8) - 507: 52(i8vec2) CompositeConstruct 506 506 - 508: 172(bvec2) IEqual 505 507 - 509: 275(ptr) AccessChain 452(bv) 277 - 510: 171(bool) CompositeExtract 508 0 - Store 509 510 - 511: 275(ptr) AccessChain 452(bv) 261 - 512: 171(bool) CompositeExtract 508 1 + 501: 284(ptr) AccessChain 466(bv) 270 + 502: 171(bool) CompositeExtract 498 1 + Store 501 502 + 503: 199(i8vec3) Load 365(u8v) + 504: 36(int8_t) Load 367(u8) + 505: 199(i8vec3) CompositeConstruct 504 504 504 + 506: 434(bvec3) UGreaterThanEqual 503 505 + Store 466(bv) 506 + 507: 52(i8vec2) Load 352(i8v) + 508: 14(int8_t) Load 355(i8) + 509: 52(i8vec2) CompositeConstruct 508 508 + 510: 172(bvec2) SGreaterThanEqual 507 509 + 511: 284(ptr) AccessChain 466(bv) 286 + 512: 171(bool) CompositeExtract 510 0 Store 511 512 - 513: 190(i8vec3) Load 351(u8v) - 514: 36(int8_t) Load 353(u8) - 515: 190(i8vec3) CompositeConstruct 514 514 514 - 516: 420(bvec3) INotEqual 513 515 - Store 452(bv) 516 - 517: 52(i8vec2) Load 338(i8v) - 518: 14(int8_t) Load 341(i8) - 519: 52(i8vec2) CompositeConstruct 518 518 - 520: 172(bvec2) INotEqual 517 519 - 521: 275(ptr) AccessChain 452(bv) 277 - 522: 171(bool) CompositeExtract 520 0 - Store 521 522 - 523: 275(ptr) AccessChain 452(bv) 261 - 524: 171(bool) CompositeExtract 520 1 + 513: 284(ptr) AccessChain 466(bv) 270 + 514: 171(bool) CompositeExtract 510 1 + Store 513 514 + 515: 199(i8vec3) Load 365(u8v) + 516: 36(int8_t) Load 367(u8) + 517: 199(i8vec3) CompositeConstruct 516 516 516 + 518: 434(bvec3) IEqual 515 517 + Store 466(bv) 518 + 519: 52(i8vec2) Load 352(i8v) + 520: 14(int8_t) Load 355(i8) + 521: 52(i8vec2) CompositeConstruct 520 520 + 522: 172(bvec2) IEqual 519 521 + 523: 284(ptr) AccessChain 466(bv) 286 + 524: 171(bool) CompositeExtract 522 0 Store 523 524 + 525: 284(ptr) AccessChain 466(bv) 270 + 526: 171(bool) CompositeExtract 522 1 + Store 525 526 + 527: 199(i8vec3) Load 365(u8v) + 528: 36(int8_t) Load 367(u8) + 529: 199(i8vec3) CompositeConstruct 528 528 528 + 530: 434(bvec3) INotEqual 527 529 + Store 466(bv) 530 + 531: 52(i8vec2) Load 352(i8v) + 532: 14(int8_t) Load 355(i8) + 533: 52(i8vec2) CompositeConstruct 532 532 + 534: 172(bvec2) INotEqual 531 533 + 535: 284(ptr) AccessChain 466(bv) 286 + 536: 171(bool) CompositeExtract 534 0 + Store 535 536 + 537: 284(ptr) AccessChain 466(bv) 270 + 538: 171(bool) CompositeExtract 534 1 + Store 537 538 Return FunctionEnd diff --git a/Test/baseResults/spv.intrinsicsSpecConst.vert.out b/Test/baseResults/spv.intrinsicsSpecConst.vert.out new file mode 100644 index 00000000..11751d64 --- /dev/null +++ b/Test/baseResults/spv.intrinsicsSpecConst.vert.out @@ -0,0 +1,35 @@ +spv.intrinsicsSpecConst.vert +Validation failed +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 13 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" 10 + ExecutionModeId 4 DenormFlushToZero 7 + Source GLSL 450 + SourceExtension "GL_EXT_spirv_intrinsics" + Name 4 "main" + Name 7 "targetWidth" + Name 10 "pointSize" + Name 11 "builtIn" + Decorate 7(targetWidth) SpecId 5 + Decorate 10(pointSize) Location 0 + Decorate 11(builtIn) SpecId 6 + DecorateId 10(pointSize) BuiltIn 11(builtIn) + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7(targetWidth): 6(int) SpecConstant 32 + 8: TypeFloat 32 + 9: TypePointer Output 8(float) + 10(pointSize): 9(ptr) Variable Output + 11(builtIn): 6(int) SpecConstant 1 + 12: 8(float) Constant 1082130432 + 4(main): 2 Function None 3 + 5: Label + Store 10(pointSize) 12 + Return + FunctionEnd diff --git a/Test/baseResults/spv.intrinsicsSpirvLiteral.vert.out b/Test/baseResults/spv.intrinsicsSpirvLiteral.vert.out index af4ac167..68ad949b 100644 --- a/Test/baseResults/spv.intrinsicsSpirvLiteral.vert.out +++ b/Test/baseResults/spv.intrinsicsSpirvLiteral.vert.out @@ -1,4 +1,5 @@ spv.intrinsicsSpirvLiteral.vert +Validation failed // Module Version 10000 // Generated by (magic number): 8000a // Id's are bound by 12 diff --git a/Test/baseResults/spv.precise.tese.out b/Test/baseResults/spv.precise.tese.out index a23b0739..7db4ed01 100644 --- a/Test/baseResults/spv.precise.tese.out +++ b/Test/baseResults/spv.precise.tese.out @@ -36,10 +36,6 @@ spv.precise.tese Decorate 43 NoContraction Decorate 62(in_f_color) RelaxedPrecision Decorate 62(in_f_color) Location 0 - Decorate 67 RelaxedPrecision - Decorate 68 RelaxedPrecision - Decorate 69 RelaxedPrecision - Decorate 70 RelaxedPrecision Decorate 97 NoContraction Decorate 99 NoContraction Decorate 101 NoContraction diff --git a/Test/baseResults/spv.shaderBallot.comp.out b/Test/baseResults/spv.shaderBallot.comp.out index 93385297..2a0106e6 100644 --- a/Test/baseResults/spv.shaderBallot.comp.out +++ b/Test/baseResults/spv.shaderBallot.comp.out @@ -1,7 +1,7 @@ spv.shaderBallot.comp // Module Version 10000 // Generated by (magic number): 8000a -// Id's are bound by 343 +// Id's are bound by 397 Capability Shader Capability Int64 @@ -42,7 +42,7 @@ spv.shaderBallot.comp Decorate 72(Buffers) BufferBlock Decorate 75(data) DescriptorSet 0 Decorate 75(data) Binding 0 - Decorate 342 BuiltIn WorkgroupSize + Decorate 396 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 @@ -89,8 +89,8 @@ spv.shaderBallot.comp 196: TypePointer Uniform 6(int) 203: TypePointer Uniform 20(ivec4) 218: TypeVector 6(int) 3 - 341: 6(int) Constant 8 - 342: 218(ivec3) ConstantComposite 341 341 100 + 395: 6(int) Constant 8 + 396: 218(ivec3) ConstantComposite 395 395 100 4(main): 2 Function None 3 5: Label 8(invocation): 7(ptr) Variable Function @@ -329,107 +329,161 @@ spv.shaderBallot.comp 257: 88(ptr) AccessChain 75(data) 86 77 258: 69(fvec4) Load 257 259: 87(fvec2) VectorShuffle 258 258 0 1 - 260: 87(fvec2) SubgroupFirstInvocationKHR 259 - 261: 79(ptr) AccessChain 75(data) 256 77 78 - 262: 68(float) CompositeExtract 260 0 - Store 261 262 - 263: 79(ptr) AccessChain 75(data) 256 77 100 - 264: 68(float) CompositeExtract 260 1 - Store 263 264 - 265: 6(int) Load 8(invocation) - 266: 88(ptr) AccessChain 75(data) 104 77 - 267: 69(fvec4) Load 266 - 268: 105(fvec3) VectorShuffle 267 267 0 1 2 - 269: 105(fvec3) SubgroupFirstInvocationKHR 268 - 270: 79(ptr) AccessChain 75(data) 265 77 78 - 271: 68(float) CompositeExtract 269 0 - Store 270 271 - 272: 79(ptr) AccessChain 75(data) 265 77 100 - 273: 68(float) CompositeExtract 269 1 - Store 272 273 - 274: 79(ptr) AccessChain 75(data) 265 77 121 - 275: 68(float) CompositeExtract 269 2 - Store 274 275 - 276: 6(int) Load 8(invocation) - 277: 88(ptr) AccessChain 75(data) 125 77 - 278: 69(fvec4) Load 277 - 279: 69(fvec4) SubgroupFirstInvocationKHR 278 - 280: 88(ptr) AccessChain 75(data) 276 77 - Store 280 279 - 281: 6(int) Load 8(invocation) - 282: 140(ptr) AccessChain 75(data) 77 86 78 - 283: 70(int) Load 282 - 284: 70(int) SubgroupFirstInvocationKHR 283 - 285: 140(ptr) AccessChain 75(data) 281 86 78 - Store 285 284 + 260: 68(float) CompositeExtract 259 0 + 261: 68(float) SubgroupFirstInvocationKHR 260 + 262: 68(float) CompositeExtract 259 1 + 263: 68(float) SubgroupFirstInvocationKHR 262 + 264: 87(fvec2) CompositeConstruct 261 263 + 265: 79(ptr) AccessChain 75(data) 256 77 78 + 266: 68(float) CompositeExtract 264 0 + Store 265 266 + 267: 79(ptr) AccessChain 75(data) 256 77 100 + 268: 68(float) CompositeExtract 264 1 + Store 267 268 + 269: 6(int) Load 8(invocation) + 270: 88(ptr) AccessChain 75(data) 104 77 + 271: 69(fvec4) Load 270 + 272: 105(fvec3) VectorShuffle 271 271 0 1 2 + 273: 68(float) CompositeExtract 272 0 + 274: 68(float) SubgroupFirstInvocationKHR 273 + 275: 68(float) CompositeExtract 272 1 + 276: 68(float) SubgroupFirstInvocationKHR 275 + 277: 68(float) CompositeExtract 272 2 + 278: 68(float) SubgroupFirstInvocationKHR 277 + 279: 105(fvec3) CompositeConstruct 274 276 278 + 280: 79(ptr) AccessChain 75(data) 269 77 78 + 281: 68(float) CompositeExtract 279 0 + Store 280 281 + 282: 79(ptr) AccessChain 75(data) 269 77 100 + 283: 68(float) CompositeExtract 279 1 + Store 282 283 + 284: 79(ptr) AccessChain 75(data) 269 77 121 + 285: 68(float) CompositeExtract 279 2 + Store 284 285 286: 6(int) Load 8(invocation) - 287: 148(ptr) AccessChain 75(data) 86 86 - 288: 71(ivec4) Load 287 - 289: 147(ivec2) VectorShuffle 288 288 0 1 - 290: 147(ivec2) SubgroupFirstInvocationKHR 289 - 291: 140(ptr) AccessChain 75(data) 286 86 78 - 292: 70(int) CompositeExtract 290 0 - Store 291 292 - 293: 140(ptr) AccessChain 75(data) 286 86 100 - 294: 70(int) CompositeExtract 290 1 - Store 293 294 - 295: 6(int) Load 8(invocation) - 296: 148(ptr) AccessChain 75(data) 104 86 - 297: 71(ivec4) Load 296 - 298: 163(ivec3) VectorShuffle 297 297 0 1 2 - 299: 163(ivec3) SubgroupFirstInvocationKHR 298 - 300: 140(ptr) AccessChain 75(data) 295 86 78 - 301: 70(int) CompositeExtract 299 0 - Store 300 301 - 302: 140(ptr) AccessChain 75(data) 295 86 100 - 303: 70(int) CompositeExtract 299 1 - Store 302 303 - 304: 140(ptr) AccessChain 75(data) 295 86 121 - 305: 70(int) CompositeExtract 299 2 - Store 304 305 - 306: 6(int) Load 8(invocation) - 307: 148(ptr) AccessChain 75(data) 125 86 - 308: 71(ivec4) Load 307 - 309: 71(ivec4) SubgroupFirstInvocationKHR 308 - 310: 148(ptr) AccessChain 75(data) 306 86 - Store 310 309 - 311: 6(int) Load 8(invocation) - 312: 196(ptr) AccessChain 75(data) 77 104 78 - 313: 6(int) Load 312 - 314: 6(int) SubgroupFirstInvocationKHR 313 - 315: 196(ptr) AccessChain 75(data) 311 104 78 - Store 315 314 - 316: 6(int) Load 8(invocation) - 317: 203(ptr) AccessChain 75(data) 86 104 - 318: 20(ivec4) Load 317 - 319: 26(ivec2) VectorShuffle 318 318 0 1 - 320: 26(ivec2) SubgroupFirstInvocationKHR 319 - 321: 196(ptr) AccessChain 75(data) 316 104 78 - 322: 6(int) CompositeExtract 320 0 - Store 321 322 - 323: 196(ptr) AccessChain 75(data) 316 104 100 - 324: 6(int) CompositeExtract 320 1 - Store 323 324 - 325: 6(int) Load 8(invocation) - 326: 203(ptr) AccessChain 75(data) 104 104 - 327: 20(ivec4) Load 326 - 328: 218(ivec3) VectorShuffle 327 327 0 1 2 - 329: 218(ivec3) SubgroupFirstInvocationKHR 328 - 330: 196(ptr) AccessChain 75(data) 325 104 78 - 331: 6(int) CompositeExtract 329 0 + 287: 88(ptr) AccessChain 75(data) 125 77 + 288: 69(fvec4) Load 287 + 289: 68(float) CompositeExtract 288 0 + 290: 68(float) SubgroupFirstInvocationKHR 289 + 291: 68(float) CompositeExtract 288 1 + 292: 68(float) SubgroupFirstInvocationKHR 291 + 293: 68(float) CompositeExtract 288 2 + 294: 68(float) SubgroupFirstInvocationKHR 293 + 295: 68(float) CompositeExtract 288 3 + 296: 68(float) SubgroupFirstInvocationKHR 295 + 297: 69(fvec4) CompositeConstruct 290 292 294 296 + 298: 88(ptr) AccessChain 75(data) 286 77 + Store 298 297 + 299: 6(int) Load 8(invocation) + 300: 140(ptr) AccessChain 75(data) 77 86 78 + 301: 70(int) Load 300 + 302: 70(int) SubgroupFirstInvocationKHR 301 + 303: 140(ptr) AccessChain 75(data) 299 86 78 + Store 303 302 + 304: 6(int) Load 8(invocation) + 305: 148(ptr) AccessChain 75(data) 86 86 + 306: 71(ivec4) Load 305 + 307: 147(ivec2) VectorShuffle 306 306 0 1 + 308: 70(int) CompositeExtract 307 0 + 309: 70(int) SubgroupFirstInvocationKHR 308 + 310: 70(int) CompositeExtract 307 1 + 311: 70(int) SubgroupFirstInvocationKHR 310 + 312: 147(ivec2) CompositeConstruct 309 311 + 313: 140(ptr) AccessChain 75(data) 304 86 78 + 314: 70(int) CompositeExtract 312 0 + Store 313 314 + 315: 140(ptr) AccessChain 75(data) 304 86 100 + 316: 70(int) CompositeExtract 312 1 + Store 315 316 + 317: 6(int) Load 8(invocation) + 318: 148(ptr) AccessChain 75(data) 104 86 + 319: 71(ivec4) Load 318 + 320: 163(ivec3) VectorShuffle 319 319 0 1 2 + 321: 70(int) CompositeExtract 320 0 + 322: 70(int) SubgroupFirstInvocationKHR 321 + 323: 70(int) CompositeExtract 320 1 + 324: 70(int) SubgroupFirstInvocationKHR 323 + 325: 70(int) CompositeExtract 320 2 + 326: 70(int) SubgroupFirstInvocationKHR 325 + 327: 163(ivec3) CompositeConstruct 322 324 326 + 328: 140(ptr) AccessChain 75(data) 317 86 78 + 329: 70(int) CompositeExtract 327 0 + Store 328 329 + 330: 140(ptr) AccessChain 75(data) 317 86 100 + 331: 70(int) CompositeExtract 327 1 Store 330 331 - 332: 196(ptr) AccessChain 75(data) 325 104 100 - 333: 6(int) CompositeExtract 329 1 + 332: 140(ptr) AccessChain 75(data) 317 86 121 + 333: 70(int) CompositeExtract 327 2 Store 332 333 - 334: 196(ptr) AccessChain 75(data) 325 104 121 - 335: 6(int) CompositeExtract 329 2 - Store 334 335 - 336: 6(int) Load 8(invocation) - 337: 203(ptr) AccessChain 75(data) 125 104 - 338: 20(ivec4) Load 337 - 339: 20(ivec4) SubgroupFirstInvocationKHR 338 - 340: 203(ptr) AccessChain 75(data) 336 104 - Store 340 339 + 334: 6(int) Load 8(invocation) + 335: 148(ptr) AccessChain 75(data) 125 86 + 336: 71(ivec4) Load 335 + 337: 70(int) CompositeExtract 336 0 + 338: 70(int) SubgroupFirstInvocationKHR 337 + 339: 70(int) CompositeExtract 336 1 + 340: 70(int) SubgroupFirstInvocationKHR 339 + 341: 70(int) CompositeExtract 336 2 + 342: 70(int) SubgroupFirstInvocationKHR 341 + 343: 70(int) CompositeExtract 336 3 + 344: 70(int) SubgroupFirstInvocationKHR 343 + 345: 71(ivec4) CompositeConstruct 338 340 342 344 + 346: 148(ptr) AccessChain 75(data) 334 86 + Store 346 345 + 347: 6(int) Load 8(invocation) + 348: 196(ptr) AccessChain 75(data) 77 104 78 + 349: 6(int) Load 348 + 350: 6(int) SubgroupFirstInvocationKHR 349 + 351: 196(ptr) AccessChain 75(data) 347 104 78 + Store 351 350 + 352: 6(int) Load 8(invocation) + 353: 203(ptr) AccessChain 75(data) 86 104 + 354: 20(ivec4) Load 353 + 355: 26(ivec2) VectorShuffle 354 354 0 1 + 356: 6(int) CompositeExtract 355 0 + 357: 6(int) SubgroupFirstInvocationKHR 356 + 358: 6(int) CompositeExtract 355 1 + 359: 6(int) SubgroupFirstInvocationKHR 358 + 360: 26(ivec2) CompositeConstruct 357 359 + 361: 196(ptr) AccessChain 75(data) 352 104 78 + 362: 6(int) CompositeExtract 360 0 + Store 361 362 + 363: 196(ptr) AccessChain 75(data) 352 104 100 + 364: 6(int) CompositeExtract 360 1 + Store 363 364 + 365: 6(int) Load 8(invocation) + 366: 203(ptr) AccessChain 75(data) 104 104 + 367: 20(ivec4) Load 366 + 368: 218(ivec3) VectorShuffle 367 367 0 1 2 + 369: 6(int) CompositeExtract 368 0 + 370: 6(int) SubgroupFirstInvocationKHR 369 + 371: 6(int) CompositeExtract 368 1 + 372: 6(int) SubgroupFirstInvocationKHR 371 + 373: 6(int) CompositeExtract 368 2 + 374: 6(int) SubgroupFirstInvocationKHR 373 + 375: 218(ivec3) CompositeConstruct 370 372 374 + 376: 196(ptr) AccessChain 75(data) 365 104 78 + 377: 6(int) CompositeExtract 375 0 + Store 376 377 + 378: 196(ptr) AccessChain 75(data) 365 104 100 + 379: 6(int) CompositeExtract 375 1 + Store 378 379 + 380: 196(ptr) AccessChain 75(data) 365 104 121 + 381: 6(int) CompositeExtract 375 2 + Store 380 381 + 382: 6(int) Load 8(invocation) + 383: 203(ptr) AccessChain 75(data) 125 104 + 384: 20(ivec4) Load 383 + 385: 6(int) CompositeExtract 384 0 + 386: 6(int) SubgroupFirstInvocationKHR 385 + 387: 6(int) CompositeExtract 384 1 + 388: 6(int) SubgroupFirstInvocationKHR 387 + 389: 6(int) CompositeExtract 384 2 + 390: 6(int) SubgroupFirstInvocationKHR 389 + 391: 6(int) CompositeExtract 384 3 + 392: 6(int) SubgroupFirstInvocationKHR 391 + 393: 20(ivec4) CompositeConstruct 386 388 390 392 + 394: 203(ptr) AccessChain 75(data) 382 104 + Store 394 393 Branch 67 67: Label Return diff --git a/Test/baseResults/spv.subgroup.frag.out b/Test/baseResults/spv.subgroup.frag.out index ad115863..a3e427f0 100644 --- a/Test/baseResults/spv.subgroup.frag.out +++ b/Test/baseResults/spv.subgroup.frag.out @@ -24,6 +24,7 @@ spv.subgroup.frag Decorate 13(gl_SubgroupInvocationID) Flat Decorate 13(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 14 RelaxedPrecision + Decorate 16 RelaxedPrecision 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.subgroup.geom.out b/Test/baseResults/spv.subgroup.geom.out index c866f8ec..27f05b2f 100644 --- a/Test/baseResults/spv.subgroup.geom.out +++ b/Test/baseResults/spv.subgroup.geom.out @@ -33,6 +33,7 @@ spv.subgroup.geom Decorate 20(gl_SubgroupInvocationID) RelaxedPrecision Decorate 20(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 21 RelaxedPrecision + Decorate 23 RelaxedPrecision 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.subgroup.tesc.out b/Test/baseResults/spv.subgroup.tesc.out index ed6b5c1e..8322a4a1 100644 --- a/Test/baseResults/spv.subgroup.tesc.out +++ b/Test/baseResults/spv.subgroup.tesc.out @@ -30,6 +30,7 @@ spv.subgroup.tesc Decorate 20(gl_SubgroupInvocationID) RelaxedPrecision Decorate 20(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 21 RelaxedPrecision + Decorate 23 RelaxedPrecision 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.subgroup.tese.out b/Test/baseResults/spv.subgroup.tese.out index 70cdc962..360f98be 100644 --- a/Test/baseResults/spv.subgroup.tese.out +++ b/Test/baseResults/spv.subgroup.tese.out @@ -32,6 +32,7 @@ spv.subgroup.tese Decorate 20(gl_SubgroupInvocationID) RelaxedPrecision Decorate 20(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 21 RelaxedPrecision + Decorate 23 RelaxedPrecision 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.subgroup.vert.out b/Test/baseResults/spv.subgroup.vert.out index 34b090d4..6de8a0ae 100644 --- a/Test/baseResults/spv.subgroup.vert.out +++ b/Test/baseResults/spv.subgroup.vert.out @@ -29,6 +29,7 @@ spv.subgroup.vert Decorate 20(gl_SubgroupInvocationID) RelaxedPrecision Decorate 20(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 21 RelaxedPrecision + Decorate 23 RelaxedPrecision 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.uint.frag.out b/Test/baseResults/spv.uint.frag.out index c19064d4..7dbc3b37 100644 --- a/Test/baseResults/spv.uint.frag.out +++ b/Test/baseResults/spv.uint.frag.out @@ -75,6 +75,7 @@ spv.uint.frag Decorate 90 RelaxedPrecision Decorate 91 RelaxedPrecision Decorate 92 RelaxedPrecision + Decorate 93 RelaxedPrecision Decorate 97 RelaxedPrecision Decorate 98 RelaxedPrecision Decorate 101 RelaxedPrecision diff --git a/Test/baseResults/spv.viewportArray2.tesc.out b/Test/baseResults/spv.viewportArray2.tesc.out index 74235a57..e95ada49 100644 --- a/Test/baseResults/spv.viewportArray2.tesc.out +++ b/Test/baseResults/spv.viewportArray2.tesc.out @@ -1,8 +1,7 @@ spv.viewportArray2.tesc -Validation failed // Module Version 10000 // Generated by (magic number): 8000a -// Id's are bound by 25 +// Id's are bound by 23 Capability Tessellation Capability ShaderViewportIndexLayerNV @@ -11,23 +10,21 @@ Validation failed Extension "SPV_NV_viewport_array2" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint TessellationControl 4 "main" 14 16 22 24 + EntryPoint TessellationControl 4 "main" 14 16 22 ExecutionMode 4 OutputVertices 4 - Source GLSL 450 + Source GLSL 430 SourceExtension "GL_NV_viewport_array2" Name 4 "main" Name 10 "gl_PerVertex" MemberName 10(gl_PerVertex) 0 "gl_ViewportMask" Name 14 "gl_out" Name 16 "gl_InvocationID" - Name 22 "gl_ViewportIndex" - Name 24 "gl_Layer" + Name 22 "gl_Layer" MemberDecorate 10(gl_PerVertex) 0 BuiltIn ViewportMaskNV Decorate 10(gl_PerVertex) Block Decorate 16(gl_InvocationID) BuiltIn InvocationId - Decorate 22(gl_ViewportIndex) BuiltIn ViewportIndex - Decorate 24(gl_Layer) BuiltIn Layer - Decorate 24(gl_Layer) ViewportRelativeNV + Decorate 22(gl_Layer) BuiltIn Layer + Decorate 22(gl_Layer) ViewportRelativeNV 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 @@ -44,14 +41,11 @@ Validation failed 18: 6(int) Constant 0 19: 6(int) Constant 1 20: TypePointer Output 6(int) -22(gl_ViewportIndex): 20(ptr) Variable Output - 23: 6(int) Constant 2 - 24(gl_Layer): 20(ptr) Variable Output + 22(gl_Layer): 20(ptr) Variable Output 4(main): 2 Function None 3 5: Label 17: 6(int) Load 16(gl_InvocationID) 21: 20(ptr) AccessChain 14(gl_out) 17 18 18 Store 21 19 - Store 22(gl_ViewportIndex) 23 Return FunctionEnd diff --git a/Test/baseResults/uint.frag.out b/Test/baseResults/uint.frag.out index 3a12d6b7..ce6d02d3 100644 --- a/Test/baseResults/uint.frag.out +++ b/Test/baseResults/uint.frag.out @@ -134,7 +134,7 @@ ERROR: node is still EOpNull! 0:59 Condition 0:59 Compare Equal ( temp bool) 0:59 'shiftedii' ( temp mediump int) -0:59 Convert uint to int ( temp int) +0:59 Convert uint to int ( temp mediump int) 0:59 'shiftedui' ( temp mediump uint) 0:59 true case 0:60 move second child to first child ( temp mediump 4-component vector of uint) @@ -433,7 +433,7 @@ ERROR: node is still EOpNull! 0:59 Condition 0:59 Compare Equal ( temp bool) 0:59 'shiftedii' ( temp mediump int) -0:59 Convert uint to int ( temp int) +0:59 Convert uint to int ( temp mediump int) 0:59 'shiftedui' ( temp mediump uint) 0:59 true case 0:60 move second child to first child ( temp mediump 4-component vector of uint) diff --git a/Test/baseResults/vk.relaxed.changeSet.vert.out b/Test/baseResults/vk.relaxed.changeSet.vert.out index f6bce292..d2beff93 100755 --- a/Test/baseResults/vk.relaxed.changeSet.vert.out +++ b/Test/baseResults/vk.relaxed.changeSet.vert.out @@ -34,8 +34,8 @@ Shader version: 460 0:? 'Color' ( smooth out highp 4-component vector of float) 0:? 'UV' ( smooth out highp 2-component vector of float) 0:? 'anon@1' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) -0:? 'gl_VertexID' ( in int VertexIndex) -0:? 'gl_InstanceID' ( in int InstanceIndex) +0:? 'gl_VertexIndex' ( in int VertexIndex) +0:? 'gl_InstanceIndex' ( in int InstanceIndex) vk.relaxed.changeSet.frag Shader version: 460 @@ -108,8 +108,8 @@ Shader version: 460 0:? 'Color' ( smooth out highp 4-component vector of float) 0:? 'UV' ( smooth out highp 2-component vector of float) 0:? 'anon@1' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance, out 1-element array of float CullDistance gl_CullDistance}) -0:? 'gl_VertexID' ( in int VertexIndex) -0:? 'gl_InstanceID' ( in int InstanceIndex) +0:? 'gl_VertexIndex' ( in int VertexIndex) +0:? 'gl_InstanceIndex' ( in int InstanceIndex) Shader version: 460 gl_FragCoord origin is upper left 0:? Sequence @@ -162,8 +162,8 @@ gl_FragCoord origin is upper left MemberName 28(gl_DefaultUniformBlock) 0 "projectionMatrix" Name 30 "" Name 34 "aPos" - Name 44 "gl_VertexID" - Name 45 "gl_InstanceID" + Name 44 "gl_VertexIndex" + Name 45 "gl_InstanceIndex" Decorate 9(Color) Location 0 Decorate 11(aColor) Location 2 Decorate 15(UV) Location 1 @@ -180,8 +180,8 @@ gl_FragCoord origin is upper left Decorate 30 DescriptorSet 0 Decorate 30 Binding 0 Decorate 34(aPos) Location 0 - Decorate 44(gl_VertexID) BuiltIn VertexIndex - Decorate 45(gl_InstanceID) BuiltIn InstanceIndex + Decorate 44(gl_VertexIndex) BuiltIn VertexIndex + Decorate 45(gl_InstanceIndex) BuiltIn InstanceIndex 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -212,8 +212,8 @@ gl_FragCoord origin is upper left 36: 6(float) Constant 0 37: 6(float) Constant 1065353216 43: TypePointer Input 25(int) - 44(gl_VertexID): 43(ptr) Variable Input -45(gl_InstanceID): 43(ptr) Variable Input +44(gl_VertexIndex): 43(ptr) Variable Input +45(gl_InstanceIndex): 43(ptr) Variable Input 4(main): 2 Function None 3 5: Label 12: 7(fvec4) Load 11(aColor) diff --git a/Test/baseResults/vk.relaxed.errorcheck.vert.out b/Test/baseResults/vk.relaxed.errorcheck.vert.out index f19eae64..5c6ecf92 100644 --- a/Test/baseResults/vk.relaxed.errorcheck.vert.out +++ b/Test/baseResults/vk.relaxed.errorcheck.vert.out @@ -28,8 +28,8 @@ Shader version: 460 0:? Linker Objects 0:? 'io' (layout( location=0) smooth out highp 4-component vector of float) 0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp 2-component vector of float a}) -0:? 'gl_VertexID' ( in int VertexIndex) -0:? 'gl_InstanceID' ( in int InstanceIndex) +0:? 'gl_VertexIndex' ( in int VertexIndex) +0:? 'gl_InstanceIndex' ( in int InstanceIndex) vk.relaxed.errorcheck.frag Shader version: 460 @@ -94,8 +94,8 @@ Shader version: 460 0:? Linker Objects 0:? 'io' (layout( location=0) smooth out highp 4-component vector of float) 0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp 2-component vector of float a}) -0:? 'gl_VertexID' ( in int VertexIndex) -0:? 'gl_InstanceID' ( in int InstanceIndex) +0:? 'gl_VertexIndex' ( in int VertexIndex) +0:? 'gl_InstanceIndex' ( in int InstanceIndex) Shader version: 460 gl_FragCoord origin is upper left 0:? Sequence diff --git a/Test/baseResults/vk.relaxed.stagelink.vert.out b/Test/baseResults/vk.relaxed.stagelink.vert.out index a63f10c3..b9173f24 100644 --- a/Test/baseResults/vk.relaxed.stagelink.vert.out +++ b/Test/baseResults/vk.relaxed.stagelink.vert.out @@ -93,7 +93,9 @@ Shader version: 460 0:28 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b2, uniform highp 2-component vector of float b1, uniform highp 4-component vector of float c2, uniform highp 4-component vector of float d, uniform 4-element array of highp 4-component vector of float s}) 0:28 Constant: 0:28 5 (const uint) -0:28 'gl_VertexID' ( in int VertexIndex) +0:28 subtract ( temp int) +0:28 'gl_VertexIndex' ( in int VertexIndex) +0:28 'gl_VertexIndex' ( in int VertexIndex) 0:29 move second child to first child ( temp highp float) 0:29 direct index ( temp highp float) 0:29 'v' ( temp highp 4-component vector of float) @@ -105,7 +107,9 @@ Shader version: 460 0:29 Constant: 0:29 0 (const int) 0:29 Convert int to float ( temp highp float) -0:29 'gl_InstanceID' ( in highp int InstanceIndex) +0:29 subtract ( temp highp int) +0:29 'gl_InstanceIndex' ( in highp int InstanceIndex) +0:29 'gl_InstanceIndex' ( in highp int InstanceIndex) 0:30 move second child to first child ( temp highp 4-component vector of float) 0:30 'io' (layout( location=0) smooth out highp 4-component vector of float) 0:30 'v' ( temp highp 4-component vector of float) @@ -113,8 +117,8 @@ Shader version: 460 0:? 'io' (layout( location=0) smooth out highp 4-component vector of float) 0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b2, uniform highp 2-component vector of float b1, uniform highp 4-component vector of float c2, uniform highp 4-component vector of float d, uniform 4-element array of highp 4-component vector of float s}) 0:? 'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter3, coherent volatile buffer highp uint counter2}) -0:? 'gl_VertexID' ( in int VertexIndex) -0:? 'gl_InstanceID' ( in int InstanceIndex) +0:? 'gl_VertexIndex' ( in int VertexIndex) +0:? 'gl_InstanceIndex' ( in int InstanceIndex) vk.relaxed.stagelink.frag Shader version: 460 @@ -311,7 +315,9 @@ Shader version: 460 0:28 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b2, uniform highp 2-component vector of float b1, uniform highp 4-component vector of float c2, uniform highp 4-component vector of float d, uniform 4-element array of highp 4-component vector of float s}) 0:28 Constant: 0:28 5 (const uint) -0:28 'gl_VertexID' ( in int VertexIndex) +0:28 subtract ( temp int) +0:28 'gl_VertexIndex' ( in int VertexIndex) +0:28 'gl_VertexIndex' ( in int VertexIndex) 0:29 move second child to first child ( temp highp float) 0:29 direct index ( temp highp float) 0:29 'v' ( temp highp 4-component vector of float) @@ -323,7 +329,9 @@ Shader version: 460 0:29 Constant: 0:29 0 (const int) 0:29 Convert int to float ( temp highp float) -0:29 'gl_InstanceID' ( in highp int InstanceIndex) +0:29 subtract ( temp highp int) +0:29 'gl_InstanceIndex' ( in highp int InstanceIndex) +0:29 'gl_InstanceIndex' ( in highp int InstanceIndex) 0:30 move second child to first child ( temp highp 4-component vector of float) 0:30 'io' (layout( location=0) smooth out highp 4-component vector of float) 0:30 'v' ( temp highp 4-component vector of float) @@ -331,8 +339,8 @@ Shader version: 460 0:? 'io' (layout( location=0) smooth out highp 4-component vector of float) 0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b2, uniform highp 2-component vector of float b1, uniform highp 4-component vector of float c2, uniform highp 4-component vector of float d, uniform 4-element array of highp 4-component vector of float s}) 0:? 'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter3, coherent volatile buffer highp uint counter2}) -0:? 'gl_VertexID' ( in int VertexIndex) -0:? 'gl_InstanceID' ( in int InstanceIndex) +0:? 'gl_VertexIndex' ( in int VertexIndex) +0:? 'gl_InstanceIndex' ( in int InstanceIndex) Shader version: 460 gl_FragCoord origin is upper left 0:? Sequence @@ -428,12 +436,12 @@ gl_FragCoord origin is upper left // Module Version 10000 // Generated by (magic number): 8000a -// Id's are bound by 88 +// Id's are bound by 92 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 "main" 72 80 86 + EntryPoint Vertex 4 "main" 72 82 90 Source GLSL 460 Name 4 "main" Name 9 "foo(" @@ -454,9 +462,9 @@ gl_FragCoord origin is upper left MemberName 35(gl_DefaultUniformBlock) 6 "c1" Name 37 "" Name 67 "v" - Name 72 "gl_VertexID" - Name 80 "gl_InstanceID" - Name 86 "io" + Name 72 "gl_VertexIndex" + Name 82 "gl_InstanceIndex" + Name 90 "io" MemberDecorate 14(gl_AtomicCounterBlock_0) 0 Coherent MemberDecorate 14(gl_AtomicCounterBlock_0) 0 Volatile MemberDecorate 14(gl_AtomicCounterBlock_0) 0 Coherent @@ -483,9 +491,9 @@ gl_FragCoord origin is upper left Decorate 35(gl_DefaultUniformBlock) Block Decorate 37 DescriptorSet 0 Decorate 37 Binding 0 - Decorate 72(gl_VertexID) BuiltIn VertexIndex - Decorate 80(gl_InstanceID) BuiltIn InstanceIndex - Decorate 86(io) Location 0 + Decorate 72(gl_VertexIndex) BuiltIn VertexIndex + Decorate 82(gl_InstanceIndex) BuiltIn InstanceIndex + Decorate 90(io) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -517,31 +525,35 @@ gl_FragCoord origin is upper left 57: 17(int) Constant 4 70: 17(int) Constant 5 71: TypePointer Input 17(int) - 72(gl_VertexID): 71(ptr) Variable Input - 77: TypePointer Function 6(float) -80(gl_InstanceID): 71(ptr) Variable Input - 85: TypePointer Output 7(fvec4) - 86(io): 85(ptr) Variable Output +72(gl_VertexIndex): 71(ptr) Variable Input + 79: TypePointer Function 6(float) +82(gl_InstanceIndex): 71(ptr) Variable Input + 89: TypePointer Output 7(fvec4) + 90(io): 89(ptr) Variable Output 4(main): 2 Function None 3 5: Label 67(v): 30(ptr) Variable Function 68: 7(fvec4) FunctionCall 9(foo() Store 67(v) 68 69: 7(fvec4) Load 67(v) - 73: 17(int) Load 72(gl_VertexID) - 74: 38(ptr) AccessChain 37 70 73 - 75: 7(fvec4) Load 74 - 76: 7(fvec4) FAdd 69 75 - Store 67(v) 76 - 78: 77(ptr) AccessChain 67(v) 22 - 79: 6(float) Load 78 - 81: 17(int) Load 80(gl_InstanceID) - 82: 6(float) ConvertSToF 81 - 83: 6(float) FSub 79 82 - 84: 77(ptr) AccessChain 67(v) 22 - Store 84 83 - 87: 7(fvec4) Load 67(v) - Store 86(io) 87 + 73: 17(int) Load 72(gl_VertexIndex) + 74: 17(int) Load 72(gl_VertexIndex) + 75: 17(int) ISub 73 74 + 76: 38(ptr) AccessChain 37 70 75 + 77: 7(fvec4) Load 76 + 78: 7(fvec4) FAdd 69 77 + Store 67(v) 78 + 80: 79(ptr) AccessChain 67(v) 22 + 81: 6(float) Load 80 + 83: 17(int) Load 82(gl_InstanceIndex) + 84: 17(int) Load 82(gl_InstanceIndex) + 85: 17(int) ISub 83 84 + 86: 6(float) ConvertSToF 85 + 87: 6(float) FSub 81 86 + 88: 79(ptr) AccessChain 67(v) 22 + Store 88 87 + 91: 7(fvec4) Load 67(v) + Store 90(io) 91 Return FunctionEnd 9(foo(): 7(fvec4) Function None 8 diff --git a/Test/baseResults/vulkan.ast.vert.out b/Test/baseResults/vulkan.ast.vert.out index 05a63553..68e892b4 100644 --- a/Test/baseResults/vulkan.ast.vert.out +++ b/Test/baseResults/vulkan.ast.vert.out @@ -19,10 +19,10 @@ Shader version: 450 0:14 Convert bool to float ( temp float) 0:14 'scbt' ( specialization-constant const bool) 0:14 true (const bool) -0:15 Convert int to float ( temp float) +0:15 Convert int to float ( temp highp float) 0:15 'sci2' ( specialization-constant const highp int) 0:15 2 (const int) -0:17 Convert float to int ( temp int) +0:17 Convert float to int ( temp highp int) 0:17 'scf1' ( specialization-constant const highp float) 0:17 1.000000 0:18 Convert bool to int ( specialization-constant const int) @@ -86,34 +86,34 @@ Shader version: 450 0:35 2 (const int) 0:35 'sci2' ( specialization-constant const highp int) 0:35 2 (const int) -0:37 Construct ivec2 ( specialization-constant const 2-component vector of int) +0:37 Construct ivec2 ( specialization-constant const highp 2-component vector of int) 0:37 'sci2' ( specialization-constant const highp int) 0:37 2 (const int) 0:37 'sci2' ( specialization-constant const highp int) 0:37 2 (const int) -0:38 Construct ivec2 ( temp 2-element array of 2-component vector of int) -0:38 Construct ivec2 ( specialization-constant const 2-component vector of int) +0:38 Construct ivec2 ( temp 2-element array of highp 2-component vector of int) +0:38 Construct ivec2 ( specialization-constant const highp 2-component vector of int) 0:38 'sci2' ( specialization-constant const highp int) 0:38 2 (const int) 0:38 'sci2' ( specialization-constant const highp int) 0:38 2 (const int) -0:38 Construct ivec2 ( specialization-constant const 2-component vector of int) +0:38 Construct ivec2 ( specialization-constant const highp 2-component vector of int) 0:38 'sci2' ( specialization-constant const highp int) 0:38 2 (const int) 0:38 'sci2' ( specialization-constant const highp int) 0:38 2 (const int) -0:40 Construct vec2 ( specialization-constant const 2-component vector of float) +0:40 Construct vec2 ( specialization-constant const highp 2-component vector of float) 0:40 'scf1' ( specialization-constant const highp float) 0:40 1.000000 0:40 'scf1' ( specialization-constant const highp float) 0:40 1.000000 -0:41 Construct vec2 ( temp 2-element array of 2-component vector of float) -0:41 Construct vec2 ( specialization-constant const 2-component vector of float) +0:41 Construct vec2 ( temp 2-element array of highp 2-component vector of float) +0:41 Construct vec2 ( specialization-constant const highp 2-component vector of float) 0:41 'scf1' ( specialization-constant const highp float) 0:41 1.000000 0:41 'scf1' ( specialization-constant const highp float) 0:41 1.000000 -0:41 Construct vec2 ( specialization-constant const 2-component vector of float) +0:41 Construct vec2 ( specialization-constant const highp 2-component vector of float) 0:41 'scf1' ( specialization-constant const highp float) 0:41 1.000000 0:41 'scf1' ( specialization-constant const highp float) @@ -150,10 +150,10 @@ Shader version: 450 0:14 Convert bool to float ( temp float) 0:14 'scbt' ( specialization-constant const bool) 0:14 true (const bool) -0:15 Convert int to float ( temp float) +0:15 Convert int to float ( temp highp float) 0:15 'sci2' ( specialization-constant const highp int) 0:15 2 (const int) -0:17 Convert float to int ( temp int) +0:17 Convert float to int ( temp highp int) 0:17 'scf1' ( specialization-constant const highp float) 0:17 1.000000 0:18 Convert bool to int ( specialization-constant const int) @@ -217,34 +217,34 @@ Shader version: 450 0:35 2 (const int) 0:35 'sci2' ( specialization-constant const highp int) 0:35 2 (const int) -0:37 Construct ivec2 ( specialization-constant const 2-component vector of int) +0:37 Construct ivec2 ( specialization-constant const highp 2-component vector of int) 0:37 'sci2' ( specialization-constant const highp int) 0:37 2 (const int) 0:37 'sci2' ( specialization-constant const highp int) 0:37 2 (const int) -0:38 Construct ivec2 ( temp 2-element array of 2-component vector of int) -0:38 Construct ivec2 ( specialization-constant const 2-component vector of int) +0:38 Construct ivec2 ( temp 2-element array of highp 2-component vector of int) +0:38 Construct ivec2 ( specialization-constant const highp 2-component vector of int) 0:38 'sci2' ( specialization-constant const highp int) 0:38 2 (const int) 0:38 'sci2' ( specialization-constant const highp int) 0:38 2 (const int) -0:38 Construct ivec2 ( specialization-constant const 2-component vector of int) +0:38 Construct ivec2 ( specialization-constant const highp 2-component vector of int) 0:38 'sci2' ( specialization-constant const highp int) 0:38 2 (const int) 0:38 'sci2' ( specialization-constant const highp int) 0:38 2 (const int) -0:40 Construct vec2 ( specialization-constant const 2-component vector of float) +0:40 Construct vec2 ( specialization-constant const highp 2-component vector of float) 0:40 'scf1' ( specialization-constant const highp float) 0:40 1.000000 0:40 'scf1' ( specialization-constant const highp float) 0:40 1.000000 -0:41 Construct vec2 ( temp 2-element array of 2-component vector of float) -0:41 Construct vec2 ( specialization-constant const 2-component vector of float) +0:41 Construct vec2 ( temp 2-element array of highp 2-component vector of float) +0:41 Construct vec2 ( specialization-constant const highp 2-component vector of float) 0:41 'scf1' ( specialization-constant const highp float) 0:41 1.000000 0:41 'scf1' ( specialization-constant const highp float) 0:41 1.000000 -0:41 Construct vec2 ( specialization-constant const 2-component vector of float) +0:41 Construct vec2 ( specialization-constant const highp 2-component vector of float) 0:41 'scf1' ( specialization-constant const highp float) 0:41 1.000000 0:41 'scf1' ( specialization-constant const highp float) diff --git a/Test/baseResults/vulkan.frag.out b/Test/baseResults/vulkan.frag.out index e6208980..28134aed 100644 --- a/Test/baseResults/vulkan.frag.out +++ b/Test/baseResults/vulkan.frag.out @@ -24,37 +24,38 @@ ERROR: 0:39: 'push_constant' : can only be used with a uniform ERROR: 0:43: 'non-opaque uniforms outside a block' : not allowed when using GLSL for Vulkan ERROR: 0:43: 'push_constant' : can only be used with a block ERROR: 0:45: 'push_constant' : cannot declare a default, can only be used on a block -ERROR: 0:51: 'binding' : sampler/texture/image requires layout(binding=X) -ERROR: 0:52: 'binding' : sampler/texture/image requires layout(binding=X) -ERROR: 0:52: 'input_attachment_index' : can only be used with a subpass -ERROR: 0:53: 'binding' : sampler/texture/image requires layout(binding=X) -ERROR: 0:53: 'input_attachment_index' : can only be used with a subpass +ERROR: 0:46: 'binding' : cannot be used with push_constant ERROR: 0:54: 'binding' : sampler/texture/image requires layout(binding=X) -ERROR: 0:54: 'subpass' : requires an input_attachment_index layout qualifier ERROR: 0:55: 'binding' : sampler/texture/image requires layout(binding=X) -ERROR: 0:60: 'subpassLoadMS' : no matching overloaded function found -ERROR: 0:61: 'subpassLoad' : no matching overloaded function found +ERROR: 0:55: 'input_attachment_index' : can only be used with a subpass +ERROR: 0:56: 'binding' : sampler/texture/image requires layout(binding=X) +ERROR: 0:56: 'input_attachment_index' : can only be used with a subpass +ERROR: 0:57: 'binding' : sampler/texture/image requires layout(binding=X) +ERROR: 0:57: 'subpass' : requires an input_attachment_index layout qualifier +ERROR: 0:58: 'binding' : sampler/texture/image requires layout(binding=X) ERROR: 0:63: 'subpassLoadMS' : no matching overloaded function found -ERROR: 0:66: 'subroutine' : not allowed when generating SPIR-V -ERROR: 0:66: 'subroutine' : feature not yet implemented -ERROR: 0:67: 'subroutine' : not allowed when generating SPIR-V -ERROR: 0:67: 'subroutine' : feature not yet implemented -ERROR: 0:69: 'non-opaque uniforms outside a block' : not allowed when using GLSL for Vulkan -ERROR: 0:73: 'texture' : no matching overloaded function found -ERROR: 0:74: 'imageStore' : no matching overloaded function found -WARNING: 0:82: '' : all default precisions are highp; use precision statements to quiet warning, e.g.: +ERROR: 0:64: 'subpassLoad' : no matching overloaded function found +ERROR: 0:66: 'subpassLoadMS' : no matching overloaded function found +ERROR: 0:69: 'subroutine' : not allowed when generating SPIR-V +ERROR: 0:69: 'subroutine' : feature not yet implemented +ERROR: 0:70: 'subroutine' : not allowed when generating SPIR-V +ERROR: 0:70: 'subroutine' : feature not yet implemented +ERROR: 0:72: 'non-opaque uniforms outside a block' : not allowed when using GLSL for Vulkan +ERROR: 0:76: 'texture' : no matching overloaded function found +ERROR: 0:77: 'imageStore' : no matching overloaded function found +WARNING: 0:85: '' : all default precisions are highp; use precision statements to quiet warning, e.g.: "precision mediump int; precision highp float;" -ERROR: 0:91: 'call argument' : sampler constructor must appear at point of use -ERROR: 0:92: 'call argument' : sampler constructor must appear at point of use -ERROR: 0:93: ',' : sampler constructor must appear at point of use -ERROR: 0:94: ':' : wrong operand types: no operation ':' exists that takes a left-hand operand of type ' temp sampler2D' and a right operand of type ' temp sampler2D' (or there is no acceptable conversion) ERROR: 0:94: 'call argument' : sampler constructor must appear at point of use -ERROR: 0:96: 'gl_NumSamples' : undeclared identifier -ERROR: 0:101: 'noise1' : no matching overloaded function found -ERROR: 0:102: 'noise2' : no matching overloaded function found -ERROR: 0:103: 'noise3' : no matching overloaded function found -ERROR: 0:104: 'noise4' : no matching overloaded function found -ERROR: 53 compilation errors. No code generated. +ERROR: 0:95: 'call argument' : sampler constructor must appear at point of use +ERROR: 0:96: ',' : sampler constructor must appear at point of use +ERROR: 0:97: ':' : wrong operand types: no operation ':' exists that takes a left-hand operand of type ' temp sampler2D' and a right operand of type ' temp sampler2D' (or there is no acceptable conversion) +ERROR: 0:97: 'call argument' : sampler constructor must appear at point of use +ERROR: 0:99: 'gl_NumSamples' : undeclared identifier +ERROR: 0:104: 'noise1' : no matching overloaded function found +ERROR: 0:105: 'noise2' : no matching overloaded function found +ERROR: 0:106: 'noise3' : no matching overloaded function found +ERROR: 0:107: 'noise4' : no matching overloaded function found +ERROR: 54 compilation errors. No code generated. ERROR: Linking fragment stage: Only one push_constant block is allowed per stage diff --git a/Test/link.redeclareBuiltin.geom b/Test/link.redeclareBuiltin.geom new file mode 100644 index 00000000..a2ceff68 --- /dev/null +++ b/Test/link.redeclareBuiltin.geom @@ -0,0 +1,23 @@ +#version 410
+
+layout(triangles) in;
+layout(triangle_strip, max_vertices=3) out;
+
+in gl_PerVertex
+{
+ vec4 gl_Position;
+} gl_in[];
+
+void main()
+{
+ gl_Position = gl_in[0].gl_Position;
+ EmitVertex();
+
+ gl_Position = gl_in[1].gl_Position;
+ EmitVertex();
+
+ gl_Position = gl_in[2].gl_Position;
+ EmitVertex();
+
+ EndPrimitive();
+}
\ No newline at end of file diff --git a/Test/link.redeclareBuiltin.vert b/Test/link.redeclareBuiltin.vert new file mode 100644 index 00000000..7cda45c4 --- /dev/null +++ b/Test/link.redeclareBuiltin.vert @@ -0,0 +1,11 @@ +#version 410
+
+out gl_PerVertex
+{
+ vec4 gl_Position;
+};
+
+void main()
+{
+ gl_Position = vec4(1.0);
+}
\ No newline at end of file diff --git a/Test/link.tesselation.frag b/Test/link.tesselation.frag new file mode 100644 index 00000000..420384db --- /dev/null +++ b/Test/link.tesselation.frag @@ -0,0 +1,15 @@ +#version 440
+
+layout(location = 0) in Primitive
+{
+ vec2 texCoord;
+} IN;
+
+layout(location = 0) out vec4 oColor;
+
+layout(binding = 0) uniform sampler2D mytex;
+
+void main()
+{
+ oColor = texture(mytex, IN.texCoord);
+}
diff --git a/Test/link.tesselation.tesc b/Test/link.tesselation.tesc new file mode 100644 index 00000000..c47d2ad6 --- /dev/null +++ b/Test/link.tesselation.tesc @@ -0,0 +1,21 @@ +#version 440
+
+layout(location = 0) in Primitive
+{
+ vec2 texCoord;
+} IN[];
+
+layout(location = 0) out Primitive
+{
+ vec2 texCoord;
+} OUT[];
+
+layout(vertices = 3) out;
+void main()
+{
+ OUT[gl_InvocationID].texCoord = IN[gl_InvocationID].texCoord;
+
+ float tessLevel = 10.0;
+ gl_TessLevelOuter[gl_InvocationID] = tessLevel;
+ gl_TessLevelInner[0] = tessLevel;
+}
diff --git a/Test/link.tesselation.tese b/Test/link.tesselation.tese new file mode 100644 index 00000000..e1112920 --- /dev/null +++ b/Test/link.tesselation.tese @@ -0,0 +1,26 @@ +#version 440
+
+layout(location = 0) in Primitive
+{
+ vec2 texCoord;
+} IN[];
+
+layout(location = 0) out Primitive
+{
+ vec2 texCoord;
+} OUT;
+
+layout(triangles, fractional_odd_spacing) in;
+layout(cw) in;
+void main()
+{
+ float u = gl_TessCoord.x;
+ float v = gl_TessCoord.y;
+ float w = gl_TessCoord.z;
+
+ vec2 newUv = vec2( u * IN[0].texCoord + v * IN[1].texCoord + w * IN[2].texCoord);
+ OUT.texCoord = newUv;
+ gl_Position = gl_in[gl_PatchVerticesIn].gl_Position;
+}
+
+
diff --git a/Test/link.tesselation.vert b/Test/link.tesselation.vert new file mode 100644 index 00000000..daf35372 --- /dev/null +++ b/Test/link.tesselation.vert @@ -0,0 +1,16 @@ +#version 440
+
+layout(location = 0) in vec4 i_Pos;
+layout(location = 1) in vec2 i_Tex;
+
+layout(location = 0) out Primitive
+{
+ vec2 texCoord;
+} OUT;
+
+void main()
+{
+ gl_Position = i_Pos;
+ OUT.texCoord = i_Tex;
+}
+
diff --git a/Test/spv.1.4.OpEntryPoint.frag b/Test/spv.1.4.OpEntryPoint.frag index ef1235a4..a12b1b37 100644 --- a/Test/spv.1.4.OpEntryPoint.frag +++ b/Test/spv.1.4.OpEntryPoint.frag @@ -13,7 +13,7 @@ layout(binding = 1) buffer bbt { float f; } bufferv; -layout(binding = 2, push_constant) uniform pushB { +layout(push_constant) uniform pushB { int a; } pushv; diff --git a/Test/spv.float64.frag b/Test/spv.float64.frag index faaac236..6e9f22df 100644 --- a/Test/spv.float64.frag +++ b/Test/spv.float64.frag @@ -127,36 +127,12 @@ void typeCast() u64v = u64vec3(f64v); // float64 -> uint64 } -void builtinAngleTrigFuncs() -{ - f64vec4 f64v1, f64v2; - - f64v2 = radians(f64v1); - f64v2 = degrees(f64v1); - f64v2 = sin(f64v1); - f64v2 = cos(f64v1); - f64v2 = tan(f64v1); - f64v2 = asin(f64v1); - f64v2 = acos(f64v1); - f64v2 = atan(f64v1, f64v2); - f64v2 = atan(f64v1); - f64v2 = sinh(f64v1); - f64v2 = cosh(f64v1); - f64v2 = tanh(f64v1); - f64v2 = asinh(f64v1); - f64v2 = acosh(f64v1); - f64v2 = atanh(f64v1); -} +// Trig, pow, exp and log are not supported for f64 -void builtinExpFuncs() +void builtinTranscendentalFuncs() { f64vec2 f64v1, f64v2; - f64v2 = pow(f64v1, f64v2); - f64v2 = exp(f64v1); - f64v2 = log(f64v1); - f64v2 = exp2(f64v1); - f64v2 = log2(f64v1); f64v2 = sqrt(f64v1); f64v2 = inversesqrt(f64v1); } diff --git a/Test/spv.int16.frag b/Test/spv.int16.frag index 2feff4f8..26a8c9bd 100644 --- a/Test/spv.int16.frag +++ b/Test/spv.int16.frag @@ -116,6 +116,8 @@ void operators() int32_t i; int64_t i64; bool b; + float f; + float arr[4] = {1.0, 2.0, 3.0, 4.0}; // Unary u16v++; @@ -163,6 +165,9 @@ void operators() uv = u16v & uv; uv ^= i16; u16v = u16v ^ i16; + + // Index + f = arr[i16]; } void builtinFuncs() diff --git a/Test/spv.int8.frag b/Test/spv.int8.frag index 80702b75..bd3de17a 100644 --- a/Test/spv.int8.frag +++ b/Test/spv.int8.frag @@ -117,6 +117,8 @@ void operators() int32_t i; int16_t i16; bool b; + float arr[4] = {1.0, 2.0, 3.0, 4.0}; + float f; // Unary u8v++; @@ -164,6 +166,9 @@ void operators() uv = u8v & uv; uv ^= i8; u8v = u8v ^ i8; + + // Index + f = arr[i8]; } void builtinFuncs() diff --git a/Test/spv.intrinsicsSpecConst.vert b/Test/spv.intrinsicsSpecConst.vert new file mode 100644 index 00000000..19cc5ef4 --- /dev/null +++ b/Test/spv.intrinsicsSpecConst.vert @@ -0,0 +1,14 @@ +#version 450 core
+
+#extension GL_EXT_spirv_intrinsics: enable
+
+layout(constant_id = 5) const uint targetWidth = 32;
+spirv_execution_mode_id(4460/*=DenormFlushToZero*/, targetWidth);
+
+layout(constant_id = 6) const uint builtIn = 1;
+spirv_decorate_id(11/*=BuiltIn*/, builtIn) out float pointSize;
+
+void main()
+{
+ pointSize = 4.0;
+}
diff --git a/Test/spv.viewportArray2.tesc b/Test/spv.viewportArray2.tesc index 7fc208a4..24a1d8c9 100644 --- a/Test/spv.viewportArray2.tesc +++ b/Test/spv.viewportArray2.tesc @@ -1,4 +1,4 @@ -#version 450
+#version 430
#extension GL_NV_viewport_array2 :require
layout(vertices = 4) out;
@@ -12,5 +12,4 @@ layout (viewport_relative) out highp int gl_Layer; void main()
{
gl_out[gl_InvocationID].gl_ViewportMask[0] = 1;
- gl_ViewportIndex = 2;
}
diff --git a/Test/vk.relaxed.stagelink.vert b/Test/vk.relaxed.stagelink.vert index 52396ac5..d2ac6af6 100644 --- a/Test/vk.relaxed.stagelink.vert +++ b/Test/vk.relaxed.stagelink.vert @@ -25,7 +25,7 @@ vec4 foo() { void main() {
vec4 v = foo();
- v = v + s[gl_VertexID];
- v.x = v.x - float(gl_InstanceID);
+ v = v + s[gl_VertexID - gl_VertexIndex];
+ v.x = v.x - float(gl_InstanceID - gl_InstanceIndex);
io = v;
-}
\ No newline at end of file +}
diff --git a/Test/vulkan.frag b/Test/vulkan.frag index 46c14f31..25bfefec 100644 --- a/Test/vulkan.frag +++ b/Test/vulkan.frag @@ -43,6 +43,9 @@ layout(push_constant) buffer pcb { // ERROR, not on a buffer layout(push_constant) uniform float pcfloat; // ERROR 2X: not on a non-block, and non-opaque outside block
layout(push_constant) uniform; // ERROR, needs an object
+layout(binding=2, push_constant) uniform pcbnd1 { // ERROR, can't have binding
+ int a;
+} pcbnd1inst;
layout(std430, push_constant) uniform pcb1 { int a; } pcb1inst;
layout(push_constant) uniform pcb2 {
int a;
diff --git a/gen_extension_headers.py b/gen_extension_headers.py new file mode 100644 index 00000000..a787f9a9 --- /dev/null +++ b/gen_extension_headers.py @@ -0,0 +1,98 @@ +#!/usr/bin/env python + +# 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 +# +# http://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.
+
+import glob
+import sys
+import os
+
+def generate_main(glsl_files, output_header_file):
+ # Write commit ID to output header file
+ with open(output_header_file, "w") as header_file:
+ # Copyright Notice
+ header_string = '/***************************************************************************\n'
+ header_string += ' *\n'
+ header_string += ' * Copyright (c) 2015-2021 The Khronos Group Inc.\n'
+ header_string += ' * Copyright (c) 2015-2021 Valve Corporation\n'
+ header_string += ' * Copyright (c) 2015-2021 LunarG, Inc.\n'
+ header_string += ' * Copyright (c) 2015-2021 Google Inc.\n'
+ header_string += ' * Copyright (c) 2021 Advanced Micro Devices, Inc.All rights reserved.\n'
+ header_string += ' *\n'
+ header_string += ' ****************************************************************************/\n'
+ header_string += '#pragma once\n\n'
+ header_string += '#ifndef _INTRINSIC_EXTENSION_HEADER_H_\n'
+ header_string += '#define _INTRINSIC_EXTENSION_HEADER_H_\n\n'
+ header_file.write(header_string)
+
+ symbol_name_list = []
+
+ for i in glsl_files:
+ glsl_contents = open(i,"r").read()
+
+ filename = os.path.basename(i)
+ symbol_name = filename.split(".")[0]
+ symbol_name_list.append(symbol_name)
+ header_name = symbol_name + ".h"
+ header_str = 'std::string %s_GLSL = R"(\n%s\n)";\n' % (symbol_name, glsl_contents)
+ header_str += '\n'
+ header_file.write(header_str)
+
+ contents = ''
+ contents += '\n' + contents += 'std::string getIntrinsic(const char* const* shaders, int n) {\n' + contents += '\tstd::string shaderString = "";\n'; + + contents += '\tfor (int i = 0; i < n; i++) {\n' + + for symbol_name in symbol_name_list:
+ contents += '\t\tif (strstr(shaders[i], "%s") != NULL) {\n' % (symbol_name) + contents += '\t\t shaderString.append(%s_GLSL);\n' % (symbol_name) + contents += '\t\t}\n'
+ + contents += '\t}\n' + contents += '\treturn shaderString;\n'; + contents += '}\n'
+
+ contents += '\n#endif\n'
+ header_file.write(contents)
+
+def main():
+ if len(sys.argv) < 2: + raise Exception("Invalid number of arguments")
+
+ i = 0
+ while i < len(sys.argv): + opt = sys.argv[i] + i = i + 1 + + if opt == "-i" or opt == "-o": + if i == len(sys.argv): + raise Exception("Expected path after {}".format(opt)) + val = sys.argv[i] + i = i + 1 + if (opt == "-i"): + input_dir = val + elif (opt == "-o"): + output_file = val + else: + raise Exception("Unknown flag {}".format(opt))
+
+ glsl_files = glob.glob(input_dir + '/*.glsl')
+
+ # Generate main header
+ generate_main(glsl_files, output_file)
+
+if __name__ == '__main__':
+ main()
\ No newline at end of file diff --git a/glslang/CInterface/glslang_c_interface.cpp b/glslang/CInterface/glslang_c_interface.cpp index 2e04f53a..4fdeff7a 100644 --- a/glslang/CInterface/glslang_c_interface.cpp +++ b/glslang/CInterface/glslang_c_interface.cpp @@ -269,6 +269,8 @@ static glslang::EShTargetClientVersion c_shader_client_version(glslang_target_cl switch (client_version) { case GLSLANG_TARGET_VULKAN_1_1: return glslang::EShTargetVulkan_1_1; + case GLSLANG_TARGET_VULKAN_1_2: + return glslang::EShTargetVulkan_1_2; case GLSLANG_TARGET_OPENGL_450: return glslang::EShTargetOpenGL_450; default: diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt index dab5f8bf..d0394c86 100644 --- a/glslang/CMakeLists.txt +++ b/glslang/CMakeLists.txt @@ -35,14 +35,14 @@ if(WIN32) add_subdirectory(OSDependent/Windows) elseif(UNIX OR "${CMAKE_SYSTEM_NAME}" STREQUAL "Fuchsia") add_subdirectory(OSDependent/Unix) -else(WIN32) +else() message("unknown platform") -endif(WIN32) +endif() if(EMSCRIPTEN OR ENABLE_GLSLANG_JS) # May be enabled on non-Emscripten builds for binary-size testing. add_subdirectory(OSDependent/Web) -endif(EMSCRIPTEN OR ENABLE_GLSLANG_JS) +endif() ################################################################################ # GenericCodeGen @@ -129,7 +129,7 @@ if(ENABLE_HLSL) HLSL/hlslTokenStream.h HLSL/hlslGrammar.h HLSL/hlslParseables.h) -endif(ENABLE_HLSL) +endif() add_library(MachineIndependent STATIC ${MACHINEINDEPENDENT_SOURCES} ${MACHINEINDEPENDENT_HEADERS}) set_property(TARGET MachineIndependent PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -194,7 +194,7 @@ if(WIN32) source_group("MachineIndependent\\Preprocessor" REGULAR_EXPRESSION "MachineIndependent/preprocessor/*") source_group("HLSL" REGULAR_EXPRESSION "HLSL/*") source_group("CInterface" REGULAR_EXPRESSION "CInterface/*") -endif(WIN32) +endif() ################################################################################ # install @@ -225,4 +225,4 @@ if(ENABLE_GLSLANG_INSTALL) install(FILES ${GLSLANG_BUILD_INFO_H} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang) -endif(ENABLE_GLSLANG_INSTALL) +endif() diff --git a/glslang/ExtensionHeaders/GL_EXT_shader_realtime_clock.glsl b/glslang/ExtensionHeaders/GL_EXT_shader_realtime_clock.glsl new file mode 100644 index 00000000..f74df6fc --- /dev/null +++ b/glslang/ExtensionHeaders/GL_EXT_shader_realtime_clock.glsl @@ -0,0 +1,54 @@ +// +// Copyright (C) 2002-2005 3Dlabs Inc. Ltd. +// Copyright (C) 2013-2016 LunarG, Inc. +// Copyright (C) 2016-2020 Google, Inc. +// Modifications Copyright(C) 2021 Advanced Micro Devices, Inc.All rights reserved. +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// +// Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// +// Neither the name of 3Dlabs Inc. Ltd. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// + +#extension GL_EXT_spirv_intrinsics : enable +#extension GL_ARB_gpu_shader_int64 : enable + +uvec2 clockRealtime2x32EXT(void) { + spirv_instruction (extensions = ["SPV_KHR_shader_clock"], capabilities = [5055], id = 5056) + uvec2 clockRealtime2x32EXT_internal(uint scope); + + return clockRealtime2x32EXT_internal(1 /*Device scope*/); +} + +uint64_t clockRealtimeEXT(void) { + spirv_instruction (extensions = ["SPV_KHR_shader_clock"], capabilities = [5055], id = 5056) + uint64_t clockRealtimeEXT_internal(uint scope); + + return clockRealtimeEXT_internal(1 /*Device scope*/); +}
\ No newline at end of file diff --git a/glslang/HLSL/hlslParseHelper.cpp b/glslang/HLSL/hlslParseHelper.cpp index 02aac3c6..39b3ecac 100644 --- a/glslang/HLSL/hlslParseHelper.cpp +++ b/glslang/HLSL/hlslParseHelper.cpp @@ -4017,12 +4017,12 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType txsample->getSequence().push_back(txcombine); txsample->getSequence().push_back(argCoord); - if (argBias != nullptr) - txsample->getSequence().push_back(argBias); - if (argOffset != nullptr) txsample->getSequence().push_back(argOffset); + if (argBias != nullptr) + txsample->getSequence().push_back(argBias); + node = convertReturn(txsample, sampler); break; diff --git a/glslang/HLSL/hlslParseables.cpp b/glslang/HLSL/hlslParseables.cpp index 4673b460..15918dc3 100644 --- a/glslang/HLSL/hlslParseables.cpp +++ b/glslang/HLSL/hlslParseables.cpp @@ -665,8 +665,8 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c { "Sample", /*!O*/ "V4", nullptr, "%@,S,V", "FIU,S,F", EShLangPS, true }, { "Sample", /* O*/ "V4", nullptr, "%@,S,V,", "FIU,S,F,I", EShLangPS, true }, - { "SampleBias", /*!O*/ "V4", nullptr, "%@,S,V,S", "FIU,S,F,", EShLangPS, true }, - { "SampleBias", /* O*/ "V4", nullptr, "%@,S,V,S,V", "FIU,S,F,,I", EShLangPS, true }, + { "SampleBias", /*!O*/ "V4", nullptr, "%@,S,V,S", "FIU,S,F,F", EShLangPS, true }, + { "SampleBias", /* O*/ "V4", nullptr, "%@,S,V,S,V", "FIU,S,F,F,I", EShLangPS, true }, // TODO: FXC accepts int/uint samplers here. unclear what that means. { "SampleCmp", /*!O*/ "S", "F", "%@,S,V,S", "FIU,s,F,", EShLangPS, true }, diff --git a/glslang/Include/Common.h b/glslang/Include/Common.h index 1e47239a..e7b5e072 100644 --- a/glslang/Include/Common.h +++ b/glslang/Include/Common.h @@ -61,7 +61,7 @@ std::string to_string(const T& val) { } #endif -#if (defined(_MSC_VER) && _MSC_VER < 1900 /*vs2015*/) || defined MINGW_HAS_SECURE_API +#if (defined(_MSC_VER) && _MSC_VER < 1900 /*vs2015*/) || MINGW_HAS_SECURE_API #include <basetsd.h> #ifndef snprintf #define snprintf sprintf_s @@ -213,7 +213,7 @@ template <class T> T Max(const T a, const T b) { return a > b ? a : b; } // // Create a TString object from an integer. // -#if defined _MSC_VER || defined MINGW_HAS_SECURE_API +#if defined _MSC_VER || MINGW_HAS_SECURE_API inline const TString String(const int i, const int base = 10) { char text[16]; // 32 bit ints are at most 10 digits in base 10 diff --git a/glslang/Include/PoolAlloc.h b/glslang/Include/PoolAlloc.h index b8eccb88..1f5cac76 100644 --- a/glslang/Include/PoolAlloc.h +++ b/glslang/Include/PoolAlloc.h @@ -306,6 +306,8 @@ public: TPoolAllocator& getAllocator() const { return allocator; } + pool_allocator select_on_container_copy_construction() const { return pool_allocator{}; } + protected: pool_allocator& operator=(const pool_allocator&) { return *this; } TPoolAllocator& allocator; diff --git a/glslang/Include/SpirvIntrinsics.h b/glslang/Include/SpirvIntrinsics.h index e7a999d4..3c7d72ce 100644 --- a/glslang/Include/SpirvIntrinsics.h +++ b/glslang/Include/SpirvIntrinsics.h @@ -65,7 +65,7 @@ struct TSpirvExecutionMode { // spirv_execution_mode TMap<int, TVector<const TIntermConstantUnion*>> modes; // spirv_execution_mode_id - TMap<int, TVector<const TIntermConstantUnion*> > modeIds; + TMap<int, TVector<const TIntermTyped*> > modeIds; }; // SPIR-V decorations @@ -75,7 +75,7 @@ struct TSpirvDecorate { // spirv_decorate TMap<int, TVector<const TIntermConstantUnion*> > decorates; // spirv_decorate_id - TMap<int, TVector<const TIntermConstantUnion*> > decorateIds; + TMap<int, TVector<const TIntermTyped*>> decorateIds; // spirv_decorate_string TMap<int, TVector<const TIntermConstantUnion*> > decorateStrings; }; @@ -98,20 +98,12 @@ struct TSpirvInstruction { struct TSpirvTypeParameter { POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator()) - TSpirvTypeParameter(const TIntermConstantUnion* arg) { isConstant = true; constant = arg; } - TSpirvTypeParameter(const TType* arg) { isConstant = false; type = arg; } + TSpirvTypeParameter(const TIntermConstantUnion* arg) { constant = arg; } - bool operator==(const TSpirvTypeParameter& rhs) const - { - return isConstant == rhs.isConstant && ((isConstant && constant == rhs.constant) || (!isConstant && type == rhs.type)); - } + bool operator==(const TSpirvTypeParameter& rhs) const { return constant == rhs.constant; } bool operator!=(const TSpirvTypeParameter& rhs) const { return !operator==(rhs); } - bool isConstant; - union { - const TIntermConstantUnion* constant; - const TType* type; - }; + const TIntermConstantUnion* constant; }; typedef TVector<TSpirvTypeParameter> TSpirvTypeParameters; diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index a6bf191d..e87f2583 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -741,6 +741,16 @@ public: } } + bool isUniform() const + { + switch (storage) { + case EvqUniform: + return true; + default: + return false; + } + } + bool isIo() const { switch (storage) { @@ -2459,6 +2469,14 @@ public: if (*(*structure)[li].type != *(*right.structure)[ri].type) return false; } else { + // Skip hidden members + if ((*structure)[li].type->hiddenMember()) { + ri--; + continue; + } else if ((*right.structure)[ri].type->hiddenMember()) { + li--; + continue; + } // If one of the members is something that's inconsistently declared, skip over it // for now. if (isGLPerVertex) { @@ -2475,10 +2493,10 @@ public: } // If we get here, then there should only be inconsistently declared members left } else if (li < structure->size()) { - if (!isInconsistentGLPerVertexMember((*structure)[li].type->getFieldName())) + if (!(*structure)[li].type->hiddenMember() && !isInconsistentGLPerVertexMember((*structure)[li].type->getFieldName())) return false; } else { - if (!isInconsistentGLPerVertexMember((*right.structure)[ri].type->getFieldName())) + if (!(*right.structure)[ri].type->hiddenMember() && !isInconsistentGLPerVertexMember((*right.structure)[ri].type->getFieldName())) return false; } } diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index 1e6ab4aa..595bd623 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -1643,6 +1643,7 @@ public: ~TIntermAggregate() { delete pragmaTable; } virtual TIntermAggregate* getAsAggregate() { return this; } virtual const TIntermAggregate* getAsAggregate() const { return this; } + virtual void updatePrecision(); virtual void setOperator(TOperator o) { op = o; } virtual TIntermSequence& getSequence() { return sequence; } virtual const TIntermSequence& getSequence() const { return sequence; } diff --git a/glslang/MachineIndependent/Constant.cpp b/glslang/MachineIndependent/Constant.cpp index 4629cc2d..7f5d4c4f 100644 --- a/glslang/MachineIndependent/Constant.cpp +++ b/glslang/MachineIndependent/Constant.cpp @@ -531,7 +531,7 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType) case EbtFloat: newConstArray[i].setDConst(-unionArray[i].getDConst()); break; // Note: avoid UBSAN error regarding negating 0x80000000 case EbtInt: newConstArray[i].setIConst( - unionArray[i].getIConst() == 0x80000000 + static_cast<unsigned int>(unionArray[i].getIConst()) == 0x80000000 ? -0x7FFFFFFF - 1 : -unionArray[i].getIConst()); break; diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 823406c1..728cd4a6 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -3,7 +3,7 @@ // Copyright (C) 2012-2016 LunarG, Inc. // Copyright (C) 2015-2020 Google, Inc. // Copyright (C) 2017 ARM Limited. -// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. +// Modifications Copyright (C) 2020-2021 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. // @@ -4159,106 +4159,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "u16vec4 unpack16(uint64_t);" "i32vec2 unpack32(int64_t);" "u32vec2 unpack32(uint64_t);" - - "float64_t radians(float64_t);" - "f64vec2 radians(f64vec2);" - "f64vec3 radians(f64vec3);" - "f64vec4 radians(f64vec4);" - - "float64_t degrees(float64_t);" - "f64vec2 degrees(f64vec2);" - "f64vec3 degrees(f64vec3);" - "f64vec4 degrees(f64vec4);" - - "float64_t sin(float64_t);" - "f64vec2 sin(f64vec2);" - "f64vec3 sin(f64vec3);" - "f64vec4 sin(f64vec4);" - - "float64_t cos(float64_t);" - "f64vec2 cos(f64vec2);" - "f64vec3 cos(f64vec3);" - "f64vec4 cos(f64vec4);" - - "float64_t tan(float64_t);" - "f64vec2 tan(f64vec2);" - "f64vec3 tan(f64vec3);" - "f64vec4 tan(f64vec4);" - - "float64_t asin(float64_t);" - "f64vec2 asin(f64vec2);" - "f64vec3 asin(f64vec3);" - "f64vec4 asin(f64vec4);" - - "float64_t acos(float64_t);" - "f64vec2 acos(f64vec2);" - "f64vec3 acos(f64vec3);" - "f64vec4 acos(f64vec4);" - - "float64_t atan(float64_t, float64_t);" - "f64vec2 atan(f64vec2, f64vec2);" - "f64vec3 atan(f64vec3, f64vec3);" - "f64vec4 atan(f64vec4, f64vec4);" - - "float64_t atan(float64_t);" - "f64vec2 atan(f64vec2);" - "f64vec3 atan(f64vec3);" - "f64vec4 atan(f64vec4);" - - "float64_t sinh(float64_t);" - "f64vec2 sinh(f64vec2);" - "f64vec3 sinh(f64vec3);" - "f64vec4 sinh(f64vec4);" - - "float64_t cosh(float64_t);" - "f64vec2 cosh(f64vec2);" - "f64vec3 cosh(f64vec3);" - "f64vec4 cosh(f64vec4);" - - "float64_t tanh(float64_t);" - "f64vec2 tanh(f64vec2);" - "f64vec3 tanh(f64vec3);" - "f64vec4 tanh(f64vec4);" - - "float64_t asinh(float64_t);" - "f64vec2 asinh(f64vec2);" - "f64vec3 asinh(f64vec3);" - "f64vec4 asinh(f64vec4);" - - "float64_t acosh(float64_t);" - "f64vec2 acosh(f64vec2);" - "f64vec3 acosh(f64vec3);" - "f64vec4 acosh(f64vec4);" - - "float64_t atanh(float64_t);" - "f64vec2 atanh(f64vec2);" - "f64vec3 atanh(f64vec3);" - "f64vec4 atanh(f64vec4);" - - "float64_t pow(float64_t, float64_t);" - "f64vec2 pow(f64vec2, f64vec2);" - "f64vec3 pow(f64vec3, f64vec3);" - "f64vec4 pow(f64vec4, f64vec4);" - - "float64_t exp(float64_t);" - "f64vec2 exp(f64vec2);" - "f64vec3 exp(f64vec3);" - "f64vec4 exp(f64vec4);" - - "float64_t log(float64_t);" - "f64vec2 log(f64vec2);" - "f64vec3 log(f64vec3);" - "f64vec4 log(f64vec4);" - - "float64_t exp2(float64_t);" - "f64vec2 exp2(f64vec2);" - "f64vec3 exp2(f64vec3);" - "f64vec4 exp2(f64vec4);" - - "float64_t log2(float64_t);" - "f64vec2 log2(f64vec2);" - "f64vec3 log2(f64vec3);" - "f64vec4 log2(f64vec4);" "\n"); } @@ -4653,13 +4553,11 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } - // GL_ARB_shader_clock & GL_EXT_shader_realtime_clock + // GL_ARB_shader_clock if (profile != EEsProfile && version >= 450) { commonBuiltins.append( "uvec2 clock2x32ARB();" "uint64_t clockARB();" - "uvec2 clockRealtime2x32EXT();" - "uint64_t clockRealtimeEXT();" "\n"); } @@ -5174,9 +5072,13 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV ); } - if (version >= 450) + if (version >= 430) stageBuiltins[EShLangVertex].append( "out int gl_ViewportMask[];" // GL_NV_viewport_array2 + ); + + if (version >= 450) + stageBuiltins[EShLangVertex].append( "out int gl_SecondaryViewportMaskNV[];" // GL_NV_stereo_view_rendering "out vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering "out vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes @@ -5312,9 +5214,13 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "in int gl_InvocationID;" ); - if (version >= 450) + if (version >= 430) stageBuiltins[EShLangGeometry].append( "out int gl_ViewportMask[];" // GL_NV_viewport_array2 + ); + + if (version >= 450) + stageBuiltins[EShLangGeometry].append( "out int gl_SecondaryViewportMaskNV[];" // GL_NV_stereo_view_rendering "out vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering "out vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes @@ -5390,7 +5296,13 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV if (version >= 450) stageBuiltins[EShLangTessControl].append( "float gl_CullDistance[];" + ); + if (version >= 430) + stageBuiltins[EShLangTessControl].append( "int gl_ViewportMask[];" // GL_NV_viewport_array2 + ); + if (version >= 450) + stageBuiltins[EShLangTessControl].append( "vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering "int gl_SecondaryViewportMaskNV[];" // GL_NV_stereo_view_rendering "vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes @@ -5493,9 +5405,13 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "out int gl_Layer;" "\n"); - if (version >= 450) + if (version >= 430) stageBuiltins[EShLangTessEvaluation].append( "out int gl_ViewportMask[];" // GL_NV_viewport_array2 + ); + + if (version >= 450) + stageBuiltins[EShLangTessEvaluation].append( "out vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering "out int gl_SecondaryViewportMaskNV[];" // GL_NV_stereo_view_rendering "out vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes @@ -7701,6 +7617,11 @@ static void BuiltInVariable(const char* name, TBuiltInVariable builtIn, TSymbolT symQualifier.builtIn = builtIn; } +static void RetargetVariable(const char* from, const char* to, TSymbolTable& symbolTable) +{ + symbolTable.retargetSymbol(from, to); +} + // // For built-in variables inside a named block. // SpecialQualifier() won't ever go inside a block; their member's qualifier come @@ -7768,8 +7689,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion if (spvVersion.vulkan > 0 && spvVersion.vulkanRelaxed) { // treat these built-ins as aliases of VertexIndex and InstanceIndex - BuiltInVariable("gl_VertexID", EbvVertexIndex, symbolTable); - BuiltInVariable("gl_InstanceID", EbvInstanceIndex, symbolTable); + RetargetVariable("gl_InstanceID", "gl_InstanceIndex", symbolTable); + RetargetVariable("gl_VertexID", "gl_VertexIndex", symbolTable); } if (profile != EEsProfile) { @@ -8403,9 +8324,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("clockARB", 1, &E_GL_ARB_shader_clock); symbolTable.setFunctionExtensions("clock2x32ARB", 1, &E_GL_ARB_shader_clock); - symbolTable.setFunctionExtensions("clockRealtimeEXT", 1, &E_GL_EXT_shader_realtime_clock); - symbolTable.setFunctionExtensions("clockRealtime2x32EXT", 1, &E_GL_EXT_shader_realtime_clock); - if (profile == EEsProfile && version < 320) { symbolTable.setVariableExtensions("gl_PrimitiveID", Num_AEP_geometry_shader, AEP_geometry_shader); symbolTable.setVariableExtensions("gl_Layer", Num_AEP_geometry_shader, AEP_geometry_shader); diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index 02784459..1283f449 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -416,20 +416,24 @@ TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermTyped* child, // TODO: but, did this bypass constant folding? // switch (op) { - case EOpConstructInt8: - case EOpConstructUint8: - case EOpConstructInt16: - case EOpConstructUint16: - case EOpConstructInt: - case EOpConstructUint: - case EOpConstructInt64: - case EOpConstructUint64: - case EOpConstructBool: - case EOpConstructFloat: - case EOpConstructDouble: - case EOpConstructFloat16: - return child; - default: break; // some compilers want this + case EOpConstructInt8: + case EOpConstructUint8: + case EOpConstructInt16: + case EOpConstructUint16: + case EOpConstructInt: + case EOpConstructUint: + case EOpConstructInt64: + case EOpConstructUint64: + case EOpConstructBool: + case EOpConstructFloat: + case EOpConstructDouble: + case EOpConstructFloat16: { + TIntermUnary* unary_node = child->getAsUnaryNode(); + if (unary_node != nullptr) + unary_node->updatePrecision(); + return child; + } + default: break; // some compilers want this } // @@ -3778,6 +3782,28 @@ bool TIntermediate::promoteAggregate(TIntermAggregate& node) // Propagate precision qualifiers *up* from children to parent, and then // back *down* again to the children's subtrees. +void TIntermAggregate::updatePrecision() +{ + if (getBasicType() == EbtInt || getBasicType() == EbtUint || + getBasicType() == EbtFloat || getBasicType() == EbtFloat16) { + TPrecisionQualifier maxPrecision = EpqNone; + TIntermSequence operands = getSequence(); + for (unsigned int i = 0; i < operands.size(); ++i) { + TIntermTyped* typedNode = operands[i]->getAsTyped(); + assert(typedNode); + maxPrecision = std::max(maxPrecision, typedNode->getQualifier().precision); + } + getQualifier().precision = maxPrecision; + for (unsigned int i = 0; i < operands.size(); ++i) { + TIntermTyped* typedNode = operands[i]->getAsTyped(); + assert(typedNode); + typedNode->propagatePrecision(maxPrecision); + } + } +} + +// Propagate precision qualifiers *up* from children to parent, and then +// back *down* again to the children's subtrees. void TIntermBinary::updatePrecision() { if (getBasicType() == EbtInt || getBasicType() == EbtUint || diff --git a/glslang/MachineIndependent/ParseContextBase.cpp b/glslang/MachineIndependent/ParseContextBase.cpp index 02cca409..1da50d62 100644 --- a/glslang/MachineIndependent/ParseContextBase.cpp +++ b/glslang/MachineIndependent/ParseContextBase.cpp @@ -622,6 +622,19 @@ void TParseContextBase::growGlobalUniformBlock(const TSourceLoc& loc, TType& mem globalUniformBlock->getWritableType().getQualifier().layoutBinding = globalUniformBinding; globalUniformBlock->getWritableType().getQualifier().layoutSet = globalUniformSet; + // Check for declarations of this default uniform that already exist due to other compilation units. + TSymbol* symbol = symbolTable.find(memberName); + if (symbol) { + if (memberType != symbol->getType()) { + TString err; + err += "\"" + memberType.getCompleteString() + "\""; + err += " versus "; + err += "\"" + symbol->getType().getCompleteString() + "\""; + error(loc, "Types must match:", memberType.getFieldName().c_str(), err.c_str()); + } + return; + } + // Add the requested member as a member to the global block. TType* type = new TType; type->shallowCopy(memberType); diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index b957bb87..7f2f171b 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -3029,11 +3029,14 @@ void TParseContext::constantValueCheck(TIntermTyped* node, const char* token) // // Both test, and if necessary spit out an error, to see if the node is really -// an integer. +// a 32-bit integer or can implicitly convert to one. // void TParseContext::integerCheck(const TIntermTyped* node, const char* token) { - if ((node->getBasicType() == EbtInt || node->getBasicType() == EbtUint) && node->isScalar()) + auto from_type = node->getBasicType(); + if ((from_type == EbtInt || from_type == EbtUint || + intermediate.canImplicitlyPromote(from_type, EbtInt, EOpNull) || + intermediate.canImplicitlyPromote(from_type, EbtUint, EOpNull)) && node->isScalar()) return; error(node->getLoc(), "scalar integer expression required", token, ""); @@ -6493,6 +6496,8 @@ void TParseContext::layoutQualifierCheck(const TSourceLoc& loc, const TQualifier error(loc, "can only be used with a uniform", "push_constant", ""); if (qualifier.hasSet()) error(loc, "cannot be used with push_constant", "set", ""); + if (qualifier.hasBinding()) + error(loc, "cannot be used with push_constant", "binding", ""); } if (qualifier.hasBufferReference()) { if (qualifier.storage != EvqBuffer) @@ -7691,7 +7696,13 @@ TIntermTyped* TParseContext::addConstructor(const TSourceLoc& loc, TIntermNode* return nullptr; } - return intermediate.setAggregateOperator(aggrNode, op, type, loc); + TIntermTyped *ret_node = intermediate.setAggregateOperator(aggrNode, op, type, loc); + + TIntermAggregate *agg_node = ret_node->getAsAggregate(); + if (agg_node && (agg_node->isVector() || agg_node->isArray() || agg_node->isMatrix())) + agg_node->updatePrecision(); + + return ret_node; } // Function for constructor implementation. Calls addUnaryMath with appropriate EOp value @@ -9237,11 +9248,14 @@ TIntermNode* TParseContext::addSwitch(const TSourceLoc& loc, TIntermTyped* expre // "it is an error to have no statement between a label and the end of the switch statement." // The specifications were updated to remove this (being ill-defined what a "statement" was), // so, this became a warning. However, 3.0 tests still check for the error. - if (isEsProfile() && version <= 300 && ! relaxedErrors()) + if (isEsProfile() && (version <= 300 || version >= 320) && ! relaxedErrors()) + error(loc, "last case/default label not followed by statements", "switch", ""); + else if (!isEsProfile() && (version <= 430 || version >= 460)) error(loc, "last case/default label not followed by statements", "switch", ""); else warn(loc, "last case/default label not followed by statements", "switch", ""); + // emulate a break for error recovery lastStatements = intermediate.makeAggregate(intermediate.addBranch(EOpBreak, loc)); lastStatements->setOperator(EOpSequence); diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h index de448846..885fd908 100644 --- a/glslang/MachineIndependent/ParseHelper.h +++ b/glslang/MachineIndependent/ParseHelper.h @@ -241,7 +241,7 @@ protected: // override this to set the language-specific name virtual const char* getAtomicCounterBlockName() const { return ""; } virtual void setAtomicCounterBlockDefaults(TType&) const {} - virtual void setInvariant(const TSourceLoc& loc, const char* builtin) {} + virtual void setInvariant(const TSourceLoc&, const char*) {} virtual void finalizeAtomicCounterBlockLayout(TVariable&) {} bool isAtomicCounterBlock(const TSymbol& symbol) { const TVariable* var = symbol.getAsVariable(); @@ -472,7 +472,7 @@ public: // Determine loop control from attributes void handleLoopAttributes(const TAttributes& attributes, TIntermNode*); // Function attributes - void handleFunctionAttributes(const TSourceLoc&, const TAttributes&, TFunction*); + void handleFunctionAttributes(const TSourceLoc&, const TAttributes&); // GL_EXT_spirv_intrinsics TSpirvRequirement* makeSpirvRequirement(const TSourceLoc& loc, const TString& name, @@ -480,7 +480,6 @@ public: TSpirvRequirement* mergeSpirvRequirements(const TSourceLoc& loc, TSpirvRequirement* spirvReq1, TSpirvRequirement* spirvReq2); TSpirvTypeParameters* makeSpirvTypeParameters(const TSourceLoc& loc, const TIntermConstantUnion* constant); - TSpirvTypeParameters* makeSpirvTypeParameters(const TPublicType& type); TSpirvTypeParameters* mergeSpirvTypeParameters(TSpirvTypeParameters* spirvTypeParams1, TSpirvTypeParameters* spirvTypeParams2); TSpirvInstruction* makeSpirvInstruction(const TSourceLoc& loc, const TString& name, const TString& value); diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index d02eae6f..a2dd71cf 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -1343,7 +1343,6 @@ int ShInitialize() glslang::GetGlobalLock(); ++NumberOfClients; - glslang::ReleaseGlobalLock(); if (PerProcessGPA == nullptr) PerProcessGPA = new TPoolAllocator(); @@ -1353,6 +1352,7 @@ int ShInitialize() glslang::HlslScanContext::fillInKeywordMap(); #endif + glslang::ReleaseGlobalLock(); return 1; } @@ -1415,9 +1415,10 @@ int ShFinalize() --NumberOfClients; assert(NumberOfClients >= 0); bool finalize = NumberOfClients == 0; - glslang::ReleaseGlobalLock(); - if (! finalize) + if (! finalize) { + glslang::ReleaseGlobalLock(); return 1; + } for (int version = 0; version < VersionCount; ++version) { for (int spvVersion = 0; spvVersion < SpvVersionCount; ++spvVersion) { @@ -1455,6 +1456,7 @@ int ShFinalize() glslang::HlslScanContext::deleteKeywordMap(); #endif + glslang::ReleaseGlobalLock(); return 1; } diff --git a/glslang/MachineIndependent/SpirvIntrinsics.cpp b/glslang/MachineIndependent/SpirvIntrinsics.cpp index 38094eaa..6650f7d9 100644 --- a/glslang/MachineIndependent/SpirvIntrinsics.cpp +++ b/glslang/MachineIndependent/SpirvIntrinsics.cpp @@ -130,11 +130,11 @@ void TIntermediate::insertSpirvExecutionModeId(int executionMode, const TIntermA spirvExecutionMode = new TSpirvExecutionMode; assert(args); - TVector<const TIntermConstantUnion*> extraOperands; + TVector<const TIntermTyped*> extraOperands; for (auto arg : args->getSequence()) { - auto extraOperand = arg->getAsConstantUnion(); - assert(extraOperand != nullptr); + auto extraOperand = arg->getAsTyped(); + assert(extraOperand != nullptr && extraOperand->getQualifier().isConstant()); extraOperands.push_back(extraOperand); } spirvExecutionMode->modeIds[executionMode] = extraOperands; @@ -165,10 +165,10 @@ void TQualifier::setSpirvDecorateId(int decoration, const TIntermAggregate* args spirvDecorate = new TSpirvDecorate; assert(args); - TVector<const TIntermConstantUnion*> extraOperands; + TVector<const TIntermTyped*> extraOperands; for (auto arg : args->getSequence()) { - auto extraOperand = arg->getAsConstantUnion(); - assert(extraOperand != nullptr); + auto extraOperand = arg->getAsTyped(); + assert(extraOperand != nullptr && extraOperand->getQualifier().isConstant()); extraOperands.push_back(extraOperand); } spirvDecorate->decorateIds[decoration] = extraOperands; @@ -201,25 +201,27 @@ TString TQualifier::getSpirvDecorateQualifierString() const const auto appendBool = [&](bool b) { qualifierString.append(std::to_string(b).c_str()); }; const auto appendStr = [&](const char* s) { qualifierString.append(s); }; - const auto appendDecorate = [&](const TIntermConstantUnion* constant) { + const auto appendDecorate = [&](const TIntermTyped* constant) { + auto& constArray = constant->getAsConstantUnion() != nullptr ? constant->getAsConstantUnion()->getConstArray() + : constant->getAsSymbolNode()->getConstArray(); if (constant->getBasicType() == EbtFloat) { - float value = static_cast<float>(constant->getConstArray()[0].getDConst()); + float value = static_cast<float>(constArray[0].getDConst()); appendFloat(value); } else if (constant->getBasicType() == EbtInt) { - int value = constant->getConstArray()[0].getIConst(); + int value = constArray[0].getIConst(); appendInt(value); } else if (constant->getBasicType() == EbtUint) { - unsigned value = constant->getConstArray()[0].getUConst(); + unsigned value = constArray[0].getUConst(); appendUint(value); } else if (constant->getBasicType() == EbtBool) { - bool value = constant->getConstArray()[0].getBConst(); + bool value = constArray[0].getBConst(); appendBool(value); } else if (constant->getBasicType() == EbtString) { - const TString* value = constant->getConstArray()[0].getSConst(); + const TString* value = constArray[0].getSConst(); appendStr(value->c_str()); } else @@ -290,13 +292,6 @@ TSpirvTypeParameters* TParseContext::makeSpirvTypeParameters(const TSourceLoc& l return spirvTypeParams; } -TSpirvTypeParameters* TParseContext::makeSpirvTypeParameters(const TPublicType& type) -{ - TSpirvTypeParameters* spirvTypeParams = new TSpirvTypeParameters; - spirvTypeParams->push_back(TSpirvTypeParameter(new TType(type))); - return spirvTypeParams; -} - TSpirvTypeParameters* TParseContext::mergeSpirvTypeParameters(TSpirvTypeParameters* spirvTypeParams1, TSpirvTypeParameters* spirvTypeParams2) { // Merge SPIR-V type parameters of the second one to the first one diff --git a/glslang/MachineIndependent/SymbolTable.cpp b/glslang/MachineIndependent/SymbolTable.cpp index 747b4366..5b7e27fa 100644 --- a/glslang/MachineIndependent/SymbolTable.cpp +++ b/glslang/MachineIndependent/SymbolTable.cpp @@ -279,8 +279,14 @@ TFunction::~TFunction() // TSymbolTableLevel::~TSymbolTableLevel() { - for (tLevel::iterator it = level.begin(); it != level.end(); ++it) - delete (*it).second; + for (tLevel::iterator it = level.begin(); it != level.end(); ++it) { + const TString& name = it->first; + auto retargetIter = std::find_if(retargetedSymbols.begin(), retargetedSymbols.end(), + [&name](const std::pair<TString, TString>& i) { return i.first == name; }); + if (retargetIter == retargetedSymbols.end()) + delete (*it).second; + } + delete [] defaultPrecision; } @@ -418,6 +424,15 @@ TSymbolTableLevel* TSymbolTableLevel::clone() const TSymbolTableLevel *symTableLevel = new TSymbolTableLevel(); symTableLevel->anonId = anonId; symTableLevel->thisLevel = thisLevel; + symTableLevel->retargetedSymbols.clear(); + for (auto &s : retargetedSymbols) { + // Extra constructions to make sure they use the correct allocator pool + TString newFrom; + newFrom = s.first; + TString newTo; + newTo = s.second; + symTableLevel->retargetedSymbols.push_back({std::move(newFrom), std::move(newTo)}); + } std::vector<bool> containerCopied(anonId, false); tLevel::const_iterator iter; for (iter = level.begin(); iter != level.end(); ++iter) { @@ -433,8 +448,25 @@ TSymbolTableLevel* TSymbolTableLevel::clone() const symTableLevel->insert(*container, false); containerCopied[anon->getAnonId()] = true; } - } else + } else { + const TString& name = iter->first; + auto retargetIter = std::find_if(retargetedSymbols.begin(), retargetedSymbols.end(), + [&name](const std::pair<TString, TString>& i) { return i.first == name; }); + if (retargetIter != retargetedSymbols.end()) + continue; symTableLevel->insert(*iter->second->clone(), false); + } + } + // Now point retargeted symbols to the newly created versions of them + for (auto &s : retargetedSymbols) { + TSymbol* sym = symTableLevel->find(s.second); + if (!sym) + continue; + + // Need to declare and assign so newS is using the correct pool allocator + TString newS; + newS = s.first; + symTableLevel->insert(newS, sym); } return symTableLevel; diff --git a/glslang/MachineIndependent/SymbolTable.h b/glslang/MachineIndependent/SymbolTable.h index 21960930..720999a3 100644 --- a/glslang/MachineIndependent/SymbolTable.h +++ b/glslang/MachineIndependent/SymbolTable.h @@ -413,13 +413,20 @@ public: TSymbolTableLevel() : defaultPrecision(0), anonId(0), thisLevel(false) { } ~TSymbolTableLevel(); - bool insert(TSymbol& symbol, bool separateNameSpaces) + bool insert(const TString& name, TSymbol* symbol) { + return level.insert(tLevelPair(name, symbol)).second; + } + + bool insert(TSymbol& symbol, bool separateNameSpaces, const TString& forcedKeyName = TString()) { // // returning true means symbol was added to the table with no semantic errors // const TString& name = symbol.getName(); - if (name == "") { + if (forcedKeyName.length()) { + return level.insert(tLevelPair(forcedKeyName, &symbol)).second; + } + else if (name == "") { symbol.getAsVariable()->setAnonId(anonId++); // An empty name means an anonymous container, exposing its members to the external scope. // Give it a name and insert its members in the symbol table, pointing to the container. @@ -471,6 +478,16 @@ public: return true; } + void retargetSymbol(const TString& from, const TString& to) { + tLevel::const_iterator fromIt = level.find(from); + tLevel::const_iterator toIt = level.find(to); + if (fromIt == level.end() || toIt == level.end()) + return; + delete fromIt->second; + level[from] = toIt->second; + retargetedSymbols.push_back({from, to}); + } + TSymbol* find(const TString& name) const { tLevel::const_iterator it = level.find(name); @@ -583,6 +600,8 @@ protected: tLevel level; // named mappings TPrecisionQualifier *defaultPrecision; + // pair<FromName, ToName> + TVector<std::pair<TString, TString>> retargetedSymbols; int anonId; bool thisLevel; // True if this level of the symbol table is a structure scope containing member function // that are supposed to see anonymous access to member variables. @@ -788,6 +807,12 @@ public: return symbol; } + void retargetSymbol(const TString& from, const TString& to) { + int level = currentLevel(); + table[level]->retargetSymbol(from, to); + } + + // Find of a symbol that returns how many layers deep of nested // structures-with-member-functions ('this' scopes) deep the symbol was // found in. diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index 097ee845..2fc0d9e0 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -225,6 +225,7 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_ARB_shading_language_packing] = EBhDisable; extensionBehavior[E_GL_ARB_texture_query_lod] = EBhDisable; extensionBehavior[E_GL_ARB_vertex_attrib_64bit] = EBhDisable; + extensionBehavior[E_GL_ARB_draw_instanced] = EBhDisable; extensionBehavior[E_GL_KHR_shader_subgroup_basic] = EBhDisable; extensionBehavior[E_GL_KHR_shader_subgroup_vote] = EBhDisable; @@ -465,6 +466,7 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_ARB_shader_storage_buffer_object 1\n" "#define GL_ARB_texture_query_lod 1\n" "#define GL_ARB_vertex_attrib_64bit 1\n" + "#define GL_ARB_draw_instanced 1\n" "#define GL_EXT_shader_non_constant_global_initializers 1\n" "#define GL_EXT_shader_image_load_formatted 1\n" "#define GL_EXT_post_depth_coverage 1\n" @@ -482,6 +484,7 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_EXT_debug_printf 1\n" "#define GL_EXT_fragment_shading_rate 1\n" "#define GL_EXT_shared_memory_block 1\n" + "#define GL_EXT_shader_integer_mix 1\n" // GL_KHR_shader_subgroup "#define GL_KHR_shader_subgroup_basic 1\n" diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index 949a7a17..2dbac0b4 100644 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -161,6 +161,7 @@ const char* const E_GL_ARB_shader_storage_buffer_object = "GL_ARB_shader_storage const char* const E_GL_ARB_shading_language_packing = "GL_ARB_shading_language_packing"; const char* const E_GL_ARB_texture_query_lod = "GL_ARB_texture_query_lod"; const char* const E_GL_ARB_vertex_attrib_64bit = "GL_ARB_vertex_attrib_64bit"; +const char* const E_GL_ARB_draw_instanced = "GL_ARB_draw_instanced"; const char* const E_GL_KHR_shader_subgroup_basic = "GL_KHR_shader_subgroup_basic"; const char* const E_GL_KHR_shader_subgroup_vote = "GL_KHR_shader_subgroup_vote"; diff --git a/glslang/MachineIndependent/attribute.cpp b/glslang/MachineIndependent/attribute.cpp index 8a92f6ae..df7fdc2a 100644 --- a/glslang/MachineIndependent/attribute.cpp +++ b/glslang/MachineIndependent/attribute.cpp @@ -347,7 +347,7 @@ void TParseContext::handleLoopAttributes(const TAttributes& attributes, TIntermN // // Function attributes // -void TParseContext::handleFunctionAttributes(const TSourceLoc& loc, const TAttributes& attributes, TFunction* function) +void TParseContext::handleFunctionAttributes(const TSourceLoc& loc, const TAttributes& attributes) { for (auto it = attributes.begin(); it != attributes.end(); ++it) { if (it->size() > 0) { diff --git a/glslang/MachineIndependent/glslang.m4 b/glslang/MachineIndependent/glslang.m4 index 93041ce3..d4cc5bc9 100644 --- a/glslang/MachineIndependent/glslang.m4 +++ b/glslang/MachineIndependent/glslang.m4 @@ -983,20 +983,20 @@ function_prototype $$.function = $1; $$.loc = $2.loc; parseContext.requireExtensions($2.loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); - parseContext.handleFunctionAttributes($2.loc, *$3, $$.function); + parseContext.handleFunctionAttributes($2.loc, *$3); } | attribute function_declarator RIGHT_PAREN { $$.function = $2; $$.loc = $3.loc; parseContext.requireExtensions($3.loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); - parseContext.handleFunctionAttributes($3.loc, *$1, $$.function); + parseContext.handleFunctionAttributes($3.loc, *$1); } | attribute function_declarator RIGHT_PAREN attribute { $$.function = $2; $$.loc = $3.loc; parseContext.requireExtensions($3.loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); - parseContext.handleFunctionAttributes($3.loc, *$1, $$.function); - parseContext.handleFunctionAttributes($3.loc, *$4, $$.function); + parseContext.handleFunctionAttributes($3.loc, *$1); + parseContext.handleFunctionAttributes($3.loc, *$4); } ; @@ -3926,6 +3926,7 @@ iteration_statement_nonattributed --parseContext.controlFlowNestingLevel; } | DO { + parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; @@ -3937,6 +3938,7 @@ iteration_statement_nonattributed parseContext.boolCheck($8.loc, $6); $$ = parseContext.intermediate.addLoop($3, $6, 0, false, $4.loc); + parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.loopNestingLevel; --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; @@ -4365,9 +4367,6 @@ spirv_type_parameter : constant_expression { $$ = parseContext.makeSpirvTypeParameters($1->getLoc(), $1->getAsConstantUnion()); } - | type_specifier { - $$ = parseContext.makeSpirvTypeParameters($1); - } spirv_instruction_qualifier : SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN { diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index b77f4617..df53eb5b 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -983,20 +983,20 @@ function_prototype $$.function = $1; $$.loc = $2.loc; parseContext.requireExtensions($2.loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); - parseContext.handleFunctionAttributes($2.loc, *$3, $$.function); + parseContext.handleFunctionAttributes($2.loc, *$3); } | attribute function_declarator RIGHT_PAREN { $$.function = $2; $$.loc = $3.loc; parseContext.requireExtensions($3.loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); - parseContext.handleFunctionAttributes($3.loc, *$1, $$.function); + parseContext.handleFunctionAttributes($3.loc, *$1); } | attribute function_declarator RIGHT_PAREN attribute { $$.function = $2; $$.loc = $3.loc; parseContext.requireExtensions($3.loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); - parseContext.handleFunctionAttributes($3.loc, *$1, $$.function); - parseContext.handleFunctionAttributes($3.loc, *$4, $$.function); + parseContext.handleFunctionAttributes($3.loc, *$1); + parseContext.handleFunctionAttributes($3.loc, *$4); } ; @@ -3926,6 +3926,7 @@ iteration_statement_nonattributed --parseContext.controlFlowNestingLevel; } | DO { + parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; @@ -3937,6 +3938,7 @@ iteration_statement_nonattributed parseContext.boolCheck($8.loc, $6); $$ = parseContext.intermediate.addLoop($3, $6, 0, false, $4.loc); + parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.loopNestingLevel; --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; @@ -4365,9 +4367,6 @@ spirv_type_parameter : constant_expression { $$ = parseContext.makeSpirvTypeParameters($1->getLoc(), $1->getAsConstantUnion()); } - | type_specifier { - $$ = parseContext.makeSpirvTypeParameters($1); - } spirv_instruction_qualifier : SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN { diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp index dba06aef..5ba6a6d4 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -1034,16 +1034,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 442 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 12453 +#define YYLAST 12452 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 455 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 131 /* YYNRULES -- Number of rules. */ -#define YYNRULES 684 +#define YYNRULES 683 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 930 +#define YYNSTATES 929 /* YYMAXUTOK -- Last valid token kind. */ #define YYMAXUTOK 709 @@ -1197,15 +1197,15 @@ static const yytype_int16 yyrline[] = 3732, 3739, 3739, 3753, 3756, 3764, 3772, 3783, 3784, 3788, 3792, 3800, 3807, 3811, 3819, 3823, 3836, 3840, 3848, 3848, 3868, 3871, 3877, 3889, 3901, 3905, 3913, 3913, 3928, 3928, - 3944, 3944, 3965, 3968, 3974, 3977, 3983, 3987, 3994, 3999, - 4004, 4011, 4014, 4018, 4023, 4027, 4037, 4041, 4050, 4053, - 4057, 4066, 4066, 4108, 4113, 4116, 4121, 4124, 4131, 4134, - 4139, 4142, 4147, 4150, 4155, 4158, 4163, 4167, 4172, 4176, - 4181, 4185, 4192, 4195, 4200, 4203, 4206, 4209, 4212, 4217, - 4226, 4237, 4242, 4250, 4254, 4259, 4263, 4268, 4272, 4277, - 4281, 4288, 4291, 4296, 4299, 4302, 4305, 4310, 4318, 4328, - 4332, 4337, 4341, 4346, 4350, 4357, 4360, 4365, 4368, 4373, - 4376, 4382, 4385, 4390, 4393 + 3946, 3946, 3967, 3970, 3976, 3979, 3985, 3989, 3996, 4001, + 4006, 4013, 4016, 4020, 4025, 4029, 4039, 4043, 4052, 4055, + 4059, 4068, 4068, 4110, 4115, 4118, 4123, 4126, 4133, 4136, + 4141, 4144, 4149, 4152, 4157, 4160, 4165, 4169, 4174, 4178, + 4183, 4187, 4194, 4197, 4202, 4205, 4208, 4211, 4214, 4219, + 4228, 4239, 4244, 4252, 4256, 4261, 4265, 4270, 4274, 4279, + 4283, 4290, 4293, 4298, 4301, 4304, 4307, 4312, 4320, 4330, + 4334, 4339, 4343, 4348, 4352, 4359, 4362, 4367, 4372, 4375, + 4381, 4384, 4389, 4392 }; #endif @@ -1433,7 +1433,7 @@ static const yytype_int16 yytoknum[] = }; #endif -#define YYPACT_NINF (-863) +#define YYPACT_NINF (-859) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) @@ -1447,99 +1447,99 @@ static const yytype_int16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - 4549, -863, -863, -863, -863, -863, -863, -863, -863, -863, - -863, -863, -863, -863, -863, -863, -863, -863, -863, -863, - -863, -863, -863, -863, -863, -863, -863, -863, -863, -863, - -863, -863, -863, -863, -863, -863, -863, -863, -863, -863, - -863, -863, -863, -863, -863, -863, -863, -863, -863, -863, - -863, -863, -863, -863, -863, -863, -863, -863, -863, -863, - -863, -863, -863, -863, -863, -863, -863, -863, -863, -863, - -863, -863, -863, -863, -863, -863, -863, -863, -863, -863, - -863, -863, -863, -863, -863, -863, -863, -863, -863, -863, - -863, -863, -863, -863, -863, -863, -863, -863, -863, -863, - -863, -863, -863, -863, -863, -863, -863, -863, -863, -863, - -863, -863, -863, -863, -863, -863, -863, -863, -863, -863, - -863, -863, -863, -863, -863, -863, -863, -863, -863, -863, - -863, -863, -863, -863, -863, -863, -863, -863, -863, -863, - -863, -863, -863, -863, -863, -863, -863, -863, -863, -863, - -863, -863, -863, -863, -863, -863, -863, -863, -863, -863, - -863, -863, -863, -863, -863, -863, -863, -863, -863, -863, - -863, -863, -863, -863, -863, -863, -863, -863, -863, -863, - -863, -863, -863, -863, -863, -863, -863, -863, -863, -863, - -863, -863, -863, -863, -863, -863, -863, -863, -863, -863, - -863, -863, -863, -863, -863, -863, -863, -863, -863, -863, - -863, -863, -863, -863, -863, -863, -863, -863, -863, -863, - -863, -863, -863, -863, -863, -863, -863, -863, -863, -863, - -863, -863, -863, -863, -863, -863, -863, -863, -863, -863, - -863, -863, -863, -863, -863, -863, -863, -863, -863, -863, - -863, -863, -863, -863, -863, -863, -863, -863, -863, -863, - -863, -863, -863, -863, -863, -863, -863, -863, -863, -863, - -863, -863, -863, -863, -863, -863, -863, -863, -863, -863, - -863, -863, -863, -863, -863, -863, -863, -863, -863, -863, - -863, -863, -863, -863, -863, -863, -863, -863, -863, -863, - -863, -863, -863, -863, -863, -863, -863, -863, -863, -863, - -863, -863, -863, -863, -863, -260, -182, -177, -163, -130, - -115, -100, -89, -863, -863, -196, -863, -863, -863, -863, - -863, -324, -863, -863, -863, -863, -863, -306, -863, -863, - -863, -863, -863, -863, -77, -66, -863, -863, -863, -863, - -863, -863, -863, -863, -863, -863, -863, -863, -863, -863, - -863, -863, -863, -863, -863, -863, -863, -863, -863, -863, - -863, -863, -863, -863, -863, -863, -863, -863, -332, -175, - -153, -161, 7713, -266, -863, -71, -863, -863, -863, -863, - 5453, -863, -863, -863, -863, -116, -863, -863, 933, -863, - -863, 7713, -35, -863, -863, -863, 5905, -54, -139, -138, - -137, -128, -124, -54, -123, -51, 12061, -863, -15, -347, - -44, -863, -295, -863, -9, -6, 7713, -863, -863, -863, - 7713, -39, -38, -863, -303, -863, -226, -863, -863, 10762, - -3, -863, -863, -863, 1, -32, 7713, -863, -5, -8, - -1, -863, -230, -863, -219, -2, 3, 4, 5, -215, - 6, 8, 10, 11, 12, 15, -214, 13, 16, 21, - -134, -863, 17, 7713, -863, 19, -863, -212, -863, -863, - -211, 9030, -863, -273, 1385, -863, -863, -863, -863, -863, - -3, -263, -863, 9463, -236, -863, -28, -863, -106, 10762, - 10762, -863, 10762, -863, -863, -863, -863, -863, -863, -863, - -863, -863, -863, -863, -863, -863, -863, -863, -863, -863, - -863, -863, -264, -863, -863, -863, 23, -203, 11195, 25, - -863, 10762, -863, -863, -311, 24, -6, 29, -863, -309, - -54, -863, -20, -863, -323, 28, -118, 10762, -112, -863, - -155, -111, 10762, -103, 35, -98, -54, -863, 11628, -863, - -94, 10762, 32, -51, -863, 7713, 18, 6357, -863, 7713, - 10762, -863, -347, -863, 33, -863, -863, -72, -254, -86, - -297, -68, -13, 26, 20, 50, 49, -300, 42, 9896, - -863, 43, -863, -863, 55, 58, 60, -863, 65, 71, - 62, 10329, 73, 10762, 66, 69, 70, 72, 74, -241, - -863, -863, -41, -863, -175, 83, 85, -863, -863, -863, - -863, -863, 1837, -863, -863, -863, -863, -863, -863, -863, - -863, -863, 5001, 24, 9463, -233, 8164, -863, -863, 9463, - 7713, -863, 51, -863, -863, -863, -194, -863, -863, 10762, - 52, -863, -863, 10762, 88, -863, -863, -863, 10762, -863, - -863, -863, -315, -863, -863, -191, 82, -863, -863, -863, - -863, -863, -863, -190, -863, -187, -863, -863, -186, 86, - -863, -863, -863, -863, -169, -863, -168, -863, -167, 89, - -863, -165, 91, -157, 82, -863, 85, -156, -863, 94, - 98, -863, -863, 18, -3, -40, -863, -863, -863, 6809, - -863, -863, -863, 10762, 10762, 10762, 10762, 10762, 10762, 10762, - 10762, 10762, 10762, 10762, 10762, 10762, 10762, 10762, 10762, 10762, - 10762, 10762, -863, -863, -863, 97, -863, 2289, -863, -863, - -863, 2289, -863, 10762, -863, -863, -34, 10762, -79, -863, - -863, -863, -863, -863, -863, -863, -863, -863, -863, -863, - -863, -863, -863, -863, -863, 10762, 10762, -863, -863, -863, - -863, -863, -863, -863, 9463, -863, -863, -208, -863, 7261, - -863, -863, 99, 96, -863, -863, -863, -863, -863, -132, - -131, -863, -307, -863, -323, -863, -323, -863, 10762, 10762, - -863, -155, -863, -155, -863, 10762, 10762, -863, 93, 35, - -863, 11628, -863, 10762, -863, -863, -33, 24, 18, -863, - -863, -863, -863, -863, -72, -72, -254, -254, -86, -86, - -86, -86, -297, -297, -68, -13, 26, 20, 50, 49, - 10762, -863, 2289, 4097, 57, 3645, -154, -863, -152, -863, - -863, -863, -863, -863, 8597, -863, -863, -863, 105, -863, - 75, -863, -145, -863, -144, -863, -143, -863, -142, -863, - -141, -140, -863, -863, -863, -27, 100, 96, 76, 106, - 109, -863, -863, 4097, 107, -863, -863, -863, -863, -863, - -863, -863, -863, -863, -863, -863, 10762, -863, 101, 2741, - 10762, -863, 103, 113, 67, 112, 3193, -863, 114, -863, - 9463, -863, -863, -863, -133, 10762, 2741, 107, -863, -863, - 2289, -863, 110, 96, -863, -863, 2289, 116, -863, -863 + 4548, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -312, -274, -244, -212, -208, + -201, -181, -169, -859, -859, -194, -859, -859, -859, -859, + -859, -285, -859, -859, -859, -859, -859, -317, -859, -859, + -859, -859, -859, -859, -132, -73, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -329, -70, + -158, -145, 7712, -221, -859, -164, -859, -859, -859, -859, + 5452, -859, -859, -859, -859, -68, -859, -859, 932, -859, + -859, 7712, -55, -859, -859, -859, 5904, -80, -154, -150, + -142, -135, -130, -80, -129, -79, 12060, -859, -45, -354, + -76, -859, -308, -859, -43, -40, 7712, -859, -859, -859, + 7712, -72, -71, -859, -265, -859, -257, -859, -859, 10761, + -39, -859, -859, -859, -35, -69, 7712, -859, -42, -38, + -37, -859, -302, -859, -235, -32, -33, -28, -27, -217, + -26, -23, -22, -21, -20, -16, -216, -29, -15, -31, + -303, -859, -13, 7712, -859, -14, -859, -214, -859, -859, + -205, 9029, -859, -279, 1384, -859, -859, -859, -859, -859, + -39, -299, -859, 9462, -275, -859, -34, -859, -137, 10761, + 10761, -859, 10761, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -248, -859, -859, -859, -3, -203, 11194, -1, + -859, 10761, -859, -859, -310, 3, -40, 1, -859, -309, + -80, -859, -30, -859, -319, 5, -128, 10761, -124, -859, + -157, -122, 10761, -120, 10, -118, -80, -859, 11627, -859, + -116, 10761, 7, -79, -859, 7712, -25, 6356, -859, 7712, + 10761, -859, -354, -859, -19, -859, -859, -78, -263, -94, + -298, -52, -18, -8, -12, 29, 28, -301, 15, 9895, + -859, 16, -859, -859, 19, 12, 17, -859, 20, 23, + 18, 10328, 24, 10761, 21, 22, 25, 27, 30, -215, + -859, -859, -117, -859, -70, 26, 34, -859, -859, -859, + -859, -859, 1836, -859, -859, -859, -859, -859, -859, -859, + -859, -859, 5000, 3, 9462, -264, 8163, -859, -859, 9462, + 7712, -859, -11, -859, -859, -859, -195, -859, -859, 10761, + -6, -859, -859, 10761, 37, -859, -859, -859, 10761, -859, + -859, -859, -322, -859, -859, -192, 35, -859, -859, -859, + -859, -859, -859, -179, -859, -178, -859, -859, -177, 32, + -859, -859, -859, -859, -175, -859, -174, -859, -167, 36, + -859, -166, 38, -165, 35, -859, -163, -859, 45, 46, + -859, -859, -25, -39, -115, -859, -859, -859, 6808, -859, + -859, -859, 10761, 10761, 10761, 10761, 10761, 10761, 10761, 10761, + 10761, 10761, 10761, 10761, 10761, 10761, 10761, 10761, 10761, 10761, + 10761, -859, -859, -859, 51, -859, 2288, -859, -859, -859, + 2288, -859, 10761, -859, -859, -88, 10761, -63, -859, -859, + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, 10761, 10761, -859, -859, -859, -859, + -859, -859, -859, 9462, -859, -859, -108, -859, 7260, -859, + -859, 52, 53, -859, -859, -859, -859, -859, -138, -136, + -859, -304, -859, -319, -859, -319, -859, 10761, 10761, -859, + -157, -859, -157, -859, 10761, 10761, -859, 65, 10, -859, + 11627, -859, 10761, -859, -859, -86, 3, -25, -859, -859, + -859, -859, -859, -78, -78, -263, -263, -94, -94, -94, + -94, -298, -298, -52, -18, -8, -12, 29, 28, 10761, + -859, 2288, 4096, 31, 3644, -156, -859, -155, -859, -859, + -859, -859, -859, 8596, -859, -859, -859, 66, -859, 39, + -859, -153, -859, -151, -859, -148, -859, -146, -859, -144, + -143, -859, -859, -859, -61, 64, 53, 40, 72, 74, + -859, -859, 4096, 75, -859, -859, -859, -859, -859, -859, + -859, -859, -859, -859, -859, 10761, -859, 71, 2740, 10761, + -859, 73, 81, 41, 80, 3192, -859, 83, -859, 9462, + -859, -859, -859, -141, 10761, 2740, 75, -859, -859, 2288, + -859, 78, 53, -859, -859, 2288, 86, -859, -859 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1592,7 +1592,7 @@ static const yytype_int16 yydefact[] = 0, 99, 0, 94, 0, 109, 0, 121, 115, 123, 0, 124, 0, 97, 131, 102, 0, 154, 136, 0, 204, 210, 1, 617, 0, 0, 0, 96, 0, 0, - 0, 628, 0, 681, 0, 0, 0, 0, 0, 0, + 0, 628, 0, 680, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 626, 0, 624, 0, 0, 533, 149, 151, 0, 147, 202, 0, 0, 100, 0, 0, 622, 110, 116, 120, 122, @@ -1601,7 +1601,7 @@ static const yytype_int16 yydefact[] = 8, 2, 16, 14, 15, 17, 10, 11, 12, 13, 3, 18, 37, 20, 25, 26, 0, 0, 30, 0, 213, 0, 36, 34, 0, 205, 111, 0, 95, 0, - 0, 679, 0, 636, 0, 0, 0, 0, 0, 653, + 0, 678, 0, 636, 0, 0, 0, 0, 0, 653, 0, 0, 0, 0, 0, 0, 0, 673, 0, 651, 0, 0, 0, 0, 98, 0, 0, 0, 537, 0, 0, 146, 0, 200, 0, 206, 45, 49, 52, 55, @@ -1613,70 +1613,70 @@ static const yytype_int16 yydefact[] = 594, 560, 0, 119, 0, 127, 0, 545, 134, 0, 0, 107, 0, 104, 38, 39, 0, 22, 23, 0, 0, 28, 27, 0, 215, 31, 33, 40, 0, 212, - 112, 683, 0, 684, 629, 0, 0, 682, 648, 644, + 112, 682, 0, 683, 629, 0, 0, 681, 648, 644, 645, 646, 647, 0, 642, 0, 93, 649, 0, 0, 663, 664, 665, 666, 0, 661, 0, 667, 0, 0, - 669, 0, 0, 0, 2, 677, 678, 0, 675, 0, - 0, 623, 625, 0, 543, 0, 541, 536, 538, 0, - 150, 148, 203, 0, 0, 0, 0, 0, 0, 0, + 669, 0, 0, 0, 2, 677, 0, 675, 0, 0, + 623, 625, 0, 543, 0, 541, 536, 538, 0, 150, + 148, 203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 76, 207, 208, 0, 563, 0, 596, 609, - 608, 0, 600, 0, 612, 610, 0, 0, 0, 593, - 613, 614, 615, 562, 81, 82, 84, 83, 86, 87, - 88, 89, 90, 85, 80, 0, 0, 578, 574, 576, - 580, 587, 595, 129, 0, 548, 549, 0, 133, 0, - 108, 4, 0, 24, 21, 32, 214, 632, 634, 0, - 0, 680, 0, 638, 0, 637, 0, 640, 0, 0, - 655, 0, 654, 0, 657, 0, 0, 659, 0, 0, - 674, 0, 671, 0, 652, 627, 0, 544, 0, 539, - 534, 46, 47, 48, 51, 50, 53, 54, 58, 59, - 56, 57, 61, 62, 64, 66, 68, 70, 72, 74, - 0, 209, 565, 0, 0, 0, 0, 611, 0, 592, - 79, 92, 128, 546, 0, 106, 19, 630, 0, 631, - 0, 643, 0, 650, 0, 662, 0, 668, 0, 670, - 0, 0, 676, 540, 542, 0, 0, 584, 0, 0, - 0, 603, 602, 605, 571, 588, 547, 550, 633, 635, - 639, 641, 656, 658, 660, 672, 0, 566, 0, 0, - 0, 604, 0, 0, 583, 0, 0, 581, 0, 77, - 0, 568, 597, 567, 0, 606, 0, 571, 570, 572, - 590, 585, 0, 607, 601, 582, 591, 0, 599, 589 + 0, 76, 207, 208, 0, 563, 0, 596, 609, 608, + 0, 600, 0, 612, 610, 0, 0, 0, 593, 613, + 614, 615, 562, 81, 82, 84, 83, 86, 87, 88, + 89, 90, 85, 80, 0, 0, 578, 574, 576, 580, + 587, 595, 129, 0, 548, 549, 0, 133, 0, 108, + 4, 0, 24, 21, 32, 214, 632, 634, 0, 0, + 679, 0, 638, 0, 637, 0, 640, 0, 0, 655, + 0, 654, 0, 657, 0, 0, 659, 0, 0, 674, + 0, 671, 0, 652, 627, 0, 544, 0, 539, 534, + 46, 47, 48, 51, 50, 53, 54, 58, 59, 56, + 57, 61, 62, 64, 66, 68, 70, 72, 74, 0, + 209, 565, 0, 0, 0, 0, 611, 0, 592, 79, + 92, 128, 546, 0, 106, 19, 630, 0, 631, 0, + 643, 0, 650, 0, 662, 0, 668, 0, 670, 0, + 0, 676, 540, 542, 0, 0, 584, 0, 0, 0, + 603, 602, 605, 571, 588, 547, 550, 633, 635, 639, + 641, 656, 658, 660, 672, 0, 566, 0, 0, 0, + 604, 0, 0, 583, 0, 0, 581, 0, 77, 0, + 568, 597, 567, 0, 606, 0, 571, 570, 572, 590, + 585, 0, 607, 601, 582, 591, 0, 599, 589 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -863, -863, -863, -863, -863, -863, -863, -863, -863, -863, - -863, -863, -418, -863, -380, -379, -484, -382, -258, -256, - -253, -257, -252, -255, -863, -478, -863, -485, -863, -491, - -530, 14, -863, -863, -863, 7, -397, -863, -863, 44, - 53, 47, -863, -863, -400, -863, -863, -863, -863, -92, - -863, -377, -362, -863, 9, -863, 0, -414, -863, -863, - -863, -863, 150, -863, -863, -863, -546, -548, -218, -331, - -624, -863, -359, -609, -862, -863, -417, -863, -863, -427, - -426, -863, -863, 68, -719, -355, -863, -136, -863, -389, - -863, -135, -863, -863, -863, -863, -129, -863, -863, -863, - -863, -863, -863, -863, -863, 102, -863, -863, 2, -863, - -65, -234, -432, -863, -863, -863, -301, -293, -294, -863, - -863, -304, -299, -302, -298, -863, -296, -305, -863, -383, - -526 + -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, + -859, -859, -209, -859, -418, -417, -602, -421, -291, -284, + -286, -283, -281, -287, -859, -473, -859, -490, -859, -497, + -520, 13, -859, -859, -859, 14, -394, -859, -859, 33, + 42, 44, -859, -859, -395, -859, -859, -859, -859, -121, + -859, -381, -369, -859, 9, -859, 0, -424, -859, -859, + -859, -859, 113, -859, -859, -859, -545, -549, -252, -365, + -617, -859, -391, -618, -858, -859, -450, -859, -859, -459, + -458, -859, -859, 43, -721, -387, -859, -173, -859, -422, + -859, -170, -859, -859, -859, -859, -168, -859, -859, -859, + -859, -859, -859, -859, -859, 67, -859, -859, 2, -859, + -97, -300, -386, -859, -859, -859, -326, -323, -327, -859, + -859, -330, -325, -328, -332, -859, -331, -334, -859, -390, + -530 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 520, 521, 522, 782, 523, 524, 525, 526, 527, + -1, 520, 521, 522, 781, 523, 524, 525, 526, 527, 528, 529, 609, 531, 577, 578, 579, 580, 581, 582, - 583, 584, 585, 586, 587, 610, 840, 611, 765, 612, + 583, 584, 585, 586, 587, 610, 839, 611, 764, 612, 695, 613, 378, 640, 498, 614, 380, 381, 382, 427, 428, 429, 383, 384, 385, 386, 387, 388, 477, 478, 389, 390, 391, 392, 532, 480, 533, 483, 440, 441, - 534, 395, 396, 397, 569, 473, 567, 568, 705, 706, - 638, 777, 617, 618, 619, 620, 621, 737, 876, 912, - 904, 905, 906, 913, 622, 623, 624, 625, 907, 879, - 626, 627, 908, 927, 628, 629, 630, 843, 741, 845, - 883, 902, 903, 631, 398, 399, 400, 424, 632, 470, - 471, 450, 451, 789, 790, 402, 673, 674, 678, 403, - 404, 684, 685, 688, 691, 405, 697, 698, 406, 452, + 534, 395, 396, 397, 569, 473, 567, 568, 704, 705, + 638, 776, 617, 618, 619, 620, 621, 736, 875, 911, + 903, 904, 905, 912, 622, 623, 624, 625, 906, 878, + 626, 627, 907, 926, 628, 629, 630, 842, 740, 844, + 882, 901, 902, 631, 398, 399, 400, 424, 632, 470, + 471, 450, 451, 788, 789, 402, 673, 674, 678, 403, + 404, 684, 685, 688, 691, 405, 696, 697, 406, 452, 453 }; @@ -1685,67 +1685,67 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 394, 445, 401, 588, 444, 430, 445, 379, 637, 393, - 773, 646, 776, 769, 377, 778, 667, 677, 842, 708, - 494, 530, 687, 709, 446, 668, 535, 421, 437, 446, - 466, 700, 667, 787, 720, 721, 731, 911, 475, 661, - 710, 661, 662, 655, 919, 658, 492, 417, 481, 430, - 328, 329, 330, 422, 911, 493, 481, 659, 669, 670, - 671, 672, 476, 576, 482, 647, 648, 788, 437, 676, - 722, 723, 732, 663, 676, 663, 633, 635, 589, 418, - 676, 644, 645, 676, 437, -35, 590, 649, 481, 407, - 432, 650, 676, 433, 779, 634, 565, 754, 755, 756, - 757, 758, 759, 760, 761, 762, 763, 716, 664, 717, - 746, 735, 748, 657, 664, 589, 664, 764, 589, 664, - 541, 664, 639, 664, 664, 774, 542, 495, 664, 576, - 496, 543, 844, 497, 576, 549, 557, 544, 571, 573, - 576, 550, 558, 576, 572, 574, 853, 652, 854, 637, - 852, 637, 576, 653, 637, 415, 781, 665, 783, 791, - 793, 708, 766, 795, 797, 542, 794, 408, 785, 796, - 798, 576, 409, 693, 456, 458, 460, 462, 464, 465, - 468, 800, 802, 804, 423, 807, 410, 801, 803, 805, - 565, 808, 565, 810, 812, 426, 884, 425, 885, 811, - 813, 926, 766, 437, 766, 890, 891, 892, 893, 894, - 895, 794, 798, 801, 805, 808, 813, 922, 562, 411, - 857, 859, 563, 766, 858, 860, 680, 681, 682, 683, - 887, 708, 445, 769, 412, 444, 828, 829, 830, 831, - 786, 718, 719, 454, 457, 459, 455, 455, 455, 413, - 642, 439, 846, 643, 461, 446, 848, 455, 463, 467, - 414, 455, 455, 565, 675, 724, 725, 455, 863, 677, - 679, 686, 419, 455, 455, 867, 687, 766, 849, 689, - 850, 851, 455, 420, 692, 667, 921, 455, 699, 637, - 817, 455, 713, 714, 715, 821, 822, 823, 576, 576, + 394, 430, 401, 637, 768, 646, 445, 444, 588, 393, + 494, 445, 667, 377, 379, 841, 535, 772, 707, 775, + 446, 437, 777, 466, 708, 446, 786, 677, 667, 668, + 421, 475, 687, 719, 720, 730, 417, 407, 655, 661, + 910, 699, 662, 481, 661, 430, 658, 918, 541, 562, + 709, 482, 481, 563, 542, 476, 422, 910, 659, 634, + 787, 437, 669, 670, 671, 672, 633, 635, 418, 721, + 722, 731, 589, 663, 676, 408, 589, 437, 663, 676, + 590, 647, 648, 639, 492, 676, 481, 589, 676, 328, + 329, 330, 565, 493, 773, 778, 495, 676, 715, 496, + 716, -35, 497, 649, 745, 409, 747, 650, 456, 458, + 460, 462, 464, 465, 468, 543, 734, 827, 828, 829, + 830, 544, 843, 753, 754, 755, 756, 757, 758, 759, + 760, 761, 762, 549, 557, 432, 571, 410, 433, 550, + 558, 411, 572, 763, 637, 573, 637, 652, 412, 637, + 665, 574, 782, 653, 664, 780, 851, 415, 790, 707, + 664, 765, 664, 784, 542, 664, 693, 664, 413, 664, + 664, 792, 794, 796, 664, 799, 801, 793, 795, 797, + 414, 800, 802, 803, 806, 809, 565, 811, 565, 804, + 807, 810, 425, 812, 883, 884, 437, 889, 925, 890, + 765, 765, 891, 793, 892, 797, 893, 894, 800, 921, + 804, 426, 807, 812, 856, 765, 858, 419, 857, 642, + 859, 434, 643, 768, 680, 681, 682, 683, 454, 707, + 530, 455, 457, 717, 718, 455, 886, 445, 444, 765, + 459, 817, 766, 455, 818, 845, 852, 461, 853, 847, + 455, 446, 463, 467, 675, 455, 455, 455, 679, 565, + 686, 455, 689, 455, 692, 455, 698, 455, 765, 455, + 817, 846, 576, 872, 849, 850, 420, 862, 677, 816, + 667, 723, 724, 637, 866, 687, 712, 713, 714, 423, + 644, 645, 920, 765, 848, 765, 895, 823, 824, 439, + 825, 826, 831, 832, 447, 449, 469, 768, 474, 479, + 484, 325, 481, 490, 491, 536, 537, 538, 561, 540, + 539, 559, 657, 546, 676, 676, 545, 565, 547, 548, + 551, 676, 676, 552, 553, 554, 555, 676, 576, 676, + 556, 560, 874, 576, 570, 876, 564, 651, 656, 576, + 492, 641, 576, 725, 589, 666, 662, 727, 690, 700, + 703, 576, 726, 637, 728, 729, 711, 732, 737, 741, + 735, 738, 742, 746, 779, -36, 739, 743, 748, 783, + 576, 749, 431, -34, 750, 876, 751, -29, 798, 752, + 438, 393, 805, 791, 808, 813, 814, 565, 394, 393, + 401, 394, 913, 840, 855, 908, 394, 393, 401, 765, + 393, 377, 379, 868, 887, 393, 472, 922, 896, 637, + 448, 888, 898, 899, 879, 897, 431, 486, -569, 909, + 431, 915, 914, 591, 833, 393, 919, 927, 916, 393, + 928, 835, 834, 838, 416, 836, 438, 877, 837, 785, + 815, 710, 873, 880, 917, 393, 923, 881, 924, 769, + 900, 446, 770, 488, 771, 443, 701, 485, 487, 861, + 860, 863, 865, 566, 489, 864, 869, 867, 871, 870, + 0, 0, 393, 0, 616, 0, 0, 877, 0, 0, + 0, 0, 0, 615, 0, 0, 0, 0, 0, 0, + 0, 446, 0, 820, 821, 822, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, - 576, 576, 576, 576, 434, 766, 818, 769, 767, 819, - 676, 676, 766, 818, 447, 847, 873, 676, 676, 766, - 896, 449, 565, 676, 469, 676, 824, 825, 474, 826, - 827, 479, 832, 833, 484, 325, 490, 491, 481, 875, - 539, 536, 877, 537, 538, 540, 545, 641, 726, 546, - 547, 548, 551, 559, 552, 666, 553, 554, 555, 637, - 561, 556, 560, 651, 656, 589, 564, 570, 492, 662, - 576, 576, 431, 690, 701, 729, 730, 576, 576, 728, - 438, 393, 877, 576, 733, 576, 727, 736, 394, 393, - 401, 394, 565, 704, 738, 379, 394, 393, 401, 914, - 393, 909, 377, 448, 742, 393, 472, 739, 712, 740, - 743, 744, 747, 749, 923, 637, 431, 486, 750, 751, - 431, 752, -36, 753, -34, 393, 780, 784, -29, 393, - 792, 869, 799, 878, 814, 806, 438, 809, 815, 841, - 880, 856, 766, 888, 897, 393, 899, 889, 900, 910, - -569, 898, 915, 916, 917, 591, 446, 920, 834, 928, - 929, 835, 837, 566, 488, 836, 839, 489, 838, 487, - 711, 416, 393, 878, 616, 816, 881, 874, 918, 924, - 882, 925, 485, 615, 901, 862, 770, 771, 702, 866, - 443, 861, 865, 772, 868, 864, 446, 0, 872, 0, - 0, 870, 0, 0, 0, 871, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 576, 576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 660, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 696, 0, - 0, 0, 0, 0, 0, 703, 0, 566, 0, 566, - 0, 0, 0, 0, 393, 0, 393, 0, 393, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 702, 0, 566, 0, 566, + 0, 0, 0, 0, 393, 0, 393, 0, 393, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 576, 576, + 0, 0, 0, 0, 0, 576, 576, 0, 0, 0, + 0, 576, 0, 576, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 616, 0, 0, 0, 0, 0, 0, 0, 0, 615, 394, 0, 0, 0, 0, 0, 0, 0, @@ -1755,759 +1755,533 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 566, - 0, 0, 0, 0, 0, 0, 0, 0, 393, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 616, 0, 0, - 0, 616, 0, 0, 0, 0, 615, 0, 0, 0, - 615, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 566, - 0, 0, 0, 0, 0, 0, 0, 0, 393, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 696, 0, 696, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 566, 0, + 0, 0, 0, 0, 0, 0, 0, 393, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 616, 0, 0, 0, + 616, 0, 0, 0, 0, 615, 0, 0, 0, 615, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 616, 616, 0, 616, 0, 401, 0, 0, - 0, 615, 615, 0, 615, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 616, 0, 0, 0, 0, 0, 0, - 0, 0, 615, 0, 0, 0, 0, 0, 0, 616, - 0, 0, 0, 0, 0, 0, 616, 0, 615, 0, - 0, 0, 0, 0, 0, 615, 616, 0, 0, 0, - 616, 0, 0, 0, 0, 615, 616, 0, 0, 615, - 0, 0, 0, 442, 0, 615, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 325, 0, 0, 0, 0, 0, - 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 327, 328, 329, 330, - 331, 0, 0, 0, 0, 0, 0, 0, 0, 332, - 333, 334, 335, 336, 337, 338, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 339, 340, 341, 342, 343, 344, 0, 0, 0, - 0, 0, 0, 0, 0, 345, 0, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 1, 2, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 0, 0, 499, 500, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 501, 502, 0, 325, 0, 591, 592, - 0, 0, 0, 0, 593, 503, 504, 505, 506, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 327, 328, - 329, 330, 331, 0, 0, 0, 507, 508, 509, 510, - 511, 332, 333, 334, 335, 336, 337, 338, 594, 595, - 596, 597, 0, 598, 599, 600, 601, 602, 603, 604, - 605, 606, 607, 339, 340, 341, 342, 343, 344, 512, - 513, 514, 515, 516, 517, 518, 519, 345, 608, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 0, 0, 499, 500, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 501, 502, 0, 325, 0, - 591, 768, 0, 0, 0, 0, 593, 503, 504, 505, - 506, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 327, 328, 329, 330, 331, 0, 0, 0, 507, 508, - 509, 510, 511, 332, 333, 334, 335, 336, 337, 338, - 594, 595, 596, 597, 0, 598, 599, 600, 601, 602, - 603, 604, 605, 606, 607, 339, 340, 341, 342, 343, - 344, 512, 513, 514, 515, 516, 517, 518, 519, 345, - 608, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 0, 0, 499, 500, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 501, 502, 0, - 325, 0, 591, 0, 0, 0, 0, 0, 593, 503, - 504, 505, 506, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 327, 328, 329, 330, 331, 0, 0, 0, - 507, 508, 509, 510, 511, 332, 333, 334, 335, 336, - 337, 338, 594, 595, 596, 597, 0, 598, 599, 600, - 601, 602, 603, 604, 605, 606, 607, 339, 340, 341, - 342, 343, 344, 512, 513, 514, 515, 516, 517, 518, - 519, 345, 608, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 0, 0, - 499, 500, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 501, - 502, 0, 325, 0, 484, 0, 0, 0, 0, 0, - 593, 503, 504, 505, 506, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 327, 328, 329, 330, 331, 0, - 0, 0, 507, 508, 509, 510, 511, 332, 333, 334, - 335, 336, 337, 338, 594, 595, 596, 597, 0, 598, - 599, 600, 601, 602, 603, 604, 605, 606, 607, 339, - 340, 341, 342, 343, 344, 512, 513, 514, 515, 516, - 517, 518, 519, 345, 608, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, 374, 375, 376, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 0, 0, 499, 500, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 501, 502, 0, 325, 0, 0, 0, 0, 0, - 0, 0, 593, 503, 504, 505, 506, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 327, 328, 329, 330, - 331, 0, 0, 0, 507, 508, 509, 510, 511, 332, - 333, 334, 335, 336, 337, 338, 594, 595, 596, 597, - 0, 598, 599, 600, 601, 602, 603, 604, 605, 606, - 607, 339, 340, 341, 342, 343, 344, 512, 513, 514, - 515, 516, 517, 518, 519, 345, 608, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 1, 2, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 0, 0, 499, 500, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 501, 502, 0, 325, 0, 0, 0, - 0, 0, 0, 0, 593, 503, 504, 505, 506, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 327, 328, - 329, 330, 331, 0, 0, 0, 507, 508, 509, 510, - 511, 332, 333, 334, 335, 336, 337, 338, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 339, 340, 341, 342, 343, 344, 512, - 513, 514, 515, 516, 517, 518, 519, 345, 0, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 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, 318, 319, 320, - 321, 322, 323, 324, 0, 0, 499, 500, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 501, 502, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 503, 504, 505, - 506, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 327, 328, 329, 330, 0, 0, 0, 0, 507, 508, - 509, 510, 511, 332, 333, 334, 335, 336, 337, 338, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 339, 340, 341, 342, 343, - 344, 512, 513, 514, 515, 516, 517, 518, 519, 345, - 0, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 566, 0, + 0, 0, 0, 0, 0, 0, 0, 393, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 325, 0, 0, 0, 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 327, 328, 329, 330, 331, 0, 0, 0, - 0, 0, 0, 0, 0, 332, 333, 334, 335, 336, - 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 339, 340, 341, - 342, 343, 344, 0, 0, 0, 0, 0, 0, 0, - 0, 345, 0, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 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, 318, 319, 320, 321, 322, 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 616, 616, 0, 616, 0, 401, 0, 0, 0, + 615, 615, 0, 615, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 327, 328, 329, 330, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 332, 333, 334, - 335, 336, 337, 338, 594, 0, 0, 597, 0, 598, - 599, 0, 0, 602, 0, 0, 0, 0, 0, 339, - 340, 341, 342, 343, 344, 0, 0, 0, 0, 0, - 0, 0, 0, 345, 0, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, 374, 375, 376, 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, 318, 319, 320, 321, 322, 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 616, 0, 0, 0, 0, 0, 0, 0, + 0, 615, 0, 0, 0, 0, 0, 0, 616, 0, + 0, 0, 0, 0, 0, 616, 0, 615, 0, 0, + 0, 0, 0, 0, 615, 616, 0, 0, 0, 616, + 0, 0, 0, 0, 615, 616, 0, 0, 615, 0, + 0, 0, 442, 0, 615, 1, 2, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 435, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 327, 328, 329, 330, - 0, 0, 0, 0, 0, 0, 0, 0, 436, 332, - 333, 334, 335, 336, 337, 338, 0, 0, 0, 0, + 0, 0, 0, 325, 0, 0, 0, 0, 0, 0, + 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 327, 328, 329, 330, 331, + 0, 0, 0, 0, 0, 0, 0, 0, 332, 333, + 334, 335, 336, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 339, 340, 341, 342, 343, 344, 0, 0, 0, - 0, 0, 0, 0, 0, 345, 0, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 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, 318, 319, 320, 321, 322, - 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, + 339, 340, 341, 342, 343, 344, 0, 0, 0, 0, + 0, 0, 0, 0, 345, 0, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, 374, 375, 376, 1, 2, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 0, 0, 499, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 325, 0, 0, 0, + 0, 0, 501, 502, 0, 325, 0, 591, 592, 0, + 0, 0, 0, 593, 503, 504, 505, 506, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 327, 328, 329, + 330, 331, 0, 0, 0, 507, 508, 509, 510, 511, + 332, 333, 334, 335, 336, 337, 338, 594, 595, 596, + 597, 0, 598, 599, 600, 601, 602, 603, 604, 605, + 606, 607, 339, 340, 341, 342, 343, 344, 512, 513, + 514, 515, 516, 517, 518, 519, 345, 608, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, + 368, 369, 370, 371, 372, 373, 374, 375, 376, 1, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 0, 0, 499, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 327, 328, - 329, 330, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 332, 333, 334, 335, 336, 337, 338, 0, 0, + 0, 0, 0, 0, 501, 502, 0, 325, 0, 591, + 767, 0, 0, 0, 0, 593, 503, 504, 505, 506, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 327, + 328, 329, 330, 331, 0, 0, 0, 507, 508, 509, + 510, 511, 332, 333, 334, 335, 336, 337, 338, 594, + 595, 596, 597, 0, 598, 599, 600, 601, 602, 603, + 604, 605, 606, 607, 339, 340, 341, 342, 343, 344, + 512, 513, 514, 515, 516, 517, 518, 519, 345, 608, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, + 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, + 376, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 0, 0, 499, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 339, 340, 341, 342, 343, 344, 0, - 0, 0, 0, 0, 0, 0, 0, 345, 0, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 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, 318, 319, 320, - 321, 322, 323, 324, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 501, 502, 0, 325, + 0, 591, 0, 0, 0, 0, 0, 593, 503, 504, + 505, 506, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 327, 328, 329, 330, 331, 0, 0, 0, 507, + 508, 509, 510, 511, 332, 333, 334, 335, 336, 337, + 338, 594, 595, 596, 597, 0, 598, 599, 600, 601, + 602, 603, 604, 605, 606, 607, 339, 340, 341, 342, + 343, 344, 512, 513, 514, 515, 516, 517, 518, 519, + 345, 608, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 376, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 0, 0, 499, + 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 501, 502, + 0, 325, 0, 484, 0, 0, 0, 0, 0, 593, + 503, 504, 505, 506, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 327, 328, 329, 330, 331, 0, 0, + 0, 507, 508, 509, 510, 511, 332, 333, 334, 335, + 336, 337, 338, 594, 595, 596, 597, 0, 598, 599, + 600, 601, 602, 603, 604, 605, 606, 607, 339, 340, + 341, 342, 343, 344, 512, 513, 514, 515, 516, 517, + 518, 519, 345, 608, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 1, 2, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 0, + 0, 499, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 501, 502, 0, 325, 0, 0, 0, 0, 0, 0, + 0, 593, 503, 504, 505, 506, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 327, 328, 329, 330, 331, + 0, 0, 0, 507, 508, 509, 510, 511, 332, 333, + 334, 335, 336, 337, 338, 594, 595, 596, 597, 0, + 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, + 339, 340, 341, 342, 343, 344, 512, 513, 514, 515, + 516, 517, 518, 519, 345, 608, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, 374, 375, 376, 1, 2, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 0, 0, 499, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 707, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 501, 502, 0, 325, 0, 0, 0, 0, + 0, 0, 0, 593, 503, 504, 505, 506, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 327, 328, 329, + 330, 331, 0, 0, 0, 507, 508, 509, 510, 511, + 332, 333, 334, 335, 336, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 327, 328, 329, 330, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 332, 333, 334, 335, 336, 337, 338, + 0, 0, 339, 340, 341, 342, 343, 344, 512, 513, + 514, 515, 516, 517, 518, 519, 345, 0, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, + 368, 369, 370, 371, 372, 373, 374, 375, 376, 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, 318, 319, 320, 321, + 322, 323, 324, 0, 0, 499, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 339, 340, 341, 342, 343, - 344, 0, 0, 0, 0, 0, 0, 0, 0, 345, - 0, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 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, 318, - 319, 320, 321, 322, 323, 324, 0, 0, 0, 0, + 0, 0, 0, 0, 501, 502, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 503, 504, 505, 506, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 327, + 328, 329, 330, 0, 0, 0, 0, 507, 508, 509, + 510, 511, 332, 333, 334, 335, 336, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 339, 340, 341, 342, 343, 344, + 512, 513, 514, 515, 516, 517, 518, 519, 345, 0, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, + 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, + 376, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 820, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 325, + 0, 0, 0, 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 327, 328, 329, 330, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 332, 333, 334, 335, 336, - 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 339, 340, 341, - 342, 343, 344, 0, 0, 0, 0, 0, 0, 0, - 0, 345, 0, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 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, 318, 319, 320, 321, 322, 323, 324, 0, 0, + 0, 327, 328, 329, 330, 331, 0, 0, 0, 0, + 0, 0, 0, 0, 332, 333, 334, 335, 336, 337, + 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 339, 340, 341, 342, + 343, 344, 0, 0, 0, 0, 0, 0, 0, 0, + 345, 0, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 376, 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, + 318, 319, 320, 321, 322, 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 855, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 327, 328, 329, 330, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 332, 333, 334, - 335, 336, 337, 338, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 339, - 340, 341, 342, 343, 344, 0, 0, 0, 0, 0, - 0, 0, 0, 345, 0, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, 374, 375, 376, 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, 318, 319, 320, 321, 322, 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 327, 328, 329, 330, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 332, 333, 334, 335, + 336, 337, 338, 594, 0, 0, 597, 0, 598, 599, + 0, 0, 602, 0, 0, 0, 0, 0, 339, 340, + 341, 342, 343, 344, 0, 0, 0, 0, 0, 0, + 0, 0, 345, 0, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 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, 318, 319, 320, 321, 322, 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 327, 328, 329, 330, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 332, - 333, 334, 335, 336, 337, 338, 0, 0, 0, 0, + 0, 435, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 327, 328, 329, 330, 0, + 0, 0, 0, 0, 0, 0, 0, 436, 332, 333, + 334, 335, 336, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 339, 340, 341, 342, 343, 344, 0, 0, 0, - 0, 0, 0, 0, 0, 345, 0, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 2, 3, + 339, 340, 341, 342, 343, 344, 0, 0, 0, 0, + 0, 0, 0, 0, 345, 0, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, 374, 375, 376, 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, 0, 0, 61, 62, 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, @@ -2533,68 +2307,117 @@ static const yytype_int16 yytable[] = 284, 285, 286, 287, 288, 289, 290, 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, 321, 0, 0, - 0, 0, 0, 499, 500, 0, 0, 0, 0, 0, + 314, 0, 0, 0, 318, 319, 320, 321, 322, 323, + 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 501, 502, 0, 0, 0, 636, 775, 0, - 0, 0, 0, 0, 503, 504, 505, 506, 0, 0, + 0, 0, 0, 0, 0, 325, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 507, 508, 509, 510, 511, - 332, 0, 0, 0, 0, 337, 338, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 327, 328, 329, + 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 332, 333, 334, 335, 336, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 512, 513, - 514, 515, 516, 517, 518, 519, 0, 0, 0, 0, + 0, 0, 339, 340, 341, 342, 343, 344, 0, 0, + 0, 0, 0, 0, 0, 0, 345, 0, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, + 368, 369, 370, 371, 372, 373, 374, 375, 376, 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, 318, 319, 320, 321, + 322, 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 358, 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, 0, 0, 0, 0, - 321, 0, 0, 0, 0, 0, 499, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 501, 502, 0, 0, 0, - 636, 886, 0, 0, 0, 0, 0, 503, 504, 505, - 506, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 507, 508, - 509, 510, 511, 332, 0, 0, 0, 0, 337, 338, + 706, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 327, + 328, 329, 330, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 332, 333, 334, 335, 336, 337, 338, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 339, 340, 341, 342, 343, 344, + 0, 0, 0, 0, 0, 0, 0, 0, 345, 0, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, + 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, + 376, 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, 318, 319, + 320, 321, 322, 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 512, 513, 514, 515, 516, 517, 518, 519, 0, + 0, 0, 819, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 358, 2, 3, 4, 5, 6, 7, + 0, 327, 328, 329, 330, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 332, 333, 334, 335, 336, 337, + 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 339, 340, 341, 342, + 343, 344, 0, 0, 0, 0, 0, 0, 0, 0, + 345, 0, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 376, 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, 0, 0, 61, 62, 63, 64, 65, 66, 67, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, @@ -2620,18 +2443,65 @@ static const yytype_int16 yytable[] = 288, 289, 290, 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, 321, 0, 0, 0, 0, 0, 499, - 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 501, 502, - 0, 0, 575, 0, 0, 0, 0, 0, 0, 0, - 503, 504, 505, 506, 0, 0, 0, 0, 0, 0, + 318, 319, 320, 321, 322, 323, 324, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 854, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 327, 328, 329, 330, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 332, 333, 334, 335, + 336, 337, 338, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 339, 340, + 341, 342, 343, 344, 0, 0, 0, 0, 0, 0, + 0, 0, 345, 0, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 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, 318, 319, 320, 321, 322, 323, 324, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 507, 508, 509, 510, 511, 332, 0, 0, 0, - 0, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 512, 513, 514, 515, 516, 517, - 518, 519, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 358, 2, 3, 4, + 0, 0, 0, 0, 0, 327, 328, 329, 330, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 332, 333, + 334, 335, 336, 337, 338, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 339, 340, 341, 342, 343, 344, 0, 0, 0, 0, + 0, 0, 0, 0, 345, 0, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, 374, 375, 376, 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, @@ -2666,7 +2536,7 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 321, 0, 0, 0, 0, 0, 499, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 501, 502, 0, 0, 0, 636, 0, 0, 0, + 0, 501, 502, 0, 0, 0, 636, 774, 0, 0, 0, 0, 0, 503, 504, 505, 506, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 507, 508, 509, 510, 511, 332, @@ -2709,8 +2579,8 @@ static const yytype_int16 yytable[] = 312, 313, 314, 0, 0, 0, 0, 0, 0, 321, 0, 0, 0, 0, 0, 499, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 501, 502, 0, 0, 734, 0, - 0, 0, 0, 0, 0, 0, 503, 504, 505, 506, + 0, 0, 0, 0, 501, 502, 0, 0, 0, 636, + 885, 0, 0, 0, 0, 0, 503, 504, 505, 506, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 507, 508, 509, 510, 511, 332, 0, 0, 0, 0, 337, 338, 0, @@ -2753,7 +2623,7 @@ static const yytype_int16 yytable[] = 0, 0, 321, 0, 0, 0, 0, 0, 499, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 501, 502, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 745, 503, + 0, 575, 0, 0, 0, 0, 0, 0, 0, 503, 504, 505, 506, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 507, 508, 509, 510, 511, 332, 0, 0, 0, 0, @@ -2796,7 +2666,7 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 321, 0, 0, 0, 0, 0, 499, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 501, 502, 0, 0, 0, 0, 0, 0, 0, 0, + 501, 502, 0, 0, 0, 636, 0, 0, 0, 0, 0, 0, 503, 504, 505, 506, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 507, 508, 509, 510, 511, 332, 0, @@ -2839,11 +2709,11 @@ static const yytype_int16 yytable[] = 313, 314, 0, 0, 0, 0, 0, 0, 321, 0, 0, 0, 0, 0, 499, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 501, 502, 0, 0, 0, 0, 0, + 0, 0, 0, 501, 502, 0, 0, 733, 0, 0, 0, 0, 0, 0, 0, 503, 504, 505, 506, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 507, 508, 509, 510, - 511, 332, 0, 0, 0, 0, 337, 654, 0, 0, + 511, 332, 0, 0, 0, 0, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 512, 513, 514, 515, 516, 517, 518, 519, 0, 0, 0, @@ -2883,10 +2753,10 @@ static const yytype_int16 yytable[] = 0, 321, 0, 0, 0, 0, 0, 499, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 501, 502, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 503, 504, + 0, 0, 0, 0, 0, 0, 0, 744, 503, 504, 505, 506, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 507, - 508, 509, 510, 694, 332, 0, 0, 0, 0, 337, + 508, 509, 510, 511, 332, 0, 0, 0, 0, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 512, 513, 514, 515, 516, 517, 518, 519, @@ -2924,252 +2794,66 @@ static const yytype_int16 yytable[] = 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 0, 0, 0, 0, 0, 0, 321, 0, 0, 0, 0, 0, + 499, 500, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 501, + 502, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 503, 504, 505, 506, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 507, 508, 509, 510, 511, 332, 0, 0, + 0, 0, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 512, 513, 514, 515, 516, + 517, 518, 519, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 358, 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, 0, 0, 0, 0, 321, 0, 0, + 0, 0, 0, 499, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 501, 502, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 503, 504, 505, 506, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 507, 508, 509, 510, 511, + 332, 0, 0, 0, 0, 337, 654, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 332, 0, 0, - 0, 0, 337, 338 -}; - -static const yytype_int16 yycheck[] = -{ - 0, 401, 0, 481, 401, 382, 406, 0, 493, 0, - 634, 502, 636, 622, 0, 639, 542, 547, 737, 567, - 434, 439, 552, 569, 401, 348, 440, 359, 390, 406, - 413, 561, 558, 348, 331, 332, 336, 899, 385, 348, - 570, 348, 351, 528, 906, 356, 349, 353, 351, 426, - 374, 375, 376, 385, 916, 358, 351, 368, 381, 382, - 383, 384, 409, 481, 359, 329, 330, 382, 430, 547, - 367, 368, 372, 382, 552, 382, 490, 491, 351, 385, - 558, 499, 500, 561, 446, 349, 359, 351, 351, 349, - 356, 355, 570, 359, 640, 358, 473, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 361, 540, 363, - 601, 589, 603, 531, 546, 351, 548, 358, 351, 551, - 350, 553, 358, 555, 556, 358, 356, 353, 560, 547, - 356, 350, 741, 359, 552, 350, 350, 356, 350, 350, - 558, 356, 356, 561, 356, 356, 354, 350, 356, 634, - 774, 636, 570, 356, 639, 351, 350, 540, 649, 350, - 350, 709, 356, 350, 350, 356, 356, 349, 653, 356, - 356, 589, 349, 556, 408, 409, 410, 411, 412, 413, - 414, 350, 350, 350, 359, 350, 349, 356, 356, 356, - 567, 356, 569, 350, 350, 356, 350, 350, 350, 356, - 356, 920, 356, 565, 356, 350, 350, 350, 350, 350, - 350, 356, 356, 356, 356, 356, 356, 350, 352, 349, - 352, 352, 356, 356, 356, 356, 381, 382, 383, 384, - 854, 779, 632, 842, 349, 632, 720, 721, 722, 723, - 658, 327, 328, 382, 382, 382, 385, 385, 385, 349, - 356, 367, 743, 359, 382, 632, 747, 385, 382, 382, - 349, 385, 385, 640, 382, 333, 334, 385, 798, 799, - 382, 382, 349, 385, 385, 805, 806, 356, 357, 382, - 765, 766, 385, 349, 382, 811, 910, 385, 382, 774, - 704, 385, 364, 365, 366, 713, 714, 715, 716, 717, - 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, - 728, 729, 730, 731, 385, 356, 356, 926, 359, 359, - 798, 799, 356, 356, 359, 359, 359, 805, 806, 356, - 357, 385, 709, 811, 385, 813, 716, 717, 353, 718, - 719, 385, 724, 725, 353, 351, 385, 385, 351, 840, - 358, 350, 843, 385, 359, 356, 358, 385, 371, 356, - 356, 356, 356, 350, 356, 385, 356, 356, 356, 854, - 349, 356, 356, 350, 349, 351, 359, 358, 349, 351, - 798, 799, 382, 348, 352, 335, 337, 805, 806, 369, - 390, 382, 883, 811, 352, 813, 370, 354, 398, 390, - 398, 401, 779, 385, 349, 398, 406, 398, 406, 900, - 401, 896, 398, 406, 349, 406, 416, 359, 385, 359, - 349, 359, 349, 357, 915, 910, 426, 425, 359, 359, - 430, 359, 349, 359, 349, 426, 385, 385, 350, 430, - 358, 348, 356, 843, 350, 356, 446, 356, 350, 352, - 393, 352, 356, 348, 354, 446, 350, 382, 349, 358, - 353, 385, 359, 350, 397, 353, 843, 353, 726, 359, - 354, 727, 729, 473, 430, 728, 731, 430, 730, 426, - 572, 331, 473, 883, 484, 703, 845, 818, 905, 916, - 845, 917, 424, 484, 883, 796, 632, 632, 563, 803, - 398, 794, 801, 632, 806, 799, 883, -1, 813, -1, - -1, 809, -1, -1, -1, 811, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 536, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 558, -1, - -1, -1, -1, -1, -1, 565, -1, 567, -1, 569, - -1, -1, -1, -1, 565, -1, 567, -1, 569, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 622, -1, -1, -1, -1, -1, -1, -1, - -1, 622, 632, -1, -1, -1, -1, -1, -1, -1, - 640, 632, -1, -1, -1, -1, -1, -1, -1, 640, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 709, - -1, -1, -1, -1, -1, -1, -1, -1, 709, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 737, -1, -1, - -1, 741, -1, -1, -1, -1, 737, -1, -1, -1, - 741, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 779, - -1, -1, -1, -1, -1, -1, -1, -1, 779, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 811, -1, 813, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 842, 843, -1, 845, -1, 845, -1, -1, - -1, 842, 843, -1, 845, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 883, -1, -1, -1, -1, -1, -1, - -1, -1, 883, -1, -1, -1, -1, -1, -1, 899, - -1, -1, -1, -1, -1, -1, 906, -1, 899, -1, - -1, -1, -1, -1, -1, 906, 916, -1, -1, -1, - 920, -1, -1, -1, -1, 916, 926, -1, -1, 920, - -1, -1, -1, 0, -1, 926, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 351, -1, -1, -1, -1, -1, - -1, -1, 359, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 373, 374, 375, 376, - 377, -1, -1, -1, -1, -1, -1, -1, -1, 386, - 387, 388, 389, 390, 391, 392, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 408, 409, 410, 411, 412, 413, -1, -1, -1, - -1, -1, -1, -1, -1, 422, -1, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, -1, -1, 329, 330, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 348, 349, -1, 351, -1, 353, 354, - -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 373, 374, - 375, 376, 377, -1, -1, -1, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, -1, 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, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, 326, -1, -1, 329, 330, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 348, 349, -1, 351, -1, - 353, 354, -1, -1, -1, -1, 359, 360, 361, 362, - 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 373, 374, 375, 376, 377, -1, -1, -1, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, -1, 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, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 3, 4, 5, 6, 7, 8, 9, 10, + 0, 0, 0, 0, 0, 0, 0, 0, 512, 513, + 514, 515, 516, 517, 518, 519, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 358, 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, + 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, @@ -3195,569 +2879,659 @@ static const yytype_int16 yycheck[] = 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, -1, -1, 329, 330, + 311, 312, 313, 314, 0, 0, 0, 0, 0, 0, + 321, 0, 0, 0, 0, 0, 499, 500, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 501, 502, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 503, 504, 505, + 506, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 507, 508, + 509, 510, 694, 332, 0, 0, 0, 0, 337, 338, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 512, 513, 514, 515, 516, 517, 518, 519, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 358, 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, 0, + 0, 0, 0, 321, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 332, 0, 0, 0, + 0, 337, 338 +}; + +static const yytype_int16 yycheck[] = +{ + 0, 382, 0, 493, 622, 502, 401, 401, 481, 0, + 434, 406, 542, 0, 0, 736, 440, 634, 567, 636, + 401, 390, 639, 413, 569, 406, 348, 547, 558, 348, + 359, 385, 552, 331, 332, 336, 353, 349, 528, 348, + 898, 561, 351, 351, 348, 426, 356, 905, 350, 352, + 570, 359, 351, 356, 356, 409, 385, 915, 368, 358, + 382, 430, 381, 382, 383, 384, 490, 491, 385, 367, + 368, 372, 351, 382, 547, 349, 351, 446, 382, 552, + 359, 329, 330, 358, 349, 558, 351, 351, 561, 374, + 375, 376, 473, 358, 358, 640, 353, 570, 361, 356, + 363, 349, 359, 351, 601, 349, 603, 355, 408, 409, + 410, 411, 412, 413, 414, 350, 589, 719, 720, 721, + 722, 356, 740, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 350, 350, 356, 350, 349, 359, 356, + 356, 349, 356, 358, 634, 350, 636, 350, 349, 639, + 540, 356, 649, 356, 540, 350, 773, 351, 350, 708, + 546, 356, 548, 653, 356, 551, 556, 553, 349, 555, + 556, 350, 350, 350, 560, 350, 350, 356, 356, 356, + 349, 356, 356, 350, 350, 350, 567, 350, 569, 356, + 356, 356, 350, 356, 350, 350, 565, 350, 919, 350, + 356, 356, 350, 356, 350, 356, 350, 350, 356, 350, + 356, 356, 356, 356, 352, 356, 352, 349, 356, 356, + 356, 385, 359, 841, 381, 382, 383, 384, 382, 778, + 439, 385, 382, 327, 328, 385, 853, 632, 632, 356, + 382, 356, 359, 385, 359, 742, 354, 382, 356, 746, + 385, 632, 382, 382, 382, 385, 385, 385, 382, 640, + 382, 385, 382, 385, 382, 385, 382, 385, 356, 385, + 356, 359, 481, 359, 764, 765, 349, 797, 798, 703, + 810, 333, 334, 773, 804, 805, 364, 365, 366, 359, + 499, 500, 909, 356, 357, 356, 357, 715, 716, 367, + 717, 718, 723, 724, 359, 385, 385, 925, 353, 385, + 353, 351, 351, 385, 385, 350, 385, 359, 349, 356, + 358, 350, 531, 356, 797, 798, 358, 708, 356, 356, + 356, 804, 805, 356, 356, 356, 356, 810, 547, 812, + 356, 356, 839, 552, 358, 842, 359, 350, 349, 558, + 349, 385, 561, 371, 351, 385, 351, 369, 348, 352, + 385, 570, 370, 853, 335, 337, 385, 352, 349, 349, + 354, 359, 349, 349, 385, 349, 359, 359, 357, 385, + 589, 359, 382, 349, 359, 882, 359, 350, 356, 359, + 390, 382, 356, 358, 356, 350, 350, 778, 398, 390, + 398, 401, 899, 352, 352, 895, 406, 398, 406, 356, + 401, 398, 398, 348, 348, 406, 416, 914, 354, 909, + 406, 382, 350, 349, 393, 385, 426, 425, 353, 358, + 430, 350, 359, 353, 725, 426, 353, 359, 397, 430, + 354, 727, 726, 730, 331, 728, 446, 842, 729, 658, + 702, 572, 817, 844, 904, 446, 915, 844, 916, 632, + 882, 842, 632, 430, 632, 398, 563, 424, 426, 795, + 793, 798, 802, 473, 430, 800, 808, 805, 812, 810, + -1, -1, 473, -1, 484, -1, -1, 882, -1, -1, + -1, -1, -1, 484, -1, -1, -1, -1, -1, -1, + -1, 882, -1, 712, 713, 714, 715, 716, 717, 718, + 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, + 729, 730, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 536, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 348, 349, -1, - 351, -1, 353, -1, -1, -1, -1, -1, 359, 360, - 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 373, 374, 375, 376, 377, -1, -1, -1, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, -1, 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, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, -1, -1, - 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 348, - 349, -1, 351, -1, 353, -1, -1, -1, -1, -1, - 359, 360, 361, 362, 363, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 373, 374, 375, 376, 377, -1, - -1, -1, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, -1, 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, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 348, 349, -1, 351, -1, -1, -1, -1, -1, - -1, -1, 359, 360, 361, 362, 363, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 373, 374, 375, 376, - 377, -1, -1, -1, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - -1, 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, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, -1, -1, 329, 330, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 565, -1, 567, -1, 569, + -1, -1, -1, -1, 565, -1, 567, -1, 569, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 797, 798, + -1, -1, -1, -1, -1, 804, 805, -1, -1, -1, + -1, 810, -1, 812, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 348, 349, -1, 351, -1, -1, -1, - -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 373, 374, - 375, 376, 377, -1, -1, -1, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, -1, -1, + -1, -1, 622, -1, -1, -1, -1, -1, -1, -1, + -1, 622, 632, -1, -1, -1, -1, -1, -1, -1, + 640, 632, -1, -1, -1, -1, -1, -1, -1, 640, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, -1, 424, - 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 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, 320, 321, 322, - 323, 324, 325, 326, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 348, 349, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 360, 361, 362, - 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 373, 374, 375, 376, -1, -1, -1, -1, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 408, 409, 410, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, - -1, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 351, -1, -1, -1, -1, -1, -1, -1, 359, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 708, -1, + -1, -1, -1, -1, -1, -1, -1, 708, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 373, 374, 375, 376, 377, -1, -1, -1, - -1, -1, -1, -1, -1, 386, 387, 388, 389, 390, - 391, 392, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 408, 409, 410, - 411, 412, 413, -1, -1, -1, -1, -1, -1, -1, - -1, 422, -1, 424, 425, 426, 427, 428, 429, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 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, 320, 321, 322, 323, 324, 325, 326, -1, -1, + -1, -1, -1, -1, -1, -1, 736, -1, -1, -1, + 740, -1, -1, -1, -1, 736, -1, -1, -1, 740, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 778, -1, + -1, -1, -1, -1, -1, -1, -1, 778, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 373, 374, 375, 376, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 386, 387, 388, - 389, 390, 391, 392, 393, -1, -1, 396, -1, 398, - 399, -1, -1, 402, -1, -1, -1, -1, -1, 408, - 409, 410, 411, 412, 413, -1, -1, -1, -1, -1, - -1, -1, -1, 422, -1, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 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, 320, 321, 322, 323, 324, 325, 326, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 359, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 373, 374, 375, 376, - -1, -1, -1, -1, -1, -1, -1, -1, 385, 386, - 387, 388, 389, 390, 391, 392, -1, -1, -1, -1, + -1, 841, 842, -1, 844, -1, 844, -1, -1, -1, + 841, 842, -1, 844, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 408, 409, 410, 411, 412, 413, -1, -1, -1, - -1, -1, -1, -1, -1, 422, -1, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 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, 320, 321, 322, 323, 324, - 325, 326, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 351, -1, -1, -1, + -1, -1, 882, -1, -1, -1, -1, -1, -1, -1, + -1, 882, -1, -1, -1, -1, -1, -1, 898, -1, + -1, -1, -1, -1, -1, 905, -1, 898, -1, -1, + -1, -1, -1, -1, 905, 915, -1, -1, -1, 919, + -1, -1, -1, -1, 915, 925, -1, -1, 919, -1, + -1, -1, 0, -1, 925, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 373, 374, - 375, 376, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 386, 387, 388, 389, 390, 391, 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 408, 409, 410, 411, 412, 413, -1, - -1, -1, -1, -1, -1, -1, -1, 422, -1, 424, - 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 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, 320, 321, 322, - 323, 324, 325, 326, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 351, -1, -1, -1, -1, -1, -1, + -1, 359, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 373, 374, 375, 376, 377, + -1, -1, -1, -1, -1, -1, -1, -1, 386, 387, + 388, 389, 390, 391, 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 408, 409, 410, 411, 412, 413, -1, -1, -1, -1, + -1, -1, -1, -1, 422, -1, 424, 425, 426, 427, + 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 450, 451, 452, 453, 454, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 354, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 348, 349, -1, 351, -1, 353, 354, -1, + -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 373, 374, 375, + 376, 377, -1, -1, -1, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, + 396, -1, 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, 445, + 446, 447, 448, 449, 450, 451, 452, 453, 454, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 373, 374, 375, 376, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 386, 387, 388, 389, 390, 391, 392, + -1, -1, -1, -1, 348, 349, -1, 351, -1, 353, + 354, -1, -1, -1, -1, 359, 360, 361, 362, 363, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 373, + 374, 375, 376, 377, -1, -1, -1, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, 395, 396, -1, 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, 445, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 408, 409, 410, 411, 412, - 413, -1, -1, -1, -1, -1, -1, -1, -1, 422, - -1, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 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, 320, - 321, 322, 323, 324, 325, 326, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 348, 349, -1, 351, + -1, 353, -1, -1, -1, -1, -1, 359, 360, 361, + 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 373, 374, 375, 376, 377, -1, -1, -1, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, 395, 396, -1, 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, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, -1, -1, 329, + 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 348, 349, + -1, 351, -1, 353, -1, -1, -1, -1, -1, 359, + 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 373, 374, 375, 376, 377, -1, -1, + -1, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, -1, 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, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, -1, + -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 348, 349, -1, 351, -1, -1, -1, -1, -1, -1, + -1, 359, 360, 361, 362, 363, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 373, 374, 375, 376, 377, + -1, -1, -1, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 395, 396, -1, + 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, 445, 446, 447, + 448, 449, 450, 451, 452, 453, 454, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 354, -1, -1, -1, -1, -1, -1, + -1, -1, 348, 349, -1, 351, -1, -1, -1, -1, + -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 373, 374, 375, + 376, 377, -1, -1, -1, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 373, 374, 375, 376, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 386, 387, 388, 389, 390, - 391, 392, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 408, 409, 410, - 411, 412, 413, -1, -1, -1, -1, -1, -1, -1, - -1, 422, -1, 424, 425, 426, 427, 428, 429, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 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, 320, 321, 322, 323, 324, 325, 326, -1, -1, + -1, -1, 408, 409, 410, 411, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 422, -1, 424, 425, + 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, + 446, 447, 448, 449, 450, 451, 452, 453, 454, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 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, 320, 321, 322, 323, + 324, 325, 326, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 348, 349, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 360, 361, 362, 363, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 373, + 374, 375, 376, -1, -1, -1, -1, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 354, -1, -1, -1, -1, + -1, -1, -1, -1, 408, 409, 410, 411, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, -1, + 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 373, 374, 375, 376, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 386, 387, 388, - 389, 390, 391, 392, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 408, - 409, 410, 411, 412, 413, -1, -1, -1, -1, -1, - -1, -1, -1, 422, -1, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 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, 320, 321, 322, 323, 324, 325, 326, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 351, + -1, -1, -1, -1, -1, -1, -1, 359, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 373, 374, 375, 376, 377, -1, -1, -1, -1, + -1, -1, -1, -1, 386, 387, 388, 389, 390, 391, + 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 408, 409, 410, 411, + 412, 413, -1, -1, -1, -1, -1, -1, -1, -1, + 422, -1, 424, 425, 426, 427, 428, 429, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 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, + 320, 321, 322, 323, 324, 325, 326, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 373, 374, 375, 376, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 386, - 387, 388, 389, 390, 391, 392, -1, -1, -1, -1, + -1, -1, -1, 373, 374, 375, 376, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 386, 387, 388, 389, + 390, 391, 392, 393, -1, -1, 396, -1, 398, 399, + -1, -1, 402, -1, -1, -1, -1, -1, 408, 409, + 410, 411, 412, 413, -1, -1, -1, -1, -1, -1, + -1, -1, 422, -1, 424, 425, 426, 427, 428, 429, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 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, 320, 321, 322, 323, 324, 325, 326, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 408, 409, 410, 411, 412, 413, -1, -1, -1, - -1, -1, -1, -1, -1, 422, -1, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 4, 5, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 359, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 373, 374, 375, 376, -1, + -1, -1, -1, -1, -1, -1, -1, 385, 386, 387, + 388, 389, 390, 391, 392, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 408, 409, 410, 411, 412, 413, -1, -1, -1, -1, + -1, -1, -1, -1, 422, -1, 424, 425, 426, 427, + 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 450, 451, 452, 453, 454, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 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, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, @@ -3783,68 +3557,117 @@ static const yytype_int16 yycheck[] = 286, 287, 288, 289, 290, 291, 292, 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, 323, -1, -1, - -1, -1, -1, 329, 330, -1, -1, -1, -1, -1, + 316, -1, -1, -1, 320, 321, 322, 323, 324, 325, + 326, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 348, 349, -1, -1, -1, 353, 354, -1, - -1, -1, -1, -1, 360, 361, 362, 363, -1, -1, + -1, -1, -1, -1, -1, 351, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 381, 382, 383, 384, 385, - 386, -1, -1, -1, -1, 391, 392, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 373, 374, 375, + 376, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 386, 387, 388, 389, 390, 391, 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 414, 415, - 416, 417, 418, 419, 420, 421, -1, -1, -1, -1, + -1, -1, 408, 409, 410, 411, 412, 413, -1, -1, + -1, -1, -1, -1, -1, -1, 422, -1, 424, 425, + 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, + 446, 447, 448, 449, 450, 451, 452, 453, 454, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 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, 320, 321, 322, 323, + 324, 325, 326, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 436, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 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, -1, -1, -1, -1, - 323, -1, -1, -1, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 348, 349, -1, -1, -1, - 353, 354, -1, -1, -1, -1, -1, 360, 361, 362, - 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 381, 382, - 383, 384, 385, 386, -1, -1, -1, -1, 391, 392, + 354, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 373, + 374, 375, 376, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 386, 387, 388, 389, 390, 391, 392, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 408, 409, 410, 411, 412, 413, + -1, -1, -1, -1, -1, -1, -1, -1, 422, -1, + 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 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, 320, 321, + 322, 323, 324, 325, 326, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 414, 415, 416, 417, 418, 419, 420, 421, -1, + -1, -1, 354, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 436, 4, 5, 6, 7, 8, 9, + -1, 373, 374, 375, 376, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 386, 387, 388, 389, 390, 391, + 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 408, 409, 410, 411, + 412, 413, -1, -1, -1, -1, -1, -1, -1, -1, + 422, -1, 424, 425, 426, 427, 428, 429, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 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, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, @@ -3870,18 +3693,65 @@ static const yytype_int16 yycheck[] = 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, -1, -1, - -1, -1, -1, 323, -1, -1, -1, -1, -1, 329, - 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 348, 349, - -1, -1, 352, -1, -1, -1, -1, -1, -1, -1, - 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, + 320, 321, 322, 323, 324, 325, 326, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 354, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 373, 374, 375, 376, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 386, 387, 388, 389, + 390, 391, 392, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 408, 409, + 410, 411, 412, 413, -1, -1, -1, -1, -1, -1, + -1, -1, 422, -1, 424, 425, 426, 427, 428, 429, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 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, 320, 321, 322, 323, 324, 325, 326, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 381, 382, 383, 384, 385, 386, -1, -1, -1, - -1, 391, 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 414, 415, 416, 417, 418, 419, - 420, 421, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 436, 4, 5, 6, + -1, -1, -1, -1, -1, 373, 374, 375, 376, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 386, 387, + 388, 389, 390, 391, 392, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 408, 409, 410, 411, 412, 413, -1, -1, -1, -1, + -1, -1, -1, -1, 422, -1, 424, 425, 426, 427, + 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 450, 451, 452, 453, 454, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, @@ -3916,7 +3786,7 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, 323, -1, -1, -1, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 348, 349, -1, -1, -1, 353, -1, -1, -1, + -1, 348, 349, -1, -1, -1, 353, 354, -1, -1, -1, -1, -1, 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 381, 382, 383, 384, 385, 386, @@ -3959,8 +3829,8 @@ static const yytype_int16 yycheck[] = 314, 315, 316, -1, -1, -1, -1, -1, -1, 323, -1, -1, -1, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 348, 349, -1, -1, 352, -1, - -1, -1, -1, -1, -1, -1, 360, 361, 362, 363, + -1, -1, -1, -1, 348, 349, -1, -1, -1, 353, + 354, -1, -1, -1, -1, -1, 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 381, 382, 383, 384, 385, 386, -1, -1, -1, -1, 391, 392, -1, @@ -4003,7 +3873,7 @@ static const yytype_int16 yycheck[] = -1, -1, 323, -1, -1, -1, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 348, 349, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 359, 360, + -1, 352, -1, -1, -1, -1, -1, -1, -1, 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 381, 382, 383, 384, 385, 386, -1, -1, -1, -1, @@ -4046,7 +3916,7 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, 323, -1, -1, -1, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 348, 349, -1, -1, -1, -1, -1, -1, -1, -1, + 348, 349, -1, -1, -1, 353, -1, -1, -1, -1, -1, -1, 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 381, 382, 383, 384, 385, 386, -1, @@ -4089,7 +3959,7 @@ static const yytype_int16 yycheck[] = 315, 316, -1, -1, -1, -1, -1, -1, 323, -1, -1, -1, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 348, 349, -1, -1, -1, -1, -1, + -1, -1, -1, 348, 349, -1, -1, 352, -1, -1, -1, -1, -1, -1, -1, 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 381, 382, 383, 384, @@ -4133,7 +4003,7 @@ static const yytype_int16 yycheck[] = -1, 323, -1, -1, -1, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 348, 349, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 360, 361, + -1, -1, -1, -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 381, 382, 383, 384, 385, 386, -1, -1, -1, -1, 391, @@ -4174,13 +4044,143 @@ static const yytype_int16 yycheck[] = 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, -1, -1, -1, -1, -1, 323, -1, -1, -1, -1, -1, + 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 348, + 349, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 360, 361, 362, 363, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 381, 382, 383, 384, 385, 386, -1, -1, + -1, -1, 391, 392, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 414, 415, 416, 417, 418, + 419, 420, 421, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 436, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 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, -1, -1, -1, -1, 323, -1, -1, + -1, -1, -1, 329, 330, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 348, 349, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 360, 361, 362, 363, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 381, 382, 383, 384, 385, + 386, -1, -1, -1, -1, 391, 392, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 414, 415, + 416, 417, 418, 419, 420, 421, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 436, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 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, -1, -1, -1, -1, + 323, -1, -1, -1, -1, -1, 329, 330, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 348, 349, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 360, 361, 362, + 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 381, 382, + 383, 384, 385, 386, -1, -1, -1, -1, 391, 392, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 414, 415, 416, 417, 418, 419, 420, 421, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 436, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 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, -1, + -1, -1, -1, 323, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 386, -1, -1, - -1, -1, 391, 392 + -1, -1, -1, -1, -1, -1, 386, -1, -1, -1, + -1, 391, 392 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -4256,30 +4256,30 @@ static const yytype_int16 yystos[] = 563, 348, 351, 382, 567, 584, 385, 585, 348, 381, 382, 383, 384, 571, 572, 382, 480, 485, 573, 382, 381, 382, 383, 384, 576, 577, 382, 485, 578, 382, - 348, 579, 382, 584, 385, 485, 511, 581, 582, 382, - 485, 352, 565, 511, 385, 523, 524, 354, 522, 521, - 485, 504, 385, 364, 365, 366, 361, 363, 327, 328, - 331, 332, 367, 368, 333, 334, 371, 370, 369, 335, - 337, 336, 372, 352, 352, 480, 354, 532, 349, 359, - 359, 553, 349, 349, 359, 359, 484, 349, 484, 357, - 359, 359, 359, 359, 338, 339, 340, 341, 342, 343, - 344, 345, 346, 347, 358, 483, 356, 359, 354, 528, - 542, 546, 551, 525, 358, 354, 525, 526, 525, 521, - 385, 350, 459, 484, 385, 482, 467, 348, 382, 568, - 569, 350, 358, 350, 356, 350, 356, 350, 356, 356, - 350, 356, 350, 356, 350, 356, 356, 350, 356, 356, - 350, 356, 350, 356, 350, 350, 523, 512, 356, 359, - 354, 467, 467, 467, 469, 469, 470, 470, 471, 471, - 471, 471, 472, 472, 473, 474, 475, 476, 477, 478, - 481, 352, 539, 552, 528, 554, 484, 359, 484, 357, - 482, 482, 525, 354, 356, 354, 352, 352, 356, 352, - 356, 572, 571, 485, 573, 577, 576, 485, 578, 348, - 579, 581, 582, 359, 524, 484, 533, 484, 499, 544, - 393, 527, 540, 555, 350, 350, 354, 525, 348, 382, - 350, 350, 350, 350, 350, 350, 357, 354, 385, 350, - 349, 544, 556, 557, 535, 536, 537, 543, 547, 482, - 358, 529, 534, 538, 484, 359, 350, 397, 531, 529, - 353, 525, 350, 484, 534, 535, 539, 548, 359, 354 + 348, 579, 382, 584, 385, 485, 581, 582, 382, 485, + 352, 565, 511, 385, 523, 524, 354, 522, 521, 485, + 504, 385, 364, 365, 366, 361, 363, 327, 328, 331, + 332, 367, 368, 333, 334, 371, 370, 369, 335, 337, + 336, 372, 352, 352, 480, 354, 532, 349, 359, 359, + 553, 349, 349, 359, 359, 484, 349, 484, 357, 359, + 359, 359, 359, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 358, 483, 356, 359, 354, 528, 542, + 546, 551, 525, 358, 354, 525, 526, 525, 521, 385, + 350, 459, 484, 385, 482, 467, 348, 382, 568, 569, + 350, 358, 350, 356, 350, 356, 350, 356, 356, 350, + 356, 350, 356, 350, 356, 356, 350, 356, 356, 350, + 356, 350, 356, 350, 350, 523, 512, 356, 359, 354, + 467, 467, 467, 469, 469, 470, 470, 471, 471, 471, + 471, 472, 472, 473, 474, 475, 476, 477, 478, 481, + 352, 539, 552, 528, 554, 484, 359, 484, 357, 482, + 482, 525, 354, 356, 354, 352, 352, 356, 352, 356, + 572, 571, 485, 573, 577, 576, 485, 578, 348, 579, + 581, 582, 359, 524, 484, 533, 484, 499, 544, 393, + 527, 540, 555, 350, 350, 354, 525, 348, 382, 350, + 350, 350, 350, 350, 350, 357, 354, 385, 350, 349, + 544, 556, 557, 535, 536, 537, 543, 547, 482, 358, + 529, 534, 538, 484, 359, 350, 397, 531, 529, 353, + 525, 350, 484, 534, 535, 539, 548, 359, 354 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ @@ -4352,8 +4352,8 @@ static const yytype_int16 yyr1[] = 570, 570, 571, 571, 572, 572, 572, 572, 572, 573, 573, 574, 574, 575, 575, 575, 575, 575, 575, 575, 575, 576, 576, 577, 577, 577, 577, 578, 578, 579, - 579, 580, 580, 580, 580, 581, 581, 582, 582, 583, - 583, 584, 584, 585, 585 + 579, 580, 580, 580, 580, 581, 581, 582, 583, 583, + 584, 584, 585, 585 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -4426,8 +4426,8 @@ static const yytype_int8 yyr2[] = 6, 8, 1, 3, 1, 1, 1, 1, 1, 1, 3, 4, 6, 4, 6, 6, 8, 6, 8, 6, 8, 1, 3, 1, 1, 1, 1, 1, 3, 1, - 3, 6, 8, 4, 6, 1, 3, 1, 1, 4, - 6, 1, 3, 3, 3 + 3, 6, 8, 4, 6, 1, 3, 1, 4, 6, + 1, 3, 3, 3 }; @@ -6204,7 +6204,7 @@ yyreduce: (yyval.interm).function = (yyvsp[-2].interm.function); (yyval.interm).loc = (yyvsp[-1].lex).loc; parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); - parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes), (yyval.interm).function); + parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes)); } #line 6210 "MachineIndependent/glslang_tab.cpp" break; @@ -6215,7 +6215,7 @@ yyreduce: (yyval.interm).function = (yyvsp[-1].interm.function); (yyval.interm).loc = (yyvsp[0].lex).loc; parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); - parseContext.handleFunctionAttributes((yyvsp[0].lex).loc, *(yyvsp[-2].interm.attributes), (yyval.interm).function); + parseContext.handleFunctionAttributes((yyvsp[0].lex).loc, *(yyvsp[-2].interm.attributes)); } #line 6221 "MachineIndependent/glslang_tab.cpp" break; @@ -6226,8 +6226,8 @@ yyreduce: (yyval.interm).function = (yyvsp[-2].interm.function); (yyval.interm).loc = (yyvsp[-1].lex).loc; parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); - parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[-3].interm.attributes), (yyval.interm).function); - parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes), (yyval.interm).function); + parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[-3].interm.attributes)); + parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes)); } #line 6233 "MachineIndependent/glslang_tab.cpp" break; @@ -11387,15 +11387,16 @@ yyreduce: case 598: /* $@11: %empty */ #line 3928 "MachineIndependent/glslang.y" { + parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11395 "MachineIndependent/glslang_tab.cpp" +#line 11396 "MachineIndependent/glslang_tab.cpp" break; case 599: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON */ -#line 3933 "MachineIndependent/glslang.y" +#line 3934 "MachineIndependent/glslang.y" { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", ""); @@ -11403,26 +11404,27 @@ yyreduce: parseContext.boolCheck((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode)); (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[-5].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, false, (yyvsp[-4].lex).loc); + parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.loopNestingLevel; --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11411 "MachineIndependent/glslang_tab.cpp" +#line 11413 "MachineIndependent/glslang_tab.cpp" break; case 600: /* $@12: %empty */ -#line 3944 "MachineIndependent/glslang.y" +#line 3946 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11422 "MachineIndependent/glslang_tab.cpp" +#line 11424 "MachineIndependent/glslang_tab.cpp" break; case 601: /* iteration_statement_nonattributed: FOR LEFT_PAREN $@12 for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope */ -#line 3950 "MachineIndependent/glslang.y" +#line 3952 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc); @@ -11435,81 +11437,81 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11439 "MachineIndependent/glslang_tab.cpp" +#line 11441 "MachineIndependent/glslang_tab.cpp" break; case 602: /* for_init_statement: expression_statement */ -#line 3965 "MachineIndependent/glslang.y" +#line 3967 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11447 "MachineIndependent/glslang_tab.cpp" +#line 11449 "MachineIndependent/glslang_tab.cpp" break; case 603: /* for_init_statement: declaration_statement */ -#line 3968 "MachineIndependent/glslang.y" +#line 3970 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11455 "MachineIndependent/glslang_tab.cpp" +#line 11457 "MachineIndependent/glslang_tab.cpp" break; case 604: /* conditionopt: condition */ -#line 3974 "MachineIndependent/glslang.y" +#line 3976 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 11463 "MachineIndependent/glslang_tab.cpp" +#line 11465 "MachineIndependent/glslang_tab.cpp" break; case 605: /* conditionopt: %empty */ -#line 3977 "MachineIndependent/glslang.y" +#line 3979 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = 0; } -#line 11471 "MachineIndependent/glslang_tab.cpp" +#line 11473 "MachineIndependent/glslang_tab.cpp" break; case 606: /* for_rest_statement: conditionopt SEMICOLON */ -#line 3983 "MachineIndependent/glslang.y" +#line 3985 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); (yyval.interm.nodePair).node2 = 0; } -#line 11480 "MachineIndependent/glslang_tab.cpp" +#line 11482 "MachineIndependent/glslang_tab.cpp" break; case 607: /* for_rest_statement: conditionopt SEMICOLON expression */ -#line 3987 "MachineIndependent/glslang.y" +#line 3989 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode); } -#line 11489 "MachineIndependent/glslang_tab.cpp" +#line 11491 "MachineIndependent/glslang_tab.cpp" break; case 608: /* jump_statement: CONTINUE SEMICOLON */ -#line 3994 "MachineIndependent/glslang.y" +#line 3996 "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 11499 "MachineIndependent/glslang_tab.cpp" +#line 11501 "MachineIndependent/glslang_tab.cpp" break; case 609: /* jump_statement: BREAK SEMICOLON */ -#line 3999 "MachineIndependent/glslang.y" +#line 4001 "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 11509 "MachineIndependent/glslang_tab.cpp" +#line 11511 "MachineIndependent/glslang_tab.cpp" break; case 610: /* jump_statement: RETURN SEMICOLON */ -#line 4004 "MachineIndependent/glslang.y" +#line 4006 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc); if (parseContext.currentFunctionType->getBasicType() != EbtVoid) @@ -11517,101 +11519,101 @@ yyreduce: if (parseContext.inMain) parseContext.postEntryPointReturn = true; } -#line 11521 "MachineIndependent/glslang_tab.cpp" +#line 11523 "MachineIndependent/glslang_tab.cpp" break; case 611: /* jump_statement: RETURN expression SEMICOLON */ -#line 4011 "MachineIndependent/glslang.y" +#line 4013 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); } -#line 11529 "MachineIndependent/glslang_tab.cpp" +#line 11531 "MachineIndependent/glslang_tab.cpp" break; case 612: /* jump_statement: DISCARD SEMICOLON */ -#line 4014 "MachineIndependent/glslang.y" +#line 4016 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc); } -#line 11538 "MachineIndependent/glslang_tab.cpp" +#line 11540 "MachineIndependent/glslang_tab.cpp" break; case 613: /* jump_statement: TERMINATE_INVOCATION SEMICOLON */ -#line 4018 "MachineIndependent/glslang.y" +#line 4020 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "terminateInvocation"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateInvocation, (yyvsp[-1].lex).loc); } -#line 11547 "MachineIndependent/glslang_tab.cpp" +#line 11549 "MachineIndependent/glslang_tab.cpp" break; case 614: /* jump_statement: TERMINATE_RAY SEMICOLON */ -#line 4023 "MachineIndependent/glslang.y" +#line 4025 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "terminateRayEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateRayKHR, (yyvsp[-1].lex).loc); } -#line 11556 "MachineIndependent/glslang_tab.cpp" +#line 11558 "MachineIndependent/glslang_tab.cpp" break; case 615: /* jump_statement: IGNORE_INTERSECTION SEMICOLON */ -#line 4027 "MachineIndependent/glslang.y" +#line 4029 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "ignoreIntersectionEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpIgnoreIntersectionKHR, (yyvsp[-1].lex).loc); } -#line 11565 "MachineIndependent/glslang_tab.cpp" +#line 11567 "MachineIndependent/glslang_tab.cpp" break; case 616: /* translation_unit: external_declaration */ -#line 4037 "MachineIndependent/glslang.y" +#line 4039 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } -#line 11574 "MachineIndependent/glslang_tab.cpp" +#line 11576 "MachineIndependent/glslang_tab.cpp" break; case 617: /* translation_unit: translation_unit external_declaration */ -#line 4041 "MachineIndependent/glslang.y" +#line 4043 "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 11585 "MachineIndependent/glslang_tab.cpp" +#line 11587 "MachineIndependent/glslang_tab.cpp" break; case 618: /* external_declaration: function_definition */ -#line 4050 "MachineIndependent/glslang.y" +#line 4052 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11593 "MachineIndependent/glslang_tab.cpp" +#line 11595 "MachineIndependent/glslang_tab.cpp" break; case 619: /* external_declaration: declaration */ -#line 4053 "MachineIndependent/glslang.y" +#line 4055 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11601 "MachineIndependent/glslang_tab.cpp" +#line 11603 "MachineIndependent/glslang_tab.cpp" break; case 620: /* external_declaration: SEMICOLON */ -#line 4057 "MachineIndependent/glslang.y" +#line 4059 "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 11611 "MachineIndependent/glslang_tab.cpp" +#line 11613 "MachineIndependent/glslang_tab.cpp" break; case 621: /* $@13: %empty */ -#line 4066 "MachineIndependent/glslang.y" +#line 4068 "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); @@ -11624,11 +11626,11 @@ yyreduce: ++parseContext.statementNestingLevel; } } -#line 11628 "MachineIndependent/glslang_tab.cpp" +#line 11630 "MachineIndependent/glslang_tab.cpp" break; case 622: /* function_definition: function_prototype $@13 compound_statement_no_new_scope */ -#line 4078 "MachineIndependent/glslang.y" +#line 4080 "MachineIndependent/glslang.y" { // May be best done as post process phase on intermediate code if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) @@ -11655,228 +11657,228 @@ yyreduce: --parseContext.statementNestingLevel; } } -#line 11659 "MachineIndependent/glslang_tab.cpp" +#line 11661 "MachineIndependent/glslang_tab.cpp" break; case 623: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET */ -#line 4108 "MachineIndependent/glslang.y" +#line 4110 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = (yyvsp[-2].interm.attributes); } -#line 11667 "MachineIndependent/glslang_tab.cpp" +#line 11669 "MachineIndependent/glslang_tab.cpp" break; case 624: /* attribute_list: single_attribute */ -#line 4113 "MachineIndependent/glslang.y" +#line 4115 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = (yyvsp[0].interm.attributes); } -#line 11675 "MachineIndependent/glslang_tab.cpp" +#line 11677 "MachineIndependent/glslang_tab.cpp" break; case 625: /* attribute_list: attribute_list COMMA single_attribute */ -#line 4116 "MachineIndependent/glslang.y" +#line 4118 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes)); } -#line 11683 "MachineIndependent/glslang_tab.cpp" +#line 11685 "MachineIndependent/glslang_tab.cpp" break; case 626: /* single_attribute: IDENTIFIER */ -#line 4121 "MachineIndependent/glslang.y" +#line 4123 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string); } -#line 11691 "MachineIndependent/glslang_tab.cpp" +#line 11693 "MachineIndependent/glslang_tab.cpp" break; case 627: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN */ -#line 4124 "MachineIndependent/glslang.y" +#line 4126 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode)); } -#line 11699 "MachineIndependent/glslang_tab.cpp" +#line 11701 "MachineIndependent/glslang_tab.cpp" break; case 628: /* spirv_requirements_list: spirv_requirements_parameter */ -#line 4131 "MachineIndependent/glslang.y" +#line 4133 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = (yyvsp[0].interm.spirvReq); } -#line 11707 "MachineIndependent/glslang_tab.cpp" +#line 11709 "MachineIndependent/glslang_tab.cpp" break; case 629: /* spirv_requirements_list: spirv_requirements_list COMMA spirv_requirements_parameter */ -#line 4134 "MachineIndependent/glslang.y" +#line 4136 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.mergeSpirvRequirements((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvReq), (yyvsp[0].interm.spirvReq)); } -#line 11715 "MachineIndependent/glslang_tab.cpp" +#line 11717 "MachineIndependent/glslang_tab.cpp" break; case 630: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET */ -#line 4139 "MachineIndependent/glslang.y" +#line 4141 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, (yyvsp[-1].interm.intermNode)->getAsAggregate(), nullptr); } -#line 11723 "MachineIndependent/glslang_tab.cpp" +#line 11725 "MachineIndependent/glslang_tab.cpp" break; case 631: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET */ -#line 4142 "MachineIndependent/glslang.y" +#line 4144 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, nullptr, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 11731 "MachineIndependent/glslang_tab.cpp" +#line 11733 "MachineIndependent/glslang_tab.cpp" break; case 632: /* spirv_extension_list: STRING_LITERAL */ -#line 4147 "MachineIndependent/glslang.y" +#line 4149 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 11739 "MachineIndependent/glslang_tab.cpp" +#line 11741 "MachineIndependent/glslang_tab.cpp" break; case 633: /* spirv_extension_list: spirv_extension_list COMMA STRING_LITERAL */ -#line 4150 "MachineIndependent/glslang.y" +#line 4152 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 11747 "MachineIndependent/glslang_tab.cpp" +#line 11749 "MachineIndependent/glslang_tab.cpp" break; case 634: /* spirv_capability_list: INTCONSTANT */ -#line 4155 "MachineIndependent/glslang.y" +#line 4157 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); } -#line 11755 "MachineIndependent/glslang_tab.cpp" +#line 11757 "MachineIndependent/glslang_tab.cpp" break; case 635: /* spirv_capability_list: spirv_capability_list COMMA INTCONSTANT */ -#line 4158 "MachineIndependent/glslang.y" +#line 4160 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); } -#line 11763 "MachineIndependent/glslang_tab.cpp" +#line 11765 "MachineIndependent/glslang_tab.cpp" break; case 636: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4163 "MachineIndependent/glslang.y" +#line 4165 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); (yyval.interm.intermNode) = 0; } -#line 11772 "MachineIndependent/glslang_tab.cpp" +#line 11774 "MachineIndependent/glslang_tab.cpp" break; case 637: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4167 "MachineIndependent/glslang.y" +#line 4169 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); (yyval.interm.intermNode) = 0; } -#line 11782 "MachineIndependent/glslang_tab.cpp" +#line 11784 "MachineIndependent/glslang_tab.cpp" break; case 638: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ -#line 4172 "MachineIndependent/glslang.y" +#line 4174 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 11791 "MachineIndependent/glslang_tab.cpp" +#line 11793 "MachineIndependent/glslang_tab.cpp" break; case 639: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ -#line 4176 "MachineIndependent/glslang.y" +#line 4178 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 11801 "MachineIndependent/glslang_tab.cpp" +#line 11803 "MachineIndependent/glslang_tab.cpp" break; case 640: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ -#line 4181 "MachineIndependent/glslang.y" +#line 4183 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 11810 "MachineIndependent/glslang_tab.cpp" +#line 11812 "MachineIndependent/glslang_tab.cpp" break; case 641: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ -#line 4185 "MachineIndependent/glslang.y" +#line 4187 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 11820 "MachineIndependent/glslang_tab.cpp" +#line 11822 "MachineIndependent/glslang_tab.cpp" break; case 642: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter */ -#line 4192 "MachineIndependent/glslang.y" +#line 4194 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 11828 "MachineIndependent/glslang_tab.cpp" +#line 11830 "MachineIndependent/glslang_tab.cpp" break; case 643: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter */ -#line 4195 "MachineIndependent/glslang.y" +#line 4197 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 11836 "MachineIndependent/glslang_tab.cpp" +#line 11838 "MachineIndependent/glslang_tab.cpp" break; case 644: /* spirv_execution_mode_parameter: FLOATCONSTANT */ -#line 4200 "MachineIndependent/glslang.y" +#line 4202 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 11844 "MachineIndependent/glslang_tab.cpp" +#line 11846 "MachineIndependent/glslang_tab.cpp" break; case 645: /* spirv_execution_mode_parameter: INTCONSTANT */ -#line 4203 "MachineIndependent/glslang.y" +#line 4205 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 11852 "MachineIndependent/glslang_tab.cpp" +#line 11854 "MachineIndependent/glslang_tab.cpp" break; case 646: /* spirv_execution_mode_parameter: UINTCONSTANT */ -#line 4206 "MachineIndependent/glslang.y" +#line 4208 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 11860 "MachineIndependent/glslang_tab.cpp" +#line 11862 "MachineIndependent/glslang_tab.cpp" break; case 647: /* spirv_execution_mode_parameter: BOOLCONSTANT */ -#line 4209 "MachineIndependent/glslang.y" +#line 4211 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 11868 "MachineIndependent/glslang_tab.cpp" +#line 11870 "MachineIndependent/glslang_tab.cpp" break; case 648: /* spirv_execution_mode_parameter: STRING_LITERAL */ -#line 4212 "MachineIndependent/glslang.y" +#line 4214 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); } -#line 11876 "MachineIndependent/glslang_tab.cpp" +#line 11878 "MachineIndependent/glslang_tab.cpp" break; case 649: /* spirv_execution_mode_id_parameter_list: constant_expression */ -#line 4217 "MachineIndependent/glslang.y" +#line 4219 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -11886,11 +11888,11 @@ yyreduce: parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermTypedNode)); } -#line 11890 "MachineIndependent/glslang_tab.cpp" +#line 11892 "MachineIndependent/glslang_tab.cpp" break; case 650: /* spirv_execution_mode_id_parameter_list: spirv_execution_mode_id_parameter_list COMMA constant_expression */ -#line 4226 "MachineIndependent/glslang.y" +#line 4228 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -11900,156 +11902,156 @@ yyreduce: parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermTypedNode)); } -#line 11904 "MachineIndependent/glslang_tab.cpp" +#line 11906 "MachineIndependent/glslang_tab.cpp" break; case 651: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4237 "MachineIndependent/glslang.y" +#line 4239 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc); (yyval.interm.type).qualifier.storage = EvqSpirvStorageClass; (yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i; } -#line 11914 "MachineIndependent/glslang_tab.cpp" +#line 11916 "MachineIndependent/glslang_tab.cpp" break; case 652: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4242 "MachineIndependent/glslang.y" +#line 4244 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).qualifier.storage = EvqSpirvStorageClass; (yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i; } -#line 11925 "MachineIndependent/glslang_tab.cpp" +#line 11927 "MachineIndependent/glslang_tab.cpp" break; case 653: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4250 "MachineIndependent/glslang.y" +#line 4252 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i); } -#line 11934 "MachineIndependent/glslang_tab.cpp" +#line 11936 "MachineIndependent/glslang_tab.cpp" break; case 654: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4254 "MachineIndependent/glslang.y" +#line 4256 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i); } -#line 11944 "MachineIndependent/glslang_tab.cpp" +#line 11946 "MachineIndependent/glslang_tab.cpp" break; case 655: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ -#line 4259 "MachineIndependent/glslang.y" +#line 4261 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 11953 "MachineIndependent/glslang_tab.cpp" +#line 11955 "MachineIndependent/glslang_tab.cpp" break; case 656: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ -#line 4263 "MachineIndependent/glslang.y" +#line 4265 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 11963 "MachineIndependent/glslang_tab.cpp" +#line 11965 "MachineIndependent/glslang_tab.cpp" break; case 657: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ -#line 4268 "MachineIndependent/glslang.y" +#line 4270 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 11972 "MachineIndependent/glslang_tab.cpp" +#line 11974 "MachineIndependent/glslang_tab.cpp" break; case 658: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ -#line 4272 "MachineIndependent/glslang.y" +#line 4274 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 11982 "MachineIndependent/glslang_tab.cpp" +#line 11984 "MachineIndependent/glslang_tab.cpp" break; case 659: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ -#line 4277 "MachineIndependent/glslang.y" +#line 4279 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 11991 "MachineIndependent/glslang_tab.cpp" +#line 11993 "MachineIndependent/glslang_tab.cpp" break; case 660: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ -#line 4281 "MachineIndependent/glslang.y" +#line 4283 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12001 "MachineIndependent/glslang_tab.cpp" +#line 12003 "MachineIndependent/glslang_tab.cpp" break; case 661: /* spirv_decorate_parameter_list: spirv_decorate_parameter */ -#line 4288 "MachineIndependent/glslang.y" +#line 4290 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12009 "MachineIndependent/glslang_tab.cpp" +#line 12011 "MachineIndependent/glslang_tab.cpp" break; case 662: /* spirv_decorate_parameter_list: spirv_decorate_parameter_list COMMA spirv_decorate_parameter */ -#line 4291 "MachineIndependent/glslang.y" +#line 4293 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12017 "MachineIndependent/glslang_tab.cpp" +#line 12019 "MachineIndependent/glslang_tab.cpp" break; case 663: /* spirv_decorate_parameter: FLOATCONSTANT */ -#line 4296 "MachineIndependent/glslang.y" +#line 4298 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12025 "MachineIndependent/glslang_tab.cpp" +#line 12027 "MachineIndependent/glslang_tab.cpp" break; case 664: /* spirv_decorate_parameter: INTCONSTANT */ -#line 4299 "MachineIndependent/glslang.y" +#line 4301 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12033 "MachineIndependent/glslang_tab.cpp" +#line 12035 "MachineIndependent/glslang_tab.cpp" break; case 665: /* spirv_decorate_parameter: UINTCONSTANT */ -#line 4302 "MachineIndependent/glslang.y" +#line 4304 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12041 "MachineIndependent/glslang_tab.cpp" +#line 12043 "MachineIndependent/glslang_tab.cpp" break; case 666: /* spirv_decorate_parameter: BOOLCONSTANT */ -#line 4305 "MachineIndependent/glslang.y" +#line 4307 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12049 "MachineIndependent/glslang_tab.cpp" +#line 12051 "MachineIndependent/glslang_tab.cpp" break; case 667: /* spirv_decorate_id_parameter_list: constant_expression */ -#line 4310 "MachineIndependent/glslang.y" +#line 4312 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -12058,11 +12060,11 @@ yyreduce: parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermTypedNode)); } -#line 12062 "MachineIndependent/glslang_tab.cpp" +#line 12064 "MachineIndependent/glslang_tab.cpp" break; case 668: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter_list COMMA constant_expression */ -#line 4318 "MachineIndependent/glslang.y" +#line 4320 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -12071,147 +12073,139 @@ yyreduce: parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermTypedNode)); } -#line 12075 "MachineIndependent/glslang_tab.cpp" +#line 12077 "MachineIndependent/glslang_tab.cpp" break; case 669: /* spirv_decorate_string_parameter_list: STRING_LITERAL */ -#line 4328 "MachineIndependent/glslang.y" +#line 4330 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate( parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 12084 "MachineIndependent/glslang_tab.cpp" +#line 12086 "MachineIndependent/glslang_tab.cpp" break; case 670: /* spirv_decorate_string_parameter_list: spirv_decorate_string_parameter_list COMMA STRING_LITERAL */ -#line 4332 "MachineIndependent/glslang.y" +#line 4334 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 12092 "MachineIndependent/glslang_tab.cpp" +#line 12094 "MachineIndependent/glslang_tab.cpp" break; case 671: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ -#line 4337 "MachineIndependent/glslang.y" +#line 4339 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams)); } -#line 12101 "MachineIndependent/glslang_tab.cpp" +#line 12103 "MachineIndependent/glslang_tab.cpp" break; case 672: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ -#line 4341 "MachineIndependent/glslang.y" +#line 4343 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams)); } -#line 12111 "MachineIndependent/glslang_tab.cpp" +#line 12113 "MachineIndependent/glslang_tab.cpp" break; case 673: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4346 "MachineIndependent/glslang.y" +#line 4348 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst)); } -#line 12120 "MachineIndependent/glslang_tab.cpp" +#line 12122 "MachineIndependent/glslang_tab.cpp" break; case 674: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4350 "MachineIndependent/glslang.y" +#line 4352 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst)); } -#line 12130 "MachineIndependent/glslang_tab.cpp" +#line 12132 "MachineIndependent/glslang_tab.cpp" break; case 675: /* spirv_type_parameter_list: spirv_type_parameter */ -#line 4357 "MachineIndependent/glslang.y" +#line 4359 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = (yyvsp[0].interm.spirvTypeParams); } -#line 12138 "MachineIndependent/glslang_tab.cpp" +#line 12140 "MachineIndependent/glslang_tab.cpp" break; case 676: /* spirv_type_parameter_list: spirv_type_parameter_list COMMA spirv_type_parameter */ -#line 4360 "MachineIndependent/glslang.y" +#line 4362 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.mergeSpirvTypeParameters((yyvsp[-2].interm.spirvTypeParams), (yyvsp[0].interm.spirvTypeParams)); } -#line 12146 "MachineIndependent/glslang_tab.cpp" +#line 12148 "MachineIndependent/glslang_tab.cpp" break; case 677: /* spirv_type_parameter: constant_expression */ -#line 4365 "MachineIndependent/glslang.y" +#line 4367 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)->getAsConstantUnion()); } -#line 12154 "MachineIndependent/glslang_tab.cpp" - break; - - case 678: /* spirv_type_parameter: type_specifier */ -#line 4368 "MachineIndependent/glslang.y" - { - (yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.type)); - } -#line 12162 "MachineIndependent/glslang_tab.cpp" +#line 12156 "MachineIndependent/glslang_tab.cpp" break; - case 679: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4373 "MachineIndependent/glslang.y" + case 678: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4372 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } -#line 12170 "MachineIndependent/glslang_tab.cpp" +#line 12164 "MachineIndependent/glslang_tab.cpp" break; - case 680: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4376 "MachineIndependent/glslang.y" + case 679: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4375 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } -#line 12179 "MachineIndependent/glslang_tab.cpp" +#line 12173 "MachineIndependent/glslang_tab.cpp" break; - case 681: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_id */ -#line 4382 "MachineIndependent/glslang.y" + case 680: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_id */ +#line 4381 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = (yyvsp[0].interm.spirvInst); } -#line 12187 "MachineIndependent/glslang_tab.cpp" +#line 12181 "MachineIndependent/glslang_tab.cpp" break; - case 682: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id */ -#line 4385 "MachineIndependent/glslang.y" + case 681: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id */ +#line 4384 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.mergeSpirvInstruction((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvInst), (yyvsp[0].interm.spirvInst)); } -#line 12195 "MachineIndependent/glslang_tab.cpp" +#line 12189 "MachineIndependent/glslang_tab.cpp" break; - case 683: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL STRING_LITERAL */ -#line 4390 "MachineIndependent/glslang.y" + case 682: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL STRING_LITERAL */ +#line 4389 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, *(yyvsp[0].lex).string); } -#line 12203 "MachineIndependent/glslang_tab.cpp" +#line 12197 "MachineIndependent/glslang_tab.cpp" break; - case 684: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL INTCONSTANT */ -#line 4393 "MachineIndependent/glslang.y" + case 683: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL INTCONSTANT */ +#line 4392 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[0].lex).i); } -#line 12211 "MachineIndependent/glslang_tab.cpp" +#line 12205 "MachineIndependent/glslang_tab.cpp" break; -#line 12215 "MachineIndependent/glslang_tab.cpp" +#line 12209 "MachineIndependent/glslang_tab.cpp" default: break; } @@ -12436,5 +12430,5 @@ yyreturn: return yyresult; } -#line 4398 "MachineIndependent/glslang.y" +#line 4397 "MachineIndependent/glslang.y" diff --git a/glslang/MachineIndependent/iomapper.cpp b/glslang/MachineIndependent/iomapper.cpp index 7e12864f..19eabdf4 100644 --- a/glslang/MachineIndependent/iomapper.cpp +++ b/glslang/MachineIndependent/iomapper.cpp @@ -79,7 +79,7 @@ public: target = &inputList; else if (base->getQualifier().storage == EvqVaryingOut) target = &outputList; - else if (base->getQualifier().isUniformOrBuffer() && !base->getQualifier().isPushConstant()) + else if (base->getQualifier().isUniformOrBuffer() && !base->getQualifier().isPushConstant() && !base->getQualifier().isShaderRecord()) target = &uniformList; // If a global is being visited, then we should also traverse it incase it's evaluation // ends up visiting inputs we want to tag as live @@ -748,7 +748,7 @@ private: }; TDefaultIoResolverBase::TDefaultIoResolverBase(const TIntermediate& intermediate) - : intermediate(intermediate) + : referenceIntermediate(intermediate) , nextUniformLocation(intermediate.getUniformLocationBase()) , nextInputLocation(0) , nextOutputLocation(0) @@ -760,17 +760,17 @@ TDefaultIoResolverBase::TDefaultIoResolverBase(const TIntermediate& intermediate int TDefaultIoResolverBase::getBaseBinding(EShLanguage stage, TResourceType res, unsigned int set) const { return stageIntermediates[stage] ? selectBaseBinding(stageIntermediates[stage]->getShiftBinding(res), stageIntermediates[stage]->getShiftBindingForSet(res, set)) - : selectBaseBinding(intermediate.getShiftBinding(res), intermediate.getShiftBindingForSet(res, set)); + : selectBaseBinding(referenceIntermediate.getShiftBinding(res), referenceIntermediate.getShiftBindingForSet(res, set)); } const std::vector<std::string>& TDefaultIoResolverBase::getResourceSetBinding(EShLanguage stage) const { return stageIntermediates[stage] ? stageIntermediates[stage]->getResourceSetBinding() - : intermediate.getResourceSetBinding(); + : referenceIntermediate.getResourceSetBinding(); } -bool TDefaultIoResolverBase::doAutoBindingMapping() const { return intermediate.getAutoMapBindings(); } +bool TDefaultIoResolverBase::doAutoBindingMapping() const { return referenceIntermediate.getAutoMapBindings(); } -bool TDefaultIoResolverBase::doAutoLocationMapping() const { return intermediate.getAutoMapLocations(); } +bool TDefaultIoResolverBase::doAutoLocationMapping() const { return referenceIntermediate.getAutoMapLocations(); } TDefaultIoResolverBase::TSlotSet::iterator TDefaultIoResolverBase::findSlot(int set, int slot) { return std::lower_bound(slots[set].begin(), slots[set].end(), slot); @@ -827,7 +827,7 @@ int TDefaultIoResolverBase::resolveUniformLocation(EShLanguage /*stage*/, TVarEn } // no locations added if already present, a built-in variable, a block, or an opaque if (type.getQualifier().hasLocation() || type.isBuiltIn() || type.getBasicType() == EbtBlock || - type.isAtomic() || (type.containsOpaque() && intermediate.getSpv().openGl == 0)) { + type.isAtomic() || (type.containsOpaque() && referenceIntermediate.getSpv().openGl == 0)) { return ent.newLocation = -1; } // no locations on blocks of built-in variables @@ -839,7 +839,7 @@ int TDefaultIoResolverBase::resolveUniformLocation(EShLanguage /*stage*/, TVarEn return ent.newLocation = -1; } } - int location = intermediate.getUniformLocationOverride(name); + int location = referenceIntermediate.getUniformLocationOverride(name); if (location != -1) { return ent.newLocation = location; } @@ -1024,7 +1024,7 @@ int TDefaultGlslIoResolver::resolveUniformLocation(EShLanguage /*stage*/, TVarEn } else { // no locations added if already present, a built-in variable, a block, or an opaque if (type.getQualifier().hasLocation() || type.isBuiltIn() || type.getBasicType() == EbtBlock || - type.isAtomic() || (type.containsOpaque() && intermediate.getSpv().openGl == 0)) { + type.isAtomic() || (type.containsOpaque() && referenceIntermediate.getSpv().openGl == 0)) { return ent.newLocation = -1; } // no locations on blocks of built-in variables @@ -1037,7 +1037,7 @@ int TDefaultGlslIoResolver::resolveUniformLocation(EShLanguage /*stage*/, TVarEn } } } - int location = intermediate.getUniformLocationOverride(name.c_str()); + int location = referenceIntermediate.getUniformLocationOverride(name.c_str()); if (location != -1) { return ent.newLocation = location; } @@ -1086,7 +1086,7 @@ int TDefaultGlslIoResolver::resolveBinding(EShLanguage stage, TVarEntryInfo& ent const TType& type = ent.symbol->getType(); const TString& name = ent.symbol->getAccessName(); // On OpenGL arrays of opaque types take a separate binding for each element - int numBindings = intermediate.getSpv().openGl != 0 && type.isSizedArray() ? type.getCumulativeArraySize() : 1; + int numBindings = referenceIntermediate.getSpv().openGl != 0 && type.isSizedArray() ? type.getCumulativeArraySize() : 1; TResourceType resource = getResourceType(type); // don't need to handle uniform symbol, it will be handled in resolveUniformLocation if (resource == EResUbo && type.getBasicType() != EbtBlock) { @@ -1095,7 +1095,7 @@ int TDefaultGlslIoResolver::resolveBinding(EShLanguage stage, TVarEntryInfo& ent // There is no 'set' qualifier in OpenGL shading language, each resource has its own // binding name space, so remap the 'set' to resource type which make each resource // binding is valid from 0 to MAX_XXRESOURCE_BINDINGS - int set = intermediate.getSpv().openGl != 0 ? resource : ent.newSet; + int set = referenceIntermediate.getSpv().openGl != 0 ? resource : ent.newSet; int resourceKey = set; if (resource < EResCount) { if (type.getQualifier().hasBinding()) { @@ -1223,7 +1223,7 @@ void TDefaultGlslIoResolver::reserverResourceSlot(TVarEntryInfo& ent, TInfoSink& const TType& type = ent.symbol->getType(); const TString& name = ent.symbol->getAccessName(); TResourceType resource = getResourceType(type); - int set = intermediate.getSpv().openGl != 0 ? resource : resolveSet(ent.stage, ent); + int set = referenceIntermediate.getSpv().openGl != 0 ? resource : resolveSet(ent.stage, ent); int resourceKey = set; if (type.getQualifier().hasBinding()) { @@ -1233,7 +1233,7 @@ void TDefaultGlslIoResolver::reserverResourceSlot(TVarEntryInfo& ent, TInfoSink& if (iter == varSlotMap.end()) { // Reserve the slots for the ubo, ssbo and opaques who has explicit binding - int numBindings = intermediate.getSpv().openGl != 0 && type.isSizedArray() ? type.getCumulativeArraySize() : 1; + int numBindings = referenceIntermediate.getSpv().openGl != 0 && type.isSizedArray() ? type.getCumulativeArraySize() : 1; varSlotMap[name] = binding; reserveSlot(resourceKey, binding, numBindings); } else { @@ -1288,7 +1288,7 @@ struct TDefaultIoResolver : public TDefaultIoResolverBase { const TType& type = ent.symbol->getType(); const int set = getLayoutSet(type); // On OpenGL arrays of opaque types take a seperate binding for each element - int numBindings = intermediate.getSpv().openGl != 0 && type.isSizedArray() ? type.getCumulativeArraySize() : 1; + int numBindings = referenceIntermediate.getSpv().openGl != 0 && type.isSizedArray() ? type.getCumulativeArraySize() : 1; TResourceType resource = getResourceType(type); if (resource < EResCount) { if (type.getQualifier().hasBinding()) { @@ -1633,6 +1633,37 @@ bool TGlslIoMapper::doMap(TIoMapResolver* resolver, TInfoSink& infoSink) { return TVarEntryInfo::TOrderByPriority()(p1.second, p2.second); }); resolver->endResolve(EShLangCount); + if (autoPushConstantBlockName.length()) { + bool upgraded = false; + for (size_t stage = 0; stage < EShLangCount; stage++) { + if (intermediates[stage] != nullptr) { + TVarLiveMap** pUniformVarMap = uniformResolve.uniformVarMap; + auto at = pUniformVarMap[stage]->find(autoPushConstantBlockName); + if (at == pUniformVarMap[stage]->end()) + continue; + TQualifier& qualifier = at->second.symbol->getQualifier(); + if (!qualifier.isUniform()) + continue; + TType& t = at->second.symbol->getWritableType(); + int size, stride; + TIntermediate::getBaseAlignment(t, size, stride, autoPushConstantBlockPacking, + qualifier.layoutMatrix == ElmRowMajor); + if (size <= int(autoPushConstantMaxSize)) { + qualifier.setBlockStorage(EbsPushConstant); + qualifier.layoutPacking = autoPushConstantBlockPacking; + upgraded = true; + } + } + } + // If it's been upgraded to push_constant, then remove it from the uniformVector + // so it doesn't get a set/binding assigned to it. + if (upgraded) { + auto at = std::find_if(uniformVector.begin(), uniformVector.end(), + [this](const TVarLivePair& p) { return p.first == autoPushConstantBlockName; }); + if (at != uniformVector.end()) + uniformVector.erase(at); + } + } for (size_t stage = 0; stage < EShLangCount; stage++) { if (intermediates[stage] != nullptr) { // traverse each stage, set new location to each input/output and unifom symbol, set new binding to diff --git a/glslang/MachineIndependent/iomapper.h b/glslang/MachineIndependent/iomapper.h index 07357c2e..c43864e3 100644 --- a/glslang/MachineIndependent/iomapper.h +++ b/glslang/MachineIndependent/iomapper.h @@ -165,7 +165,7 @@ public: protected: TDefaultIoResolverBase(TDefaultIoResolverBase&); TDefaultIoResolverBase& operator=(TDefaultIoResolverBase&); - const TIntermediate& intermediate; + const TIntermediate& referenceIntermediate; int nextUniformLocation; int nextInputLocation; int nextOutputLocation; @@ -291,7 +291,7 @@ public: bool virtual doMap(TIoMapResolver*, TInfoSink&) { return true; } }; -// I/O mapper for OpenGL +// I/O mapper for GLSL class TGlslIoMapper : public TIoMapper { public: TGlslIoMapper() { @@ -301,6 +301,8 @@ public: memset(intermediates, 0, sizeof(TIntermediate*) * (EShLangCount + 1)); profile = ENoProfile; version = 0; + autoPushConstantMaxSize = 128; + autoPushConstantBlockPacking = ElpStd430; } virtual ~TGlslIoMapper() { for (size_t stage = 0; stage < EShLangCount; stage++) { @@ -320,6 +322,13 @@ public: intermediates[stage] = nullptr; } } + // If set, the uniform block with the given name will be changed to be backed by + // push_constant if it's size is <= maxSize + void setAutoPushConstantBlock(const char* name, unsigned int maxSize, TLayoutPacking packing) { + autoPushConstantBlockName = name; + autoPushConstantMaxSize = maxSize; + autoPushConstantBlockPacking = packing; + } // grow the reflection stage by stage bool addStage(EShLanguage, TIntermediate&, TInfoSink&, TIoMapResolver*) override; bool doMap(TIoMapResolver*, TInfoSink&) override; @@ -329,6 +338,11 @@ public: bool hadError = false; EProfile profile; int version; + +private: + TString autoPushConstantBlockName; + unsigned int autoPushConstantMaxSize; + TLayoutPacking autoPushConstantBlockPacking; }; } // end namespace glslang diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index 9656e2e7..b1adfc93 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -858,9 +858,19 @@ void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& sy if (symbol.getType().getBasicType() == EbtBlock && unitSymbol.getType().getBasicType() == EbtBlock && symbol.getType().getStruct() && unitSymbol.getType().getStruct() && symbol.getType().sameStructType(unitSymbol.getType())) { - for (unsigned int i = 0; i < symbol.getType().getStruct()->size(); ++i) { - const TQualifier& qualifier = (*symbol.getType().getStruct())[i].type->getQualifier(); - const TQualifier& unitQualifier = (*unitSymbol.getType().getStruct())[i].type->getQualifier(); + unsigned int li = 0; + unsigned int ri = 0; + while (li < symbol.getType().getStruct()->size() && ri < unitSymbol.getType().getStruct()->size()) { + if ((*symbol.getType().getStruct())[li].type->hiddenMember()) { + ++li; + continue; + } + if ((*unitSymbol.getType().getStruct())[ri].type->hiddenMember()) { + ++ri; + continue; + } + const TQualifier& qualifier = (*symbol.getType().getStruct())[li].type->getQualifier(); + const TQualifier & unitQualifier = (*unitSymbol.getType().getStruct())[ri].type->getQualifier(); if (qualifier.layoutMatrix != unitQualifier.layoutMatrix || qualifier.layoutOffset != unitQualifier.layoutOffset || qualifier.layoutAlign != unitQualifier.layoutAlign || @@ -869,6 +879,8 @@ void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& sy error(infoSink, "Interface block member layout qualifiers must match:"); writeTypeComparison = true; } + ++li; + ++ri; } } @@ -954,10 +966,10 @@ void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& sy // current implementation only has one offset. if (symbol.getQualifier().layoutMatrix != unitSymbol.getQualifier().layoutMatrix || symbol.getQualifier().layoutPacking != unitSymbol.getQualifier().layoutPacking || - symbol.getQualifier().layoutLocation != unitSymbol.getQualifier().layoutLocation || + (symbol.getQualifier().hasLocation() && unitSymbol.getQualifier().hasLocation() && symbol.getQualifier().layoutLocation != unitSymbol.getQualifier().layoutLocation) || symbol.getQualifier().layoutComponent != unitSymbol.getQualifier().layoutComponent || symbol.getQualifier().layoutIndex != unitSymbol.getQualifier().layoutIndex || - symbol.getQualifier().layoutBinding != unitSymbol.getQualifier().layoutBinding || + (symbol.getQualifier().hasBinding() && unitSymbol.getQualifier().hasBinding() && symbol.getQualifier().layoutBinding != unitSymbol.getQualifier().layoutBinding) || (symbol.getQualifier().hasBinding() && (symbol.getQualifier().layoutOffset != unitSymbol.getQualifier().layoutOffset))) { error(infoSink, "Layout qualification must match:"); writeTypeComparison = true; @@ -1934,7 +1946,7 @@ int TIntermediate::getBaseAlignment(const TType& type, int& size, int& stride, T } // rule 9 - if (type.getBasicType() == EbtStruct) { + if (type.getBasicType() == EbtStruct || type.getBasicType() == EbtBlock) { const TTypeList& memberList = *type.getStruct(); size = 0; @@ -2159,8 +2171,9 @@ int TIntermediate::computeBufferReferenceTypeSize(const TType& type) bool TIntermediate::isIoResizeArray(const TType& type, EShLanguage language) { return type.isArray() && ((language == EShLangGeometry && type.getQualifier().storage == EvqVaryingIn) || - (language == EShLangTessControl && type.getQualifier().storage == EvqVaryingOut && + (language == EShLangTessControl && (type.getQualifier().storage == EvqVaryingIn || type.getQualifier().storage == EvqVaryingOut) && ! type.getQualifier().patch) || + (language == EShLangTessEvaluation && type.getQualifier().storage == EvqVaryingIn) || (language == EShLangFragment && type.getQualifier().storage == EvqVaryingIn && type.getQualifier().pervertexNV) || (language == EShLangMeshNV && type.getQualifier().storage == EvqVaryingOut && diff --git a/glslang/OSDependent/Unix/CMakeLists.txt b/glslang/OSDependent/Unix/CMakeLists.txt index 354a3e97..d521da17 100644 --- a/glslang/OSDependent/Unix/CMakeLists.txt +++ b/glslang/OSDependent/Unix/CMakeLists.txt @@ -56,4 +56,4 @@ if(ENABLE_GLSLANG_INSTALL) install(TARGETS OSDependent EXPORT OSDependentTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) install(EXPORT OSDependentTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) -endif(ENABLE_GLSLANG_INSTALL) +endif() diff --git a/glslang/OSDependent/Unix/ossource.cpp b/glslang/OSDependent/Unix/ossource.cpp index 3f029f02..81da99c2 100644 --- a/glslang/OSDependent/Unix/ossource.cpp +++ b/glslang/OSDependent/Unix/ossource.cpp @@ -172,7 +172,7 @@ namespace { pthread_mutex_t gMutex; } -void InitGlobalLock() +static void InitMutex(void) { pthread_mutexattr_t mutexattr; pthread_mutexattr_init(&mutexattr); @@ -180,6 +180,12 @@ void InitGlobalLock() pthread_mutex_init(&gMutex, &mutexattr); } +void InitGlobalLock() +{ + static pthread_once_t once = PTHREAD_ONCE_INIT; + pthread_once(&once, InitMutex); +} + void GetGlobalLock() { pthread_mutex_lock(&gMutex); diff --git a/glslang/OSDependent/Web/CMakeLists.txt b/glslang/OSDependent/Web/CMakeLists.txt index 0f60dbcc..5bfbed41 100644 --- a/glslang/OSDependent/Web/CMakeLists.txt +++ b/glslang/OSDependent/Web/CMakeLists.txt @@ -55,7 +55,7 @@ if(ENABLE_GLSLANG_JS) if(ENABLE_EMSCRIPTEN_SINGLE_FILE) target_link_libraries(glslang.js "-s SINGLE_FILE=1") - endif(ENABLE_EMSCRIPTEN_SINGLE_FILE) + endif() if(ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE) target_link_libraries(glslang.js "-s ENVIRONMENT=node -s BINARYEN_ASYNC_COMPILATION=0") @@ -67,5 +67,5 @@ if(ENABLE_GLSLANG_JS) add_custom_command(TARGET glslang.js POST_BUILD COMMAND cat ${CMAKE_CURRENT_SOURCE_DIR}/glslang.after.js >> ${CMAKE_CURRENT_BINARY_DIR}/glslang.js) endif() - endif(EMSCRIPTEN) -endif(ENABLE_GLSLANG_JS) + endif() +endif() diff --git a/glslang/OSDependent/Windows/CMakeLists.txt b/glslang/OSDependent/Windows/CMakeLists.txt index 9cf1b7fb..21d603e7 100644 --- a/glslang/OSDependent/Windows/CMakeLists.txt +++ b/glslang/OSDependent/Windows/CMakeLists.txt @@ -45,10 +45,10 @@ endif() if(WIN32) source_group("Source" FILES ${SOURCES}) -endif(WIN32) +endif() if(ENABLE_GLSLANG_INSTALL) install(TARGETS OSDependent EXPORT OSDependentTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) install(EXPORT OSDependentTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) -endif(ENABLE_GLSLANG_INSTALL) +endif() diff --git a/gtests/AST.FromFile.cpp b/gtests/AST.FromFile.cpp index 6e7a659e..f9680dd6 100644 --- a/gtests/AST.FromFile.cpp +++ b/gtests/AST.FromFile.cpp @@ -284,7 +284,9 @@ INSTANTIATE_TEST_SUITE_P( "textureoffset_sampler2darrayshadow.vert", "atomicAdd.comp", "GL_ARB_gpu_shader5.u2i.vert", - "atomicCounterARBOps.vert" + "atomicCounterARBOps.vert", + "GL_EXT_shader_integer_mix.vert", + "GL_ARB_draw_instanced.vert", })), FileNameAsCustomTestSuffix ); diff --git a/gtests/CMakeLists.txt b/gtests/CMakeLists.txt index befe240e..c8f02828 100644 --- a/gtests/CMakeLists.txt +++ b/gtests/CMakeLists.txt @@ -72,7 +72,7 @@ if(BUILD_TESTING) install(TARGETS glslangtests EXPORT glslangtestsTargets RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) install(EXPORT glslangtestsTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) - endif(ENABLE_GLSLANG_INSTALL) + endif() set(GLSLANG_TEST_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../Test") # Supply a default test root directory, so that manual testing @@ -90,7 +90,7 @@ if(BUILD_TESTING) target_include_directories(glslangtests PRIVATE ${spirv-tools_SOURCE_DIR}/include ) - endif(ENABLE_OPT) + endif() set(LIBRARIES glslang OSDependent OGLCompiler glslang @@ -102,7 +102,7 @@ if(BUILD_TESTING) if(ENABLE_HLSL) set(LIBRARIES ${LIBRARIES} HLSL) - endif(ENABLE_HLSL) + endif() target_link_libraries(glslangtests PRIVATE ${LIBRARIES} gmock) add_test(NAME glslang-gtests diff --git a/gtests/Link.FromFile.cpp b/gtests/Link.FromFile.cpp index 29590c02..9e029fc7 100644 --- a/gtests/Link.FromFile.cpp +++ b/gtests/Link.FromFile.cpp @@ -106,6 +106,9 @@ INSTANTIATE_TEST_SUITE_P( {"link.multiAnonBlocksValid.0.0.vert", "link.multiAnonBlocksValid.0.1.vert"}, {"link.multiBlocksInvalid.0.0.vert", "link.multiBlocksInvalid.0.1.vert"}, {"link.multiBlocksValid.1.0.vert", "link.multiBlocksValid.1.1.vert"}, + {"link.tesselation.vert", "link.tesselation.frag"}, + {"link.tesselation.tese", "link.tesselation.tesc"}, + {"link.redeclareBuiltin.vert", "link.redeclareBuiltin.geom"}, })) ); // clang-format on diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 29740f31..ef117640 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -365,6 +365,7 @@ INSTANTIATE_TEST_SUITE_P( "spv.int64.frag", "spv.intcoopmat.comp", "spv.intOps.vert", + "spv.intrinsicsSpecConst.vert", "spv.intrinsicsSpirvByReference.vert", "spv.intrinsicsSpirvDecorate.frag", "spv.intrinsicsSpirvExecutionMode.frag", diff --git a/hlsl/CMakeLists.txt b/hlsl/CMakeLists.txt index 62faa195..7d5bc152 100644 --- a/hlsl/CMakeLists.txt +++ b/hlsl/CMakeLists.txt @@ -56,4 +56,4 @@ if(ENABLE_GLSLANG_INSTALL) ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() install(EXPORT HLSLTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) -endif(ENABLE_GLSLANG_INSTALL) +endif() diff --git a/known_good.json b/known_good.json index e1c2ce81..bed5dd80 100644 --- a/known_good.json +++ b/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "1fbed83c8aab8517d821fcb4164c08567951938f" + "commit" : "339d4475c1a806c187c57678af26733575d1cecd" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "449bc986ba6f4c5e10e32828783f9daef2a77644" + "commit" : "29817199b7069bac971e5365d180295d4b077ebe" } ] } |