From ab6d1499e14166bd853ad29f85ad536b516760a6 Mon Sep 17 00:00:00 2001 From: James Rumble Date: Tue, 6 Aug 2019 14:47:51 +0100 Subject: [PATCH 01/94] Export glslang targets on installation This allows the targets to be used in other cmake projects. See the following for more details: https://cmake.org/cmake/help/latest/manual/cmake-packages.7.html#creating-packages https://foonathan.net/blog/2016/07/07/cmake-dependency-handling.html --- OGLCompilersDLL/CMakeLists.txt | 3 ++- SPIRV/CMakeLists.txt | 11 +++++++---- StandAlone/CMakeLists.txt | 10 +++++++--- glslang/CMakeLists.txt | 5 +++-- glslang/OSDependent/Unix/CMakeLists.txt | 3 ++- glslang/OSDependent/Windows/CMakeLists.txt | 3 ++- gtests/CMakeLists.txt | 3 ++- hlsl/CMakeLists.txt | 5 +++-- 8 files changed, 28 insertions(+), 15 deletions(-) diff --git a/OGLCompilersDLL/CMakeLists.txt b/OGLCompilersDLL/CMakeLists.txt index 5bb3f0ee..d257828d 100644 --- a/OGLCompilersDLL/CMakeLists.txt +++ b/OGLCompilersDLL/CMakeLists.txt @@ -9,6 +9,7 @@ if(WIN32) endif(WIN32) if(ENABLE_GLSLANG_INSTALL) - install(TARGETS OGLCompiler + install(TARGETS OGLCompiler EXPORT OGLCompilerTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + install(EXPORT OGLCompilerTargets DESTINATION ${LIB_INSTALL_DIR}/cmake) endif(ENABLE_GLSLANG_INSTALL) diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt index 594ab1ef..3ddf6f17 100644 --- a/SPIRV/CMakeLists.txt +++ b/SPIRV/CMakeLists.txt @@ -80,22 +80,25 @@ endif(WIN32) if(ENABLE_GLSLANG_INSTALL) if(BUILD_SHARED_LIBS) if (ENABLE_SPVREMAPPER) - install(TARGETS SPVRemapper + install(TARGETS SPVRemapper EXPORT SPVRemapperTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() - install(TARGETS SPIRV + install(TARGETS SPIRV EXPORT SPIRVTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) else() if (ENABLE_SPVREMAPPER) - install(TARGETS SPVRemapper + install(TARGETS SPVRemapper EXPORT SPVRemapperTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() - install(TARGETS SPIRV + install(TARGETS SPIRV EXPORT SPIRVTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() + + install(EXPORT SPVRemapperTargets DESTINATION ${LIB_INSTALL_DIR}/cmake) + install(EXPORT SPIRVTargets DESTINATION ${LIB_INSTALL_DIR}/cmake) install(FILES ${HEADERS} ${SPVREMAP_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/SPIRV/) endif(ENABLE_GLSLANG_INSTALL) diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt index 5cea53d9..03d64013 100644 --- a/StandAlone/CMakeLists.txt +++ b/StandAlone/CMakeLists.txt @@ -40,14 +40,18 @@ if(WIN32) endif(WIN32) if(ENABLE_GLSLANG_INSTALL) - install(TARGETS glslangValidator + install(TARGETS glslangValidator EXPORT glslangValidatorTargets RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) - install(TARGETS spirv-remap + install(TARGETS spirv-remap EXPORT spirv-remapTargets RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + + install(EXPORT glslangValidatorTargets DESTINATION ${LIB_INSTALL_DIR}/cmake) + install(EXPORT spirv-remapTargets DESTINATION ${LIB_INSTALL_DIR}/cmake) if(BUILD_SHARED_LIBS) - install(TARGETS glslang-default-resource-limits + install(TARGETS glslang-default-resource-limits EXPORT glslang-default-resource-limitsTargets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) + install(EXPORT glslang-default-resource-limitsTargets DESTINATION ${LIB_INSTALL_DIR}/cmake) endif() endif(ENABLE_GLSLANG_INSTALL) diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt index 60169fb7..9019d81d 100644 --- a/glslang/CMakeLists.txt +++ b/glslang/CMakeLists.txt @@ -106,14 +106,15 @@ endif(WIN32) if(ENABLE_GLSLANG_INSTALL) if(BUILD_SHARED_LIBS) - install(TARGETS glslang + install(TARGETS glslang EXPORT glslangTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) else() - install(TARGETS glslang + install(TARGETS glslang EXPORT glslangTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() + install(EXPORT glslangTargets DESTINATION ${LIB_INSTALL_DIR}/cmake) endif(ENABLE_GLSLANG_INSTALL) if(ENABLE_GLSLANG_INSTALL) diff --git a/glslang/OSDependent/Unix/CMakeLists.txt b/glslang/OSDependent/Unix/CMakeLists.txt index e652f456..4a434ef5 100644 --- a/glslang/OSDependent/Unix/CMakeLists.txt +++ b/glslang/OSDependent/Unix/CMakeLists.txt @@ -20,6 +20,7 @@ else() endif() if(ENABLE_GLSLANG_INSTALL) - install(TARGETS OSDependent + install(TARGETS OSDependent EXPORT OSDependentTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + install(EXPORT OSDependentTargets DESTINATION ${LIB_INSTALL_DIR}/cmake) endif(ENABLE_GLSLANG_INSTALL) diff --git a/glslang/OSDependent/Windows/CMakeLists.txt b/glslang/OSDependent/Windows/CMakeLists.txt index f257418a..321fd4f3 100644 --- a/glslang/OSDependent/Windows/CMakeLists.txt +++ b/glslang/OSDependent/Windows/CMakeLists.txt @@ -15,6 +15,7 @@ if(WIN32) endif(WIN32) if(ENABLE_GLSLANG_INSTALL) - install(TARGETS OSDependent + install(TARGETS OSDependent EXPORT OSDependentTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + install(EXPORT OSDependentTargets DESTINATION ${LIB_INSTALL_DIR}/cmake) endif(ENABLE_GLSLANG_INSTALL) diff --git a/gtests/CMakeLists.txt b/gtests/CMakeLists.txt index f678cb6e..6e574433 100644 --- a/gtests/CMakeLists.txt +++ b/gtests/CMakeLists.txt @@ -31,8 +31,9 @@ if(BUILD_TESTING) set_property(TARGET glslangtests PROPERTY FOLDER tests) glslang_set_link_args(glslangtests) if(ENABLE_GLSLANG_INSTALL) - install(TARGETS glslangtests + install(TARGETS glslangtests EXPORT glslangtestsTargets RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + install(EXPORT glslangtestsTargets DESTINATION ${LIB_INSTALL_DIR}/cmake) endif(ENABLE_GLSLANG_INSTALL) set(GLSLANG_TEST_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../Test") diff --git a/hlsl/CMakeLists.txt b/hlsl/CMakeLists.txt index 7436dde6..70cd28ef 100644 --- a/hlsl/CMakeLists.txt +++ b/hlsl/CMakeLists.txt @@ -33,12 +33,13 @@ endif(WIN32) if(ENABLE_GLSLANG_INSTALL) if(BUILD_SHARED_LIBS) - install(TARGETS HLSL + install(TARGETS HLSL EXPORT HLSLTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) else() - install(TARGETS HLSL + install(TARGETS HLSL EXPORT HLSLTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() + install(EXPORT HLSLTargets DESTINATION ${LIB_INSTALL_DIR}/cmake) endif(ENABLE_GLSLANG_INSTALL) From c6f7294ced80732d81011e4037dcb28040f949c9 Mon Sep 17 00:00:00 2001 From: James Rumble Date: Tue, 6 Aug 2019 15:29:31 +0100 Subject: [PATCH 02/94] Handle install vs build include directories Fix target_include_directories to appropriately handle build-tree and the install-tree. --- OGLCompilersDLL/CMakeLists.txt | 2 +- SPIRV/CMakeLists.txt | 12 ++++++++---- StandAlone/CMakeLists.txt | 10 ++++++---- glslang/CMakeLists.txt | 6 ++++-- glslang/OSDependent/Unix/CMakeLists.txt | 2 +- glslang/OSDependent/Windows/CMakeLists.txt | 2 +- gtests/CMakeLists.txt | 2 +- hlsl/CMakeLists.txt | 2 +- 8 files changed, 23 insertions(+), 15 deletions(-) diff --git a/OGLCompilersDLL/CMakeLists.txt b/OGLCompilersDLL/CMakeLists.txt index d257828d..af4ab587 100644 --- a/OGLCompilersDLL/CMakeLists.txt +++ b/OGLCompilersDLL/CMakeLists.txt @@ -11,5 +11,5 @@ endif(WIN32) if(ENABLE_GLSLANG_INSTALL) install(TARGETS OGLCompiler EXPORT OGLCompilerTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) - install(EXPORT OGLCompilerTargets DESTINATION ${LIB_INSTALL_DIR}/cmake) + install(EXPORT OGLCompilerTargets DESTINATION lib/cmake) endif(ENABLE_GLSLANG_INSTALL) diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt index 3ddf6f17..94db899d 100644 --- a/SPIRV/CMakeLists.txt +++ b/SPIRV/CMakeLists.txt @@ -46,7 +46,9 @@ endif(ENABLE_NV_EXTENSIONS) add_library(SPIRV ${LIB_TYPE} ${SOURCES} ${HEADERS}) set_property(TARGET SPIRV PROPERTY FOLDER glslang) set_property(TARGET SPIRV PROPERTY POSITION_INDEPENDENT_CODE ON) -target_include_directories(SPIRV PUBLIC ..) +target_include_directories(SPIRV PUBLIC + $ + $) if (ENABLE_SPVREMAPPER) add_library(SPVRemapper ${LIB_TYPE} ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS}) @@ -67,7 +69,9 @@ if(ENABLE_OPT) PRIVATE ${spirv-tools_SOURCE_DIR}/source ) target_link_libraries(SPIRV glslang SPIRV-Tools-opt) - target_include_directories(SPIRV PUBLIC ../External) + target_include_directories(SPIRV PUBLIC + $ + $) else() target_link_libraries(SPIRV glslang) endif(ENABLE_OPT) @@ -97,8 +101,8 @@ if(ENABLE_GLSLANG_INSTALL) ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() - install(EXPORT SPVRemapperTargets DESTINATION ${LIB_INSTALL_DIR}/cmake) - install(EXPORT SPIRVTargets DESTINATION ${LIB_INSTALL_DIR}/cmake) + install(EXPORT SPVRemapperTargets DESTINATION lib/cmake) + install(EXPORT SPIRVTargets DESTINATION lib/cmake) install(FILES ${HEADERS} ${SPVREMAP_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/SPIRV/) endif(ENABLE_GLSLANG_INSTALL) diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt index 03d64013..89e91c01 100644 --- a/StandAlone/CMakeLists.txt +++ b/StandAlone/CMakeLists.txt @@ -33,7 +33,9 @@ endif(WIN32) target_link_libraries(glslangValidator ${LIBRARIES}) target_link_libraries(spirv-remap ${LIBRARIES}) -target_include_directories(glslangValidator PUBLIC ../External) +target_include_directories(glslangValidator PUBLIC + $ + $) if(WIN32) source_group("Source" FILES ${SOURCES}) @@ -46,12 +48,12 @@ if(ENABLE_GLSLANG_INSTALL) install(TARGETS spirv-remap EXPORT spirv-remapTargets RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) - install(EXPORT glslangValidatorTargets DESTINATION ${LIB_INSTALL_DIR}/cmake) - install(EXPORT spirv-remapTargets DESTINATION ${LIB_INSTALL_DIR}/cmake) + install(EXPORT glslangValidatorTargets DESTINATION lib/cmake) + install(EXPORT spirv-remapTargets DESTINATION lib/cmake) if(BUILD_SHARED_LIBS) install(TARGETS glslang-default-resource-limits EXPORT glslang-default-resource-limitsTargets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) - install(EXPORT glslang-default-resource-limitsTargets DESTINATION ${LIB_INSTALL_DIR}/cmake) + install(EXPORT glslang-default-resource-limitsTargets DESTINATION lib/cmake) endif() endif(ENABLE_GLSLANG_INSTALL) diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt index 9019d81d..9507ef04 100644 --- a/glslang/CMakeLists.txt +++ b/glslang/CMakeLists.txt @@ -86,7 +86,9 @@ add_library(glslang ${LIB_TYPE} ${BISON_GLSLParser_OUTPUT_SOURCE} ${SOURCES} ${H set_property(TARGET glslang PROPERTY FOLDER glslang) set_property(TARGET glslang PROPERTY POSITION_INDEPENDENT_CODE ON) target_link_libraries(glslang OGLCompiler OSDependent) -target_include_directories(glslang PUBLIC ..) +target_include_directories(glslang PUBLIC + $ + $) if(WIN32 AND BUILD_SHARED_LIBS) set_target_properties(glslang PROPERTIES PREFIX "") @@ -114,7 +116,7 @@ if(ENABLE_GLSLANG_INSTALL) install(TARGETS glslang EXPORT glslangTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() - install(EXPORT glslangTargets DESTINATION ${LIB_INSTALL_DIR}/cmake) + install(EXPORT glslangTargets DESTINATION lib/cmake) endif(ENABLE_GLSLANG_INSTALL) if(ENABLE_GLSLANG_INSTALL) diff --git a/glslang/OSDependent/Unix/CMakeLists.txt b/glslang/OSDependent/Unix/CMakeLists.txt index 4a434ef5..91fb45a7 100644 --- a/glslang/OSDependent/Unix/CMakeLists.txt +++ b/glslang/OSDependent/Unix/CMakeLists.txt @@ -22,5 +22,5 @@ endif() if(ENABLE_GLSLANG_INSTALL) install(TARGETS OSDependent EXPORT OSDependentTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) - install(EXPORT OSDependentTargets DESTINATION ${LIB_INSTALL_DIR}/cmake) + install(EXPORT OSDependentTargets DESTINATION lib/cmake) endif(ENABLE_GLSLANG_INSTALL) diff --git a/glslang/OSDependent/Windows/CMakeLists.txt b/glslang/OSDependent/Windows/CMakeLists.txt index 321fd4f3..f6bd4e9d 100644 --- a/glslang/OSDependent/Windows/CMakeLists.txt +++ b/glslang/OSDependent/Windows/CMakeLists.txt @@ -17,5 +17,5 @@ endif(WIN32) if(ENABLE_GLSLANG_INSTALL) install(TARGETS OSDependent EXPORT OSDependentTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) - install(EXPORT OSDependentTargets DESTINATION ${LIB_INSTALL_DIR}/cmake) + install(EXPORT OSDependentTargets DESTINATION lib/cmake) endif(ENABLE_GLSLANG_INSTALL) diff --git a/gtests/CMakeLists.txt b/gtests/CMakeLists.txt index 6e574433..77d217f1 100644 --- a/gtests/CMakeLists.txt +++ b/gtests/CMakeLists.txt @@ -33,7 +33,7 @@ if(BUILD_TESTING) if(ENABLE_GLSLANG_INSTALL) install(TARGETS glslangtests EXPORT glslangtestsTargets RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) - install(EXPORT glslangtestsTargets DESTINATION ${LIB_INSTALL_DIR}/cmake) + install(EXPORT glslangtestsTargets DESTINATION lib/cmake) endif(ENABLE_GLSLANG_INSTALL) set(GLSLANG_TEST_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../Test") diff --git a/hlsl/CMakeLists.txt b/hlsl/CMakeLists.txt index 70cd28ef..44f9d6a2 100644 --- a/hlsl/CMakeLists.txt +++ b/hlsl/CMakeLists.txt @@ -41,5 +41,5 @@ if(ENABLE_GLSLANG_INSTALL) install(TARGETS HLSL EXPORT HLSLTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() - install(EXPORT HLSLTargets DESTINATION ${LIB_INSTALL_DIR}/cmake) + install(EXPORT HLSLTargets DESTINATION lib/cmake) endif(ENABLE_GLSLANG_INSTALL) From d2b24ae5d75d523243303ce970a856a750747aa9 Mon Sep 17 00:00:00 2001 From: georgeouzou Date: Sun, 25 Aug 2019 00:16:10 +0300 Subject: [PATCH 03/94] Add support for GL_ARB_explicit_uniform_location --- Test/130.frag | 9 +++++++++ Test/330.frag | 15 ++++++++++++++- Test/baseResults/130.frag.out | 11 ++++++++++- Test/baseResults/330.frag.out | 12 +++++++++++- glslang/MachineIndependent/ParseHelper.cpp | 10 +++++++--- glslang/MachineIndependent/Versions.cpp | 2 ++ glslang/MachineIndependent/Versions.h | 1 + 7 files changed, 54 insertions(+), 6 deletions(-) diff --git a/Test/130.frag b/Test/130.frag index 3e394110..8a5bfd52 100644 --- a/Test/130.frag +++ b/Test/130.frag @@ -167,3 +167,12 @@ void qux2() } layout(early_fragment_tests) out; // ERROR + +#extension GL_ARB_explicit_uniform_location : enable + +layout(location = 3) uniform vec4 ucolor0; // ERROR: explicit attrib location is also required for version < 330 + +#extension GL_ARB_explicit_attrib_location : enable + +layout(location = 4) uniform vec4 ucolor1; + diff --git a/Test/330.frag b/Test/330.frag index 9afa8f82..b37d8de8 100644 --- a/Test/330.frag +++ b/Test/330.frag @@ -149,4 +149,17 @@ void fooKeyMem() KeyMem.precise; } -layout(location=28, index=2) out vec4 outIndex2; // ERROR index out of range \ No newline at end of file +layout(location=28, index=2) out vec4 outIndex2; // ERROR index out of range + +layout(location=4) uniform vec4 ucolor0; // ERROR: extension is not enabled + +#extension GL_ARB_explicit_uniform_location : enable + +layout(location=5) uniform vec4 ucolor1; + +layout(location=6) uniform ColorsBuffer // ERROR: location cannot be applied in uniform buffer block +{ + vec4 colors[128]; +} colorsBuffer; + + diff --git a/Test/baseResults/130.frag.out b/Test/baseResults/130.frag.out index 81d055be..0af9ab9f 100644 --- a/Test/baseResults/130.frag.out +++ b/Test/baseResults/130.frag.out @@ -29,10 +29,13 @@ ERROR: 0:153: 'early_fragment_tests' : not supported for this version or the ena ERROR: 0:154: 'image load store' : not supported for this version or the enabled extensions ERROR: 0:154: 'iimage2D' : Reserved word. ERROR: 0:169: 'early_fragment_tests' : can only apply to 'in' -ERROR: 28 compilation errors. No code generated. +ERROR: 0:173: 'location qualifier on uniform or buffer' : not supported for this version or the enabled extensions +ERROR: 29 compilation errors. No code generated. Shader version: 130 +Requested GL_ARB_explicit_attrib_location +Requested GL_ARB_explicit_uniform_location Requested GL_ARB_gpu_shader5 Requested GL_ARB_separate_shader_objects Requested GL_ARB_shader_image_load_store @@ -402,12 +405,16 @@ ERROR: node is still EOpNull! 0:? 'gl_FogFragCoord' ( smooth in float) 0:? 'iimg2Dbad' (layout( r32i) uniform iimage2D) 0:? 'iimg2D' (layout( r32i) uniform iimage2D) +0:? 'ucolor0' (layout( location=3) uniform 4-component vector of float) +0:? 'ucolor1' (layout( location=4) uniform 4-component vector of float) Linked fragment stage: Shader version: 130 +Requested GL_ARB_explicit_attrib_location +Requested GL_ARB_explicit_uniform_location Requested GL_ARB_gpu_shader5 Requested GL_ARB_separate_shader_objects Requested GL_ARB_shader_image_load_store @@ -457,4 +464,6 @@ ERROR: node is still EOpNull! 0:? 'gl_FogFragCoord' ( smooth in float) 0:? 'iimg2Dbad' (layout( r32i) uniform iimage2D) 0:? 'iimg2D' (layout( r32i) uniform iimage2D) +0:? 'ucolor0' (layout( location=3) uniform 4-component vector of float) +0:? 'ucolor1' (layout( location=4) uniform 4-component vector of float) diff --git a/Test/baseResults/330.frag.out b/Test/baseResults/330.frag.out index 36ba7a2b..bb2770f5 100644 --- a/Test/baseResults/330.frag.out +++ b/Test/baseResults/330.frag.out @@ -40,11 +40,14 @@ ERROR: 0:140: 'assign' : cannot convert from ' const float' to ' temp 2-compone ERROR: 0:141: 'textureQueryLod' : no matching overloaded function found ERROR: 0:141: 'assign' : cannot convert from ' const float' to ' temp 2-component vector of float' ERROR: 0:152: 'index' : value must be 0 or 1 -ERROR: 41 compilation errors. No code generated. +ERROR: 0:154: 'location qualifier on uniform or buffer' : not supported for this version or the enabled extensions +ERROR: 0:160: 'location' : cannot apply to uniform or buffer block +ERROR: 43 compilation errors. No code generated. Shader version: 330 Requested GL_ARB_enhanced_layouts +Requested GL_ARB_explicit_uniform_location Requested GL_ARB_separate_shader_objects ERROR: node is still EOpNull! 0:8 Function Definition: main( ( global void) @@ -126,6 +129,9 @@ ERROR: node is still EOpNull! 0:? 'precise' ( global int) 0:? 'KeyMem' ( global structure{ global int precise}) 0:? 'outIndex2' (layout( location=28 index=0) out 4-component vector of float) +0:? 'ucolor0' (layout( location=4) uniform 4-component vector of float) +0:? 'ucolor1' (layout( location=5) uniform 4-component vector of float) +0:? 'colorsBuffer' (layout( location=6 column_major shared) uniform block{layout( column_major shared) uniform 128-element array of 4-component vector of float colors}) Linked fragment stage: @@ -135,6 +141,7 @@ ERROR: Linking fragment stage: Cannot use both gl_FragColor and gl_FragData Shader version: 330 Requested GL_ARB_enhanced_layouts +Requested GL_ARB_explicit_uniform_location Requested GL_ARB_separate_shader_objects ERROR: node is still EOpNull! 0:8 Function Definition: main( ( global void) @@ -191,4 +198,7 @@ ERROR: node is still EOpNull! 0:? 'precise' ( global int) 0:? 'KeyMem' ( global structure{ global int precise}) 0:? 'outIndex2' (layout( location=28 index=0) out 4-component vector of float) +0:? 'ucolor0' (layout( location=4) uniform 4-component vector of float) +0:? 'ucolor1' (layout( location=5) uniform 4-component vector of float) +0:? 'colorsBuffer' (layout( location=6 column_major shared) uniform block{layout( column_major shared) uniform 128-element array of 4-component vector of float colors}) diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 1e2a9650..a1e8e340 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -5101,7 +5101,8 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi return; } else if (id == "location") { profileRequires(loc, EEsProfile, 300, nullptr, "location"); - const char* exts[2] = { E_GL_ARB_separate_shader_objects, E_GL_ARB_explicit_attrib_location }; + const char* exts[2] = { E_GL_ARB_separate_shader_objects, E_GL_ARB_explicit_attrib_location }; + // GL_ARB_explicit_uniform_location requires 330 or GL_ARB_explicit_attrib_location we do not need to add it here profileRequires(loc, ~EEsProfile, 330, 2, exts, "location"); if ((unsigned int)value >= TQualifier::layoutLocationEnd) error(loc, "location is too large", id.c_str(), ""); @@ -5858,8 +5859,11 @@ void TParseContext::layoutQualifierCheck(const TSourceLoc& loc, const TQualifier case EvqBuffer: { const char* feature = "location qualifier on uniform or buffer"; - requireProfile(loc, EEsProfile | ECoreProfile | ECompatibilityProfile, feature); - profileRequires(loc, ECoreProfile | ECompatibilityProfile, 430, nullptr, feature); + requireProfile(loc, EEsProfile | ECoreProfile | ECompatibilityProfile | ENoProfile, feature); + profileRequires(loc, ~EEsProfile, 330, E_GL_ARB_explicit_attrib_location, feature); + if (!isEsProfile() && (extensionTurnedOn(E_GL_ARB_explicit_attrib_location) || version >= 330)) { + profileRequires(loc, ~EEsProfile, 430, E_GL_ARB_explicit_uniform_location, feature); + } profileRequires(loc, EEsProfile, 310, nullptr, feature); break; } diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index e96a9529..ee83c6b5 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -174,6 +174,7 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_ARB_texture_cube_map_array] = EBhDisable; extensionBehavior[E_GL_ARB_shader_texture_lod] = EBhDisable; extensionBehavior[E_GL_ARB_explicit_attrib_location] = EBhDisable; + extensionBehavior[E_GL_ARB_explicit_uniform_location] = EBhDisable; extensionBehavior[E_GL_ARB_shader_image_load_store] = EBhDisable; extensionBehavior[E_GL_ARB_shader_atomic_counters] = EBhDisable; extensionBehavior[E_GL_ARB_shader_draw_parameters] = EBhDisable; @@ -370,6 +371,7 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_ARB_texture_cube_map_array 1\n" "#define GL_ARB_shader_texture_lod 1\n" "#define GL_ARB_explicit_attrib_location 1\n" + "#define GL_ARB_explicit_uniform_location 1\n" "#define GL_ARB_shader_image_load_store 1\n" "#define GL_ARB_shader_atomic_counters 1\n" "#define GL_ARB_shader_draw_parameters 1\n" diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index d07e9915..35773d2b 100644 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -126,6 +126,7 @@ const char* const E_GL_ARB_enhanced_layouts = "GL_ARB_enhanced_layou const char* const E_GL_ARB_texture_cube_map_array = "GL_ARB_texture_cube_map_array"; const char* const E_GL_ARB_shader_texture_lod = "GL_ARB_shader_texture_lod"; const char* const E_GL_ARB_explicit_attrib_location = "GL_ARB_explicit_attrib_location"; +const char* const E_GL_ARB_explicit_uniform_location = "GL_ARB_explicit_uniform_location"; const char* const E_GL_ARB_shader_image_load_store = "GL_ARB_shader_image_load_store"; const char* const E_GL_ARB_shader_atomic_counters = "GL_ARB_shader_atomic_counters"; const char* const E_GL_ARB_shader_draw_parameters = "GL_ARB_shader_draw_parameters"; From b69e8f3aca6ebe3c71f6ff1a858744c4cbaa3146 Mon Sep 17 00:00:00 2001 From: Roy Date: Mon, 2 Sep 2019 15:01:06 +0800 Subject: [PATCH 04/94] Adjusting code interface glslang/include/intermediate.h -> Add a new interface to set TIntermBranch's expression. glslang/include/Types.h -> Add interface to set Type's basicType and add interface to get basicType form a TSampler. glslang/MachineIndependent/intermediate.cpp -> Part of the code in createConversion been encapsulating as a new function called buildConvertOp glslang/MachineIndependent/localintermediate.h -> Export createConversion and buildConvertOp as a public function glslang/Public/ShaderLang.h -> Add interface to get shader object and shader source. --- glslang/Include/Types.h | 5 +- glslang/Include/intermediate.h | 1 + glslang/MachineIndependent/Intermediate.cpp | 457 +++++++++--------- .../MachineIndependent/localintermediate.h | 8 +- glslang/Public/ShaderLang.h | 4 +- 5 files changed, 246 insertions(+), 229 deletions(-) diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index 3140006e..20936063 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -135,6 +135,8 @@ struct TSampler { // misnomer now; includes images, textures without sampler, bool isYuv() const { return yuv; } #endif void setCombined(bool c) { combined = c; } + void setBasicType(TBasicType t) { type = t; }; + TBasicType getBasicType() const { return type; }; bool isShadow() const { return shadow; } bool isArrayed() const { return arrayed; } @@ -2184,7 +2186,8 @@ public: const TTypeList* getStruct() const { assert(isStruct()); return structure; } void setStruct(TTypeList* s) { assert(isStruct()); structure = s; } TTypeList* getWritableStruct() const { assert(isStruct()); return structure; } // This should only be used when known to not be sharing with other threads - + void setBasicType(const TBasicType& t) { basicType = t; } + int computeNumComponents() const { int components = 0; diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index 3a7405ad..079984f6 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -1185,6 +1185,7 @@ public: virtual void traverse(TIntermTraverser*); TOperator getFlowOp() const { return flowOp; } TIntermTyped* getExpression() const { return expression; } + void setExpression(TIntermTyped* pExpression) { expression = pExpression; } protected: TOperator flowOp; TIntermTyped* expression; diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index 93d41f7d..62af2b6e 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -562,6 +562,237 @@ bool TIntermediate::isConversionAllowed(TOperator op, TIntermTyped* node) const return true; } +bool TIntermediate::buildConvertOp(TBasicType dst, TBasicType src, TOperator& newOp) const +{ + switch (dst) { +#ifndef GLSLANG_WEB + case EbtDouble: + switch (src) { + case EbtUint: newOp = EOpConvUintToDouble; break; + case EbtBool: newOp = EOpConvBoolToDouble; break; + case EbtFloat: newOp = EOpConvFloatToDouble; break; + case EbtInt: newOp = EOpConvIntToDouble; break; + case EbtInt8: newOp = EOpConvInt8ToDouble; break; + case EbtUint8: newOp = EOpConvUint8ToDouble; break; + case EbtInt16: newOp = EOpConvInt16ToDouble; break; + case EbtUint16: newOp = EOpConvUint16ToDouble; break; + case EbtFloat16: newOp = EOpConvFloat16ToDouble; break; + case EbtInt64: newOp = EOpConvInt64ToDouble; break; + case EbtUint64: newOp = EOpConvUint64ToDouble; break; + default: + return false; + } + break; +#endif + case EbtFloat: + switch (src) { + case EbtInt: newOp = EOpConvIntToFloat; break; + case EbtUint: newOp = EOpConvUintToFloat; break; + case EbtBool: newOp = EOpConvBoolToFloat; break; +#ifndef GLSLANG_WEB + case EbtDouble: newOp = EOpConvDoubleToFloat; break; + case EbtInt8: newOp = EOpConvInt8ToFloat; break; + case EbtUint8: newOp = EOpConvUint8ToFloat; break; + case EbtInt16: newOp = EOpConvInt16ToFloat; break; + case EbtUint16: newOp = EOpConvUint16ToFloat; break; + case EbtFloat16: newOp = EOpConvFloat16ToFloat; break; + case EbtInt64: newOp = EOpConvInt64ToFloat; break; + case EbtUint64: newOp = EOpConvUint64ToFloat; break; +#endif + default: + return false; + } + break; +#ifndef GLSLANG_WEB + case EbtFloat16: + switch (src) { + case EbtInt8: newOp = EOpConvInt8ToFloat16; break; + case EbtUint8: newOp = EOpConvUint8ToFloat16; break; + case EbtInt16: newOp = EOpConvInt16ToFloat16; break; + case EbtUint16: newOp = EOpConvUint16ToFloat16; break; + case EbtInt: newOp = EOpConvIntToFloat16; break; + case EbtUint: newOp = EOpConvUintToFloat16; break; + case EbtBool: newOp = EOpConvBoolToFloat16; break; + case EbtFloat: newOp = EOpConvFloatToFloat16; break; + case EbtDouble: newOp = EOpConvDoubleToFloat16; break; + case EbtInt64: newOp = EOpConvInt64ToFloat16; break; + case EbtUint64: newOp = EOpConvUint64ToFloat16; break; + default: + return false; + } + break; +#endif + case EbtBool: + switch (src) { + case EbtInt: newOp = EOpConvIntToBool; break; + case EbtUint: newOp = EOpConvUintToBool; break; + case EbtFloat: newOp = EOpConvFloatToBool; break; +#ifndef GLSLANG_WEB + case EbtDouble: newOp = EOpConvDoubleToBool; break; + case EbtInt8: newOp = EOpConvInt8ToBool; break; + case EbtUint8: newOp = EOpConvUint8ToBool; break; + case EbtInt16: newOp = EOpConvInt16ToBool; break; + case EbtUint16: newOp = EOpConvUint16ToBool; break; + case EbtFloat16: newOp = EOpConvFloat16ToBool; break; + case EbtInt64: newOp = EOpConvInt64ToBool; break; + case EbtUint64: newOp = EOpConvUint64ToBool; break; +#endif + default: + return false; + } + break; +#ifndef GLSLANG_WEB + case EbtInt8: + switch (src) { + case EbtUint8: newOp = EOpConvUint8ToInt8; break; + case EbtInt16: newOp = EOpConvInt16ToInt8; break; + case EbtUint16: newOp = EOpConvUint16ToInt8; break; + case EbtInt: newOp = EOpConvIntToInt8; break; + case EbtUint: newOp = EOpConvUintToInt8; break; + case EbtInt64: newOp = EOpConvInt64ToInt8; break; + case EbtUint64: newOp = EOpConvUint64ToInt8; break; + case EbtBool: newOp = EOpConvBoolToInt8; break; + case EbtFloat: newOp = EOpConvFloatToInt8; break; + case EbtDouble: newOp = EOpConvDoubleToInt8; break; + case EbtFloat16: newOp = EOpConvFloat16ToInt8; break; + default: + return false; + } + break; + case EbtUint8: + switch (src) { + case EbtInt8: newOp = EOpConvInt8ToUint8; break; + case EbtInt16: newOp = EOpConvInt16ToUint8; break; + case EbtUint16: newOp = EOpConvUint16ToUint8; break; + case EbtInt: newOp = EOpConvIntToUint8; break; + case EbtUint: newOp = EOpConvUintToUint8; break; + case EbtInt64: newOp = EOpConvInt64ToUint8; break; + case EbtUint64: newOp = EOpConvUint64ToUint8; break; + case EbtBool: newOp = EOpConvBoolToUint8; break; + case EbtFloat: newOp = EOpConvFloatToUint8; break; + case EbtDouble: newOp = EOpConvDoubleToUint8; break; + case EbtFloat16: newOp = EOpConvFloat16ToUint8; break; + default: + return false; + } + break; + + case EbtInt16: + switch (src) { + case EbtUint8: newOp = EOpConvUint8ToInt16; break; + case EbtInt8: newOp = EOpConvInt8ToInt16; break; + case EbtUint16: newOp = EOpConvUint16ToInt16; break; + case EbtInt: newOp = EOpConvIntToInt16; break; + case EbtUint: newOp = EOpConvUintToInt16; break; + case EbtInt64: newOp = EOpConvInt64ToInt16; break; + case EbtUint64: newOp = EOpConvUint64ToInt16; break; + case EbtBool: newOp = EOpConvBoolToInt16; break; + case EbtFloat: newOp = EOpConvFloatToInt16; break; + case EbtDouble: newOp = EOpConvDoubleToInt16; break; + case EbtFloat16: newOp = EOpConvFloat16ToInt16; break; + default: + return false; + } + break; + case EbtUint16: + switch (src) { + case EbtInt8: newOp = EOpConvInt8ToUint16; break; + case EbtUint8: newOp = EOpConvUint8ToUint16; break; + case EbtInt16: newOp = EOpConvInt16ToUint16; break; + case EbtInt: newOp = EOpConvIntToUint16; break; + case EbtUint: newOp = EOpConvUintToUint16; break; + case EbtInt64: newOp = EOpConvInt64ToUint16; break; + case EbtUint64: newOp = EOpConvUint64ToUint16; break; + case EbtBool: newOp = EOpConvBoolToUint16; break; + case EbtFloat: newOp = EOpConvFloatToUint16; break; + case EbtDouble: newOp = EOpConvDoubleToUint16; break; + case EbtFloat16: newOp = EOpConvFloat16ToUint16; break; + default: + return false; + } + break; +#endif + + case EbtInt: + switch (src) { + case EbtUint: newOp = EOpConvUintToInt; break; + case EbtBool: newOp = EOpConvBoolToInt; break; + case EbtFloat: newOp = EOpConvFloatToInt; break; +#ifndef GLSLANG_WEB + case EbtInt8: newOp = EOpConvInt8ToInt; break; + case EbtUint8: newOp = EOpConvUint8ToInt; break; + case EbtInt16: newOp = EOpConvInt16ToInt; break; + case EbtUint16: newOp = EOpConvUint16ToInt; break; + case EbtDouble: newOp = EOpConvDoubleToInt; break; + case EbtFloat16: newOp = EOpConvFloat16ToInt; break; + case EbtInt64: newOp = EOpConvInt64ToInt; break; + case EbtUint64: newOp = EOpConvUint64ToInt; break; +#endif + default: + return false; + } + break; + case EbtUint: + switch (src) { + case EbtInt: newOp = EOpConvIntToUint; break; + case EbtBool: newOp = EOpConvBoolToUint; break; + case EbtFloat: newOp = EOpConvFloatToUint; break; +#ifndef GLSLANG_WEB + case EbtInt8: newOp = EOpConvInt8ToUint; break; + case EbtUint8: newOp = EOpConvUint8ToUint; break; + case EbtInt16: newOp = EOpConvInt16ToUint; break; + case EbtUint16: newOp = EOpConvUint16ToUint; break; + case EbtDouble: newOp = EOpConvDoubleToUint; break; + case EbtFloat16: newOp = EOpConvFloat16ToUint; break; + case EbtInt64: newOp = EOpConvInt64ToUint; break; + case EbtUint64: newOp = EOpConvUint64ToUint; break; +#endif + default: + return false; + } + break; +#ifndef GLSLANG_WEB + case EbtInt64: + switch (src) { + case EbtInt8: newOp = EOpConvInt8ToInt64; break; + case EbtUint8: newOp = EOpConvUint8ToInt64; break; + case EbtInt16: newOp = EOpConvInt16ToInt64; break; + case EbtUint16: newOp = EOpConvUint16ToInt64; break; + case EbtInt: newOp = EOpConvIntToInt64; break; + case EbtUint: newOp = EOpConvUintToInt64; break; + case EbtBool: newOp = EOpConvBoolToInt64; break; + case EbtFloat: newOp = EOpConvFloatToInt64; break; + case EbtDouble: newOp = EOpConvDoubleToInt64; break; + case EbtFloat16: newOp = EOpConvFloat16ToInt64; break; + case EbtUint64: newOp = EOpConvUint64ToInt64; break; + default: + return false; + } + break; + case EbtUint64: + switch (src) { + case EbtInt8: newOp = EOpConvInt8ToUint64; break; + case EbtUint8: newOp = EOpConvUint8ToUint64; break; + case EbtInt16: newOp = EOpConvInt16ToUint64; break; + case EbtUint16: newOp = EOpConvUint16ToUint64; break; + case EbtInt: newOp = EOpConvIntToUint64; break; + case EbtUint: newOp = EOpConvUintToUint64; break; + case EbtBool: newOp = EOpConvBoolToUint64; break; + case EbtFloat: newOp = EOpConvFloatToUint64; break; + case EbtDouble: newOp = EOpConvDoubleToUint64; break; + case EbtFloat16: newOp = EOpConvFloat16ToUint64; break; + case EbtInt64: newOp = EOpConvInt64ToUint64; break; + default: + return false; + } + break; +#endif + default: + return false; + } + return true; +} + // This is 'mechanism' here, it does any conversion told. // It is about basic type, not about shape. // The policy comes from the shader or the calling code. @@ -608,230 +839,8 @@ TIntermTyped* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped return nullptr; } - switch (convertTo) { -#ifndef GLSLANG_WEB - case EbtDouble: - switch (node->getBasicType()) { - case EbtUint: newOp = EOpConvUintToDouble; break; - case EbtBool: newOp = EOpConvBoolToDouble; break; - case EbtFloat: newOp = EOpConvFloatToDouble; break; - case EbtInt: newOp = EOpConvIntToDouble; break; - case EbtInt8: newOp = EOpConvInt8ToDouble; break; - case EbtUint8: newOp = EOpConvUint8ToDouble; break; - case EbtInt16: newOp = EOpConvInt16ToDouble; break; - case EbtUint16: newOp = EOpConvUint16ToDouble; break; - case EbtFloat16: newOp = EOpConvFloat16ToDouble; break; - case EbtInt64: newOp = EOpConvInt64ToDouble; break; - case EbtUint64: newOp = EOpConvUint64ToDouble; break; - default: - return nullptr; - } - break; -#endif - case EbtFloat: - switch (node->getBasicType()) { - case EbtInt: newOp = EOpConvIntToFloat; break; - case EbtUint: newOp = EOpConvUintToFloat; break; - case EbtBool: newOp = EOpConvBoolToFloat; break; -#ifndef GLSLANG_WEB - case EbtDouble: newOp = EOpConvDoubleToFloat; break; - case EbtInt8: newOp = EOpConvInt8ToFloat; break; - case EbtUint8: newOp = EOpConvUint8ToFloat; break; - case EbtInt16: newOp = EOpConvInt16ToFloat; break; - case EbtUint16: newOp = EOpConvUint16ToFloat; break; - case EbtFloat16: newOp = EOpConvFloat16ToFloat; break; - case EbtInt64: newOp = EOpConvInt64ToFloat; break; - case EbtUint64: newOp = EOpConvUint64ToFloat; break; -#endif - default: - return nullptr; - } - break; -#ifndef GLSLANG_WEB - case EbtFloat16: - switch (node->getBasicType()) { - case EbtInt8: newOp = EOpConvInt8ToFloat16; break; - case EbtUint8: newOp = EOpConvUint8ToFloat16; break; - case EbtInt16: newOp = EOpConvInt16ToFloat16; break; - case EbtUint16: newOp = EOpConvUint16ToFloat16; break; - case EbtInt: newOp = EOpConvIntToFloat16; break; - case EbtUint: newOp = EOpConvUintToFloat16; break; - case EbtBool: newOp = EOpConvBoolToFloat16; break; - case EbtFloat: newOp = EOpConvFloatToFloat16; break; - case EbtDouble: newOp = EOpConvDoubleToFloat16; break; - case EbtInt64: newOp = EOpConvInt64ToFloat16; break; - case EbtUint64: newOp = EOpConvUint64ToFloat16; break; - default: - return nullptr; - } - break; -#endif - case EbtBool: - switch (node->getBasicType()) { - case EbtInt: newOp = EOpConvIntToBool; break; - case EbtUint: newOp = EOpConvUintToBool; break; - case EbtFloat: newOp = EOpConvFloatToBool; break; -#ifndef GLSLANG_WEB - case EbtDouble: newOp = EOpConvDoubleToBool; break; - case EbtInt8: newOp = EOpConvInt8ToBool; break; - case EbtUint8: newOp = EOpConvUint8ToBool; break; - case EbtInt16: newOp = EOpConvInt16ToBool; break; - case EbtUint16: newOp = EOpConvUint16ToBool; break; - case EbtFloat16: newOp = EOpConvFloat16ToBool; break; - case EbtInt64: newOp = EOpConvInt64ToBool; break; - case EbtUint64: newOp = EOpConvUint64ToBool; break; -#endif - default: - return nullptr; - } - break; -#ifndef GLSLANG_WEB - case EbtInt8: - switch (node->getBasicType()) { - case EbtUint8: newOp = EOpConvUint8ToInt8; break; - case EbtInt16: newOp = EOpConvInt16ToInt8; break; - case EbtUint16: newOp = EOpConvUint16ToInt8; break; - case EbtInt: newOp = EOpConvIntToInt8; break; - case EbtUint: newOp = EOpConvUintToInt8; break; - case EbtInt64: newOp = EOpConvInt64ToInt8; break; - case EbtUint64: newOp = EOpConvUint64ToInt8; break; - case EbtBool: newOp = EOpConvBoolToInt8; break; - case EbtFloat: newOp = EOpConvFloatToInt8; break; - case EbtDouble: newOp = EOpConvDoubleToInt8; break; - case EbtFloat16: newOp = EOpConvFloat16ToInt8; break; - default: - return nullptr; - } - break; - case EbtUint8: - switch (node->getBasicType()) { - case EbtInt8: newOp = EOpConvInt8ToUint8; break; - case EbtInt16: newOp = EOpConvInt16ToUint8; break; - case EbtUint16: newOp = EOpConvUint16ToUint8; break; - case EbtInt: newOp = EOpConvIntToUint8; break; - case EbtUint: newOp = EOpConvUintToUint8; break; - case EbtInt64: newOp = EOpConvInt64ToUint8; break; - case EbtUint64: newOp = EOpConvUint64ToUint8; break; - case EbtBool: newOp = EOpConvBoolToUint8; break; - case EbtFloat: newOp = EOpConvFloatToUint8; break; - case EbtDouble: newOp = EOpConvDoubleToUint8; break; - case EbtFloat16: newOp = EOpConvFloat16ToUint8; break; - default: - return nullptr; - } - break; - - case EbtInt16: - switch (node->getBasicType()) { - case EbtUint8: newOp = EOpConvUint8ToInt16; break; - case EbtInt8: newOp = EOpConvInt8ToInt16; break; - case EbtUint16: newOp = EOpConvUint16ToInt16; break; - case EbtInt: newOp = EOpConvIntToInt16; break; - case EbtUint: newOp = EOpConvUintToInt16; break; - case EbtInt64: newOp = EOpConvInt64ToInt16; break; - case EbtUint64: newOp = EOpConvUint64ToInt16; break; - case EbtBool: newOp = EOpConvBoolToInt16; break; - case EbtFloat: newOp = EOpConvFloatToInt16; break; - case EbtDouble: newOp = EOpConvDoubleToInt16; break; - case EbtFloat16: newOp = EOpConvFloat16ToInt16; break; - default: - return nullptr; - } - break; - case EbtUint16: - switch (node->getBasicType()) { - case EbtInt8: newOp = EOpConvInt8ToUint16; break; - case EbtUint8: newOp = EOpConvUint8ToUint16; break; - case EbtInt16: newOp = EOpConvInt16ToUint16; break; - case EbtInt: newOp = EOpConvIntToUint16; break; - case EbtUint: newOp = EOpConvUintToUint16; break; - case EbtInt64: newOp = EOpConvInt64ToUint16; break; - case EbtUint64: newOp = EOpConvUint64ToUint16; break; - case EbtBool: newOp = EOpConvBoolToUint16; break; - case EbtFloat: newOp = EOpConvFloatToUint16; break; - case EbtDouble: newOp = EOpConvDoubleToUint16; break; - case EbtFloat16: newOp = EOpConvFloat16ToUint16; break; - default: - return nullptr; - } - break; -#endif - - case EbtInt: - switch (node->getBasicType()) { - case EbtUint: newOp = EOpConvUintToInt; break; - case EbtBool: newOp = EOpConvBoolToInt; break; - case EbtFloat: newOp = EOpConvFloatToInt; break; -#ifndef GLSLANG_WEB - case EbtInt8: newOp = EOpConvInt8ToInt; break; - case EbtUint8: newOp = EOpConvUint8ToInt; break; - case EbtInt16: newOp = EOpConvInt16ToInt; break; - case EbtUint16: newOp = EOpConvUint16ToInt; break; - case EbtDouble: newOp = EOpConvDoubleToInt; break; - case EbtFloat16: newOp = EOpConvFloat16ToInt; break; - case EbtInt64: newOp = EOpConvInt64ToInt; break; - case EbtUint64: newOp = EOpConvUint64ToInt; break; -#endif - default: - return nullptr; - } - break; - case EbtUint: - switch (node->getBasicType()) { - case EbtInt: newOp = EOpConvIntToUint; break; - case EbtBool: newOp = EOpConvBoolToUint; break; - case EbtFloat: newOp = EOpConvFloatToUint; break; -#ifndef GLSLANG_WEB - case EbtInt8: newOp = EOpConvInt8ToUint; break; - case EbtUint8: newOp = EOpConvUint8ToUint; break; - case EbtInt16: newOp = EOpConvInt16ToUint; break; - case EbtUint16: newOp = EOpConvUint16ToUint; break; - case EbtDouble: newOp = EOpConvDoubleToUint; break; - case EbtFloat16: newOp = EOpConvFloat16ToUint; break; - case EbtInt64: newOp = EOpConvInt64ToUint; break; - case EbtUint64: newOp = EOpConvUint64ToUint; break; -#endif - default: - return nullptr; - } - break; -#ifndef GLSLANG_WEB - case EbtInt64: - switch (node->getBasicType()) { - case EbtInt8: newOp = EOpConvInt8ToInt64; break; - case EbtUint8: newOp = EOpConvUint8ToInt64; break; - case EbtInt16: newOp = EOpConvInt16ToInt64; break; - case EbtUint16: newOp = EOpConvUint16ToInt64; break; - case EbtInt: newOp = EOpConvIntToInt64; break; - case EbtUint: newOp = EOpConvUintToInt64; break; - case EbtBool: newOp = EOpConvBoolToInt64; break; - case EbtFloat: newOp = EOpConvFloatToInt64; break; - case EbtDouble: newOp = EOpConvDoubleToInt64; break; - case EbtFloat16: newOp = EOpConvFloat16ToInt64; break; - case EbtUint64: newOp = EOpConvUint64ToInt64; break; - default: - return nullptr; - } - break; - case EbtUint64: - switch (node->getBasicType()) { - case EbtInt8: newOp = EOpConvInt8ToUint64; break; - case EbtUint8: newOp = EOpConvUint8ToUint64; break; - case EbtInt16: newOp = EOpConvInt16ToUint64; break; - case EbtUint16: newOp = EOpConvUint16ToUint64; break; - case EbtInt: newOp = EOpConvIntToUint64; break; - case EbtUint: newOp = EOpConvUintToUint64; break; - case EbtBool: newOp = EOpConvBoolToUint64; break; - case EbtFloat: newOp = EOpConvFloatToUint64; break; - case EbtDouble: newOp = EOpConvDoubleToUint64; break; - case EbtFloat16: newOp = EOpConvFloat16ToUint64; break; - case EbtInt64: newOp = EOpConvInt64ToUint64; break; - default: - return nullptr; - } - break; -#endif - default: + if (!buildConvertOp(convertTo, node->getBasicType(), newOp)) + { return nullptr; } diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index 77ed7c39..ad0b0fd5 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -693,9 +693,9 @@ public: bool getPixelCenterInteger() const { return pixelCenterInteger; } void addBlendEquation(TBlendEquationShift b) { blendEquations |= (1 << b); } unsigned int getBlendEquations() const { return blendEquations; } - bool setXfbBufferStride(int buffer, unsigned stride) + bool setXfbBufferStride(int buffer, unsigned stride, bool force = false) { - if (xfbBuffers[buffer].stride != TQualifier::layoutXfbStrideEnd) + if (xfbBuffers[buffer].stride != TQualifier::layoutXfbStrideEnd && force == false) return xfbBuffers[buffer].stride == stride; xfbBuffers[buffer].stride = stride; return true; @@ -776,6 +776,9 @@ public: void merge(TInfoSink&, TIntermediate&); void finalCheck(TInfoSink&, bool keepUncalled); + bool buildConvertOp(TBasicType dst, TBasicType src, TOperator& convertOp) const; + TIntermTyped* createConversion(TBasicType convertTo, TIntermTyped* node) const; + void addIoAccessed(const TString& name) { ioAccessed.insert(name); } bool inIoAccessed(const TString& name) const { return ioAccessed.find(name) != ioAccessed.end(); } @@ -866,7 +869,6 @@ protected: bool specConstantPropagates(const TIntermTyped&, const TIntermTyped&); void performTextureUpgradeAndSamplerRemovalTransformation(TIntermNode* root); bool isConversionAllowed(TOperator op, TIntermTyped* node) const; - TIntermTyped* createConversion(TBasicType convertTo, TIntermTyped* node) const; std::tuple getConversionDestinatonType(TBasicType type0, TBasicType type1, TOperator op) const; // JohnK: I think this function should go away. diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index a3103c65..886282e4 100755 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -486,6 +486,8 @@ public: environment.target.version = version; } + void getStrings(const char* const* &s, int& n) { s = strings; n = numStrings; }; + #ifdef ENABLE_HLSL void setEnvTargetHlslFunctionality1() { environment.target.hlslFunctionality1 = true; } bool getEnvTargetHlslFunctionality1() const { return environment.target.hlslFunctionality1; } @@ -772,7 +774,7 @@ public: TProgram(); virtual ~TProgram(); void addShader(TShader* shader) { stages[shader->stage].push_back(shader); } - + std::list& getShaders(EShLanguage stage) { return stages[stage]; }; // Link Validation interface bool link(EShMessages); const char* getInfoLog(); From 2ad4492ee47af088a8e3b24859ee2c5ec74d4b37 Mon Sep 17 00:00:00 2001 From: Roy Date: Mon, 2 Sep 2019 17:07:39 +0800 Subject: [PATCH 05/94] code refine Reduce the number of cycles. --- glslang/MachineIndependent/iomapper.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/glslang/MachineIndependent/iomapper.cpp b/glslang/MachineIndependent/iomapper.cpp index 26b830e4..3262c0a2 100644 --- a/glslang/MachineIndependent/iomapper.cpp +++ b/glslang/MachineIndependent/iomapper.cpp @@ -1035,7 +1035,9 @@ struct TDefaultHlslIoResolver : public TDefaultIoResolverBase { bool TIoMapper::addStage(EShLanguage stage, TIntermediate& intermediate, TInfoSink& infoSink, TIoMapResolver* resolver) { bool somethingToDo = ! intermediate.getResourceSetBinding().empty() || intermediate.getAutoMapBindings() || intermediate.getAutoMapLocations(); - for (int res = 0; res < EResCount; ++res) { + // Restrict the stricter condition to further check 'somethingToDo' only if 'somethingToDo' has not been set, reduce + // unnecessary or insignificant for-loop operation after 'somethingToDo' have been true. + for (int res = 0; (res < EResCount && !somethingToDo); ++res) { somethingToDo = somethingToDo || (intermediate.getShiftBinding(TResourceType(res)) != 0) || intermediate.hasShiftBindingForSet(TResourceType(res)); } @@ -1134,7 +1136,9 @@ bool TGlslIoMapper::addStage(EShLanguage stage, TIntermediate& intermediate, TIn bool somethingToDo = ! intermediate.getResourceSetBinding().empty() || intermediate.getAutoMapBindings() || intermediate.getAutoMapLocations(); - for (int res = 0; res < EResCount; ++res) { + // Restrict the stricter condition to further check 'somethingToDo' only if 'somethingToDo' has not been set, reduce + // unnecessary or insignificant for-loop operation after 'somethingToDo' have been true. + for (int res = 0; (res < EResCount && !somethingToDo); ++res) { somethingToDo = somethingToDo || (intermediate.getShiftBinding(TResourceType(res)) != 0) || intermediate.hasShiftBindingForSet(TResourceType(res)); } From 35dabea7868a2f82f59337dd647e486c23f42398 Mon Sep 17 00:00:00 2001 From: Roy Date: Wed, 4 Sep 2019 11:37:56 +0800 Subject: [PATCH 06/94] Fix code style issue and remove setXfbBufferStride new paramte 1. Keep the curly braces style. 2. revert a Improper change --- glslang/MachineIndependent/Intermediate.cpp | 3 +-- glslang/MachineIndependent/localintermediate.h | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index 62af2b6e..429e1e8d 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -839,8 +839,7 @@ TIntermTyped* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped return nullptr; } - if (!buildConvertOp(convertTo, node->getBasicType(), newOp)) - { + if (!buildConvertOp(convertTo, node->getBasicType(), newOp)) { return nullptr; } diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index ad0b0fd5..2e4997de 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -693,9 +693,9 @@ public: bool getPixelCenterInteger() const { return pixelCenterInteger; } void addBlendEquation(TBlendEquationShift b) { blendEquations |= (1 << b); } unsigned int getBlendEquations() const { return blendEquations; } - bool setXfbBufferStride(int buffer, unsigned stride, bool force = false) + bool setXfbBufferStride(int buffer, unsigned stride) { - if (xfbBuffers[buffer].stride != TQualifier::layoutXfbStrideEnd && force == false) + if (xfbBuffers[buffer].stride != TQualifier::layoutXfbStrideEnd) return xfbBuffers[buffer].stride == stride; xfbBuffers[buffer].stride = stride; return true; From d6df1fb13f19b6d10454954c7b4023398e35dcac Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Wed, 4 Sep 2019 14:15:57 -0600 Subject: [PATCH 07/94] Update spirv-tools and spriv-headers known good. --- known_good.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/known_good.json b/known_good.json index 03818797..9946335b 100644 --- a/known_good.json +++ b/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "aa9e8f538041db3055ea443080e0ccc315fa114f" + "commit" : "9b3cc3e05337358d0bd9fec1b7a51e3cbf55312b" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "45c2cc37276d69e5b257507d97fd90d2a5684ccc" + "commit" : "38cafab379e5d16137cb97a485b9385191039b92" } ] } From 664ad418f8455159fb066e9e27d159f191f976a9 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Thu, 5 Sep 2019 02:26:39 -0600 Subject: [PATCH 08/94] Fix #1879: Check for valid variable before checking for unsized arrays. The order of error checking was not quite being correct (maybe there is no correct ordering, when many checks must be done and they affect each other). So, check for block-name reuse twice. --- Test/150.frag | 1 + Test/baseResults/150.frag.out | 5 ++++- glslang/Include/Types.h | 2 ++ glslang/MachineIndependent/ParseHelper.cpp | 16 ++++++++++------ 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/Test/150.frag b/Test/150.frag index 16963afb..e87d6336 100644 --- a/Test/150.frag +++ b/Test/150.frag @@ -47,4 +47,5 @@ void barWxyz() int primitiveID() { return gl_PrimitiveID; + gl_PerFragment; // ERROR, block name can't get reused } diff --git a/Test/baseResults/150.frag.out b/Test/baseResults/150.frag.out index 1454b558..e51b13d1 100644 --- a/Test/baseResults/150.frag.out +++ b/Test/baseResults/150.frag.out @@ -3,7 +3,9 @@ ERROR: 0:4: 'redeclaration' : cannot redeclare with different qualification: gl_ ERROR: 0:5: 'redeclaration' : cannot redeclare with different qualification: gl_FragCoord ERROR: 0:6: 'layout qualifier' : can only apply origin_upper_left and pixel_center_origin to gl_FragCoord ERROR: 0:14: 'gl_FragCoord' : cannot redeclare after use -ERROR: 4 compilation errors. No code generated. +ERROR: 0:50: 'gl_PerFragment' : cannot be used (maybe an instance name is needed) +ERROR: 0:50: 'gl_PerFragment' : undeclared identifier +ERROR: 6 compilation errors. No code generated. Shader version: 150 @@ -106,6 +108,7 @@ ERROR: node is still EOpNull! 0:49 Sequence 0:49 Branch: Return with expression 0:49 'gl_PrimitiveID' ( flat in int PrimitiveID) +0:50 'gl_PerFragment' ( temp float) 0:? Linker Objects 0:? 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) 0:? 'foo' ( smooth in 4-component vector of float) diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index 3140006e..a419cb0f 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -1661,6 +1661,8 @@ public: virtual bool isImage() const { return basicType == EbtSampler && getSampler().isImage(); } virtual bool isSubpass() const { return basicType == EbtSampler && getSampler().isSubpass(); } virtual bool isTexture() const { return basicType == EbtSampler && getSampler().isTexture(); } + // Check the block-name convention of creating a block without populating it's members: + virtual bool isUnusableName() const { return isStruct() && structure == nullptr; } virtual bool isParameterized() const { return typeParameters != nullptr; } #ifdef GLSLANG_WEB bool isAtomic() const { return false; } diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 33a16641..08fa610c 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -319,10 +319,15 @@ TIntermTyped* TParseContext::handleVariable(const TSourceLoc& loc, TSymbol* symb // If this is a variable or a block, check it and all it contains, but if this // is a member of an anonymous block, check the whole block, as the whole block // will need to be copied up if it contains an unsized array. - if (symbol->getType().containsUnsizedArray() || - (symbol->getAsAnonMember() && - symbol->getAsAnonMember()->getAnonContainer().getType().containsUnsizedArray())) - makeEditable(symbol); + // + // This check is being done before the block-name check further down, so guard + // for that too. + if (!symbol->getType().isUnusableName()) { + if (symbol->getType().containsUnsizedArray() || + (symbol->getAsAnonMember() && + symbol->getAsAnonMember()->getAnonContainer().getType().containsUnsizedArray())) + makeEditable(symbol); + } } #endif @@ -347,8 +352,7 @@ TIntermTyped* TParseContext::handleVariable(const TSourceLoc& loc, TSymbol* symb // See if it was a variable. variable = symbol ? symbol->getAsVariable() : nullptr; if (variable) { - if ((variable->getType().getBasicType() == EbtBlock || - variable->getType().getBasicType() == EbtStruct) && variable->getType().getStruct() == nullptr) { + if (variable->getType().isUnusableName()) { error(loc, "cannot be used (maybe an instance name is needed)", string->c_str(), ""); variable = nullptr; } From 3b1b9e2957dafb5f0335f6b73127163122ae76a0 Mon Sep 17 00:00:00 2001 From: Rex Xu Date: Mon, 9 Sep 2019 22:53:02 +0800 Subject: [PATCH 09/94] Fix incorrect function prototypes of 64-bit findLSB/findMSB According to the 32-bit counterparts, their forms should be genI64Type findLSB(genI64Type value) genI64Type findLSB(genU64Type value) genI64Type findMSB(genI64Type value) genI64Type findMSB(genU64Type value) --- glslang/MachineIndependent/Initialize.cpp | 32 +++++++++++------------ 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 8ea58ccc..26b84841 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -996,25 +996,25 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "bvec3 notEqual(u64vec3, u64vec3);" "bvec4 notEqual(u64vec4, u64vec4);" - "int findLSB(int64_t);" - "ivec2 findLSB(i64vec2);" - "ivec3 findLSB(i64vec3);" - "ivec4 findLSB(i64vec4);" + "int64_t findLSB(int64_t);" + "i64vec2 findLSB(i64vec2);" + "i64vec3 findLSB(i64vec3);" + "i64vec4 findLSB(i64vec4);" - "int findLSB(uint64_t);" - "ivec2 findLSB(u64vec2);" - "ivec3 findLSB(u64vec3);" - "ivec4 findLSB(u64vec4);" + "int64_t findLSB(uint64_t);" + "i64vec2 findLSB(u64vec2);" + "i64vec3 findLSB(u64vec3);" + "i64vec4 findLSB(u64vec4);" - "int findMSB(int64_t);" - "ivec2 findMSB(i64vec2);" - "ivec3 findMSB(i64vec3);" - "ivec4 findMSB(i64vec4);" + "int64_t findMSB(int64_t);" + "i64vec2 findMSB(i64vec2);" + "i64vec3 findMSB(i64vec3);" + "i64vec4 findMSB(i64vec4);" - "int findMSB(uint64_t);" - "ivec2 findMSB(u64vec2);" - "ivec3 findMSB(u64vec3);" - "ivec4 findMSB(u64vec4);" + "int64_t findMSB(uint64_t);" + "i64vec2 findMSB(u64vec2);" + "i64vec3 findMSB(u64vec3);" + "i64vec4 findMSB(u64vec4);" "\n" ); From 24a5d23d5a2d0dff9d12d5593e23f0edf0515901 Mon Sep 17 00:00:00 2001 From: Dan Sinclair Date: Tue, 10 Sep 2019 15:39:22 -0400 Subject: [PATCH 10/94] Remove unused params --- glslang/MachineIndependent/Initialize.cpp | 27 +++++++++++------------ glslang/MachineIndependent/Initialize.h | 4 ++-- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 8ea58ccc..d785478d 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -152,12 +152,12 @@ EProfile EDesktopProfile = static_cast(ENoProfile | ECoreProfile | ECo { EDesktopProfile, 0, 130, 0, nullptr }, { EBadProfile } }; const Versioning* Es300Desktop130 = &Es300Desktop130Version[0]; - + const Versioning Es310Desktop430Version[] = { { EEsProfile, 0, 310, 0, nullptr }, { EDesktopProfile, 0, 430, 0, nullptr }, { EBadProfile } }; const Versioning* Es310Desktop430 = &Es310Desktop430Version[0]; - + const Versioning Es310Desktop450Version[] = { { EEsProfile, 0, 310, 0, nullptr }, { EDesktopProfile, 0, 450, 0, nullptr }, { EBadProfile } }; @@ -357,7 +357,7 @@ void AddTabledBuiltin(TString& decls, const BuiltInFunction& function) } // See if the tabled versioning information allows the current version. -bool ValidVersion(const BuiltInFunction& function, int version, EProfile profile, const SpvVersion& spvVersion) +bool ValidVersion(const BuiltInFunction& function, int version, EProfile profile) { #ifdef GLSLANG_WEB // all entries in table are valid @@ -395,11 +395,11 @@ void RelateTabledBuiltins(const BuiltInFunction* functions, TSymbolTable& symbol } // end anonymous namespace // Add declarations for all tables of built-in functions. -void TBuiltIns::addTabledBuiltins(int version, EProfile profile, const SpvVersion& spvVersion) +void TBuiltIns::addTabledBuiltins(int version, EProfile profile) { const auto forEachFunction = [&](TString& decls, const BuiltInFunction* function) { while (function->op != EOpNull) { - if (ValidVersion(*function, version, profile, spvVersion)) + if (ValidVersion(*function, version, profile)) AddTabledBuiltin(decls, *function); ++function; } @@ -417,8 +417,7 @@ void TBuiltIns::addTabledBuiltins(int version, EProfile profile, const SpvVersio } // Relate all tables of built-ins to the AST operators. -void TBuiltIns::relateTabledBuiltins(int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage stage, - TSymbolTable& symbolTable) +void TBuiltIns::relateTabledBuiltins(TSymbolTable& symbolTable) { RelateTabledBuiltins(BaseFunctions, symbolTable); RelateTabledBuiltins(DerivativeFunctions, symbolTable); @@ -485,7 +484,7 @@ TBuiltIns::~TBuiltIns() // void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvVersion) { - addTabledBuiltins(version, profile, spvVersion); + addTabledBuiltins(version, profile); //============================================================================ // @@ -3721,7 +3720,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } - if ((profile != EEsProfile && version >= 450) || + if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { commonBuiltins.append( "struct gl_TextureFootprint2DNV {" @@ -5047,7 +5046,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { stageBuiltins[EShLangMeshNV].append( "void writePackedPrimitiveIndices4x8NV(uint, uint);" - "\n"); + "\n"); } #endif @@ -5986,7 +5985,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV // GL_ARB_shader_ballot if (profile != EEsProfile && version >= 450) { - const char* ballotDecls = + const char* ballotDecls = "uniform uint gl_SubGroupSizeARB;" "in uint gl_SubGroupInvocationARB;" "in uint64_t gl_SubGroupEqMaskARB;" @@ -5995,7 +5994,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "in uint64_t gl_SubGroupLeMaskARB;" "in uint64_t gl_SubGroupLtMaskARB;" "\n"; - const char* fragmentBallotDecls = + const char* fragmentBallotDecls = "uniform uint gl_SubGroupSizeARB;" "flat in uint gl_SubGroupInvocationARB;" "flat in uint64_t gl_SubGroupEqMaskARB;" @@ -6287,7 +6286,7 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c continue; // Loop over the bTypes - for (int bType = 0; bType < sizeof(bTypes)/sizeof(TBasicType); ++bType) { + for (size_t bType = 0; bType < sizeof(bTypes)/sizeof(TBasicType); ++bType) { #ifndef GLSLANG_WEB if (bTypes[bType] == EbtFloat16 && (profile == EEsProfile || version < 450)) continue; @@ -8957,7 +8956,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion // operations. // - relateTabledBuiltins(version, profile, spvVersion, language, symbolTable); + relateTabledBuiltins(symbolTable); symbolTable.relateToOperator("matrixCompMult", EOpMul); // 120 and 150 are correct for both ES and desktop diff --git a/glslang/MachineIndependent/Initialize.h b/glslang/MachineIndependent/Initialize.h index ac8ec33e..77d37198 100644 --- a/glslang/MachineIndependent/Initialize.h +++ b/glslang/MachineIndependent/Initialize.h @@ -91,8 +91,8 @@ public: void identifyBuiltIns(int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TSymbolTable& symbolTable, const TBuiltInResource &resources); protected: - void addTabledBuiltins(int version, EProfile profile, const SpvVersion& spvVersion); - void relateTabledBuiltins(int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage, TSymbolTable&); + void addTabledBuiltins(int version, EProfile profile); + void relateTabledBuiltins(TSymbolTable&); void add2ndGenerationSamplingImaging(int version, EProfile profile, const SpvVersion& spvVersion); void addSubpassSampling(TSampler, const TString& typeName, int version, EProfile profile); void addQueryFunctions(TSampler, const TString& typeName, int version, EProfile profile); From 23e9f5ca743daaca57b478b133e809175e8a94a5 Mon Sep 17 00:00:00 2001 From: Dan Sinclair Date: Wed, 11 Sep 2019 08:58:48 -0400 Subject: [PATCH 11/94] Comment out params instead of removing --- glslang/MachineIndependent/Initialize.cpp | 12 ++++++------ glslang/MachineIndependent/Initialize.h | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index d785478d..8d1bee84 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -357,7 +357,7 @@ void AddTabledBuiltin(TString& decls, const BuiltInFunction& function) } // See if the tabled versioning information allows the current version. -bool ValidVersion(const BuiltInFunction& function, int version, EProfile profile) +bool ValidVersion(const BuiltInFunction& function, int version, EProfile profile, const SpvVersion& /* spVersion */) { #ifdef GLSLANG_WEB // all entries in table are valid @@ -395,11 +395,11 @@ void RelateTabledBuiltins(const BuiltInFunction* functions, TSymbolTable& symbol } // end anonymous namespace // Add declarations for all tables of built-in functions. -void TBuiltIns::addTabledBuiltins(int version, EProfile profile) +void TBuiltIns::addTabledBuiltins(int version, EProfile profile, const SpvVersion& spvVersion) { const auto forEachFunction = [&](TString& decls, const BuiltInFunction* function) { while (function->op != EOpNull) { - if (ValidVersion(*function, version, profile)) + if (ValidVersion(*function, version, profile, spvVersion)) AddTabledBuiltin(decls, *function); ++function; } @@ -417,7 +417,7 @@ void TBuiltIns::addTabledBuiltins(int version, EProfile profile) } // Relate all tables of built-ins to the AST operators. -void TBuiltIns::relateTabledBuiltins(TSymbolTable& symbolTable) +void TBuiltIns::relateTabledBuiltins(int /* version */, EProfile /* profile */, const SpvVersion& /* spvVersion */, EShLanguage /* stage */, TSymbolTable& symbolTable) { RelateTabledBuiltins(BaseFunctions, symbolTable); RelateTabledBuiltins(DerivativeFunctions, symbolTable); @@ -484,7 +484,7 @@ TBuiltIns::~TBuiltIns() // void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvVersion) { - addTabledBuiltins(version, profile); + addTabledBuiltins(version, profile, spvVersion); //============================================================================ // @@ -8956,7 +8956,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion // operations. // - relateTabledBuiltins(symbolTable); + relateTabledBuiltins(version, profile, spvVersion, language, symbolTable); symbolTable.relateToOperator("matrixCompMult", EOpMul); // 120 and 150 are correct for both ES and desktop diff --git a/glslang/MachineIndependent/Initialize.h b/glslang/MachineIndependent/Initialize.h index 77d37198..ac8ec33e 100644 --- a/glslang/MachineIndependent/Initialize.h +++ b/glslang/MachineIndependent/Initialize.h @@ -91,8 +91,8 @@ public: void identifyBuiltIns(int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TSymbolTable& symbolTable, const TBuiltInResource &resources); protected: - void addTabledBuiltins(int version, EProfile profile); - void relateTabledBuiltins(TSymbolTable&); + void addTabledBuiltins(int version, EProfile profile, const SpvVersion& spvVersion); + void relateTabledBuiltins(int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage, TSymbolTable&); void add2ndGenerationSamplingImaging(int version, EProfile profile, const SpvVersion& spvVersion); void addSubpassSampling(TSampler, const TString& typeName, int version, EProfile profile); void addQueryFunctions(TSampler, const TString& typeName, int version, EProfile profile); From aaff6cddd0e76881a40f14b9061179855acf6d73 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Fri, 13 Sep 2019 09:32:00 -0600 Subject: [PATCH 12/94] SPV 1.5: Switch to the 1.5 header, for SPIR-V 1.5. --- SPIRV/spirv.hpp | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp index 59fdecee..1e96f7b4 100644 --- a/SPIRV/spirv.hpp +++ b/SPIRV/spirv.hpp @@ -91,6 +91,7 @@ enum AddressingModel { AddressingModelLogical = 0, AddressingModelPhysical32 = 1, AddressingModelPhysical64 = 2, + AddressingModelPhysicalStorageBuffer64 = 5348, AddressingModelPhysicalStorageBuffer64EXT = 5348, AddressingModelMax = 0x7fffffff, }; @@ -99,6 +100,7 @@ enum MemoryModel { MemoryModelSimple = 0, MemoryModelGLSL450 = 1, MemoryModelOpenCL = 2, + MemoryModelVulkan = 3, MemoryModelVulkanKHR = 3, MemoryModelMax = 0x7fffffff, }; @@ -183,6 +185,7 @@ enum StorageClass { StorageClassHitAttributeNV = 5339, StorageClassIncomingRayPayloadNV = 5342, StorageClassShaderRecordBufferNV = 5343, + StorageClassPhysicalStorageBuffer = 5349, StorageClassPhysicalStorageBufferEXT = 5349, StorageClassMax = 0x7fffffff, }; @@ -311,9 +314,13 @@ enum ImageOperandsShift { ImageOperandsConstOffsetsShift = 5, ImageOperandsSampleShift = 6, ImageOperandsMinLodShift = 7, + ImageOperandsMakeTexelAvailableShift = 8, ImageOperandsMakeTexelAvailableKHRShift = 8, + ImageOperandsMakeTexelVisibleShift = 9, ImageOperandsMakeTexelVisibleKHRShift = 9, + ImageOperandsNonPrivateTexelShift = 10, ImageOperandsNonPrivateTexelKHRShift = 10, + ImageOperandsVolatileTexelShift = 11, ImageOperandsVolatileTexelKHRShift = 11, ImageOperandsSignExtendShift = 12, ImageOperandsZeroExtendShift = 13, @@ -330,9 +337,13 @@ enum ImageOperandsMask { ImageOperandsConstOffsetsMask = 0x00000020, ImageOperandsSampleMask = 0x00000040, ImageOperandsMinLodMask = 0x00000080, + ImageOperandsMakeTexelAvailableMask = 0x00000100, ImageOperandsMakeTexelAvailableKHRMask = 0x00000100, + ImageOperandsMakeTexelVisibleMask = 0x00000200, ImageOperandsMakeTexelVisibleKHRMask = 0x00000200, + ImageOperandsNonPrivateTexelMask = 0x00000400, ImageOperandsNonPrivateTexelKHRMask = 0x00000400, + ImageOperandsVolatileTexelMask = 0x00000800, ImageOperandsVolatileTexelKHRMask = 0x00000800, ImageOperandsSignExtendMask = 0x00001000, ImageOperandsZeroExtendMask = 0x00002000, @@ -448,8 +459,11 @@ enum Decoration { DecorationPerViewNV = 5272, DecorationPerTaskNV = 5273, DecorationPerVertexNV = 5285, + DecorationNonUniform = 5300, DecorationNonUniformEXT = 5300, + DecorationRestrictPointer = 5355, DecorationRestrictPointerEXT = 5355, + DecorationAliasedPointer = 5356, DecorationAliasedPointerEXT = 5356, DecorationCounterBuffer = 5634, DecorationHlslCounterBufferGOOGLE = 5634, @@ -630,8 +644,11 @@ enum MemorySemanticsShift { MemorySemanticsCrossWorkgroupMemoryShift = 9, MemorySemanticsAtomicCounterMemoryShift = 10, MemorySemanticsImageMemoryShift = 11, + MemorySemanticsOutputMemoryShift = 12, MemorySemanticsOutputMemoryKHRShift = 12, + MemorySemanticsMakeAvailableShift = 13, MemorySemanticsMakeAvailableKHRShift = 13, + MemorySemanticsMakeVisibleShift = 14, MemorySemanticsMakeVisibleKHRShift = 14, MemorySemanticsVolatileShift = 15, MemorySemanticsMax = 0x7fffffff, @@ -649,8 +666,11 @@ enum MemorySemanticsMask { MemorySemanticsCrossWorkgroupMemoryMask = 0x00000200, MemorySemanticsAtomicCounterMemoryMask = 0x00000400, MemorySemanticsImageMemoryMask = 0x00000800, + MemorySemanticsOutputMemoryMask = 0x00001000, MemorySemanticsOutputMemoryKHRMask = 0x00001000, + MemorySemanticsMakeAvailableMask = 0x00002000, MemorySemanticsMakeAvailableKHRMask = 0x00002000, + MemorySemanticsMakeVisibleMask = 0x00004000, MemorySemanticsMakeVisibleKHRMask = 0x00004000, MemorySemanticsVolatileMask = 0x00008000, }; @@ -659,8 +679,11 @@ enum MemoryAccessShift { MemoryAccessVolatileShift = 0, MemoryAccessAlignedShift = 1, MemoryAccessNontemporalShift = 2, + MemoryAccessMakePointerAvailableShift = 3, MemoryAccessMakePointerAvailableKHRShift = 3, + MemoryAccessMakePointerVisibleShift = 4, MemoryAccessMakePointerVisibleKHRShift = 4, + MemoryAccessNonPrivatePointerShift = 5, MemoryAccessNonPrivatePointerKHRShift = 5, MemoryAccessMax = 0x7fffffff, }; @@ -670,8 +693,11 @@ enum MemoryAccessMask { MemoryAccessVolatileMask = 0x00000001, MemoryAccessAlignedMask = 0x00000002, MemoryAccessNontemporalMask = 0x00000004, + MemoryAccessMakePointerAvailableMask = 0x00000008, MemoryAccessMakePointerAvailableKHRMask = 0x00000008, + MemoryAccessMakePointerVisibleMask = 0x00000010, MemoryAccessMakePointerVisibleKHRMask = 0x00000010, + MemoryAccessNonPrivatePointerMask = 0x00000020, MemoryAccessNonPrivatePointerKHRMask = 0x00000020, }; @@ -681,6 +707,7 @@ enum Scope { ScopeWorkgroup = 2, ScopeSubgroup = 3, ScopeInvocation = 4, + ScopeQueueFamily = 5, ScopeQueueFamilyKHR = 5, ScopeMax = 0x7fffffff, }; @@ -781,6 +808,8 @@ enum Capability { CapabilityGroupNonUniformShuffleRelative = 66, CapabilityGroupNonUniformClustered = 67, CapabilityGroupNonUniformQuad = 68, + CapabilityShaderLayer = 69, + CapabilityShaderViewportIndex = 70, CapabilitySubgroupBallotKHR = 4423, CapabilityDrawParameters = 4427, CapabilitySubgroupVoteKHR = 4431, @@ -825,21 +854,36 @@ enum Capability { CapabilityFragmentDensityEXT = 5291, CapabilityShadingRateNV = 5291, CapabilityGroupNonUniformPartitionedNV = 5297, + CapabilityShaderNonUniform = 5301, CapabilityShaderNonUniformEXT = 5301, + CapabilityRuntimeDescriptorArray = 5302, CapabilityRuntimeDescriptorArrayEXT = 5302, + CapabilityInputAttachmentArrayDynamicIndexing = 5303, CapabilityInputAttachmentArrayDynamicIndexingEXT = 5303, + CapabilityUniformTexelBufferArrayDynamicIndexing = 5304, CapabilityUniformTexelBufferArrayDynamicIndexingEXT = 5304, + CapabilityStorageTexelBufferArrayDynamicIndexing = 5305, CapabilityStorageTexelBufferArrayDynamicIndexingEXT = 5305, + CapabilityUniformBufferArrayNonUniformIndexing = 5306, CapabilityUniformBufferArrayNonUniformIndexingEXT = 5306, + CapabilitySampledImageArrayNonUniformIndexing = 5307, CapabilitySampledImageArrayNonUniformIndexingEXT = 5307, + CapabilityStorageBufferArrayNonUniformIndexing = 5308, CapabilityStorageBufferArrayNonUniformIndexingEXT = 5308, + CapabilityStorageImageArrayNonUniformIndexing = 5309, CapabilityStorageImageArrayNonUniformIndexingEXT = 5309, + CapabilityInputAttachmentArrayNonUniformIndexing = 5310, CapabilityInputAttachmentArrayNonUniformIndexingEXT = 5310, + CapabilityUniformTexelBufferArrayNonUniformIndexing = 5311, CapabilityUniformTexelBufferArrayNonUniformIndexingEXT = 5311, + CapabilityStorageTexelBufferArrayNonUniformIndexing = 5312, CapabilityStorageTexelBufferArrayNonUniformIndexingEXT = 5312, CapabilityRayTracingNV = 5340, + CapabilityVulkanMemoryModel = 5345, CapabilityVulkanMemoryModelKHR = 5345, + CapabilityVulkanMemoryModelDeviceScope = 5346, CapabilityVulkanMemoryModelDeviceScopeKHR = 5346, + CapabilityPhysicalStorageBufferAddresses = 5347, CapabilityPhysicalStorageBufferAddressesEXT = 5347, CapabilityComputeDerivativeGroupLinearNV = 5350, CapabilityCooperativeMatrixNV = 5357, From 352e668a6d6c38fab39ed823824a6c55c6bb049d Mon Sep 17 00:00:00 2001 From: Chow Date: Mon, 9 Sep 2019 13:24:24 +0800 Subject: [PATCH 13/94] Add flags for local size values ( compute shader ) Purpose : According to GLSL SPEC 4.6 ( 4.4.1.4 Compute Shader Inputs), for compute shader input qualifiers, we should declare such qualifiers with same values in the same shader (local_size_x, y and z). "If such a layout qualifier is declared more than once in the same shader, all those declarations must set the same set of local work-group sizes and set them to the same values; otherwise a compile-time error results." Why this fix: If we manually set "local_size_x = 1" and directly following a declaration like "local_size_x = 2", this would not be detected. That is because currently we treat all the '1' as default value and could not restrictly detect whether those are default values. Test case: ...... layout(local_size_x=1) in; layout(local_size_x=2) in; ...... So I add test cases for this fix: 1. set local_size_y = 1 => success 2. set local_size_y = 2 => error 3. set local_size_y = 1 => success --- Test/430.comp | 3 + Test/baseResults/430.comp.out | 155 +++++++++--------- glslang/Include/Types.h | 7 + glslang/MachineIndependent/ParseHelper.cpp | 5 +- .../MachineIndependent/localintermediate.h | 7 +- 5 files changed, 98 insertions(+), 79 deletions(-) diff --git a/Test/430.comp b/Test/430.comp index 0929432b..178b9942 100644 --- a/Test/430.comp +++ b/Test/430.comp @@ -48,6 +48,9 @@ shared vec4 s; layout(location = 2) shared vec4 sl; // ERROR shared float fs = 4.2; // ERROR +layout(local_size_y = 1) in; +layout(local_size_y = 2) in; // ERROR, changing +layout(local_size_y = 1) in; layout(local_size_x = 2, local_size_y = 3, local_size_z = 4) out; // ERROR int arrX[gl_WorkGroupSize.x]; diff --git a/Test/baseResults/430.comp.out b/Test/baseResults/430.comp.out index ef8d19e1..55c82388 100644 --- a/Test/baseResults/430.comp.out +++ b/Test/baseResults/430.comp.out @@ -8,14 +8,15 @@ ERROR: 0:45: 'out' : global storage output qualifier cannot be used in a compute ERROR: 0:48: 'shared' : cannot apply layout qualifiers to a shared variable ERROR: 0:48: 'location' : can only apply to uniform, buffer, in, or out storage qualifiers ERROR: 0:49: 'shared' : cannot initialize this type of qualifier -ERROR: 0:51: 'local_size' : can only apply to 'in' -ERROR: 0:51: 'local_size' : can only apply to 'in' -ERROR: 0:51: 'local_size' : can only apply to 'in' -ERROR: 0:65: 'assign' : l-value required "ro" (can't modify a readonly buffer) -ERROR: 0:77: '=' : cannot convert from ' temp double' to ' temp int' -ERROR: 0:81: 'input block' : not supported in this stage: compute -ERROR: 0:85: 'output block' : not supported in this stage: compute -ERROR: 16 compilation errors. No code generated. +ERROR: 0:52: 'local_size' : cannot change previously set size +ERROR: 0:54: 'local_size' : can only apply to 'in' +ERROR: 0:54: 'local_size' : can only apply to 'in' +ERROR: 0:54: 'local_size' : can only apply to 'in' +ERROR: 0:68: 'assign' : l-value required "ro" (can't modify a readonly buffer) +ERROR: 0:80: '=' : cannot convert from ' temp double' to ' temp int' +ERROR: 0:84: 'input block' : not supported in this stage: compute +ERROR: 0:88: 'output block' : not supported in this stage: compute +ERROR: 17 compilation errors. No code generated. Shader version: 430 @@ -51,77 +52,77 @@ ERROR: node is still EOpNull! 0:39 10 (const int) 0:39 true case 0:40 Barrier ( global void) -0:63 Function Definition: foo( ( global void) -0:63 Function Parameters: -0:65 Sequence -0:65 move second child to first child ( temp float) -0:65 direct index (layout( column_major shared) readonly temp float) -0:65 values: direct index for structure (layout( column_major shared) readonly buffer unsized 3-element array of float) -0:65 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer int value, layout( column_major shared) readonly buffer unsized 3-element array of float values}) -0:65 Constant: -0:65 1 (const int) -0:65 Constant: -0:65 2 (const int) -0:65 Constant: -0:65 4.700000 -0:66 array length ( temp int) -0:66 values: direct index for structure (layout( column_major shared) readonly buffer unsized 3-element array of float) -0:66 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer int value, layout( column_major shared) readonly buffer unsized 3-element array of float values}) -0:66 Constant: -0:66 1 (const int) -0:67 Barrier ( global void) -0:72 Function Definition: fooaoeu( ( global void) -0:72 Function Parameters: -0:73 Sequence -0:73 Sequence -0:73 move second child to first child ( temp 2-component vector of int) -0:73 'storePos' ( temp 2-component vector of int) -0:73 Convert uint to int ( temp 2-component vector of int) -0:73 vector swizzle ( temp 2-component vector of uint) -0:73 'gl_GlobalInvocationID' ( in 3-component vector of uint GlobalInvocationID) -0:73 Sequence -0:73 Constant: -0:73 0 (const int) -0:73 Constant: -0:73 1 (const int) -0:74 Sequence -0:74 move second child to first child ( temp double) -0:74 'localCoef' ( temp double) -0:74 Convert float to double ( temp double) -0:74 length ( global float) -0:74 divide ( temp 2-component vector of float) -0:74 Convert int to float ( temp 2-component vector of float) -0:74 subtract ( temp 2-component vector of int) -0:74 Convert uint to int ( temp 2-component vector of int) -0:74 vector swizzle ( temp 2-component vector of uint) -0:74 'gl_LocalInvocationID' ( in 3-component vector of uint LocalInvocationID) -0:74 Sequence -0:74 Constant: -0:74 0 (const int) -0:74 Constant: -0:74 1 (const int) -0:74 Constant: -0:74 8 (const int) -0:74 Constant: -0:74 8.000000 -0:75 Sequence -0:75 move second child to first child ( temp 4-component vector of double) -0:75 'aa' ( temp 4-component vector of double) -0:75 Constant: -0:75 0.400000 -0:75 0.200000 -0:75 0.300000 -0:75 0.400000 +0:66 Function Definition: foo( ( global void) +0:66 Function Parameters: +0:68 Sequence +0:68 move second child to first child ( temp float) +0:68 direct index (layout( column_major shared) readonly temp float) +0:68 values: direct index for structure (layout( column_major shared) readonly buffer unsized 3-element array of float) +0:68 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer int value, layout( column_major shared) readonly buffer unsized 3-element array of float values}) +0:68 Constant: +0:68 1 (const int) +0:68 Constant: +0:68 2 (const int) +0:68 Constant: +0:68 4.700000 +0:69 array length ( temp int) +0:69 values: direct index for structure (layout( column_major shared) readonly buffer unsized 3-element array of float) +0:69 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer int value, layout( column_major shared) readonly buffer unsized 3-element array of float values}) +0:69 Constant: +0:69 1 (const int) +0:70 Barrier ( global void) +0:75 Function Definition: fooaoeu( ( global void) +0:75 Function Parameters: +0:76 Sequence 0:76 Sequence -0:76 move second child to first child ( temp double) -0:76 'globalCoef' ( temp double) -0:76 Constant: -0:76 1.000000 +0:76 move second child to first child ( temp 2-component vector of int) +0:76 'storePos' ( temp 2-component vector of int) +0:76 Convert uint to int ( temp 2-component vector of int) +0:76 vector swizzle ( temp 2-component vector of uint) +0:76 'gl_GlobalInvocationID' ( in 3-component vector of uint GlobalInvocationID) +0:76 Sequence +0:76 Constant: +0:76 0 (const int) +0:76 Constant: +0:76 1 (const int) +0:77 Sequence +0:77 move second child to first child ( temp double) +0:77 'localCoef' ( temp double) +0:77 Convert float to double ( temp double) +0:77 length ( global float) +0:77 divide ( temp 2-component vector of float) +0:77 Convert int to float ( temp 2-component vector of float) +0:77 subtract ( temp 2-component vector of int) +0:77 Convert uint to int ( temp 2-component vector of int) +0:77 vector swizzle ( temp 2-component vector of uint) +0:77 'gl_LocalInvocationID' ( in 3-component vector of uint LocalInvocationID) +0:77 Sequence +0:77 Constant: +0:77 0 (const int) +0:77 Constant: +0:77 1 (const int) +0:77 Constant: +0:77 8 (const int) +0:77 Constant: +0:77 8.000000 0:78 Sequence -0:78 move second child to first child ( temp double) -0:78 'di' ( temp double) -0:78 Convert int to double ( temp double) -0:78 'i' ( temp int) +0:78 move second child to first child ( temp 4-component vector of double) +0:78 'aa' ( temp 4-component vector of double) +0:78 Constant: +0:78 0.400000 +0:78 0.200000 +0:78 0.300000 +0:78 0.400000 +0:79 Sequence +0:79 move second child to first child ( temp double) +0:79 'globalCoef' ( temp double) +0:79 Constant: +0:79 1.000000 +0:81 Sequence +0:81 move second child to first child ( temp double) +0:81 'di' ( temp double) +0:81 Convert int to double ( temp double) +0:81 'i' ( temp int) 0:? Linker Objects 0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) 0:? 2 (const uint) diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index a419cb0f..9961c943 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -1195,6 +1195,7 @@ struct TShaderQualifiers { TVertexOrder order; bool pointMode; int localSize[3]; // compute shader + bool localSizeNotDefault[3]; // compute shader int localSizeSpecId[3]; // compute shader specialization id for gl_WorkGroupSize #ifndef GLSLANG_WEB bool earlyFragmentTests; // fragment input @@ -1225,6 +1226,9 @@ struct TShaderQualifiers { localSize[0] = 1; localSize[1] = 1; localSize[2] = 1; + localSizeNotDefault[0] = false; + localSizeNotDefault[1] = false; + localSizeNotDefault[2] = false; localSizeSpecId[0] = TQualifier::layoutNotSet; localSizeSpecId[1] = TQualifier::layoutNotSet; localSizeSpecId[2] = TQualifier::layoutNotSet; @@ -1272,6 +1276,9 @@ struct TShaderQualifiers { if (src.localSize[i] > 1) localSize[i] = src.localSize[i]; } + for (int i = 0; i < 3; ++i) { + localSizeNotDefault[i] = src.localSizeNotDefault[i] || localSizeNotDefault[i]; + } for (int i = 0; i < 3; ++i) { if (src.localSizeSpecId[i] != TQualifier::layoutNotSet) localSizeSpecId[i] = src.localSizeSpecId[i]; diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 08fa610c..c6943918 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -5360,14 +5360,17 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi } if (id == "local_size_x") { publicType.shaderQualifiers.localSize[0] = value; + publicType.shaderQualifiers.localSizeNotDefault[0] = true; return; } if (id == "local_size_y") { publicType.shaderQualifiers.localSize[1] = value; + publicType.shaderQualifiers.localSizeNotDefault[1] = true; return; } if (id == "local_size_z") { publicType.shaderQualifiers.localSize[2] = value; + publicType.shaderQualifiers.localSizeNotDefault[2] = true; return; } if (spvVersion.spv != 0) { @@ -7945,7 +7948,7 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con error(loc, "can only apply to 'in'", "point_mode", ""); } for (int i = 0; i < 3; ++i) { - if (publicType.shaderQualifiers.localSize[i] > 1) { + if (publicType.shaderQualifiers.localSizeNotDefault[i]) { if (publicType.qualifier.storage == EvqVaryingIn) { if (! intermediate.setLocalSize(i, publicType.shaderQualifiers.localSize[i])) error(loc, "cannot change previously set size", "local_size", ""); diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index 77ed7c39..1bd06339 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -271,6 +271,9 @@ public: localSize[0] = 1; localSize[1] = 1; localSize[2] = 1; + localSizeNotDefault[0] = false; + localSizeNotDefault[1] = false; + localSizeNotDefault[2] = false; localSizeSpecId[0] = TQualifier::layoutNotSet; localSizeSpecId[1] = TQualifier::layoutNotSet; localSizeSpecId[2] = TQualifier::layoutNotSet; @@ -648,8 +651,9 @@ public: bool setLocalSize(int dim, int size) { - if (localSize[dim] > 1) + if (localSizeNotDefault[dim]) return size == localSize[dim]; + localSizeNotDefault[dim] = true; localSize[dim] = size; return true; } @@ -921,6 +925,7 @@ protected: TInterlockOrdering interlockOrdering; bool pointMode; int localSize[3]; + bool localSizeNotDefault[3]; int localSizeSpecId[3]; bool earlyFragmentTests; bool postDepthCoverage; From 8317e6c6833c22f5d7890fcec185beebc4b9c5ab Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Sun, 18 Aug 2019 23:58:08 -0600 Subject: [PATCH 14/94] SPV: Support SPIR-V 1.5; five extensions no longer need OpExtension. The generalization to addIncorporatedExtension() also fixed a 1.3 corner case with SPV_KHR_16bit_storage. --- SPIRV/GlslangToSpv.cpp | 49 +++++++++---------- SPIRV/SpvBuilder.h | 6 +++ SPIRV/SpvPostProcess.cpp | 4 +- StandAlone/StandAlone.cpp | 8 ++- .../MachineIndependent/localintermediate.h | 6 +++ glslang/Public/ShaderLang.h | 1 + 6 files changed, 43 insertions(+), 31 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 2c9fcd81..4edd8f6e 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -217,11 +217,6 @@ protected: bool isTrivial(const glslang::TIntermTyped* node); spv::Id createShortCircuit(glslang::TOperator, glslang::TIntermTyped& left, glslang::TIntermTyped& right); spv::Id getExtBuiltins(const char* name); - void addPre13Extension(const char* ext) - { - if (builder.getSpvVersion() < glslang::EShTargetSpv_1_3) - builder.addExtension(ext); - } std::pair getForcedType(spv::BuiltIn, const glslang::TType&); spv::Id translateForcedType(spv::Id object); spv::Id createCompositeConstruct(spv::Id typeId, std::vector constituents); @@ -517,7 +512,7 @@ spv::Decoration TGlslangToSpvTraverser::TranslateNonUniformDecoration(const glsl { #ifndef GLSLANG_WEB if (qualifier.isNonUniform()) { - builder.addExtension("SPV_EXT_descriptor_indexing"); + builder.addIncorporatedExtension("SPV_EXT_descriptor_indexing", spv::Spv_1_5); builder.addCapability(spv::CapabilityShaderNonUniformEXT); return spv::DecorationNonUniformEXT; } else @@ -701,7 +696,7 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI glslangIntermediate->getStage() == EShLangTessControl || glslangIntermediate->getStage() == EShLangTessEvaluation) { - builder.addExtension(spv::E_SPV_EXT_shader_viewport_index_layer); + builder.addIncorporatedExtension(spv::E_SPV_EXT_shader_viewport_index_layer, spv::Spv_1_5); builder.addCapability(spv::CapabilityShaderViewportIndexLayerEXT); } return spv::BuiltInViewportIndex; @@ -726,23 +721,23 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI glslangIntermediate->getStage() == EShLangTessControl || glslangIntermediate->getStage() == EShLangTessEvaluation) { - builder.addExtension(spv::E_SPV_EXT_shader_viewport_index_layer); + builder.addIncorporatedExtension(spv::E_SPV_EXT_shader_viewport_index_layer, spv::Spv_1_5); builder.addCapability(spv::CapabilityShaderViewportIndexLayerEXT); } return spv::BuiltInLayer; case glslang::EbvBaseVertex: - addPre13Extension(spv::E_SPV_KHR_shader_draw_parameters); + builder.addIncorporatedExtension(spv::E_SPV_KHR_shader_draw_parameters, spv::Spv_1_3); builder.addCapability(spv::CapabilityDrawParameters); return spv::BuiltInBaseVertex; case glslang::EbvBaseInstance: - addPre13Extension(spv::E_SPV_KHR_shader_draw_parameters); + builder.addIncorporatedExtension(spv::E_SPV_KHR_shader_draw_parameters, spv::Spv_1_3); builder.addCapability(spv::CapabilityDrawParameters); return spv::BuiltInBaseInstance; case glslang::EbvDrawId: - addPre13Extension(spv::E_SPV_KHR_shader_draw_parameters); + builder.addIncorporatedExtension(spv::E_SPV_KHR_shader_draw_parameters, spv::Spv_1_3); builder.addCapability(spv::CapabilityDrawParameters); return spv::BuiltInDrawIndex; @@ -874,12 +869,12 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI return spv::BuiltInBaryCoordPullModelAMD; case glslang::EbvDeviceIndex: - addPre13Extension(spv::E_SPV_KHR_device_group); + builder.addIncorporatedExtension(spv::E_SPV_KHR_device_group, spv::Spv_1_3); builder.addCapability(spv::CapabilityDeviceGroup); return spv::BuiltInDeviceIndex; case glslang::EbvViewIndex: - addPre13Extension(spv::E_SPV_KHR_multiview); + builder.addIncorporatedExtension(spv::E_SPV_KHR_multiview, spv::Spv_1_3); builder.addCapability(spv::CapabilityMultiView); return spv::BuiltInViewIndex; @@ -1192,7 +1187,7 @@ spv::StorageClass TGlslangToSpvTraverser::TranslateStorageClass(const glslang::T } if (glslangIntermediate->usingStorageBuffer() && type.getQualifier().storage == glslang::EvqBuffer) { - addPre13Extension(spv::E_SPV_KHR_storage_buffer_storage_class); + builder.addIncorporatedExtension(spv::E_SPV_KHR_storage_buffer_storage_class, spv::Spv_1_3); return spv::StorageClassStorageBuffer; } @@ -1253,13 +1248,13 @@ void TGlslangToSpvTraverser::addIndirectionIndexCapabilities(const glslang::TTyp // assume a dynamically uniform index if (baseType.getBasicType() == glslang::EbtSampler) { if (baseType.getQualifier().hasAttachment()) { - builder.addExtension("SPV_EXT_descriptor_indexing"); + builder.addIncorporatedExtension("SPV_EXT_descriptor_indexing", spv::Spv_1_5); builder.addCapability(spv::CapabilityInputAttachmentArrayDynamicIndexingEXT); } else if (baseType.isImage() && baseType.getSampler().isBuffer()) { - builder.addExtension("SPV_EXT_descriptor_indexing"); + builder.addIncorporatedExtension("SPV_EXT_descriptor_indexing", spv::Spv_1_5); builder.addCapability(spv::CapabilityStorageTexelBufferArrayDynamicIndexingEXT); } else if (baseType.isTexture() && baseType.getSampler().isBuffer()) { - builder.addExtension("SPV_EXT_descriptor_indexing"); + builder.addIncorporatedExtension("SPV_EXT_descriptor_indexing", spv::Spv_1_5); builder.addCapability(spv::CapabilityUniformTexelBufferArrayDynamicIndexingEXT); } } @@ -1404,13 +1399,13 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, const gl if (glslangIntermediate->usingPhysicalStorageBuffer()) { addressingModel = spv::AddressingModelPhysicalStorageBuffer64EXT; - builder.addExtension(spv::E_SPV_EXT_physical_storage_buffer); + builder.addIncorporatedExtension(spv::E_SPV_EXT_physical_storage_buffer, spv::Spv_1_5); builder.addCapability(spv::CapabilityPhysicalStorageBufferAddressesEXT); }; if (glslangIntermediate->usingVulkanMemoryModel()) { memoryModel = spv::MemoryModelVulkanKHR; builder.addCapability(spv::CapabilityVulkanMemoryModelKHR); - builder.addExtension(spv::E_SPV_KHR_vulkan_memory_model); + builder.addIncorporatedExtension(spv::E_SPV_KHR_vulkan_memory_model, spv::Spv_1_5); } builder.setMemoryModel(addressingModel, memoryModel); @@ -3242,11 +3237,11 @@ spv::Id TGlslangToSpvTraverser::createSpvVariable(const glslang::TIntermSymbol* switch (storageClass) { case spv::StorageClassInput: case spv::StorageClassOutput: - addPre13Extension(spv::E_SPV_KHR_16bit_storage); + builder.addIncorporatedExtension(spv::E_SPV_KHR_16bit_storage, spv::Spv_1_3); builder.addCapability(spv::CapabilityStorageInputOutput16); break; case spv::StorageClassUniform: - addPre13Extension(spv::E_SPV_KHR_16bit_storage); + builder.addIncorporatedExtension(spv::E_SPV_KHR_16bit_storage, spv::Spv_1_3); if (node->getType().getQualifier().storage == glslang::EvqBuffer) builder.addCapability(spv::CapabilityStorageUniformBufferBlock16); else @@ -3254,12 +3249,12 @@ spv::Id TGlslangToSpvTraverser::createSpvVariable(const glslang::TIntermSymbol* break; #ifndef GLSLANG_WEB case spv::StorageClassPushConstant: - addPre13Extension(spv::E_SPV_KHR_16bit_storage); + builder.addIncorporatedExtension(spv::E_SPV_KHR_16bit_storage, spv::Spv_1_3); builder.addCapability(spv::CapabilityStoragePushConstant16); break; case spv::StorageClassStorageBuffer: case spv::StorageClassPhysicalStorageBufferEXT: - addPre13Extension(spv::E_SPV_KHR_16bit_storage); + builder.addIncorporatedExtension(spv::E_SPV_KHR_16bit_storage, spv::Spv_1_3); builder.addCapability(spv::CapabilityStorageUniformBufferBlock16); break; #endif @@ -3274,13 +3269,13 @@ spv::Id TGlslangToSpvTraverser::createSpvVariable(const glslang::TIntermSymbol* if (node->getType().contains8BitInt()) { if (storageClass == spv::StorageClassPushConstant) { - builder.addExtension(spv::E_SPV_KHR_8bit_storage); + builder.addIncorporatedExtension(spv::E_SPV_KHR_8bit_storage, spv::Spv_1_5); builder.addCapability(spv::CapabilityStoragePushConstant8); } else if (storageClass == spv::StorageClassUniform) { - builder.addExtension(spv::E_SPV_KHR_8bit_storage); + builder.addIncorporatedExtension(spv::E_SPV_KHR_8bit_storage, spv::Spv_1_5); builder.addCapability(spv::CapabilityUniformAndStorageBuffer8BitAccess); } else if (storageClass == spv::StorageClassStorageBuffer) { - builder.addExtension(spv::E_SPV_KHR_8bit_storage); + builder.addIncorporatedExtension(spv::E_SPV_KHR_8bit_storage, spv::Spv_1_5); builder.addCapability(spv::CapabilityStorageBuffer8BitAccess); } else { builder.addCapability(spv::CapabilityInt8); @@ -3537,7 +3532,7 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty else { #ifndef GLSLANG_WEB if (!lastBufferBlockMember) { - builder.addExtension("SPV_EXT_descriptor_indexing"); + builder.addIncorporatedExtension("SPV_EXT_descriptor_indexing", spv::Spv_1_5); builder.addCapability(spv::CapabilityRuntimeDescriptorArrayEXT); } spvType = builder.makeRuntimeArray(spvType); diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index a99a0c30..bef7d3db 100644 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -67,6 +67,7 @@ typedef enum { Spv_1_2 = (1 << 16) | (2 << 8), Spv_1_3 = (1 << 16) | (3 << 8), Spv_1_4 = (1 << 16) | (4 << 8), + Spv_1_5 = (1 << 16) | (5 << 8), } SpvVersion; class Builder { @@ -105,6 +106,11 @@ public: void addModuleProcessed(const std::string& p) { moduleProcesses.push_back(p.c_str()); } void setEmitOpLines() { emitOpLines = true; } void addExtension(const char* ext) { extensions.insert(ext); } + void addIncorporatedExtension(const char* ext, SpvVersion incorporatedVersion) + { + if (getSpvVersion() < static_cast(incorporatedVersion)) + addExtension(ext); + } void addInclude(const std::string& name, const std::string& text) { spv::Id incId = getStringId(name); diff --git a/SPIRV/SpvPostProcess.cpp b/SPIRV/SpvPostProcess.cpp index 18765a31..832ee3ef 100644 --- a/SPIRV/SpvPostProcess.cpp +++ b/SPIRV/SpvPostProcess.cpp @@ -363,12 +363,12 @@ void Builder::postProcess() Instruction* type = groupedTypes[OpTypePointer][t]; if (type->getImmediateOperand(0) == (unsigned)StorageClassPhysicalStorageBufferEXT) { if (containsType(type->getIdOperand(1), OpTypeInt, 8)) { - addExtension(spv::E_SPV_KHR_8bit_storage); + addIncorporatedExtension(spv::E_SPV_KHR_8bit_storage, spv::Spv_1_5); addCapability(spv::CapabilityStorageBuffer8BitAccess); } if (containsType(type->getIdOperand(1), OpTypeInt, 16) || containsType(type->getIdOperand(1), OpTypeFloat, 16)) { - addExtension(spv::E_SPV_KHR_16bit_storage); + addIncorporatedExtension(spv::E_SPV_KHR_16bit_storage, spv::Spv_1_3); addCapability(spv::CapabilityStorageBuffer16BitAccess); } } diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index 9fa311bc..4be3a4f4 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -615,8 +615,12 @@ void ProcessArguments(std::vector>& workItem } else if (strcmp(argv[1], "spirv1.4") == 0) { TargetLanguage = glslang::EShTargetSpv; TargetVersion = glslang::EShTargetSpv_1_4; + } else if (strcmp(argv[1], "spirv1.5") == 0) { + TargetLanguage = glslang::EShTargetSpv; + TargetVersion = glslang::EShTargetSpv_1_5; } else - Error("--target-env expected one of: vulkan1.0, vulkan1.1, opengl, spirv1.0, spirv1.1, spirv1.2, or spirv1.3"); + Error("--target-env expected one of: vulkan1.0, vulkan1.1, opengl,\n" + "spirv1.0, spirv1.1, spirv1.2, spirv1.3, spirv1.4, or spirv1.5"); } bumpArg(); } else if (lowerword == "variable-name" || // synonyms @@ -1618,7 +1622,7 @@ void usage() " --stdin read from stdin instead of from a file;\n" " requires providing the shader stage using -S\n" " --target-env {vulkan1.0 | vulkan1.1 | opengl | \n" - " spirv1.0 | spirv1.1 | spirv1.2 | spirv1.3}\n" + " spirv1.0 | spirv1.1 | spirv1.2 | spirv1.3 | spirv1.4 | spirv1.5}\n" " set execution environment that emitted code\n" " will execute in (versus source language\n" " semantics selected by --client) defaults:\n" diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index 77ed7c39..b2f6918d 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -308,6 +308,12 @@ public: case EShTargetSpv_1_3: processes.addProcess("target-env spirv1.3"); break; + case EShTargetSpv_1_4: + processes.addProcess("target-env spirv1.4"); + break; + case EShTargetSpv_1_5: + processes.addProcess("target-env spirv1.5"); + break; default: processes.addProcess("target-env spirvUnknown"); break; diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index a3103c65..a071d78d 100755 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -156,6 +156,7 @@ typedef enum { EShTargetSpv_1_2 = (1 << 16) | (2 << 8), // SPIR-V 1.2 EShTargetSpv_1_3 = (1 << 16) | (3 << 8), // SPIR-V 1.3 EShTargetSpv_1_4 = (1 << 16) | (4 << 8), // SPIR-V 1.4 + EShTargetSpv_1_5 = (1 << 16) | (5 << 8), // SPIR-V 1.5 } EShTargetLanguageVersion; struct TInputLanguage { From f766fabaa0547eac84b2bf4e2e53e5fa61598147 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Wed, 28 Aug 2019 00:01:54 -0600 Subject: [PATCH 15/94] GLSL: Only require constant for subgroupBroadcast when SPV < 1.5. --- glslang/MachineIndependent/ParseHelper.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 08fa610c..e8177d3f 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -2155,9 +2155,11 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan break; case EOpSubgroupBroadcast: - // must be an integral constant expression. - if ((*argp)[1]->getAsConstantUnion() == nullptr) - error(loc, "argument must be compile-time constant", "id", ""); + if (spvVersion.spv < EShTargetSpv_1_5) { + // must be an integral constant expression. + if ((*argp)[1]->getAsConstantUnion() == nullptr) + error(loc, "argument must be compile-time constant", "id", ""); + } break; case EOpBarrier: From c5b669e04c37b45044f3522d1b93bdbe18916b53 Mon Sep 17 00:00:00 2001 From: Jeff Bolz Date: Sun, 8 Sep 2019 08:49:18 -0500 Subject: [PATCH 16/94] Add GL_EXT_shader_subgroup_extended_types support --- SPIRV/GlslangToSpv.cpp | 5 +- Test/baseResults/spv.specConstant.vert.out | 6 +- ...v.subgroupExtendedTypesArithmetic.comp.out | 4280 +++++++++++++++++ ...ubgroupExtendedTypesArithmeticNeg.comp.out | 557 +++ .../spv.subgroupExtendedTypesBallot.comp.out | 560 +++ ...pv.subgroupExtendedTypesBallotNeg.comp.out | 61 + .../spv.subgroupExtendedTypesBasic.comp.out | 9 + ...pv.subgroupExtendedTypesClustered.comp.out | 1520 ++++++ ...subgroupExtendedTypesClusteredNeg.comp.out | 189 + ....subgroupExtendedTypesPartitioned.comp.out | 1835 +++++++ ...bgroupExtendedTypesPartitionedNeg.comp.out | 217 + .../spv.subgroupExtendedTypesQuad.comp.out | 981 ++++ .../spv.subgroupExtendedTypesQuadNeg.comp.out | 117 + .../spv.subgroupExtendedTypesShuffle.comp.out | 616 +++ ...v.subgroupExtendedTypesShuffleNeg.comp.out | 61 + ...groupExtendedTypesShuffleRelative.comp.out | 616 +++ ...upExtendedTypesShuffleRelativeNeg.comp.out | 61 + .../spv.subgroupExtendedTypesVote.comp.out | 377 ++ .../spv.subgroupExtendedTypesVoteNeg.comp.out | 33 + Test/spv.subgroupExtendedTypesArithmetic.comp | 715 +++ ...pv.subgroupExtendedTypesArithmeticNeg.comp | 715 +++ Test/spv.subgroupExtendedTypesBallot.comp | 88 + Test/spv.subgroupExtendedTypesBallotNeg.comp | 88 + Test/spv.subgroupExtendedTypesClustered.comp | 255 + ...spv.subgroupExtendedTypesClusteredNeg.comp | 255 + .../spv.subgroupExtendedTypesPartitioned.comp | 291 ++ ...v.subgroupExtendedTypesPartitionedNeg.comp | 291 ++ Test/spv.subgroupExtendedTypesQuad.comp | 165 + Test/spv.subgroupExtendedTypesQuadNeg.comp | 165 + Test/spv.subgroupExtendedTypesShuffle.comp | 95 + Test/spv.subgroupExtendedTypesShuffleNeg.comp | 95 + ....subgroupExtendedTypesShuffleRelative.comp | 95 + ...bgroupExtendedTypesShuffleRelativeNeg.comp | 95 + Test/spv.subgroupExtendedTypesVote.comp | 66 + Test/spv.subgroupExtendedTypesVoteNeg.comp | 66 + glslang/MachineIndependent/Initialize.cpp | 1170 +---- glslang/MachineIndependent/ParseHelper.cpp | 24 + glslang/MachineIndependent/Versions.cpp | 20 + glslang/MachineIndependent/Versions.h | 7 +- gtests/Spv.FromFile.cpp | 16 + 40 files changed, 15825 insertions(+), 1053 deletions(-) create mode 100644 Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out create mode 100644 Test/baseResults/spv.subgroupExtendedTypesArithmeticNeg.comp.out create mode 100644 Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out create mode 100644 Test/baseResults/spv.subgroupExtendedTypesBallotNeg.comp.out create mode 100644 Test/baseResults/spv.subgroupExtendedTypesBasic.comp.out create mode 100644 Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out create mode 100644 Test/baseResults/spv.subgroupExtendedTypesClusteredNeg.comp.out create mode 100644 Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out create mode 100644 Test/baseResults/spv.subgroupExtendedTypesPartitionedNeg.comp.out create mode 100644 Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out create mode 100644 Test/baseResults/spv.subgroupExtendedTypesQuadNeg.comp.out create mode 100644 Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out create mode 100644 Test/baseResults/spv.subgroupExtendedTypesShuffleNeg.comp.out create mode 100644 Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out create mode 100644 Test/baseResults/spv.subgroupExtendedTypesShuffleRelativeNeg.comp.out create mode 100644 Test/baseResults/spv.subgroupExtendedTypesVote.comp.out create mode 100644 Test/baseResults/spv.subgroupExtendedTypesVoteNeg.comp.out create mode 100644 Test/spv.subgroupExtendedTypesArithmetic.comp create mode 100644 Test/spv.subgroupExtendedTypesArithmeticNeg.comp create mode 100644 Test/spv.subgroupExtendedTypesBallot.comp create mode 100644 Test/spv.subgroupExtendedTypesBallotNeg.comp create mode 100644 Test/spv.subgroupExtendedTypesClustered.comp create mode 100644 Test/spv.subgroupExtendedTypesClusteredNeg.comp create mode 100644 Test/spv.subgroupExtendedTypesPartitioned.comp create mode 100644 Test/spv.subgroupExtendedTypesPartitionedNeg.comp create mode 100644 Test/spv.subgroupExtendedTypesQuad.comp create mode 100644 Test/spv.subgroupExtendedTypesQuadNeg.comp create mode 100644 Test/spv.subgroupExtendedTypesShuffle.comp create mode 100644 Test/spv.subgroupExtendedTypesShuffleNeg.comp create mode 100644 Test/spv.subgroupExtendedTypesShuffleRelative.comp create mode 100644 Test/spv.subgroupExtendedTypesShuffleRelativeNeg.comp create mode 100644 Test/spv.subgroupExtendedTypesVote.comp create mode 100644 Test/spv.subgroupExtendedTypesVoteNeg.comp diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 2c9fcd81..cfee1677 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -6837,8 +6837,9 @@ spv::Id TGlslangToSpvTraverser::createSubgroupOperation(glslang::TOperator op, s default: assert(0 && "Unhandled subgroup operation!"); } - const bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64; - const bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble; + + const bool isUnsigned = isTypeUnsignedInt(typeProxy); + const bool isFloat = isTypeFloat(typeProxy); const bool isBool = typeProxy == glslang::EbtBool; spv::Op opCode = spv::OpNop; diff --git a/Test/baseResults/spv.specConstant.vert.out b/Test/baseResults/spv.specConstant.vert.out index 931ba8d8..49bcca69 100644 --- a/Test/baseResults/spv.specConstant.vert.out +++ b/Test/baseResults/spv.specConstant.vert.out @@ -11,7 +11,7 @@ spv.specConstant.vert Source GLSL 400 Name 4 "main" Name 9 "arraySize" - Name 14 "foo(vf4[s2769];" + Name 14 "foo(vf4[s4393];" Name 13 "p" Name 17 "builtin_spec_constant(" Name 20 "color" @@ -102,10 +102,10 @@ spv.specConstant.vert Store 20(color) 46 48: 10 Load 22(ucol) Store 47(param) 48 - 49: 2 FunctionCall 14(foo(vf4[s2769];) 47(param) + 49: 2 FunctionCall 14(foo(vf4[s4393];) 47(param) Return FunctionEnd -14(foo(vf4[s2769];): 2 Function None 12 +14(foo(vf4[s4393];): 2 Function None 12 13(p): 11(ptr) FunctionParameter 15: Label 54: 24(ptr) AccessChain 53(dupUcol) 23 diff --git a/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out b/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out new file mode 100644 index 00000000..453d6fc8 --- /dev/null +++ b/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out @@ -0,0 +1,4280 @@ +spv.subgroupExtendedTypesArithmetic.comp +// Module Version 10300 +// Generated by (magic number): 80007 +// Id's are bound by 3665 + + Capability Shader + Capability Float16 + Capability Int64 + Capability Int16 + Capability Int8 + Capability GroupNonUniform + Capability GroupNonUniformArithmetic + Capability StorageUniformBufferBlock16 + Capability StorageBuffer8BitAccess + Extension "SPV_KHR_8bit_storage" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" 10 12 + ExecutionMode 4 LocalSize 8 1 1 + Source GLSL 450 + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" + SourceExtension "GL_EXT_shader_subgroup_extended_types_float16" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int16" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int64" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int8" + SourceExtension "GL_KHR_shader_subgroup_arithmetic" + SourceExtension "GL_KHR_shader_subgroup_basic" + Name 4 "main" + Name 8 "invocation" + Name 10 "gl_SubgroupInvocationID" + Name 12 "gl_SubgroupSize" + Name 31 "Buffers" + MemberName 31(Buffers) 0 "i8" + MemberName 31(Buffers) 1 "u8" + MemberName 31(Buffers) 2 "i16" + MemberName 31(Buffers) 3 "u16" + MemberName 31(Buffers) 4 "i64" + MemberName 31(Buffers) 5 "u64" + MemberName 31(Buffers) 6 "f16" + Name 34 "data" + Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision + Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId + Decorate 11 RelaxedPrecision + Decorate 12(gl_SubgroupSize) RelaxedPrecision + Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize + Decorate 13 RelaxedPrecision + Decorate 14 RelaxedPrecision + Decorate 16 RelaxedPrecision + MemberDecorate 31(Buffers) 0 Offset 0 + MemberDecorate 31(Buffers) 1 Offset 4 + MemberDecorate 31(Buffers) 2 Offset 8 + MemberDecorate 31(Buffers) 3 Offset 16 + MemberDecorate 31(Buffers) 4 Offset 32 + MemberDecorate 31(Buffers) 5 Offset 64 + MemberDecorate 31(Buffers) 6 Offset 96 + Decorate 31(Buffers) Block + Decorate 34(data) DescriptorSet 0 + Decorate 34(data) Binding 0 + Decorate 3664 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 9: TypePointer Input 6(int) +10(gl_SubgroupInvocationID): 9(ptr) Variable Input +12(gl_SubgroupSize): 9(ptr) Variable Input + 15: 6(int) Constant 4 + 17: TypeInt 8 1 + 18: TypeVector 17(int8_t) 4 + 19: TypeInt 8 0 + 20: TypeVector 19(int8_t) 4 + 21: TypeInt 16 1 + 22: TypeVector 21(int16_t) 4 + 23: TypeInt 16 0 + 24: TypeVector 23(int16_t) 4 + 25: TypeInt 64 1 + 26: TypeVector 25(int64_t) 4 + 27: TypeInt 64 0 + 28: TypeVector 27(int64_t) 4 + 29: TypeFloat 16 + 30: TypeVector 29(float16_t) 4 + 31(Buffers): TypeStruct 18(i8vec4) 20(i8vec4) 22(i16vec4) 24(i16vec4) 26(i64vec4) 28(i64vec4) 30(f16vec4) + 32: TypeArray 31(Buffers) 15 + 33: TypePointer StorageBuffer 32 + 34(data): 33(ptr) Variable StorageBuffer + 36: TypeInt 32 1 + 37: 36(int) Constant 0 + 38: 6(int) Constant 0 + 39: TypePointer StorageBuffer 17(int8_t) + 42: 6(int) Constant 3 + 46: 36(int) Constant 1 + 47: TypeVector 17(int8_t) 2 + 48: TypePointer StorageBuffer 18(i8vec4) + 57: 36(int) Constant 2 + 58: TypeVector 17(int8_t) 3 + 67: 36(int) Constant 3 + 593: TypePointer StorageBuffer 19(int8_t) + 599: TypeVector 19(int8_t) 2 + 600: TypePointer StorageBuffer 20(i8vec4) + 609: TypeVector 19(int8_t) 3 + 1143: TypePointer StorageBuffer 21(int16_t) + 1149: TypeVector 21(int16_t) 2 + 1150: TypePointer StorageBuffer 22(i16vec4) + 1159: TypeVector 21(int16_t) 3 + 1693: TypePointer StorageBuffer 23(int16_t) + 1699: TypeVector 23(int16_t) 2 + 1700: TypePointer StorageBuffer 24(i16vec4) + 1709: TypeVector 23(int16_t) 3 + 2243: 36(int) Constant 4 + 2244: TypePointer StorageBuffer 25(int64_t) + 2250: TypeVector 25(int64_t) 2 + 2251: TypePointer StorageBuffer 26(i64vec4) + 2260: TypeVector 25(int64_t) 3 + 2794: 36(int) Constant 5 + 2795: TypePointer StorageBuffer 27(int64_t) + 2801: TypeVector 27(int64_t) 2 + 2802: TypePointer StorageBuffer 28(i64vec4) + 2811: TypeVector 27(int64_t) 3 + 3345: 36(int) Constant 6 + 3346: TypePointer StorageBuffer 29(float16_t) + 3352: TypeVector 29(float16_t) 2 + 3353: TypePointer StorageBuffer 30(f16vec4) + 3362: TypeVector 29(float16_t) 3 + 3661: TypeVector 6(int) 3 + 3662: 6(int) Constant 8 + 3663: 6(int) Constant 1 + 3664: 3661(ivec3) ConstantComposite 3662 3663 3663 + 4(main): 2 Function None 3 + 5: Label + 8(invocation): 7(ptr) Variable Function + 11: 6(int) Load 10(gl_SubgroupInvocationID) + 13: 6(int) Load 12(gl_SubgroupSize) + 14: 6(int) IAdd 11 13 + 16: 6(int) UMod 14 15 + Store 8(invocation) 16 + 35: 6(int) Load 8(invocation) + 40: 39(ptr) AccessChain 34(data) 37 37 38 + 41: 17(int8_t) Load 40 + 43: 17(int8_t) GroupNonUniformIAdd 42 Reduce 41 + 44: 39(ptr) AccessChain 34(data) 35 37 38 + Store 44 43 + 45: 6(int) Load 8(invocation) + 49: 48(ptr) AccessChain 34(data) 46 37 + 50: 18(i8vec4) Load 49 + 51: 47(i8vec2) VectorShuffle 50 50 0 1 + 52: 47(i8vec2) GroupNonUniformIAdd 42 Reduce 51 + 53: 48(ptr) AccessChain 34(data) 45 37 + 54: 18(i8vec4) Load 53 + 55: 18(i8vec4) VectorShuffle 54 52 4 5 2 3 + Store 53 55 + 56: 6(int) Load 8(invocation) + 59: 48(ptr) AccessChain 34(data) 57 37 + 60: 18(i8vec4) Load 59 + 61: 58(i8vec3) VectorShuffle 60 60 0 1 2 + 62: 58(i8vec3) GroupNonUniformIAdd 42 Reduce 61 + 63: 48(ptr) AccessChain 34(data) 56 37 + 64: 18(i8vec4) Load 63 + 65: 18(i8vec4) VectorShuffle 64 62 4 5 6 3 + Store 63 65 + 66: 6(int) Load 8(invocation) + 68: 48(ptr) AccessChain 34(data) 67 37 + 69: 18(i8vec4) Load 68 + 70: 18(i8vec4) GroupNonUniformIAdd 42 Reduce 69 + 71: 48(ptr) AccessChain 34(data) 66 37 + Store 71 70 + 72: 6(int) Load 8(invocation) + 73: 39(ptr) AccessChain 34(data) 37 37 38 + 74: 17(int8_t) Load 73 + 75: 17(int8_t) GroupNonUniformIMul 42 Reduce 74 + 76: 39(ptr) AccessChain 34(data) 72 37 38 + Store 76 75 + 77: 6(int) Load 8(invocation) + 78: 48(ptr) AccessChain 34(data) 46 37 + 79: 18(i8vec4) Load 78 + 80: 47(i8vec2) VectorShuffle 79 79 0 1 + 81: 47(i8vec2) GroupNonUniformIMul 42 Reduce 80 + 82: 48(ptr) AccessChain 34(data) 77 37 + 83: 18(i8vec4) Load 82 + 84: 18(i8vec4) VectorShuffle 83 81 4 5 2 3 + Store 82 84 + 85: 6(int) Load 8(invocation) + 86: 48(ptr) AccessChain 34(data) 57 37 + 87: 18(i8vec4) Load 86 + 88: 58(i8vec3) VectorShuffle 87 87 0 1 2 + 89: 58(i8vec3) GroupNonUniformIMul 42 Reduce 88 + 90: 48(ptr) AccessChain 34(data) 85 37 + 91: 18(i8vec4) Load 90 + 92: 18(i8vec4) VectorShuffle 91 89 4 5 6 3 + Store 90 92 + 93: 6(int) Load 8(invocation) + 94: 48(ptr) AccessChain 34(data) 67 37 + 95: 18(i8vec4) Load 94 + 96: 18(i8vec4) GroupNonUniformIMul 42 Reduce 95 + 97: 48(ptr) AccessChain 34(data) 93 37 + Store 97 96 + 98: 6(int) Load 8(invocation) + 99: 39(ptr) AccessChain 34(data) 37 37 38 + 100: 17(int8_t) Load 99 + 101: 17(int8_t) GroupNonUniformSMin 42 Reduce 100 + 102: 39(ptr) AccessChain 34(data) 98 37 38 + Store 102 101 + 103: 6(int) Load 8(invocation) + 104: 48(ptr) AccessChain 34(data) 46 37 + 105: 18(i8vec4) Load 104 + 106: 47(i8vec2) VectorShuffle 105 105 0 1 + 107: 47(i8vec2) GroupNonUniformSMin 42 Reduce 106 + 108: 48(ptr) AccessChain 34(data) 103 37 + 109: 18(i8vec4) Load 108 + 110: 18(i8vec4) VectorShuffle 109 107 4 5 2 3 + Store 108 110 + 111: 6(int) Load 8(invocation) + 112: 48(ptr) AccessChain 34(data) 57 37 + 113: 18(i8vec4) Load 112 + 114: 58(i8vec3) VectorShuffle 113 113 0 1 2 + 115: 58(i8vec3) GroupNonUniformSMin 42 Reduce 114 + 116: 48(ptr) AccessChain 34(data) 111 37 + 117: 18(i8vec4) Load 116 + 118: 18(i8vec4) VectorShuffle 117 115 4 5 6 3 + Store 116 118 + 119: 6(int) Load 8(invocation) + 120: 48(ptr) AccessChain 34(data) 67 37 + 121: 18(i8vec4) Load 120 + 122: 18(i8vec4) GroupNonUniformSMin 42 Reduce 121 + 123: 48(ptr) AccessChain 34(data) 119 37 + Store 123 122 + 124: 6(int) Load 8(invocation) + 125: 39(ptr) AccessChain 34(data) 37 37 38 + 126: 17(int8_t) Load 125 + 127: 17(int8_t) GroupNonUniformSMax 42 Reduce 126 + 128: 39(ptr) AccessChain 34(data) 124 37 38 + Store 128 127 + 129: 6(int) Load 8(invocation) + 130: 48(ptr) AccessChain 34(data) 46 37 + 131: 18(i8vec4) Load 130 + 132: 47(i8vec2) VectorShuffle 131 131 0 1 + 133: 47(i8vec2) GroupNonUniformSMax 42 Reduce 132 + 134: 48(ptr) AccessChain 34(data) 129 37 + 135: 18(i8vec4) Load 134 + 136: 18(i8vec4) VectorShuffle 135 133 4 5 2 3 + Store 134 136 + 137: 6(int) Load 8(invocation) + 138: 48(ptr) AccessChain 34(data) 57 37 + 139: 18(i8vec4) Load 138 + 140: 58(i8vec3) VectorShuffle 139 139 0 1 2 + 141: 58(i8vec3) GroupNonUniformSMax 42 Reduce 140 + 142: 48(ptr) AccessChain 34(data) 137 37 + 143: 18(i8vec4) Load 142 + 144: 18(i8vec4) VectorShuffle 143 141 4 5 6 3 + Store 142 144 + 145: 6(int) Load 8(invocation) + 146: 48(ptr) AccessChain 34(data) 67 37 + 147: 18(i8vec4) Load 146 + 148: 18(i8vec4) GroupNonUniformSMax 42 Reduce 147 + 149: 48(ptr) AccessChain 34(data) 145 37 + Store 149 148 + 150: 6(int) Load 8(invocation) + 151: 39(ptr) AccessChain 34(data) 37 37 38 + 152: 17(int8_t) Load 151 + 153: 17(int8_t) GroupNonUniformBitwiseAnd 42 Reduce 152 + 154: 39(ptr) AccessChain 34(data) 150 37 38 + Store 154 153 + 155: 6(int) Load 8(invocation) + 156: 48(ptr) AccessChain 34(data) 46 37 + 157: 18(i8vec4) Load 156 + 158: 47(i8vec2) VectorShuffle 157 157 0 1 + 159: 47(i8vec2) GroupNonUniformBitwiseAnd 42 Reduce 158 + 160: 48(ptr) AccessChain 34(data) 155 37 + 161: 18(i8vec4) Load 160 + 162: 18(i8vec4) VectorShuffle 161 159 4 5 2 3 + Store 160 162 + 163: 6(int) Load 8(invocation) + 164: 48(ptr) AccessChain 34(data) 57 37 + 165: 18(i8vec4) Load 164 + 166: 58(i8vec3) VectorShuffle 165 165 0 1 2 + 167: 58(i8vec3) GroupNonUniformBitwiseAnd 42 Reduce 166 + 168: 48(ptr) AccessChain 34(data) 163 37 + 169: 18(i8vec4) Load 168 + 170: 18(i8vec4) VectorShuffle 169 167 4 5 6 3 + Store 168 170 + 171: 6(int) Load 8(invocation) + 172: 48(ptr) AccessChain 34(data) 67 37 + 173: 18(i8vec4) Load 172 + 174: 18(i8vec4) GroupNonUniformBitwiseAnd 42 Reduce 173 + 175: 48(ptr) AccessChain 34(data) 171 37 + Store 175 174 + 176: 6(int) Load 8(invocation) + 177: 39(ptr) AccessChain 34(data) 37 37 38 + 178: 17(int8_t) Load 177 + 179: 17(int8_t) GroupNonUniformBitwiseOr 42 Reduce 178 + 180: 39(ptr) AccessChain 34(data) 176 37 38 + Store 180 179 + 181: 6(int) Load 8(invocation) + 182: 48(ptr) AccessChain 34(data) 46 37 + 183: 18(i8vec4) Load 182 + 184: 47(i8vec2) VectorShuffle 183 183 0 1 + 185: 47(i8vec2) GroupNonUniformBitwiseOr 42 Reduce 184 + 186: 48(ptr) AccessChain 34(data) 181 37 + 187: 18(i8vec4) Load 186 + 188: 18(i8vec4) VectorShuffle 187 185 4 5 2 3 + Store 186 188 + 189: 6(int) Load 8(invocation) + 190: 48(ptr) AccessChain 34(data) 57 37 + 191: 18(i8vec4) Load 190 + 192: 58(i8vec3) VectorShuffle 191 191 0 1 2 + 193: 58(i8vec3) GroupNonUniformBitwiseOr 42 Reduce 192 + 194: 48(ptr) AccessChain 34(data) 189 37 + 195: 18(i8vec4) Load 194 + 196: 18(i8vec4) VectorShuffle 195 193 4 5 6 3 + Store 194 196 + 197: 6(int) Load 8(invocation) + 198: 48(ptr) AccessChain 34(data) 67 37 + 199: 18(i8vec4) Load 198 + 200: 18(i8vec4) GroupNonUniformBitwiseOr 42 Reduce 199 + 201: 48(ptr) AccessChain 34(data) 197 37 + Store 201 200 + 202: 6(int) Load 8(invocation) + 203: 39(ptr) AccessChain 34(data) 37 37 38 + 204: 17(int8_t) Load 203 + 205: 17(int8_t) GroupNonUniformBitwiseXor 42 Reduce 204 + 206: 39(ptr) AccessChain 34(data) 202 37 38 + Store 206 205 + 207: 6(int) Load 8(invocation) + 208: 48(ptr) AccessChain 34(data) 46 37 + 209: 18(i8vec4) Load 208 + 210: 47(i8vec2) VectorShuffle 209 209 0 1 + 211: 47(i8vec2) GroupNonUniformBitwiseXor 42 Reduce 210 + 212: 48(ptr) AccessChain 34(data) 207 37 + 213: 18(i8vec4) Load 212 + 214: 18(i8vec4) VectorShuffle 213 211 4 5 2 3 + Store 212 214 + 215: 6(int) Load 8(invocation) + 216: 48(ptr) AccessChain 34(data) 57 37 + 217: 18(i8vec4) Load 216 + 218: 58(i8vec3) VectorShuffle 217 217 0 1 2 + 219: 58(i8vec3) GroupNonUniformBitwiseXor 42 Reduce 218 + 220: 48(ptr) AccessChain 34(data) 215 37 + 221: 18(i8vec4) Load 220 + 222: 18(i8vec4) VectorShuffle 221 219 4 5 6 3 + Store 220 222 + 223: 6(int) Load 8(invocation) + 224: 48(ptr) AccessChain 34(data) 67 37 + 225: 18(i8vec4) Load 224 + 226: 18(i8vec4) GroupNonUniformBitwiseXor 42 Reduce 225 + 227: 48(ptr) AccessChain 34(data) 223 37 + Store 227 226 + 228: 6(int) Load 8(invocation) + 229: 39(ptr) AccessChain 34(data) 37 37 38 + 230: 17(int8_t) Load 229 + 231: 17(int8_t) GroupNonUniformIAdd 42 InclusiveScan 230 + 232: 39(ptr) AccessChain 34(data) 228 37 38 + Store 232 231 + 233: 6(int) Load 8(invocation) + 234: 48(ptr) AccessChain 34(data) 46 37 + 235: 18(i8vec4) Load 234 + 236: 47(i8vec2) VectorShuffle 235 235 0 1 + 237: 47(i8vec2) GroupNonUniformIAdd 42 InclusiveScan 236 + 238: 48(ptr) AccessChain 34(data) 233 37 + 239: 18(i8vec4) Load 238 + 240: 18(i8vec4) VectorShuffle 239 237 4 5 2 3 + Store 238 240 + 241: 6(int) Load 8(invocation) + 242: 48(ptr) AccessChain 34(data) 57 37 + 243: 18(i8vec4) Load 242 + 244: 58(i8vec3) VectorShuffle 243 243 0 1 2 + 245: 58(i8vec3) GroupNonUniformIAdd 42 InclusiveScan 244 + 246: 48(ptr) AccessChain 34(data) 241 37 + 247: 18(i8vec4) Load 246 + 248: 18(i8vec4) VectorShuffle 247 245 4 5 6 3 + Store 246 248 + 249: 6(int) Load 8(invocation) + 250: 48(ptr) AccessChain 34(data) 67 37 + 251: 18(i8vec4) Load 250 + 252: 18(i8vec4) GroupNonUniformIAdd 42 InclusiveScan 251 + 253: 48(ptr) AccessChain 34(data) 249 37 + Store 253 252 + 254: 6(int) Load 8(invocation) + 255: 39(ptr) AccessChain 34(data) 37 37 38 + 256: 17(int8_t) Load 255 + 257: 17(int8_t) GroupNonUniformIMul 42 InclusiveScan 256 + 258: 39(ptr) AccessChain 34(data) 254 37 38 + Store 258 257 + 259: 6(int) Load 8(invocation) + 260: 48(ptr) AccessChain 34(data) 46 37 + 261: 18(i8vec4) Load 260 + 262: 47(i8vec2) VectorShuffle 261 261 0 1 + 263: 47(i8vec2) GroupNonUniformIMul 42 InclusiveScan 262 + 264: 48(ptr) AccessChain 34(data) 259 37 + 265: 18(i8vec4) Load 264 + 266: 18(i8vec4) VectorShuffle 265 263 4 5 2 3 + Store 264 266 + 267: 6(int) Load 8(invocation) + 268: 48(ptr) AccessChain 34(data) 57 37 + 269: 18(i8vec4) Load 268 + 270: 58(i8vec3) VectorShuffle 269 269 0 1 2 + 271: 58(i8vec3) GroupNonUniformIMul 42 InclusiveScan 270 + 272: 48(ptr) AccessChain 34(data) 267 37 + 273: 18(i8vec4) Load 272 + 274: 18(i8vec4) VectorShuffle 273 271 4 5 6 3 + Store 272 274 + 275: 6(int) Load 8(invocation) + 276: 48(ptr) AccessChain 34(data) 67 37 + 277: 18(i8vec4) Load 276 + 278: 18(i8vec4) GroupNonUniformIMul 42 InclusiveScan 277 + 279: 48(ptr) AccessChain 34(data) 275 37 + Store 279 278 + 280: 6(int) Load 8(invocation) + 281: 39(ptr) AccessChain 34(data) 37 37 38 + 282: 17(int8_t) Load 281 + 283: 17(int8_t) GroupNonUniformSMin 42 InclusiveScan 282 + 284: 39(ptr) AccessChain 34(data) 280 37 38 + Store 284 283 + 285: 6(int) Load 8(invocation) + 286: 48(ptr) AccessChain 34(data) 46 37 + 287: 18(i8vec4) Load 286 + 288: 47(i8vec2) VectorShuffle 287 287 0 1 + 289: 47(i8vec2) GroupNonUniformSMin 42 InclusiveScan 288 + 290: 48(ptr) AccessChain 34(data) 285 37 + 291: 18(i8vec4) Load 290 + 292: 18(i8vec4) VectorShuffle 291 289 4 5 2 3 + Store 290 292 + 293: 6(int) Load 8(invocation) + 294: 48(ptr) AccessChain 34(data) 57 37 + 295: 18(i8vec4) Load 294 + 296: 58(i8vec3) VectorShuffle 295 295 0 1 2 + 297: 58(i8vec3) GroupNonUniformSMin 42 InclusiveScan 296 + 298: 48(ptr) AccessChain 34(data) 293 37 + 299: 18(i8vec4) Load 298 + 300: 18(i8vec4) VectorShuffle 299 297 4 5 6 3 + Store 298 300 + 301: 6(int) Load 8(invocation) + 302: 48(ptr) AccessChain 34(data) 67 37 + 303: 18(i8vec4) Load 302 + 304: 18(i8vec4) GroupNonUniformSMin 42 InclusiveScan 303 + 305: 48(ptr) AccessChain 34(data) 301 37 + Store 305 304 + 306: 6(int) Load 8(invocation) + 307: 39(ptr) AccessChain 34(data) 37 37 38 + 308: 17(int8_t) Load 307 + 309: 17(int8_t) GroupNonUniformSMax 42 InclusiveScan 308 + 310: 39(ptr) AccessChain 34(data) 306 37 38 + Store 310 309 + 311: 6(int) Load 8(invocation) + 312: 48(ptr) AccessChain 34(data) 46 37 + 313: 18(i8vec4) Load 312 + 314: 47(i8vec2) VectorShuffle 313 313 0 1 + 315: 47(i8vec2) GroupNonUniformSMax 42 InclusiveScan 314 + 316: 48(ptr) AccessChain 34(data) 311 37 + 317: 18(i8vec4) Load 316 + 318: 18(i8vec4) VectorShuffle 317 315 4 5 2 3 + Store 316 318 + 319: 6(int) Load 8(invocation) + 320: 48(ptr) AccessChain 34(data) 57 37 + 321: 18(i8vec4) Load 320 + 322: 58(i8vec3) VectorShuffle 321 321 0 1 2 + 323: 58(i8vec3) GroupNonUniformSMax 42 InclusiveScan 322 + 324: 48(ptr) AccessChain 34(data) 319 37 + 325: 18(i8vec4) Load 324 + 326: 18(i8vec4) VectorShuffle 325 323 4 5 6 3 + Store 324 326 + 327: 6(int) Load 8(invocation) + 328: 48(ptr) AccessChain 34(data) 67 37 + 329: 18(i8vec4) Load 328 + 330: 18(i8vec4) GroupNonUniformSMax 42 InclusiveScan 329 + 331: 48(ptr) AccessChain 34(data) 327 37 + Store 331 330 + 332: 6(int) Load 8(invocation) + 333: 39(ptr) AccessChain 34(data) 37 37 38 + 334: 17(int8_t) Load 333 + 335: 17(int8_t) GroupNonUniformBitwiseAnd 42 InclusiveScan 334 + 336: 39(ptr) AccessChain 34(data) 332 37 38 + Store 336 335 + 337: 6(int) Load 8(invocation) + 338: 48(ptr) AccessChain 34(data) 46 37 + 339: 18(i8vec4) Load 338 + 340: 47(i8vec2) VectorShuffle 339 339 0 1 + 341: 47(i8vec2) GroupNonUniformBitwiseAnd 42 InclusiveScan 340 + 342: 48(ptr) AccessChain 34(data) 337 37 + 343: 18(i8vec4) Load 342 + 344: 18(i8vec4) VectorShuffle 343 341 4 5 2 3 + Store 342 344 + 345: 6(int) Load 8(invocation) + 346: 48(ptr) AccessChain 34(data) 57 37 + 347: 18(i8vec4) Load 346 + 348: 58(i8vec3) VectorShuffle 347 347 0 1 2 + 349: 58(i8vec3) GroupNonUniformBitwiseAnd 42 InclusiveScan 348 + 350: 48(ptr) AccessChain 34(data) 345 37 + 351: 18(i8vec4) Load 350 + 352: 18(i8vec4) VectorShuffle 351 349 4 5 6 3 + Store 350 352 + 353: 6(int) Load 8(invocation) + 354: 48(ptr) AccessChain 34(data) 67 37 + 355: 18(i8vec4) Load 354 + 356: 18(i8vec4) GroupNonUniformBitwiseAnd 42 InclusiveScan 355 + 357: 48(ptr) AccessChain 34(data) 353 37 + Store 357 356 + 358: 6(int) Load 8(invocation) + 359: 39(ptr) AccessChain 34(data) 37 37 38 + 360: 17(int8_t) Load 359 + 361: 17(int8_t) GroupNonUniformBitwiseOr 42 InclusiveScan 360 + 362: 39(ptr) AccessChain 34(data) 358 37 38 + Store 362 361 + 363: 6(int) Load 8(invocation) + 364: 48(ptr) AccessChain 34(data) 46 37 + 365: 18(i8vec4) Load 364 + 366: 47(i8vec2) VectorShuffle 365 365 0 1 + 367: 47(i8vec2) GroupNonUniformBitwiseOr 42 InclusiveScan 366 + 368: 48(ptr) AccessChain 34(data) 363 37 + 369: 18(i8vec4) Load 368 + 370: 18(i8vec4) VectorShuffle 369 367 4 5 2 3 + Store 368 370 + 371: 6(int) Load 8(invocation) + 372: 48(ptr) AccessChain 34(data) 57 37 + 373: 18(i8vec4) Load 372 + 374: 58(i8vec3) VectorShuffle 373 373 0 1 2 + 375: 58(i8vec3) GroupNonUniformBitwiseOr 42 InclusiveScan 374 + 376: 48(ptr) AccessChain 34(data) 371 37 + 377: 18(i8vec4) Load 376 + 378: 18(i8vec4) VectorShuffle 377 375 4 5 6 3 + Store 376 378 + 379: 6(int) Load 8(invocation) + 380: 48(ptr) AccessChain 34(data) 67 37 + 381: 18(i8vec4) Load 380 + 382: 18(i8vec4) GroupNonUniformBitwiseOr 42 InclusiveScan 381 + 383: 48(ptr) AccessChain 34(data) 379 37 + Store 383 382 + 384: 6(int) Load 8(invocation) + 385: 39(ptr) AccessChain 34(data) 37 37 38 + 386: 17(int8_t) Load 385 + 387: 17(int8_t) GroupNonUniformBitwiseXor 42 InclusiveScan 386 + 388: 39(ptr) AccessChain 34(data) 384 37 38 + Store 388 387 + 389: 6(int) Load 8(invocation) + 390: 48(ptr) AccessChain 34(data) 46 37 + 391: 18(i8vec4) Load 390 + 392: 47(i8vec2) VectorShuffle 391 391 0 1 + 393: 47(i8vec2) GroupNonUniformBitwiseXor 42 InclusiveScan 392 + 394: 48(ptr) AccessChain 34(data) 389 37 + 395: 18(i8vec4) Load 394 + 396: 18(i8vec4) VectorShuffle 395 393 4 5 2 3 + Store 394 396 + 397: 6(int) Load 8(invocation) + 398: 48(ptr) AccessChain 34(data) 57 37 + 399: 18(i8vec4) Load 398 + 400: 58(i8vec3) VectorShuffle 399 399 0 1 2 + 401: 58(i8vec3) GroupNonUniformBitwiseXor 42 InclusiveScan 400 + 402: 48(ptr) AccessChain 34(data) 397 37 + 403: 18(i8vec4) Load 402 + 404: 18(i8vec4) VectorShuffle 403 401 4 5 6 3 + Store 402 404 + 405: 6(int) Load 8(invocation) + 406: 48(ptr) AccessChain 34(data) 67 37 + 407: 18(i8vec4) Load 406 + 408: 18(i8vec4) GroupNonUniformBitwiseXor 42 InclusiveScan 407 + 409: 48(ptr) AccessChain 34(data) 405 37 + Store 409 408 + 410: 6(int) Load 8(invocation) + 411: 39(ptr) AccessChain 34(data) 37 37 38 + 412: 17(int8_t) Load 411 + 413: 17(int8_t) GroupNonUniformIAdd 42 ExclusiveScan 412 + 414: 39(ptr) AccessChain 34(data) 410 37 38 + Store 414 413 + 415: 6(int) Load 8(invocation) + 416: 48(ptr) AccessChain 34(data) 46 37 + 417: 18(i8vec4) Load 416 + 418: 47(i8vec2) VectorShuffle 417 417 0 1 + 419: 47(i8vec2) GroupNonUniformIAdd 42 ExclusiveScan 418 + 420: 48(ptr) AccessChain 34(data) 415 37 + 421: 18(i8vec4) Load 420 + 422: 18(i8vec4) VectorShuffle 421 419 4 5 2 3 + Store 420 422 + 423: 6(int) Load 8(invocation) + 424: 48(ptr) AccessChain 34(data) 57 37 + 425: 18(i8vec4) Load 424 + 426: 58(i8vec3) VectorShuffle 425 425 0 1 2 + 427: 58(i8vec3) GroupNonUniformIAdd 42 ExclusiveScan 426 + 428: 48(ptr) AccessChain 34(data) 423 37 + 429: 18(i8vec4) Load 428 + 430: 18(i8vec4) VectorShuffle 429 427 4 5 6 3 + Store 428 430 + 431: 6(int) Load 8(invocation) + 432: 48(ptr) AccessChain 34(data) 67 37 + 433: 18(i8vec4) Load 432 + 434: 18(i8vec4) GroupNonUniformIAdd 42 ExclusiveScan 433 + 435: 48(ptr) AccessChain 34(data) 431 37 + Store 435 434 + 436: 6(int) Load 8(invocation) + 437: 39(ptr) AccessChain 34(data) 37 37 38 + 438: 17(int8_t) Load 437 + 439: 17(int8_t) GroupNonUniformIMul 42 ExclusiveScan 438 + 440: 39(ptr) AccessChain 34(data) 436 37 38 + Store 440 439 + 441: 6(int) Load 8(invocation) + 442: 48(ptr) AccessChain 34(data) 46 37 + 443: 18(i8vec4) Load 442 + 444: 47(i8vec2) VectorShuffle 443 443 0 1 + 445: 47(i8vec2) GroupNonUniformIMul 42 ExclusiveScan 444 + 446: 48(ptr) AccessChain 34(data) 441 37 + 447: 18(i8vec4) Load 446 + 448: 18(i8vec4) VectorShuffle 447 445 4 5 2 3 + Store 446 448 + 449: 6(int) Load 8(invocation) + 450: 48(ptr) AccessChain 34(data) 57 37 + 451: 18(i8vec4) Load 450 + 452: 58(i8vec3) VectorShuffle 451 451 0 1 2 + 453: 58(i8vec3) GroupNonUniformIMul 42 ExclusiveScan 452 + 454: 48(ptr) AccessChain 34(data) 449 37 + 455: 18(i8vec4) Load 454 + 456: 18(i8vec4) VectorShuffle 455 453 4 5 6 3 + Store 454 456 + 457: 6(int) Load 8(invocation) + 458: 48(ptr) AccessChain 34(data) 67 37 + 459: 18(i8vec4) Load 458 + 460: 18(i8vec4) GroupNonUniformIMul 42 ExclusiveScan 459 + 461: 48(ptr) AccessChain 34(data) 457 37 + Store 461 460 + 462: 6(int) Load 8(invocation) + 463: 39(ptr) AccessChain 34(data) 37 37 38 + 464: 17(int8_t) Load 463 + 465: 17(int8_t) GroupNonUniformSMin 42 ExclusiveScan 464 + 466: 39(ptr) AccessChain 34(data) 462 37 38 + Store 466 465 + 467: 6(int) Load 8(invocation) + 468: 48(ptr) AccessChain 34(data) 46 37 + 469: 18(i8vec4) Load 468 + 470: 47(i8vec2) VectorShuffle 469 469 0 1 + 471: 47(i8vec2) GroupNonUniformSMin 42 ExclusiveScan 470 + 472: 48(ptr) AccessChain 34(data) 467 37 + 473: 18(i8vec4) Load 472 + 474: 18(i8vec4) VectorShuffle 473 471 4 5 2 3 + Store 472 474 + 475: 6(int) Load 8(invocation) + 476: 48(ptr) AccessChain 34(data) 57 37 + 477: 18(i8vec4) Load 476 + 478: 58(i8vec3) VectorShuffle 477 477 0 1 2 + 479: 58(i8vec3) GroupNonUniformSMin 42 ExclusiveScan 478 + 480: 48(ptr) AccessChain 34(data) 475 37 + 481: 18(i8vec4) Load 480 + 482: 18(i8vec4) VectorShuffle 481 479 4 5 6 3 + Store 480 482 + 483: 6(int) Load 8(invocation) + 484: 48(ptr) AccessChain 34(data) 67 37 + 485: 18(i8vec4) Load 484 + 486: 18(i8vec4) GroupNonUniformSMin 42 ExclusiveScan 485 + 487: 48(ptr) AccessChain 34(data) 483 37 + Store 487 486 + 488: 6(int) Load 8(invocation) + 489: 39(ptr) AccessChain 34(data) 37 37 38 + 490: 17(int8_t) Load 489 + 491: 17(int8_t) GroupNonUniformSMax 42 ExclusiveScan 490 + 492: 39(ptr) AccessChain 34(data) 488 37 38 + Store 492 491 + 493: 6(int) Load 8(invocation) + 494: 48(ptr) AccessChain 34(data) 46 37 + 495: 18(i8vec4) Load 494 + 496: 47(i8vec2) VectorShuffle 495 495 0 1 + 497: 47(i8vec2) GroupNonUniformSMax 42 ExclusiveScan 496 + 498: 48(ptr) AccessChain 34(data) 493 37 + 499: 18(i8vec4) Load 498 + 500: 18(i8vec4) VectorShuffle 499 497 4 5 2 3 + Store 498 500 + 501: 6(int) Load 8(invocation) + 502: 48(ptr) AccessChain 34(data) 57 37 + 503: 18(i8vec4) Load 502 + 504: 58(i8vec3) VectorShuffle 503 503 0 1 2 + 505: 58(i8vec3) GroupNonUniformSMax 42 ExclusiveScan 504 + 506: 48(ptr) AccessChain 34(data) 501 37 + 507: 18(i8vec4) Load 506 + 508: 18(i8vec4) VectorShuffle 507 505 4 5 6 3 + Store 506 508 + 509: 6(int) Load 8(invocation) + 510: 48(ptr) AccessChain 34(data) 67 37 + 511: 18(i8vec4) Load 510 + 512: 18(i8vec4) GroupNonUniformSMax 42 ExclusiveScan 511 + 513: 48(ptr) AccessChain 34(data) 509 37 + Store 513 512 + 514: 6(int) Load 8(invocation) + 515: 39(ptr) AccessChain 34(data) 37 37 38 + 516: 17(int8_t) Load 515 + 517: 17(int8_t) GroupNonUniformBitwiseAnd 42 ExclusiveScan 516 + 518: 39(ptr) AccessChain 34(data) 514 37 38 + Store 518 517 + 519: 6(int) Load 8(invocation) + 520: 48(ptr) AccessChain 34(data) 46 37 + 521: 18(i8vec4) Load 520 + 522: 47(i8vec2) VectorShuffle 521 521 0 1 + 523: 47(i8vec2) GroupNonUniformBitwiseAnd 42 ExclusiveScan 522 + 524: 48(ptr) AccessChain 34(data) 519 37 + 525: 18(i8vec4) Load 524 + 526: 18(i8vec4) VectorShuffle 525 523 4 5 2 3 + Store 524 526 + 527: 6(int) Load 8(invocation) + 528: 48(ptr) AccessChain 34(data) 57 37 + 529: 18(i8vec4) Load 528 + 530: 58(i8vec3) VectorShuffle 529 529 0 1 2 + 531: 58(i8vec3) GroupNonUniformBitwiseAnd 42 ExclusiveScan 530 + 532: 48(ptr) AccessChain 34(data) 527 37 + 533: 18(i8vec4) Load 532 + 534: 18(i8vec4) VectorShuffle 533 531 4 5 6 3 + Store 532 534 + 535: 6(int) Load 8(invocation) + 536: 48(ptr) AccessChain 34(data) 67 37 + 537: 18(i8vec4) Load 536 + 538: 18(i8vec4) GroupNonUniformBitwiseAnd 42 ExclusiveScan 537 + 539: 48(ptr) AccessChain 34(data) 535 37 + Store 539 538 + 540: 6(int) Load 8(invocation) + 541: 39(ptr) AccessChain 34(data) 37 37 38 + 542: 17(int8_t) Load 541 + 543: 17(int8_t) GroupNonUniformBitwiseOr 42 ExclusiveScan 542 + 544: 39(ptr) AccessChain 34(data) 540 37 38 + Store 544 543 + 545: 6(int) Load 8(invocation) + 546: 48(ptr) AccessChain 34(data) 46 37 + 547: 18(i8vec4) Load 546 + 548: 47(i8vec2) VectorShuffle 547 547 0 1 + 549: 47(i8vec2) GroupNonUniformBitwiseOr 42 ExclusiveScan 548 + 550: 48(ptr) AccessChain 34(data) 545 37 + 551: 18(i8vec4) Load 550 + 552: 18(i8vec4) VectorShuffle 551 549 4 5 2 3 + Store 550 552 + 553: 6(int) Load 8(invocation) + 554: 48(ptr) AccessChain 34(data) 57 37 + 555: 18(i8vec4) Load 554 + 556: 58(i8vec3) VectorShuffle 555 555 0 1 2 + 557: 58(i8vec3) GroupNonUniformBitwiseOr 42 ExclusiveScan 556 + 558: 48(ptr) AccessChain 34(data) 553 37 + 559: 18(i8vec4) Load 558 + 560: 18(i8vec4) VectorShuffle 559 557 4 5 6 3 + Store 558 560 + 561: 6(int) Load 8(invocation) + 562: 48(ptr) AccessChain 34(data) 67 37 + 563: 18(i8vec4) Load 562 + 564: 18(i8vec4) GroupNonUniformBitwiseOr 42 ExclusiveScan 563 + 565: 48(ptr) AccessChain 34(data) 561 37 + Store 565 564 + 566: 6(int) Load 8(invocation) + 567: 39(ptr) AccessChain 34(data) 37 37 38 + 568: 17(int8_t) Load 567 + 569: 17(int8_t) GroupNonUniformBitwiseXor 42 ExclusiveScan 568 + 570: 39(ptr) AccessChain 34(data) 566 37 38 + Store 570 569 + 571: 6(int) Load 8(invocation) + 572: 48(ptr) AccessChain 34(data) 46 37 + 573: 18(i8vec4) Load 572 + 574: 47(i8vec2) VectorShuffle 573 573 0 1 + 575: 47(i8vec2) GroupNonUniformBitwiseXor 42 ExclusiveScan 574 + 576: 48(ptr) AccessChain 34(data) 571 37 + 577: 18(i8vec4) Load 576 + 578: 18(i8vec4) VectorShuffle 577 575 4 5 2 3 + Store 576 578 + 579: 6(int) Load 8(invocation) + 580: 48(ptr) AccessChain 34(data) 57 37 + 581: 18(i8vec4) Load 580 + 582: 58(i8vec3) VectorShuffle 581 581 0 1 2 + 583: 58(i8vec3) GroupNonUniformBitwiseXor 42 ExclusiveScan 582 + 584: 48(ptr) AccessChain 34(data) 579 37 + 585: 18(i8vec4) Load 584 + 586: 18(i8vec4) VectorShuffle 585 583 4 5 6 3 + Store 584 586 + 587: 6(int) Load 8(invocation) + 588: 48(ptr) AccessChain 34(data) 67 37 + 589: 18(i8vec4) Load 588 + 590: 18(i8vec4) GroupNonUniformBitwiseXor 42 ExclusiveScan 589 + 591: 48(ptr) AccessChain 34(data) 587 37 + Store 591 590 + 592: 6(int) Load 8(invocation) + 594: 593(ptr) AccessChain 34(data) 37 46 38 + 595: 19(int8_t) Load 594 + 596: 19(int8_t) GroupNonUniformIAdd 42 Reduce 595 + 597: 593(ptr) AccessChain 34(data) 592 46 38 + Store 597 596 + 598: 6(int) Load 8(invocation) + 601: 600(ptr) AccessChain 34(data) 46 46 + 602: 20(i8vec4) Load 601 + 603: 599(i8vec2) VectorShuffle 602 602 0 1 + 604: 599(i8vec2) GroupNonUniformIAdd 42 Reduce 603 + 605: 600(ptr) AccessChain 34(data) 598 46 + 606: 20(i8vec4) Load 605 + 607: 20(i8vec4) VectorShuffle 606 604 4 5 2 3 + Store 605 607 + 608: 6(int) Load 8(invocation) + 610: 600(ptr) AccessChain 34(data) 57 46 + 611: 20(i8vec4) Load 610 + 612: 609(i8vec3) VectorShuffle 611 611 0 1 2 + 613: 609(i8vec3) GroupNonUniformIAdd 42 Reduce 612 + 614: 600(ptr) AccessChain 34(data) 608 46 + 615: 20(i8vec4) Load 614 + 616: 20(i8vec4) VectorShuffle 615 613 4 5 6 3 + Store 614 616 + 617: 6(int) Load 8(invocation) + 618: 600(ptr) AccessChain 34(data) 67 46 + 619: 20(i8vec4) Load 618 + 620: 20(i8vec4) GroupNonUniformIAdd 42 Reduce 619 + 621: 600(ptr) AccessChain 34(data) 617 46 + Store 621 620 + 622: 6(int) Load 8(invocation) + 623: 593(ptr) AccessChain 34(data) 37 46 38 + 624: 19(int8_t) Load 623 + 625: 19(int8_t) GroupNonUniformIMul 42 Reduce 624 + 626: 593(ptr) AccessChain 34(data) 622 46 38 + Store 626 625 + 627: 6(int) Load 8(invocation) + 628: 600(ptr) AccessChain 34(data) 46 46 + 629: 20(i8vec4) Load 628 + 630: 599(i8vec2) VectorShuffle 629 629 0 1 + 631: 599(i8vec2) GroupNonUniformIMul 42 Reduce 630 + 632: 600(ptr) AccessChain 34(data) 627 46 + 633: 20(i8vec4) Load 632 + 634: 20(i8vec4) VectorShuffle 633 631 4 5 2 3 + Store 632 634 + 635: 6(int) Load 8(invocation) + 636: 600(ptr) AccessChain 34(data) 57 46 + 637: 20(i8vec4) Load 636 + 638: 609(i8vec3) VectorShuffle 637 637 0 1 2 + 639: 609(i8vec3) GroupNonUniformIMul 42 Reduce 638 + 640: 600(ptr) AccessChain 34(data) 635 46 + 641: 20(i8vec4) Load 640 + 642: 20(i8vec4) VectorShuffle 641 639 4 5 6 3 + Store 640 642 + 643: 6(int) Load 8(invocation) + 644: 600(ptr) AccessChain 34(data) 67 46 + 645: 20(i8vec4) Load 644 + 646: 20(i8vec4) GroupNonUniformIMul 42 Reduce 645 + 647: 600(ptr) AccessChain 34(data) 643 46 + Store 647 646 + 648: 6(int) Load 8(invocation) + 649: 593(ptr) AccessChain 34(data) 37 46 38 + 650: 19(int8_t) Load 649 + 651: 19(int8_t) GroupNonUniformUMin 42 Reduce 650 + 652: 593(ptr) AccessChain 34(data) 648 46 38 + Store 652 651 + 653: 6(int) Load 8(invocation) + 654: 600(ptr) AccessChain 34(data) 46 46 + 655: 20(i8vec4) Load 654 + 656: 599(i8vec2) VectorShuffle 655 655 0 1 + 657: 599(i8vec2) GroupNonUniformUMin 42 Reduce 656 + 658: 600(ptr) AccessChain 34(data) 653 46 + 659: 20(i8vec4) Load 658 + 660: 20(i8vec4) VectorShuffle 659 657 4 5 2 3 + Store 658 660 + 661: 6(int) Load 8(invocation) + 662: 600(ptr) AccessChain 34(data) 57 46 + 663: 20(i8vec4) Load 662 + 664: 609(i8vec3) VectorShuffle 663 663 0 1 2 + 665: 609(i8vec3) GroupNonUniformUMin 42 Reduce 664 + 666: 600(ptr) AccessChain 34(data) 661 46 + 667: 20(i8vec4) Load 666 + 668: 20(i8vec4) VectorShuffle 667 665 4 5 6 3 + Store 666 668 + 669: 6(int) Load 8(invocation) + 670: 600(ptr) AccessChain 34(data) 67 46 + 671: 20(i8vec4) Load 670 + 672: 20(i8vec4) GroupNonUniformUMin 42 Reduce 671 + 673: 600(ptr) AccessChain 34(data) 669 46 + Store 673 672 + 674: 6(int) Load 8(invocation) + 675: 593(ptr) AccessChain 34(data) 37 46 38 + 676: 19(int8_t) Load 675 + 677: 19(int8_t) GroupNonUniformUMax 42 Reduce 676 + 678: 593(ptr) AccessChain 34(data) 674 46 38 + Store 678 677 + 679: 6(int) Load 8(invocation) + 680: 600(ptr) AccessChain 34(data) 46 46 + 681: 20(i8vec4) Load 680 + 682: 599(i8vec2) VectorShuffle 681 681 0 1 + 683: 599(i8vec2) GroupNonUniformUMax 42 Reduce 682 + 684: 600(ptr) AccessChain 34(data) 679 46 + 685: 20(i8vec4) Load 684 + 686: 20(i8vec4) VectorShuffle 685 683 4 5 2 3 + Store 684 686 + 687: 6(int) Load 8(invocation) + 688: 600(ptr) AccessChain 34(data) 57 46 + 689: 20(i8vec4) Load 688 + 690: 609(i8vec3) VectorShuffle 689 689 0 1 2 + 691: 609(i8vec3) GroupNonUniformUMax 42 Reduce 690 + 692: 600(ptr) AccessChain 34(data) 687 46 + 693: 20(i8vec4) Load 692 + 694: 20(i8vec4) VectorShuffle 693 691 4 5 6 3 + Store 692 694 + 695: 6(int) Load 8(invocation) + 696: 600(ptr) AccessChain 34(data) 67 46 + 697: 20(i8vec4) Load 696 + 698: 20(i8vec4) GroupNonUniformUMax 42 Reduce 697 + 699: 600(ptr) AccessChain 34(data) 695 46 + Store 699 698 + 700: 6(int) Load 8(invocation) + 701: 593(ptr) AccessChain 34(data) 37 46 38 + 702: 19(int8_t) Load 701 + 703: 19(int8_t) GroupNonUniformBitwiseAnd 42 Reduce 702 + 704: 593(ptr) AccessChain 34(data) 700 46 38 + Store 704 703 + 705: 6(int) Load 8(invocation) + 706: 600(ptr) AccessChain 34(data) 46 46 + 707: 20(i8vec4) Load 706 + 708: 599(i8vec2) VectorShuffle 707 707 0 1 + 709: 599(i8vec2) GroupNonUniformBitwiseAnd 42 Reduce 708 + 710: 600(ptr) AccessChain 34(data) 705 46 + 711: 20(i8vec4) Load 710 + 712: 20(i8vec4) VectorShuffle 711 709 4 5 2 3 + Store 710 712 + 713: 6(int) Load 8(invocation) + 714: 600(ptr) AccessChain 34(data) 57 46 + 715: 20(i8vec4) Load 714 + 716: 609(i8vec3) VectorShuffle 715 715 0 1 2 + 717: 609(i8vec3) GroupNonUniformBitwiseAnd 42 Reduce 716 + 718: 600(ptr) AccessChain 34(data) 713 46 + 719: 20(i8vec4) Load 718 + 720: 20(i8vec4) VectorShuffle 719 717 4 5 6 3 + Store 718 720 + 721: 6(int) Load 8(invocation) + 722: 600(ptr) AccessChain 34(data) 67 46 + 723: 20(i8vec4) Load 722 + 724: 20(i8vec4) GroupNonUniformBitwiseAnd 42 Reduce 723 + 725: 600(ptr) AccessChain 34(data) 721 46 + Store 725 724 + 726: 6(int) Load 8(invocation) + 727: 593(ptr) AccessChain 34(data) 37 46 38 + 728: 19(int8_t) Load 727 + 729: 19(int8_t) GroupNonUniformBitwiseOr 42 Reduce 728 + 730: 593(ptr) AccessChain 34(data) 726 46 38 + Store 730 729 + 731: 6(int) Load 8(invocation) + 732: 600(ptr) AccessChain 34(data) 46 46 + 733: 20(i8vec4) Load 732 + 734: 599(i8vec2) VectorShuffle 733 733 0 1 + 735: 599(i8vec2) GroupNonUniformBitwiseOr 42 Reduce 734 + 736: 600(ptr) AccessChain 34(data) 731 46 + 737: 20(i8vec4) Load 736 + 738: 20(i8vec4) VectorShuffle 737 735 4 5 2 3 + Store 736 738 + 739: 6(int) Load 8(invocation) + 740: 600(ptr) AccessChain 34(data) 57 46 + 741: 20(i8vec4) Load 740 + 742: 609(i8vec3) VectorShuffle 741 741 0 1 2 + 743: 609(i8vec3) GroupNonUniformBitwiseOr 42 Reduce 742 + 744: 600(ptr) AccessChain 34(data) 739 46 + 745: 20(i8vec4) Load 744 + 746: 20(i8vec4) VectorShuffle 745 743 4 5 6 3 + Store 744 746 + 747: 6(int) Load 8(invocation) + 748: 600(ptr) AccessChain 34(data) 67 46 + 749: 20(i8vec4) Load 748 + 750: 20(i8vec4) GroupNonUniformBitwiseOr 42 Reduce 749 + 751: 600(ptr) AccessChain 34(data) 747 46 + Store 751 750 + 752: 6(int) Load 8(invocation) + 753: 593(ptr) AccessChain 34(data) 37 46 38 + 754: 19(int8_t) Load 753 + 755: 19(int8_t) GroupNonUniformBitwiseXor 42 Reduce 754 + 756: 593(ptr) AccessChain 34(data) 752 46 38 + Store 756 755 + 757: 6(int) Load 8(invocation) + 758: 600(ptr) AccessChain 34(data) 46 46 + 759: 20(i8vec4) Load 758 + 760: 599(i8vec2) VectorShuffle 759 759 0 1 + 761: 599(i8vec2) GroupNonUniformBitwiseXor 42 Reduce 760 + 762: 600(ptr) AccessChain 34(data) 757 46 + 763: 20(i8vec4) Load 762 + 764: 20(i8vec4) VectorShuffle 763 761 4 5 2 3 + Store 762 764 + 765: 6(int) Load 8(invocation) + 766: 600(ptr) AccessChain 34(data) 57 46 + 767: 20(i8vec4) Load 766 + 768: 609(i8vec3) VectorShuffle 767 767 0 1 2 + 769: 609(i8vec3) GroupNonUniformBitwiseXor 42 Reduce 768 + 770: 600(ptr) AccessChain 34(data) 765 46 + 771: 20(i8vec4) Load 770 + 772: 20(i8vec4) VectorShuffle 771 769 4 5 6 3 + Store 770 772 + 773: 6(int) Load 8(invocation) + 774: 600(ptr) AccessChain 34(data) 67 46 + 775: 20(i8vec4) Load 774 + 776: 20(i8vec4) GroupNonUniformBitwiseXor 42 Reduce 775 + 777: 600(ptr) AccessChain 34(data) 773 46 + Store 777 776 + 778: 6(int) Load 8(invocation) + 779: 593(ptr) AccessChain 34(data) 37 46 38 + 780: 19(int8_t) Load 779 + 781: 19(int8_t) GroupNonUniformIAdd 42 InclusiveScan 780 + 782: 593(ptr) AccessChain 34(data) 778 46 38 + Store 782 781 + 783: 6(int) Load 8(invocation) + 784: 600(ptr) AccessChain 34(data) 46 46 + 785: 20(i8vec4) Load 784 + 786: 599(i8vec2) VectorShuffle 785 785 0 1 + 787: 599(i8vec2) GroupNonUniformIAdd 42 InclusiveScan 786 + 788: 600(ptr) AccessChain 34(data) 783 46 + 789: 20(i8vec4) Load 788 + 790: 20(i8vec4) VectorShuffle 789 787 4 5 2 3 + Store 788 790 + 791: 6(int) Load 8(invocation) + 792: 600(ptr) AccessChain 34(data) 57 46 + 793: 20(i8vec4) Load 792 + 794: 609(i8vec3) VectorShuffle 793 793 0 1 2 + 795: 609(i8vec3) GroupNonUniformIAdd 42 InclusiveScan 794 + 796: 600(ptr) AccessChain 34(data) 791 46 + 797: 20(i8vec4) Load 796 + 798: 20(i8vec4) VectorShuffle 797 795 4 5 6 3 + Store 796 798 + 799: 6(int) Load 8(invocation) + 800: 600(ptr) AccessChain 34(data) 67 46 + 801: 20(i8vec4) Load 800 + 802: 20(i8vec4) GroupNonUniformIAdd 42 InclusiveScan 801 + 803: 600(ptr) AccessChain 34(data) 799 46 + Store 803 802 + 804: 6(int) Load 8(invocation) + 805: 593(ptr) AccessChain 34(data) 37 46 38 + 806: 19(int8_t) Load 805 + 807: 19(int8_t) GroupNonUniformIMul 42 InclusiveScan 806 + 808: 593(ptr) AccessChain 34(data) 804 46 38 + Store 808 807 + 809: 6(int) Load 8(invocation) + 810: 600(ptr) AccessChain 34(data) 46 46 + 811: 20(i8vec4) Load 810 + 812: 599(i8vec2) VectorShuffle 811 811 0 1 + 813: 599(i8vec2) GroupNonUniformIMul 42 InclusiveScan 812 + 814: 600(ptr) AccessChain 34(data) 809 46 + 815: 20(i8vec4) Load 814 + 816: 20(i8vec4) VectorShuffle 815 813 4 5 2 3 + Store 814 816 + 817: 6(int) Load 8(invocation) + 818: 600(ptr) AccessChain 34(data) 57 46 + 819: 20(i8vec4) Load 818 + 820: 609(i8vec3) VectorShuffle 819 819 0 1 2 + 821: 609(i8vec3) GroupNonUniformIMul 42 InclusiveScan 820 + 822: 600(ptr) AccessChain 34(data) 817 46 + 823: 20(i8vec4) Load 822 + 824: 20(i8vec4) VectorShuffle 823 821 4 5 6 3 + Store 822 824 + 825: 6(int) Load 8(invocation) + 826: 600(ptr) AccessChain 34(data) 67 46 + 827: 20(i8vec4) Load 826 + 828: 20(i8vec4) GroupNonUniformIMul 42 InclusiveScan 827 + 829: 600(ptr) AccessChain 34(data) 825 46 + Store 829 828 + 830: 6(int) Load 8(invocation) + 831: 593(ptr) AccessChain 34(data) 37 46 38 + 832: 19(int8_t) Load 831 + 833: 19(int8_t) GroupNonUniformUMin 42 InclusiveScan 832 + 834: 593(ptr) AccessChain 34(data) 830 46 38 + Store 834 833 + 835: 6(int) Load 8(invocation) + 836: 600(ptr) AccessChain 34(data) 46 46 + 837: 20(i8vec4) Load 836 + 838: 599(i8vec2) VectorShuffle 837 837 0 1 + 839: 599(i8vec2) GroupNonUniformUMin 42 InclusiveScan 838 + 840: 600(ptr) AccessChain 34(data) 835 46 + 841: 20(i8vec4) Load 840 + 842: 20(i8vec4) VectorShuffle 841 839 4 5 2 3 + Store 840 842 + 843: 6(int) Load 8(invocation) + 844: 600(ptr) AccessChain 34(data) 57 46 + 845: 20(i8vec4) Load 844 + 846: 609(i8vec3) VectorShuffle 845 845 0 1 2 + 847: 609(i8vec3) GroupNonUniformUMin 42 InclusiveScan 846 + 848: 600(ptr) AccessChain 34(data) 843 46 + 849: 20(i8vec4) Load 848 + 850: 20(i8vec4) VectorShuffle 849 847 4 5 6 3 + Store 848 850 + 851: 6(int) Load 8(invocation) + 852: 600(ptr) AccessChain 34(data) 67 46 + 853: 20(i8vec4) Load 852 + 854: 20(i8vec4) GroupNonUniformUMin 42 InclusiveScan 853 + 855: 600(ptr) AccessChain 34(data) 851 46 + Store 855 854 + 856: 6(int) Load 8(invocation) + 857: 593(ptr) AccessChain 34(data) 37 46 38 + 858: 19(int8_t) Load 857 + 859: 19(int8_t) GroupNonUniformUMax 42 InclusiveScan 858 + 860: 593(ptr) AccessChain 34(data) 856 46 38 + Store 860 859 + 861: 6(int) Load 8(invocation) + 862: 600(ptr) AccessChain 34(data) 46 46 + 863: 20(i8vec4) Load 862 + 864: 599(i8vec2) VectorShuffle 863 863 0 1 + 865: 599(i8vec2) GroupNonUniformUMax 42 InclusiveScan 864 + 866: 600(ptr) AccessChain 34(data) 861 46 + 867: 20(i8vec4) Load 866 + 868: 20(i8vec4) VectorShuffle 867 865 4 5 2 3 + Store 866 868 + 869: 6(int) Load 8(invocation) + 870: 600(ptr) AccessChain 34(data) 57 46 + 871: 20(i8vec4) Load 870 + 872: 609(i8vec3) VectorShuffle 871 871 0 1 2 + 873: 609(i8vec3) GroupNonUniformUMax 42 InclusiveScan 872 + 874: 600(ptr) AccessChain 34(data) 869 46 + 875: 20(i8vec4) Load 874 + 876: 20(i8vec4) VectorShuffle 875 873 4 5 6 3 + Store 874 876 + 877: 6(int) Load 8(invocation) + 878: 600(ptr) AccessChain 34(data) 67 46 + 879: 20(i8vec4) Load 878 + 880: 20(i8vec4) GroupNonUniformUMax 42 InclusiveScan 879 + 881: 600(ptr) AccessChain 34(data) 877 46 + Store 881 880 + 882: 6(int) Load 8(invocation) + 883: 593(ptr) AccessChain 34(data) 37 46 38 + 884: 19(int8_t) Load 883 + 885: 19(int8_t) GroupNonUniformBitwiseAnd 42 InclusiveScan 884 + 886: 593(ptr) AccessChain 34(data) 882 46 38 + Store 886 885 + 887: 6(int) Load 8(invocation) + 888: 600(ptr) AccessChain 34(data) 46 46 + 889: 20(i8vec4) Load 888 + 890: 599(i8vec2) VectorShuffle 889 889 0 1 + 891: 599(i8vec2) GroupNonUniformBitwiseAnd 42 InclusiveScan 890 + 892: 600(ptr) AccessChain 34(data) 887 46 + 893: 20(i8vec4) Load 892 + 894: 20(i8vec4) VectorShuffle 893 891 4 5 2 3 + Store 892 894 + 895: 6(int) Load 8(invocation) + 896: 600(ptr) AccessChain 34(data) 57 46 + 897: 20(i8vec4) Load 896 + 898: 609(i8vec3) VectorShuffle 897 897 0 1 2 + 899: 609(i8vec3) GroupNonUniformBitwiseAnd 42 InclusiveScan 898 + 900: 600(ptr) AccessChain 34(data) 895 46 + 901: 20(i8vec4) Load 900 + 902: 20(i8vec4) VectorShuffle 901 899 4 5 6 3 + Store 900 902 + 903: 6(int) Load 8(invocation) + 904: 600(ptr) AccessChain 34(data) 67 46 + 905: 20(i8vec4) Load 904 + 906: 20(i8vec4) GroupNonUniformBitwiseAnd 42 InclusiveScan 905 + 907: 600(ptr) AccessChain 34(data) 903 46 + Store 907 906 + 908: 6(int) Load 8(invocation) + 909: 593(ptr) AccessChain 34(data) 37 46 38 + 910: 19(int8_t) Load 909 + 911: 19(int8_t) GroupNonUniformBitwiseOr 42 InclusiveScan 910 + 912: 593(ptr) AccessChain 34(data) 908 46 38 + Store 912 911 + 913: 6(int) Load 8(invocation) + 914: 600(ptr) AccessChain 34(data) 46 46 + 915: 20(i8vec4) Load 914 + 916: 599(i8vec2) VectorShuffle 915 915 0 1 + 917: 599(i8vec2) GroupNonUniformBitwiseOr 42 InclusiveScan 916 + 918: 600(ptr) AccessChain 34(data) 913 46 + 919: 20(i8vec4) Load 918 + 920: 20(i8vec4) VectorShuffle 919 917 4 5 2 3 + Store 918 920 + 921: 6(int) Load 8(invocation) + 922: 600(ptr) AccessChain 34(data) 57 46 + 923: 20(i8vec4) Load 922 + 924: 609(i8vec3) VectorShuffle 923 923 0 1 2 + 925: 609(i8vec3) GroupNonUniformBitwiseOr 42 InclusiveScan 924 + 926: 600(ptr) AccessChain 34(data) 921 46 + 927: 20(i8vec4) Load 926 + 928: 20(i8vec4) VectorShuffle 927 925 4 5 6 3 + Store 926 928 + 929: 6(int) Load 8(invocation) + 930: 600(ptr) AccessChain 34(data) 67 46 + 931: 20(i8vec4) Load 930 + 932: 20(i8vec4) GroupNonUniformBitwiseOr 42 InclusiveScan 931 + 933: 600(ptr) AccessChain 34(data) 929 46 + Store 933 932 + 934: 6(int) Load 8(invocation) + 935: 593(ptr) AccessChain 34(data) 37 46 38 + 936: 19(int8_t) Load 935 + 937: 19(int8_t) GroupNonUniformBitwiseXor 42 InclusiveScan 936 + 938: 593(ptr) AccessChain 34(data) 934 46 38 + Store 938 937 + 939: 6(int) Load 8(invocation) + 940: 600(ptr) AccessChain 34(data) 46 46 + 941: 20(i8vec4) Load 940 + 942: 599(i8vec2) VectorShuffle 941 941 0 1 + 943: 599(i8vec2) GroupNonUniformBitwiseXor 42 InclusiveScan 942 + 944: 600(ptr) AccessChain 34(data) 939 46 + 945: 20(i8vec4) Load 944 + 946: 20(i8vec4) VectorShuffle 945 943 4 5 2 3 + Store 944 946 + 947: 6(int) Load 8(invocation) + 948: 600(ptr) AccessChain 34(data) 57 46 + 949: 20(i8vec4) Load 948 + 950: 609(i8vec3) VectorShuffle 949 949 0 1 2 + 951: 609(i8vec3) GroupNonUniformBitwiseXor 42 InclusiveScan 950 + 952: 600(ptr) AccessChain 34(data) 947 46 + 953: 20(i8vec4) Load 952 + 954: 20(i8vec4) VectorShuffle 953 951 4 5 6 3 + Store 952 954 + 955: 6(int) Load 8(invocation) + 956: 600(ptr) AccessChain 34(data) 67 46 + 957: 20(i8vec4) Load 956 + 958: 20(i8vec4) GroupNonUniformBitwiseXor 42 InclusiveScan 957 + 959: 600(ptr) AccessChain 34(data) 955 46 + Store 959 958 + 960: 6(int) Load 8(invocation) + 961: 593(ptr) AccessChain 34(data) 37 46 38 + 962: 19(int8_t) Load 961 + 963: 19(int8_t) GroupNonUniformIAdd 42 ExclusiveScan 962 + 964: 593(ptr) AccessChain 34(data) 960 46 38 + Store 964 963 + 965: 6(int) Load 8(invocation) + 966: 600(ptr) AccessChain 34(data) 46 46 + 967: 20(i8vec4) Load 966 + 968: 599(i8vec2) VectorShuffle 967 967 0 1 + 969: 599(i8vec2) GroupNonUniformIAdd 42 ExclusiveScan 968 + 970: 600(ptr) AccessChain 34(data) 965 46 + 971: 20(i8vec4) Load 970 + 972: 20(i8vec4) VectorShuffle 971 969 4 5 2 3 + Store 970 972 + 973: 6(int) Load 8(invocation) + 974: 600(ptr) AccessChain 34(data) 57 46 + 975: 20(i8vec4) Load 974 + 976: 609(i8vec3) VectorShuffle 975 975 0 1 2 + 977: 609(i8vec3) GroupNonUniformIAdd 42 ExclusiveScan 976 + 978: 600(ptr) AccessChain 34(data) 973 46 + 979: 20(i8vec4) Load 978 + 980: 20(i8vec4) VectorShuffle 979 977 4 5 6 3 + Store 978 980 + 981: 6(int) Load 8(invocation) + 982: 600(ptr) AccessChain 34(data) 67 46 + 983: 20(i8vec4) Load 982 + 984: 20(i8vec4) GroupNonUniformIAdd 42 ExclusiveScan 983 + 985: 600(ptr) AccessChain 34(data) 981 46 + Store 985 984 + 986: 6(int) Load 8(invocation) + 987: 593(ptr) AccessChain 34(data) 37 46 38 + 988: 19(int8_t) Load 987 + 989: 19(int8_t) GroupNonUniformIMul 42 ExclusiveScan 988 + 990: 593(ptr) AccessChain 34(data) 986 46 38 + Store 990 989 + 991: 6(int) Load 8(invocation) + 992: 600(ptr) AccessChain 34(data) 46 46 + 993: 20(i8vec4) Load 992 + 994: 599(i8vec2) VectorShuffle 993 993 0 1 + 995: 599(i8vec2) GroupNonUniformIMul 42 ExclusiveScan 994 + 996: 600(ptr) AccessChain 34(data) 991 46 + 997: 20(i8vec4) Load 996 + 998: 20(i8vec4) VectorShuffle 997 995 4 5 2 3 + Store 996 998 + 999: 6(int) Load 8(invocation) + 1000: 600(ptr) AccessChain 34(data) 57 46 + 1001: 20(i8vec4) Load 1000 + 1002: 609(i8vec3) VectorShuffle 1001 1001 0 1 2 + 1003: 609(i8vec3) GroupNonUniformIMul 42 ExclusiveScan 1002 + 1004: 600(ptr) AccessChain 34(data) 999 46 + 1005: 20(i8vec4) Load 1004 + 1006: 20(i8vec4) VectorShuffle 1005 1003 4 5 6 3 + Store 1004 1006 + 1007: 6(int) Load 8(invocation) + 1008: 600(ptr) AccessChain 34(data) 67 46 + 1009: 20(i8vec4) Load 1008 + 1010: 20(i8vec4) GroupNonUniformIMul 42 ExclusiveScan 1009 + 1011: 600(ptr) AccessChain 34(data) 1007 46 + Store 1011 1010 + 1012: 6(int) Load 8(invocation) + 1013: 593(ptr) AccessChain 34(data) 37 46 38 + 1014: 19(int8_t) Load 1013 + 1015: 19(int8_t) GroupNonUniformUMin 42 ExclusiveScan 1014 + 1016: 593(ptr) AccessChain 34(data) 1012 46 38 + Store 1016 1015 + 1017: 6(int) Load 8(invocation) + 1018: 600(ptr) AccessChain 34(data) 46 46 + 1019: 20(i8vec4) Load 1018 + 1020: 599(i8vec2) VectorShuffle 1019 1019 0 1 + 1021: 599(i8vec2) GroupNonUniformUMin 42 ExclusiveScan 1020 + 1022: 600(ptr) AccessChain 34(data) 1017 46 + 1023: 20(i8vec4) Load 1022 + 1024: 20(i8vec4) VectorShuffle 1023 1021 4 5 2 3 + Store 1022 1024 + 1025: 6(int) Load 8(invocation) + 1026: 600(ptr) AccessChain 34(data) 57 46 + 1027: 20(i8vec4) Load 1026 + 1028: 609(i8vec3) VectorShuffle 1027 1027 0 1 2 + 1029: 609(i8vec3) GroupNonUniformUMin 42 ExclusiveScan 1028 + 1030: 600(ptr) AccessChain 34(data) 1025 46 + 1031: 20(i8vec4) Load 1030 + 1032: 20(i8vec4) VectorShuffle 1031 1029 4 5 6 3 + Store 1030 1032 + 1033: 6(int) Load 8(invocation) + 1034: 600(ptr) AccessChain 34(data) 67 46 + 1035: 20(i8vec4) Load 1034 + 1036: 20(i8vec4) GroupNonUniformUMin 42 ExclusiveScan 1035 + 1037: 600(ptr) AccessChain 34(data) 1033 46 + Store 1037 1036 + 1038: 6(int) Load 8(invocation) + 1039: 593(ptr) AccessChain 34(data) 37 46 38 + 1040: 19(int8_t) Load 1039 + 1041: 19(int8_t) GroupNonUniformUMax 42 ExclusiveScan 1040 + 1042: 593(ptr) AccessChain 34(data) 1038 46 38 + Store 1042 1041 + 1043: 6(int) Load 8(invocation) + 1044: 600(ptr) AccessChain 34(data) 46 46 + 1045: 20(i8vec4) Load 1044 + 1046: 599(i8vec2) VectorShuffle 1045 1045 0 1 + 1047: 599(i8vec2) GroupNonUniformUMax 42 ExclusiveScan 1046 + 1048: 600(ptr) AccessChain 34(data) 1043 46 + 1049: 20(i8vec4) Load 1048 + 1050: 20(i8vec4) VectorShuffle 1049 1047 4 5 2 3 + Store 1048 1050 + 1051: 6(int) Load 8(invocation) + 1052: 600(ptr) AccessChain 34(data) 57 46 + 1053: 20(i8vec4) Load 1052 + 1054: 609(i8vec3) VectorShuffle 1053 1053 0 1 2 + 1055: 609(i8vec3) GroupNonUniformUMax 42 ExclusiveScan 1054 + 1056: 600(ptr) AccessChain 34(data) 1051 46 + 1057: 20(i8vec4) Load 1056 + 1058: 20(i8vec4) VectorShuffle 1057 1055 4 5 6 3 + Store 1056 1058 + 1059: 6(int) Load 8(invocation) + 1060: 600(ptr) AccessChain 34(data) 67 46 + 1061: 20(i8vec4) Load 1060 + 1062: 20(i8vec4) GroupNonUniformUMax 42 ExclusiveScan 1061 + 1063: 600(ptr) AccessChain 34(data) 1059 46 + Store 1063 1062 + 1064: 6(int) Load 8(invocation) + 1065: 593(ptr) AccessChain 34(data) 37 46 38 + 1066: 19(int8_t) Load 1065 + 1067: 19(int8_t) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1066 + 1068: 593(ptr) AccessChain 34(data) 1064 46 38 + Store 1068 1067 + 1069: 6(int) Load 8(invocation) + 1070: 600(ptr) AccessChain 34(data) 46 46 + 1071: 20(i8vec4) Load 1070 + 1072: 599(i8vec2) VectorShuffle 1071 1071 0 1 + 1073: 599(i8vec2) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1072 + 1074: 600(ptr) AccessChain 34(data) 1069 46 + 1075: 20(i8vec4) Load 1074 + 1076: 20(i8vec4) VectorShuffle 1075 1073 4 5 2 3 + Store 1074 1076 + 1077: 6(int) Load 8(invocation) + 1078: 600(ptr) AccessChain 34(data) 57 46 + 1079: 20(i8vec4) Load 1078 + 1080: 609(i8vec3) VectorShuffle 1079 1079 0 1 2 + 1081: 609(i8vec3) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1080 + 1082: 600(ptr) AccessChain 34(data) 1077 46 + 1083: 20(i8vec4) Load 1082 + 1084: 20(i8vec4) VectorShuffle 1083 1081 4 5 6 3 + Store 1082 1084 + 1085: 6(int) Load 8(invocation) + 1086: 600(ptr) AccessChain 34(data) 67 46 + 1087: 20(i8vec4) Load 1086 + 1088: 20(i8vec4) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1087 + 1089: 600(ptr) AccessChain 34(data) 1085 46 + Store 1089 1088 + 1090: 6(int) Load 8(invocation) + 1091: 593(ptr) AccessChain 34(data) 37 46 38 + 1092: 19(int8_t) Load 1091 + 1093: 19(int8_t) GroupNonUniformBitwiseOr 42 ExclusiveScan 1092 + 1094: 593(ptr) AccessChain 34(data) 1090 46 38 + Store 1094 1093 + 1095: 6(int) Load 8(invocation) + 1096: 600(ptr) AccessChain 34(data) 46 46 + 1097: 20(i8vec4) Load 1096 + 1098: 599(i8vec2) VectorShuffle 1097 1097 0 1 + 1099: 599(i8vec2) GroupNonUniformBitwiseOr 42 ExclusiveScan 1098 + 1100: 600(ptr) AccessChain 34(data) 1095 46 + 1101: 20(i8vec4) Load 1100 + 1102: 20(i8vec4) VectorShuffle 1101 1099 4 5 2 3 + Store 1100 1102 + 1103: 6(int) Load 8(invocation) + 1104: 600(ptr) AccessChain 34(data) 57 46 + 1105: 20(i8vec4) Load 1104 + 1106: 609(i8vec3) VectorShuffle 1105 1105 0 1 2 + 1107: 609(i8vec3) GroupNonUniformBitwiseOr 42 ExclusiveScan 1106 + 1108: 600(ptr) AccessChain 34(data) 1103 46 + 1109: 20(i8vec4) Load 1108 + 1110: 20(i8vec4) VectorShuffle 1109 1107 4 5 6 3 + Store 1108 1110 + 1111: 6(int) Load 8(invocation) + 1112: 600(ptr) AccessChain 34(data) 67 46 + 1113: 20(i8vec4) Load 1112 + 1114: 20(i8vec4) GroupNonUniformBitwiseOr 42 ExclusiveScan 1113 + 1115: 600(ptr) AccessChain 34(data) 1111 46 + Store 1115 1114 + 1116: 6(int) Load 8(invocation) + 1117: 593(ptr) AccessChain 34(data) 37 46 38 + 1118: 19(int8_t) Load 1117 + 1119: 19(int8_t) GroupNonUniformBitwiseXor 42 ExclusiveScan 1118 + 1120: 593(ptr) AccessChain 34(data) 1116 46 38 + Store 1120 1119 + 1121: 6(int) Load 8(invocation) + 1122: 600(ptr) AccessChain 34(data) 46 46 + 1123: 20(i8vec4) Load 1122 + 1124: 599(i8vec2) VectorShuffle 1123 1123 0 1 + 1125: 599(i8vec2) GroupNonUniformBitwiseXor 42 ExclusiveScan 1124 + 1126: 600(ptr) AccessChain 34(data) 1121 46 + 1127: 20(i8vec4) Load 1126 + 1128: 20(i8vec4) VectorShuffle 1127 1125 4 5 2 3 + Store 1126 1128 + 1129: 6(int) Load 8(invocation) + 1130: 600(ptr) AccessChain 34(data) 57 46 + 1131: 20(i8vec4) Load 1130 + 1132: 609(i8vec3) VectorShuffle 1131 1131 0 1 2 + 1133: 609(i8vec3) GroupNonUniformBitwiseXor 42 ExclusiveScan 1132 + 1134: 600(ptr) AccessChain 34(data) 1129 46 + 1135: 20(i8vec4) Load 1134 + 1136: 20(i8vec4) VectorShuffle 1135 1133 4 5 6 3 + Store 1134 1136 + 1137: 6(int) Load 8(invocation) + 1138: 600(ptr) AccessChain 34(data) 67 46 + 1139: 20(i8vec4) Load 1138 + 1140: 20(i8vec4) GroupNonUniformBitwiseXor 42 ExclusiveScan 1139 + 1141: 600(ptr) AccessChain 34(data) 1137 46 + Store 1141 1140 + 1142: 6(int) Load 8(invocation) + 1144: 1143(ptr) AccessChain 34(data) 37 57 38 + 1145: 21(int16_t) Load 1144 + 1146: 21(int16_t) GroupNonUniformIAdd 42 Reduce 1145 + 1147: 1143(ptr) AccessChain 34(data) 1142 57 38 + Store 1147 1146 + 1148: 6(int) Load 8(invocation) + 1151: 1150(ptr) AccessChain 34(data) 46 57 + 1152: 22(i16vec4) Load 1151 + 1153:1149(i16vec2) VectorShuffle 1152 1152 0 1 + 1154:1149(i16vec2) GroupNonUniformIAdd 42 Reduce 1153 + 1155: 1150(ptr) AccessChain 34(data) 1148 57 + 1156: 22(i16vec4) Load 1155 + 1157: 22(i16vec4) VectorShuffle 1156 1154 4 5 2 3 + Store 1155 1157 + 1158: 6(int) Load 8(invocation) + 1160: 1150(ptr) AccessChain 34(data) 57 57 + 1161: 22(i16vec4) Load 1160 + 1162:1159(i16vec3) VectorShuffle 1161 1161 0 1 2 + 1163:1159(i16vec3) GroupNonUniformIAdd 42 Reduce 1162 + 1164: 1150(ptr) AccessChain 34(data) 1158 57 + 1165: 22(i16vec4) Load 1164 + 1166: 22(i16vec4) VectorShuffle 1165 1163 4 5 6 3 + Store 1164 1166 + 1167: 6(int) Load 8(invocation) + 1168: 1150(ptr) AccessChain 34(data) 67 57 + 1169: 22(i16vec4) Load 1168 + 1170: 22(i16vec4) GroupNonUniformIAdd 42 Reduce 1169 + 1171: 1150(ptr) AccessChain 34(data) 1167 57 + Store 1171 1170 + 1172: 6(int) Load 8(invocation) + 1173: 1143(ptr) AccessChain 34(data) 37 57 38 + 1174: 21(int16_t) Load 1173 + 1175: 21(int16_t) GroupNonUniformIMul 42 Reduce 1174 + 1176: 1143(ptr) AccessChain 34(data) 1172 57 38 + Store 1176 1175 + 1177: 6(int) Load 8(invocation) + 1178: 1150(ptr) AccessChain 34(data) 46 57 + 1179: 22(i16vec4) Load 1178 + 1180:1149(i16vec2) VectorShuffle 1179 1179 0 1 + 1181:1149(i16vec2) GroupNonUniformIMul 42 Reduce 1180 + 1182: 1150(ptr) AccessChain 34(data) 1177 57 + 1183: 22(i16vec4) Load 1182 + 1184: 22(i16vec4) VectorShuffle 1183 1181 4 5 2 3 + Store 1182 1184 + 1185: 6(int) Load 8(invocation) + 1186: 1150(ptr) AccessChain 34(data) 57 57 + 1187: 22(i16vec4) Load 1186 + 1188:1159(i16vec3) VectorShuffle 1187 1187 0 1 2 + 1189:1159(i16vec3) GroupNonUniformIMul 42 Reduce 1188 + 1190: 1150(ptr) AccessChain 34(data) 1185 57 + 1191: 22(i16vec4) Load 1190 + 1192: 22(i16vec4) VectorShuffle 1191 1189 4 5 6 3 + Store 1190 1192 + 1193: 6(int) Load 8(invocation) + 1194: 1150(ptr) AccessChain 34(data) 67 57 + 1195: 22(i16vec4) Load 1194 + 1196: 22(i16vec4) GroupNonUniformIMul 42 Reduce 1195 + 1197: 1150(ptr) AccessChain 34(data) 1193 57 + Store 1197 1196 + 1198: 6(int) Load 8(invocation) + 1199: 1143(ptr) AccessChain 34(data) 37 57 38 + 1200: 21(int16_t) Load 1199 + 1201: 21(int16_t) GroupNonUniformSMin 42 Reduce 1200 + 1202: 1143(ptr) AccessChain 34(data) 1198 57 38 + Store 1202 1201 + 1203: 6(int) Load 8(invocation) + 1204: 1150(ptr) AccessChain 34(data) 46 57 + 1205: 22(i16vec4) Load 1204 + 1206:1149(i16vec2) VectorShuffle 1205 1205 0 1 + 1207:1149(i16vec2) GroupNonUniformSMin 42 Reduce 1206 + 1208: 1150(ptr) AccessChain 34(data) 1203 57 + 1209: 22(i16vec4) Load 1208 + 1210: 22(i16vec4) VectorShuffle 1209 1207 4 5 2 3 + Store 1208 1210 + 1211: 6(int) Load 8(invocation) + 1212: 1150(ptr) AccessChain 34(data) 57 57 + 1213: 22(i16vec4) Load 1212 + 1214:1159(i16vec3) VectorShuffle 1213 1213 0 1 2 + 1215:1159(i16vec3) GroupNonUniformSMin 42 Reduce 1214 + 1216: 1150(ptr) AccessChain 34(data) 1211 57 + 1217: 22(i16vec4) Load 1216 + 1218: 22(i16vec4) VectorShuffle 1217 1215 4 5 6 3 + Store 1216 1218 + 1219: 6(int) Load 8(invocation) + 1220: 1150(ptr) AccessChain 34(data) 67 57 + 1221: 22(i16vec4) Load 1220 + 1222: 22(i16vec4) GroupNonUniformSMin 42 Reduce 1221 + 1223: 1150(ptr) AccessChain 34(data) 1219 57 + Store 1223 1222 + 1224: 6(int) Load 8(invocation) + 1225: 1143(ptr) AccessChain 34(data) 37 57 38 + 1226: 21(int16_t) Load 1225 + 1227: 21(int16_t) GroupNonUniformSMax 42 Reduce 1226 + 1228: 1143(ptr) AccessChain 34(data) 1224 57 38 + Store 1228 1227 + 1229: 6(int) Load 8(invocation) + 1230: 1150(ptr) AccessChain 34(data) 46 57 + 1231: 22(i16vec4) Load 1230 + 1232:1149(i16vec2) VectorShuffle 1231 1231 0 1 + 1233:1149(i16vec2) GroupNonUniformSMax 42 Reduce 1232 + 1234: 1150(ptr) AccessChain 34(data) 1229 57 + 1235: 22(i16vec4) Load 1234 + 1236: 22(i16vec4) VectorShuffle 1235 1233 4 5 2 3 + Store 1234 1236 + 1237: 6(int) Load 8(invocation) + 1238: 1150(ptr) AccessChain 34(data) 57 57 + 1239: 22(i16vec4) Load 1238 + 1240:1159(i16vec3) VectorShuffle 1239 1239 0 1 2 + 1241:1159(i16vec3) GroupNonUniformSMax 42 Reduce 1240 + 1242: 1150(ptr) AccessChain 34(data) 1237 57 + 1243: 22(i16vec4) Load 1242 + 1244: 22(i16vec4) VectorShuffle 1243 1241 4 5 6 3 + Store 1242 1244 + 1245: 6(int) Load 8(invocation) + 1246: 1150(ptr) AccessChain 34(data) 67 57 + 1247: 22(i16vec4) Load 1246 + 1248: 22(i16vec4) GroupNonUniformSMax 42 Reduce 1247 + 1249: 1150(ptr) AccessChain 34(data) 1245 57 + Store 1249 1248 + 1250: 6(int) Load 8(invocation) + 1251: 1143(ptr) AccessChain 34(data) 37 57 38 + 1252: 21(int16_t) Load 1251 + 1253: 21(int16_t) GroupNonUniformBitwiseAnd 42 Reduce 1252 + 1254: 1143(ptr) AccessChain 34(data) 1250 57 38 + Store 1254 1253 + 1255: 6(int) Load 8(invocation) + 1256: 1150(ptr) AccessChain 34(data) 46 57 + 1257: 22(i16vec4) Load 1256 + 1258:1149(i16vec2) VectorShuffle 1257 1257 0 1 + 1259:1149(i16vec2) GroupNonUniformBitwiseAnd 42 Reduce 1258 + 1260: 1150(ptr) AccessChain 34(data) 1255 57 + 1261: 22(i16vec4) Load 1260 + 1262: 22(i16vec4) VectorShuffle 1261 1259 4 5 2 3 + Store 1260 1262 + 1263: 6(int) Load 8(invocation) + 1264: 1150(ptr) AccessChain 34(data) 57 57 + 1265: 22(i16vec4) Load 1264 + 1266:1159(i16vec3) VectorShuffle 1265 1265 0 1 2 + 1267:1159(i16vec3) GroupNonUniformBitwiseAnd 42 Reduce 1266 + 1268: 1150(ptr) AccessChain 34(data) 1263 57 + 1269: 22(i16vec4) Load 1268 + 1270: 22(i16vec4) VectorShuffle 1269 1267 4 5 6 3 + Store 1268 1270 + 1271: 6(int) Load 8(invocation) + 1272: 1150(ptr) AccessChain 34(data) 67 57 + 1273: 22(i16vec4) Load 1272 + 1274: 22(i16vec4) GroupNonUniformBitwiseAnd 42 Reduce 1273 + 1275: 1150(ptr) AccessChain 34(data) 1271 57 + Store 1275 1274 + 1276: 6(int) Load 8(invocation) + 1277: 1143(ptr) AccessChain 34(data) 37 57 38 + 1278: 21(int16_t) Load 1277 + 1279: 21(int16_t) GroupNonUniformBitwiseOr 42 Reduce 1278 + 1280: 1143(ptr) AccessChain 34(data) 1276 57 38 + Store 1280 1279 + 1281: 6(int) Load 8(invocation) + 1282: 1150(ptr) AccessChain 34(data) 46 57 + 1283: 22(i16vec4) Load 1282 + 1284:1149(i16vec2) VectorShuffle 1283 1283 0 1 + 1285:1149(i16vec2) GroupNonUniformBitwiseOr 42 Reduce 1284 + 1286: 1150(ptr) AccessChain 34(data) 1281 57 + 1287: 22(i16vec4) Load 1286 + 1288: 22(i16vec4) VectorShuffle 1287 1285 4 5 2 3 + Store 1286 1288 + 1289: 6(int) Load 8(invocation) + 1290: 1150(ptr) AccessChain 34(data) 57 57 + 1291: 22(i16vec4) Load 1290 + 1292:1159(i16vec3) VectorShuffle 1291 1291 0 1 2 + 1293:1159(i16vec3) GroupNonUniformBitwiseOr 42 Reduce 1292 + 1294: 1150(ptr) AccessChain 34(data) 1289 57 + 1295: 22(i16vec4) Load 1294 + 1296: 22(i16vec4) VectorShuffle 1295 1293 4 5 6 3 + Store 1294 1296 + 1297: 6(int) Load 8(invocation) + 1298: 1150(ptr) AccessChain 34(data) 67 57 + 1299: 22(i16vec4) Load 1298 + 1300: 22(i16vec4) GroupNonUniformBitwiseOr 42 Reduce 1299 + 1301: 1150(ptr) AccessChain 34(data) 1297 57 + Store 1301 1300 + 1302: 6(int) Load 8(invocation) + 1303: 1143(ptr) AccessChain 34(data) 37 57 38 + 1304: 21(int16_t) Load 1303 + 1305: 21(int16_t) GroupNonUniformBitwiseXor 42 Reduce 1304 + 1306: 1143(ptr) AccessChain 34(data) 1302 57 38 + Store 1306 1305 + 1307: 6(int) Load 8(invocation) + 1308: 1150(ptr) AccessChain 34(data) 46 57 + 1309: 22(i16vec4) Load 1308 + 1310:1149(i16vec2) VectorShuffle 1309 1309 0 1 + 1311:1149(i16vec2) GroupNonUniformBitwiseXor 42 Reduce 1310 + 1312: 1150(ptr) AccessChain 34(data) 1307 57 + 1313: 22(i16vec4) Load 1312 + 1314: 22(i16vec4) VectorShuffle 1313 1311 4 5 2 3 + Store 1312 1314 + 1315: 6(int) Load 8(invocation) + 1316: 1150(ptr) AccessChain 34(data) 57 57 + 1317: 22(i16vec4) Load 1316 + 1318:1159(i16vec3) VectorShuffle 1317 1317 0 1 2 + 1319:1159(i16vec3) GroupNonUniformBitwiseXor 42 Reduce 1318 + 1320: 1150(ptr) AccessChain 34(data) 1315 57 + 1321: 22(i16vec4) Load 1320 + 1322: 22(i16vec4) VectorShuffle 1321 1319 4 5 6 3 + Store 1320 1322 + 1323: 6(int) Load 8(invocation) + 1324: 1150(ptr) AccessChain 34(data) 67 57 + 1325: 22(i16vec4) Load 1324 + 1326: 22(i16vec4) GroupNonUniformBitwiseXor 42 Reduce 1325 + 1327: 1150(ptr) AccessChain 34(data) 1323 57 + Store 1327 1326 + 1328: 6(int) Load 8(invocation) + 1329: 1143(ptr) AccessChain 34(data) 37 57 38 + 1330: 21(int16_t) Load 1329 + 1331: 21(int16_t) GroupNonUniformIAdd 42 InclusiveScan 1330 + 1332: 1143(ptr) AccessChain 34(data) 1328 57 38 + Store 1332 1331 + 1333: 6(int) Load 8(invocation) + 1334: 1150(ptr) AccessChain 34(data) 46 57 + 1335: 22(i16vec4) Load 1334 + 1336:1149(i16vec2) VectorShuffle 1335 1335 0 1 + 1337:1149(i16vec2) GroupNonUniformIAdd 42 InclusiveScan 1336 + 1338: 1150(ptr) AccessChain 34(data) 1333 57 + 1339: 22(i16vec4) Load 1338 + 1340: 22(i16vec4) VectorShuffle 1339 1337 4 5 2 3 + Store 1338 1340 + 1341: 6(int) Load 8(invocation) + 1342: 1150(ptr) AccessChain 34(data) 57 57 + 1343: 22(i16vec4) Load 1342 + 1344:1159(i16vec3) VectorShuffle 1343 1343 0 1 2 + 1345:1159(i16vec3) GroupNonUniformIAdd 42 InclusiveScan 1344 + 1346: 1150(ptr) AccessChain 34(data) 1341 57 + 1347: 22(i16vec4) Load 1346 + 1348: 22(i16vec4) VectorShuffle 1347 1345 4 5 6 3 + Store 1346 1348 + 1349: 6(int) Load 8(invocation) + 1350: 1150(ptr) AccessChain 34(data) 67 57 + 1351: 22(i16vec4) Load 1350 + 1352: 22(i16vec4) GroupNonUniformIAdd 42 InclusiveScan 1351 + 1353: 1150(ptr) AccessChain 34(data) 1349 57 + Store 1353 1352 + 1354: 6(int) Load 8(invocation) + 1355: 1143(ptr) AccessChain 34(data) 37 57 38 + 1356: 21(int16_t) Load 1355 + 1357: 21(int16_t) GroupNonUniformIMul 42 InclusiveScan 1356 + 1358: 1143(ptr) AccessChain 34(data) 1354 57 38 + Store 1358 1357 + 1359: 6(int) Load 8(invocation) + 1360: 1150(ptr) AccessChain 34(data) 46 57 + 1361: 22(i16vec4) Load 1360 + 1362:1149(i16vec2) VectorShuffle 1361 1361 0 1 + 1363:1149(i16vec2) GroupNonUniformIMul 42 InclusiveScan 1362 + 1364: 1150(ptr) AccessChain 34(data) 1359 57 + 1365: 22(i16vec4) Load 1364 + 1366: 22(i16vec4) VectorShuffle 1365 1363 4 5 2 3 + Store 1364 1366 + 1367: 6(int) Load 8(invocation) + 1368: 1150(ptr) AccessChain 34(data) 57 57 + 1369: 22(i16vec4) Load 1368 + 1370:1159(i16vec3) VectorShuffle 1369 1369 0 1 2 + 1371:1159(i16vec3) GroupNonUniformIMul 42 InclusiveScan 1370 + 1372: 1150(ptr) AccessChain 34(data) 1367 57 + 1373: 22(i16vec4) Load 1372 + 1374: 22(i16vec4) VectorShuffle 1373 1371 4 5 6 3 + Store 1372 1374 + 1375: 6(int) Load 8(invocation) + 1376: 1150(ptr) AccessChain 34(data) 67 57 + 1377: 22(i16vec4) Load 1376 + 1378: 22(i16vec4) GroupNonUniformIMul 42 InclusiveScan 1377 + 1379: 1150(ptr) AccessChain 34(data) 1375 57 + Store 1379 1378 + 1380: 6(int) Load 8(invocation) + 1381: 1143(ptr) AccessChain 34(data) 37 57 38 + 1382: 21(int16_t) Load 1381 + 1383: 21(int16_t) GroupNonUniformSMin 42 InclusiveScan 1382 + 1384: 1143(ptr) AccessChain 34(data) 1380 57 38 + Store 1384 1383 + 1385: 6(int) Load 8(invocation) + 1386: 1150(ptr) AccessChain 34(data) 46 57 + 1387: 22(i16vec4) Load 1386 + 1388:1149(i16vec2) VectorShuffle 1387 1387 0 1 + 1389:1149(i16vec2) GroupNonUniformSMin 42 InclusiveScan 1388 + 1390: 1150(ptr) AccessChain 34(data) 1385 57 + 1391: 22(i16vec4) Load 1390 + 1392: 22(i16vec4) VectorShuffle 1391 1389 4 5 2 3 + Store 1390 1392 + 1393: 6(int) Load 8(invocation) + 1394: 1150(ptr) AccessChain 34(data) 57 57 + 1395: 22(i16vec4) Load 1394 + 1396:1159(i16vec3) VectorShuffle 1395 1395 0 1 2 + 1397:1159(i16vec3) GroupNonUniformSMin 42 InclusiveScan 1396 + 1398: 1150(ptr) AccessChain 34(data) 1393 57 + 1399: 22(i16vec4) Load 1398 + 1400: 22(i16vec4) VectorShuffle 1399 1397 4 5 6 3 + Store 1398 1400 + 1401: 6(int) Load 8(invocation) + 1402: 1150(ptr) AccessChain 34(data) 67 57 + 1403: 22(i16vec4) Load 1402 + 1404: 22(i16vec4) GroupNonUniformSMin 42 InclusiveScan 1403 + 1405: 1150(ptr) AccessChain 34(data) 1401 57 + Store 1405 1404 + 1406: 6(int) Load 8(invocation) + 1407: 1143(ptr) AccessChain 34(data) 37 57 38 + 1408: 21(int16_t) Load 1407 + 1409: 21(int16_t) GroupNonUniformSMax 42 InclusiveScan 1408 + 1410: 1143(ptr) AccessChain 34(data) 1406 57 38 + Store 1410 1409 + 1411: 6(int) Load 8(invocation) + 1412: 1150(ptr) AccessChain 34(data) 46 57 + 1413: 22(i16vec4) Load 1412 + 1414:1149(i16vec2) VectorShuffle 1413 1413 0 1 + 1415:1149(i16vec2) GroupNonUniformSMax 42 InclusiveScan 1414 + 1416: 1150(ptr) AccessChain 34(data) 1411 57 + 1417: 22(i16vec4) Load 1416 + 1418: 22(i16vec4) VectorShuffle 1417 1415 4 5 2 3 + Store 1416 1418 + 1419: 6(int) Load 8(invocation) + 1420: 1150(ptr) AccessChain 34(data) 57 57 + 1421: 22(i16vec4) Load 1420 + 1422:1159(i16vec3) VectorShuffle 1421 1421 0 1 2 + 1423:1159(i16vec3) GroupNonUniformSMax 42 InclusiveScan 1422 + 1424: 1150(ptr) AccessChain 34(data) 1419 57 + 1425: 22(i16vec4) Load 1424 + 1426: 22(i16vec4) VectorShuffle 1425 1423 4 5 6 3 + Store 1424 1426 + 1427: 6(int) Load 8(invocation) + 1428: 1150(ptr) AccessChain 34(data) 67 57 + 1429: 22(i16vec4) Load 1428 + 1430: 22(i16vec4) GroupNonUniformSMax 42 InclusiveScan 1429 + 1431: 1150(ptr) AccessChain 34(data) 1427 57 + Store 1431 1430 + 1432: 6(int) Load 8(invocation) + 1433: 1143(ptr) AccessChain 34(data) 37 57 38 + 1434: 21(int16_t) Load 1433 + 1435: 21(int16_t) GroupNonUniformBitwiseAnd 42 InclusiveScan 1434 + 1436: 1143(ptr) AccessChain 34(data) 1432 57 38 + Store 1436 1435 + 1437: 6(int) Load 8(invocation) + 1438: 1150(ptr) AccessChain 34(data) 46 57 + 1439: 22(i16vec4) Load 1438 + 1440:1149(i16vec2) VectorShuffle 1439 1439 0 1 + 1441:1149(i16vec2) GroupNonUniformBitwiseAnd 42 InclusiveScan 1440 + 1442: 1150(ptr) AccessChain 34(data) 1437 57 + 1443: 22(i16vec4) Load 1442 + 1444: 22(i16vec4) VectorShuffle 1443 1441 4 5 2 3 + Store 1442 1444 + 1445: 6(int) Load 8(invocation) + 1446: 1150(ptr) AccessChain 34(data) 57 57 + 1447: 22(i16vec4) Load 1446 + 1448:1159(i16vec3) VectorShuffle 1447 1447 0 1 2 + 1449:1159(i16vec3) GroupNonUniformBitwiseAnd 42 InclusiveScan 1448 + 1450: 1150(ptr) AccessChain 34(data) 1445 57 + 1451: 22(i16vec4) Load 1450 + 1452: 22(i16vec4) VectorShuffle 1451 1449 4 5 6 3 + Store 1450 1452 + 1453: 6(int) Load 8(invocation) + 1454: 1150(ptr) AccessChain 34(data) 67 57 + 1455: 22(i16vec4) Load 1454 + 1456: 22(i16vec4) GroupNonUniformBitwiseAnd 42 InclusiveScan 1455 + 1457: 1150(ptr) AccessChain 34(data) 1453 57 + Store 1457 1456 + 1458: 6(int) Load 8(invocation) + 1459: 1143(ptr) AccessChain 34(data) 37 57 38 + 1460: 21(int16_t) Load 1459 + 1461: 21(int16_t) GroupNonUniformBitwiseOr 42 InclusiveScan 1460 + 1462: 1143(ptr) AccessChain 34(data) 1458 57 38 + Store 1462 1461 + 1463: 6(int) Load 8(invocation) + 1464: 1150(ptr) AccessChain 34(data) 46 57 + 1465: 22(i16vec4) Load 1464 + 1466:1149(i16vec2) VectorShuffle 1465 1465 0 1 + 1467:1149(i16vec2) GroupNonUniformBitwiseOr 42 InclusiveScan 1466 + 1468: 1150(ptr) AccessChain 34(data) 1463 57 + 1469: 22(i16vec4) Load 1468 + 1470: 22(i16vec4) VectorShuffle 1469 1467 4 5 2 3 + Store 1468 1470 + 1471: 6(int) Load 8(invocation) + 1472: 1150(ptr) AccessChain 34(data) 57 57 + 1473: 22(i16vec4) Load 1472 + 1474:1159(i16vec3) VectorShuffle 1473 1473 0 1 2 + 1475:1159(i16vec3) GroupNonUniformBitwiseOr 42 InclusiveScan 1474 + 1476: 1150(ptr) AccessChain 34(data) 1471 57 + 1477: 22(i16vec4) Load 1476 + 1478: 22(i16vec4) VectorShuffle 1477 1475 4 5 6 3 + Store 1476 1478 + 1479: 6(int) Load 8(invocation) + 1480: 1150(ptr) AccessChain 34(data) 67 57 + 1481: 22(i16vec4) Load 1480 + 1482: 22(i16vec4) GroupNonUniformBitwiseOr 42 InclusiveScan 1481 + 1483: 1150(ptr) AccessChain 34(data) 1479 57 + Store 1483 1482 + 1484: 6(int) Load 8(invocation) + 1485: 1143(ptr) AccessChain 34(data) 37 57 38 + 1486: 21(int16_t) Load 1485 + 1487: 21(int16_t) GroupNonUniformBitwiseXor 42 InclusiveScan 1486 + 1488: 1143(ptr) AccessChain 34(data) 1484 57 38 + Store 1488 1487 + 1489: 6(int) Load 8(invocation) + 1490: 1150(ptr) AccessChain 34(data) 46 57 + 1491: 22(i16vec4) Load 1490 + 1492:1149(i16vec2) VectorShuffle 1491 1491 0 1 + 1493:1149(i16vec2) GroupNonUniformBitwiseXor 42 InclusiveScan 1492 + 1494: 1150(ptr) AccessChain 34(data) 1489 57 + 1495: 22(i16vec4) Load 1494 + 1496: 22(i16vec4) VectorShuffle 1495 1493 4 5 2 3 + Store 1494 1496 + 1497: 6(int) Load 8(invocation) + 1498: 1150(ptr) AccessChain 34(data) 57 57 + 1499: 22(i16vec4) Load 1498 + 1500:1159(i16vec3) VectorShuffle 1499 1499 0 1 2 + 1501:1159(i16vec3) GroupNonUniformBitwiseXor 42 InclusiveScan 1500 + 1502: 1150(ptr) AccessChain 34(data) 1497 57 + 1503: 22(i16vec4) Load 1502 + 1504: 22(i16vec4) VectorShuffle 1503 1501 4 5 6 3 + Store 1502 1504 + 1505: 6(int) Load 8(invocation) + 1506: 1150(ptr) AccessChain 34(data) 67 57 + 1507: 22(i16vec4) Load 1506 + 1508: 22(i16vec4) GroupNonUniformBitwiseXor 42 InclusiveScan 1507 + 1509: 1150(ptr) AccessChain 34(data) 1505 57 + Store 1509 1508 + 1510: 6(int) Load 8(invocation) + 1511: 1143(ptr) AccessChain 34(data) 37 57 38 + 1512: 21(int16_t) Load 1511 + 1513: 21(int16_t) GroupNonUniformIAdd 42 ExclusiveScan 1512 + 1514: 1143(ptr) AccessChain 34(data) 1510 57 38 + Store 1514 1513 + 1515: 6(int) Load 8(invocation) + 1516: 1150(ptr) AccessChain 34(data) 46 57 + 1517: 22(i16vec4) Load 1516 + 1518:1149(i16vec2) VectorShuffle 1517 1517 0 1 + 1519:1149(i16vec2) GroupNonUniformIAdd 42 ExclusiveScan 1518 + 1520: 1150(ptr) AccessChain 34(data) 1515 57 + 1521: 22(i16vec4) Load 1520 + 1522: 22(i16vec4) VectorShuffle 1521 1519 4 5 2 3 + Store 1520 1522 + 1523: 6(int) Load 8(invocation) + 1524: 1150(ptr) AccessChain 34(data) 57 57 + 1525: 22(i16vec4) Load 1524 + 1526:1159(i16vec3) VectorShuffle 1525 1525 0 1 2 + 1527:1159(i16vec3) GroupNonUniformIAdd 42 ExclusiveScan 1526 + 1528: 1150(ptr) AccessChain 34(data) 1523 57 + 1529: 22(i16vec4) Load 1528 + 1530: 22(i16vec4) VectorShuffle 1529 1527 4 5 6 3 + Store 1528 1530 + 1531: 6(int) Load 8(invocation) + 1532: 1150(ptr) AccessChain 34(data) 67 57 + 1533: 22(i16vec4) Load 1532 + 1534: 22(i16vec4) GroupNonUniformIAdd 42 ExclusiveScan 1533 + 1535: 1150(ptr) AccessChain 34(data) 1531 57 + Store 1535 1534 + 1536: 6(int) Load 8(invocation) + 1537: 1143(ptr) AccessChain 34(data) 37 57 38 + 1538: 21(int16_t) Load 1537 + 1539: 21(int16_t) GroupNonUniformIMul 42 ExclusiveScan 1538 + 1540: 1143(ptr) AccessChain 34(data) 1536 57 38 + Store 1540 1539 + 1541: 6(int) Load 8(invocation) + 1542: 1150(ptr) AccessChain 34(data) 46 57 + 1543: 22(i16vec4) Load 1542 + 1544:1149(i16vec2) VectorShuffle 1543 1543 0 1 + 1545:1149(i16vec2) GroupNonUniformIMul 42 ExclusiveScan 1544 + 1546: 1150(ptr) AccessChain 34(data) 1541 57 + 1547: 22(i16vec4) Load 1546 + 1548: 22(i16vec4) VectorShuffle 1547 1545 4 5 2 3 + Store 1546 1548 + 1549: 6(int) Load 8(invocation) + 1550: 1150(ptr) AccessChain 34(data) 57 57 + 1551: 22(i16vec4) Load 1550 + 1552:1159(i16vec3) VectorShuffle 1551 1551 0 1 2 + 1553:1159(i16vec3) GroupNonUniformIMul 42 ExclusiveScan 1552 + 1554: 1150(ptr) AccessChain 34(data) 1549 57 + 1555: 22(i16vec4) Load 1554 + 1556: 22(i16vec4) VectorShuffle 1555 1553 4 5 6 3 + Store 1554 1556 + 1557: 6(int) Load 8(invocation) + 1558: 1150(ptr) AccessChain 34(data) 67 57 + 1559: 22(i16vec4) Load 1558 + 1560: 22(i16vec4) GroupNonUniformIMul 42 ExclusiveScan 1559 + 1561: 1150(ptr) AccessChain 34(data) 1557 57 + Store 1561 1560 + 1562: 6(int) Load 8(invocation) + 1563: 1143(ptr) AccessChain 34(data) 37 57 38 + 1564: 21(int16_t) Load 1563 + 1565: 21(int16_t) GroupNonUniformSMin 42 ExclusiveScan 1564 + 1566: 1143(ptr) AccessChain 34(data) 1562 57 38 + Store 1566 1565 + 1567: 6(int) Load 8(invocation) + 1568: 1150(ptr) AccessChain 34(data) 46 57 + 1569: 22(i16vec4) Load 1568 + 1570:1149(i16vec2) VectorShuffle 1569 1569 0 1 + 1571:1149(i16vec2) GroupNonUniformSMin 42 ExclusiveScan 1570 + 1572: 1150(ptr) AccessChain 34(data) 1567 57 + 1573: 22(i16vec4) Load 1572 + 1574: 22(i16vec4) VectorShuffle 1573 1571 4 5 2 3 + Store 1572 1574 + 1575: 6(int) Load 8(invocation) + 1576: 1150(ptr) AccessChain 34(data) 57 57 + 1577: 22(i16vec4) Load 1576 + 1578:1159(i16vec3) VectorShuffle 1577 1577 0 1 2 + 1579:1159(i16vec3) GroupNonUniformSMin 42 ExclusiveScan 1578 + 1580: 1150(ptr) AccessChain 34(data) 1575 57 + 1581: 22(i16vec4) Load 1580 + 1582: 22(i16vec4) VectorShuffle 1581 1579 4 5 6 3 + Store 1580 1582 + 1583: 6(int) Load 8(invocation) + 1584: 1150(ptr) AccessChain 34(data) 67 57 + 1585: 22(i16vec4) Load 1584 + 1586: 22(i16vec4) GroupNonUniformSMin 42 ExclusiveScan 1585 + 1587: 1150(ptr) AccessChain 34(data) 1583 57 + Store 1587 1586 + 1588: 6(int) Load 8(invocation) + 1589: 1143(ptr) AccessChain 34(data) 37 57 38 + 1590: 21(int16_t) Load 1589 + 1591: 21(int16_t) GroupNonUniformSMax 42 ExclusiveScan 1590 + 1592: 1143(ptr) AccessChain 34(data) 1588 57 38 + Store 1592 1591 + 1593: 6(int) Load 8(invocation) + 1594: 1150(ptr) AccessChain 34(data) 46 57 + 1595: 22(i16vec4) Load 1594 + 1596:1149(i16vec2) VectorShuffle 1595 1595 0 1 + 1597:1149(i16vec2) GroupNonUniformSMax 42 ExclusiveScan 1596 + 1598: 1150(ptr) AccessChain 34(data) 1593 57 + 1599: 22(i16vec4) Load 1598 + 1600: 22(i16vec4) VectorShuffle 1599 1597 4 5 2 3 + Store 1598 1600 + 1601: 6(int) Load 8(invocation) + 1602: 1150(ptr) AccessChain 34(data) 57 57 + 1603: 22(i16vec4) Load 1602 + 1604:1159(i16vec3) VectorShuffle 1603 1603 0 1 2 + 1605:1159(i16vec3) GroupNonUniformSMax 42 ExclusiveScan 1604 + 1606: 1150(ptr) AccessChain 34(data) 1601 57 + 1607: 22(i16vec4) Load 1606 + 1608: 22(i16vec4) VectorShuffle 1607 1605 4 5 6 3 + Store 1606 1608 + 1609: 6(int) Load 8(invocation) + 1610: 1150(ptr) AccessChain 34(data) 67 57 + 1611: 22(i16vec4) Load 1610 + 1612: 22(i16vec4) GroupNonUniformSMax 42 ExclusiveScan 1611 + 1613: 1150(ptr) AccessChain 34(data) 1609 57 + Store 1613 1612 + 1614: 6(int) Load 8(invocation) + 1615: 1143(ptr) AccessChain 34(data) 37 57 38 + 1616: 21(int16_t) Load 1615 + 1617: 21(int16_t) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1616 + 1618: 1143(ptr) AccessChain 34(data) 1614 57 38 + Store 1618 1617 + 1619: 6(int) Load 8(invocation) + 1620: 1150(ptr) AccessChain 34(data) 46 57 + 1621: 22(i16vec4) Load 1620 + 1622:1149(i16vec2) VectorShuffle 1621 1621 0 1 + 1623:1149(i16vec2) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1622 + 1624: 1150(ptr) AccessChain 34(data) 1619 57 + 1625: 22(i16vec4) Load 1624 + 1626: 22(i16vec4) VectorShuffle 1625 1623 4 5 2 3 + Store 1624 1626 + 1627: 6(int) Load 8(invocation) + 1628: 1150(ptr) AccessChain 34(data) 57 57 + 1629: 22(i16vec4) Load 1628 + 1630:1159(i16vec3) VectorShuffle 1629 1629 0 1 2 + 1631:1159(i16vec3) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1630 + 1632: 1150(ptr) AccessChain 34(data) 1627 57 + 1633: 22(i16vec4) Load 1632 + 1634: 22(i16vec4) VectorShuffle 1633 1631 4 5 6 3 + Store 1632 1634 + 1635: 6(int) Load 8(invocation) + 1636: 1150(ptr) AccessChain 34(data) 67 57 + 1637: 22(i16vec4) Load 1636 + 1638: 22(i16vec4) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1637 + 1639: 1150(ptr) AccessChain 34(data) 1635 57 + Store 1639 1638 + 1640: 6(int) Load 8(invocation) + 1641: 1143(ptr) AccessChain 34(data) 37 57 38 + 1642: 21(int16_t) Load 1641 + 1643: 21(int16_t) GroupNonUniformBitwiseOr 42 ExclusiveScan 1642 + 1644: 1143(ptr) AccessChain 34(data) 1640 57 38 + Store 1644 1643 + 1645: 6(int) Load 8(invocation) + 1646: 1150(ptr) AccessChain 34(data) 46 57 + 1647: 22(i16vec4) Load 1646 + 1648:1149(i16vec2) VectorShuffle 1647 1647 0 1 + 1649:1149(i16vec2) GroupNonUniformBitwiseOr 42 ExclusiveScan 1648 + 1650: 1150(ptr) AccessChain 34(data) 1645 57 + 1651: 22(i16vec4) Load 1650 + 1652: 22(i16vec4) VectorShuffle 1651 1649 4 5 2 3 + Store 1650 1652 + 1653: 6(int) Load 8(invocation) + 1654: 1150(ptr) AccessChain 34(data) 57 57 + 1655: 22(i16vec4) Load 1654 + 1656:1159(i16vec3) VectorShuffle 1655 1655 0 1 2 + 1657:1159(i16vec3) GroupNonUniformBitwiseOr 42 ExclusiveScan 1656 + 1658: 1150(ptr) AccessChain 34(data) 1653 57 + 1659: 22(i16vec4) Load 1658 + 1660: 22(i16vec4) VectorShuffle 1659 1657 4 5 6 3 + Store 1658 1660 + 1661: 6(int) Load 8(invocation) + 1662: 1150(ptr) AccessChain 34(data) 67 57 + 1663: 22(i16vec4) Load 1662 + 1664: 22(i16vec4) GroupNonUniformBitwiseOr 42 ExclusiveScan 1663 + 1665: 1150(ptr) AccessChain 34(data) 1661 57 + Store 1665 1664 + 1666: 6(int) Load 8(invocation) + 1667: 1143(ptr) AccessChain 34(data) 37 57 38 + 1668: 21(int16_t) Load 1667 + 1669: 21(int16_t) GroupNonUniformBitwiseXor 42 ExclusiveScan 1668 + 1670: 1143(ptr) AccessChain 34(data) 1666 57 38 + Store 1670 1669 + 1671: 6(int) Load 8(invocation) + 1672: 1150(ptr) AccessChain 34(data) 46 57 + 1673: 22(i16vec4) Load 1672 + 1674:1149(i16vec2) VectorShuffle 1673 1673 0 1 + 1675:1149(i16vec2) GroupNonUniformBitwiseXor 42 ExclusiveScan 1674 + 1676: 1150(ptr) AccessChain 34(data) 1671 57 + 1677: 22(i16vec4) Load 1676 + 1678: 22(i16vec4) VectorShuffle 1677 1675 4 5 2 3 + Store 1676 1678 + 1679: 6(int) Load 8(invocation) + 1680: 1150(ptr) AccessChain 34(data) 57 57 + 1681: 22(i16vec4) Load 1680 + 1682:1159(i16vec3) VectorShuffle 1681 1681 0 1 2 + 1683:1159(i16vec3) GroupNonUniformBitwiseXor 42 ExclusiveScan 1682 + 1684: 1150(ptr) AccessChain 34(data) 1679 57 + 1685: 22(i16vec4) Load 1684 + 1686: 22(i16vec4) VectorShuffle 1685 1683 4 5 6 3 + Store 1684 1686 + 1687: 6(int) Load 8(invocation) + 1688: 1150(ptr) AccessChain 34(data) 67 57 + 1689: 22(i16vec4) Load 1688 + 1690: 22(i16vec4) GroupNonUniformBitwiseXor 42 ExclusiveScan 1689 + 1691: 1150(ptr) AccessChain 34(data) 1687 57 + Store 1691 1690 + 1692: 6(int) Load 8(invocation) + 1694: 1693(ptr) AccessChain 34(data) 37 67 38 + 1695: 23(int16_t) Load 1694 + 1696: 23(int16_t) GroupNonUniformIAdd 42 Reduce 1695 + 1697: 1693(ptr) AccessChain 34(data) 1692 67 38 + Store 1697 1696 + 1698: 6(int) Load 8(invocation) + 1701: 1700(ptr) AccessChain 34(data) 46 67 + 1702: 24(i16vec4) Load 1701 + 1703:1699(i16vec2) VectorShuffle 1702 1702 0 1 + 1704:1699(i16vec2) GroupNonUniformIAdd 42 Reduce 1703 + 1705: 1700(ptr) AccessChain 34(data) 1698 67 + 1706: 24(i16vec4) Load 1705 + 1707: 24(i16vec4) VectorShuffle 1706 1704 4 5 2 3 + Store 1705 1707 + 1708: 6(int) Load 8(invocation) + 1710: 1700(ptr) AccessChain 34(data) 57 67 + 1711: 24(i16vec4) Load 1710 + 1712:1709(i16vec3) VectorShuffle 1711 1711 0 1 2 + 1713:1709(i16vec3) GroupNonUniformIAdd 42 Reduce 1712 + 1714: 1700(ptr) AccessChain 34(data) 1708 67 + 1715: 24(i16vec4) Load 1714 + 1716: 24(i16vec4) VectorShuffle 1715 1713 4 5 6 3 + Store 1714 1716 + 1717: 6(int) Load 8(invocation) + 1718: 1700(ptr) AccessChain 34(data) 67 67 + 1719: 24(i16vec4) Load 1718 + 1720: 24(i16vec4) GroupNonUniformIAdd 42 Reduce 1719 + 1721: 1700(ptr) AccessChain 34(data) 1717 67 + Store 1721 1720 + 1722: 6(int) Load 8(invocation) + 1723: 1693(ptr) AccessChain 34(data) 37 67 38 + 1724: 23(int16_t) Load 1723 + 1725: 23(int16_t) GroupNonUniformIMul 42 Reduce 1724 + 1726: 1693(ptr) AccessChain 34(data) 1722 67 38 + Store 1726 1725 + 1727: 6(int) Load 8(invocation) + 1728: 1700(ptr) AccessChain 34(data) 46 67 + 1729: 24(i16vec4) Load 1728 + 1730:1699(i16vec2) VectorShuffle 1729 1729 0 1 + 1731:1699(i16vec2) GroupNonUniformIMul 42 Reduce 1730 + 1732: 1700(ptr) AccessChain 34(data) 1727 67 + 1733: 24(i16vec4) Load 1732 + 1734: 24(i16vec4) VectorShuffle 1733 1731 4 5 2 3 + Store 1732 1734 + 1735: 6(int) Load 8(invocation) + 1736: 1700(ptr) AccessChain 34(data) 57 67 + 1737: 24(i16vec4) Load 1736 + 1738:1709(i16vec3) VectorShuffle 1737 1737 0 1 2 + 1739:1709(i16vec3) GroupNonUniformIMul 42 Reduce 1738 + 1740: 1700(ptr) AccessChain 34(data) 1735 67 + 1741: 24(i16vec4) Load 1740 + 1742: 24(i16vec4) VectorShuffle 1741 1739 4 5 6 3 + Store 1740 1742 + 1743: 6(int) Load 8(invocation) + 1744: 1700(ptr) AccessChain 34(data) 67 67 + 1745: 24(i16vec4) Load 1744 + 1746: 24(i16vec4) GroupNonUniformIMul 42 Reduce 1745 + 1747: 1700(ptr) AccessChain 34(data) 1743 67 + Store 1747 1746 + 1748: 6(int) Load 8(invocation) + 1749: 1693(ptr) AccessChain 34(data) 37 67 38 + 1750: 23(int16_t) Load 1749 + 1751: 23(int16_t) GroupNonUniformUMin 42 Reduce 1750 + 1752: 1693(ptr) AccessChain 34(data) 1748 67 38 + Store 1752 1751 + 1753: 6(int) Load 8(invocation) + 1754: 1700(ptr) AccessChain 34(data) 46 67 + 1755: 24(i16vec4) Load 1754 + 1756:1699(i16vec2) VectorShuffle 1755 1755 0 1 + 1757:1699(i16vec2) GroupNonUniformUMin 42 Reduce 1756 + 1758: 1700(ptr) AccessChain 34(data) 1753 67 + 1759: 24(i16vec4) Load 1758 + 1760: 24(i16vec4) VectorShuffle 1759 1757 4 5 2 3 + Store 1758 1760 + 1761: 6(int) Load 8(invocation) + 1762: 1700(ptr) AccessChain 34(data) 57 67 + 1763: 24(i16vec4) Load 1762 + 1764:1709(i16vec3) VectorShuffle 1763 1763 0 1 2 + 1765:1709(i16vec3) GroupNonUniformUMin 42 Reduce 1764 + 1766: 1700(ptr) AccessChain 34(data) 1761 67 + 1767: 24(i16vec4) Load 1766 + 1768: 24(i16vec4) VectorShuffle 1767 1765 4 5 6 3 + Store 1766 1768 + 1769: 6(int) Load 8(invocation) + 1770: 1700(ptr) AccessChain 34(data) 67 67 + 1771: 24(i16vec4) Load 1770 + 1772: 24(i16vec4) GroupNonUniformUMin 42 Reduce 1771 + 1773: 1700(ptr) AccessChain 34(data) 1769 67 + Store 1773 1772 + 1774: 6(int) Load 8(invocation) + 1775: 1693(ptr) AccessChain 34(data) 37 67 38 + 1776: 23(int16_t) Load 1775 + 1777: 23(int16_t) GroupNonUniformUMax 42 Reduce 1776 + 1778: 1693(ptr) AccessChain 34(data) 1774 67 38 + Store 1778 1777 + 1779: 6(int) Load 8(invocation) + 1780: 1700(ptr) AccessChain 34(data) 46 67 + 1781: 24(i16vec4) Load 1780 + 1782:1699(i16vec2) VectorShuffle 1781 1781 0 1 + 1783:1699(i16vec2) GroupNonUniformUMax 42 Reduce 1782 + 1784: 1700(ptr) AccessChain 34(data) 1779 67 + 1785: 24(i16vec4) Load 1784 + 1786: 24(i16vec4) VectorShuffle 1785 1783 4 5 2 3 + Store 1784 1786 + 1787: 6(int) Load 8(invocation) + 1788: 1700(ptr) AccessChain 34(data) 57 67 + 1789: 24(i16vec4) Load 1788 + 1790:1709(i16vec3) VectorShuffle 1789 1789 0 1 2 + 1791:1709(i16vec3) GroupNonUniformUMax 42 Reduce 1790 + 1792: 1700(ptr) AccessChain 34(data) 1787 67 + 1793: 24(i16vec4) Load 1792 + 1794: 24(i16vec4) VectorShuffle 1793 1791 4 5 6 3 + Store 1792 1794 + 1795: 6(int) Load 8(invocation) + 1796: 1700(ptr) AccessChain 34(data) 67 67 + 1797: 24(i16vec4) Load 1796 + 1798: 24(i16vec4) GroupNonUniformUMax 42 Reduce 1797 + 1799: 1700(ptr) AccessChain 34(data) 1795 67 + Store 1799 1798 + 1800: 6(int) Load 8(invocation) + 1801: 1693(ptr) AccessChain 34(data) 37 67 38 + 1802: 23(int16_t) Load 1801 + 1803: 23(int16_t) GroupNonUniformBitwiseAnd 42 Reduce 1802 + 1804: 1693(ptr) AccessChain 34(data) 1800 67 38 + Store 1804 1803 + 1805: 6(int) Load 8(invocation) + 1806: 1700(ptr) AccessChain 34(data) 46 67 + 1807: 24(i16vec4) Load 1806 + 1808:1699(i16vec2) VectorShuffle 1807 1807 0 1 + 1809:1699(i16vec2) GroupNonUniformBitwiseAnd 42 Reduce 1808 + 1810: 1700(ptr) AccessChain 34(data) 1805 67 + 1811: 24(i16vec4) Load 1810 + 1812: 24(i16vec4) VectorShuffle 1811 1809 4 5 2 3 + Store 1810 1812 + 1813: 6(int) Load 8(invocation) + 1814: 1700(ptr) AccessChain 34(data) 57 67 + 1815: 24(i16vec4) Load 1814 + 1816:1709(i16vec3) VectorShuffle 1815 1815 0 1 2 + 1817:1709(i16vec3) GroupNonUniformBitwiseAnd 42 Reduce 1816 + 1818: 1700(ptr) AccessChain 34(data) 1813 67 + 1819: 24(i16vec4) Load 1818 + 1820: 24(i16vec4) VectorShuffle 1819 1817 4 5 6 3 + Store 1818 1820 + 1821: 6(int) Load 8(invocation) + 1822: 1700(ptr) AccessChain 34(data) 67 67 + 1823: 24(i16vec4) Load 1822 + 1824: 24(i16vec4) GroupNonUniformBitwiseAnd 42 Reduce 1823 + 1825: 1700(ptr) AccessChain 34(data) 1821 67 + Store 1825 1824 + 1826: 6(int) Load 8(invocation) + 1827: 1693(ptr) AccessChain 34(data) 37 67 38 + 1828: 23(int16_t) Load 1827 + 1829: 23(int16_t) GroupNonUniformBitwiseOr 42 Reduce 1828 + 1830: 1693(ptr) AccessChain 34(data) 1826 67 38 + Store 1830 1829 + 1831: 6(int) Load 8(invocation) + 1832: 1700(ptr) AccessChain 34(data) 46 67 + 1833: 24(i16vec4) Load 1832 + 1834:1699(i16vec2) VectorShuffle 1833 1833 0 1 + 1835:1699(i16vec2) GroupNonUniformBitwiseOr 42 Reduce 1834 + 1836: 1700(ptr) AccessChain 34(data) 1831 67 + 1837: 24(i16vec4) Load 1836 + 1838: 24(i16vec4) VectorShuffle 1837 1835 4 5 2 3 + Store 1836 1838 + 1839: 6(int) Load 8(invocation) + 1840: 1700(ptr) AccessChain 34(data) 57 67 + 1841: 24(i16vec4) Load 1840 + 1842:1709(i16vec3) VectorShuffle 1841 1841 0 1 2 + 1843:1709(i16vec3) GroupNonUniformBitwiseOr 42 Reduce 1842 + 1844: 1700(ptr) AccessChain 34(data) 1839 67 + 1845: 24(i16vec4) Load 1844 + 1846: 24(i16vec4) VectorShuffle 1845 1843 4 5 6 3 + Store 1844 1846 + 1847: 6(int) Load 8(invocation) + 1848: 1700(ptr) AccessChain 34(data) 67 67 + 1849: 24(i16vec4) Load 1848 + 1850: 24(i16vec4) GroupNonUniformBitwiseOr 42 Reduce 1849 + 1851: 1700(ptr) AccessChain 34(data) 1847 67 + Store 1851 1850 + 1852: 6(int) Load 8(invocation) + 1853: 1693(ptr) AccessChain 34(data) 37 67 38 + 1854: 23(int16_t) Load 1853 + 1855: 23(int16_t) GroupNonUniformBitwiseXor 42 Reduce 1854 + 1856: 1693(ptr) AccessChain 34(data) 1852 67 38 + Store 1856 1855 + 1857: 6(int) Load 8(invocation) + 1858: 1700(ptr) AccessChain 34(data) 46 67 + 1859: 24(i16vec4) Load 1858 + 1860:1699(i16vec2) VectorShuffle 1859 1859 0 1 + 1861:1699(i16vec2) GroupNonUniformBitwiseXor 42 Reduce 1860 + 1862: 1700(ptr) AccessChain 34(data) 1857 67 + 1863: 24(i16vec4) Load 1862 + 1864: 24(i16vec4) VectorShuffle 1863 1861 4 5 2 3 + Store 1862 1864 + 1865: 6(int) Load 8(invocation) + 1866: 1700(ptr) AccessChain 34(data) 57 67 + 1867: 24(i16vec4) Load 1866 + 1868:1709(i16vec3) VectorShuffle 1867 1867 0 1 2 + 1869:1709(i16vec3) GroupNonUniformBitwiseXor 42 Reduce 1868 + 1870: 1700(ptr) AccessChain 34(data) 1865 67 + 1871: 24(i16vec4) Load 1870 + 1872: 24(i16vec4) VectorShuffle 1871 1869 4 5 6 3 + Store 1870 1872 + 1873: 6(int) Load 8(invocation) + 1874: 1700(ptr) AccessChain 34(data) 67 67 + 1875: 24(i16vec4) Load 1874 + 1876: 24(i16vec4) GroupNonUniformBitwiseXor 42 Reduce 1875 + 1877: 1700(ptr) AccessChain 34(data) 1873 67 + Store 1877 1876 + 1878: 6(int) Load 8(invocation) + 1879: 1693(ptr) AccessChain 34(data) 37 67 38 + 1880: 23(int16_t) Load 1879 + 1881: 23(int16_t) GroupNonUniformIAdd 42 InclusiveScan 1880 + 1882: 1693(ptr) AccessChain 34(data) 1878 67 38 + Store 1882 1881 + 1883: 6(int) Load 8(invocation) + 1884: 1700(ptr) AccessChain 34(data) 46 67 + 1885: 24(i16vec4) Load 1884 + 1886:1699(i16vec2) VectorShuffle 1885 1885 0 1 + 1887:1699(i16vec2) GroupNonUniformIAdd 42 InclusiveScan 1886 + 1888: 1700(ptr) AccessChain 34(data) 1883 67 + 1889: 24(i16vec4) Load 1888 + 1890: 24(i16vec4) VectorShuffle 1889 1887 4 5 2 3 + Store 1888 1890 + 1891: 6(int) Load 8(invocation) + 1892: 1700(ptr) AccessChain 34(data) 57 67 + 1893: 24(i16vec4) Load 1892 + 1894:1709(i16vec3) VectorShuffle 1893 1893 0 1 2 + 1895:1709(i16vec3) GroupNonUniformIAdd 42 InclusiveScan 1894 + 1896: 1700(ptr) AccessChain 34(data) 1891 67 + 1897: 24(i16vec4) Load 1896 + 1898: 24(i16vec4) VectorShuffle 1897 1895 4 5 6 3 + Store 1896 1898 + 1899: 6(int) Load 8(invocation) + 1900: 1700(ptr) AccessChain 34(data) 67 67 + 1901: 24(i16vec4) Load 1900 + 1902: 24(i16vec4) GroupNonUniformIAdd 42 InclusiveScan 1901 + 1903: 1700(ptr) AccessChain 34(data) 1899 67 + Store 1903 1902 + 1904: 6(int) Load 8(invocation) + 1905: 1693(ptr) AccessChain 34(data) 37 67 38 + 1906: 23(int16_t) Load 1905 + 1907: 23(int16_t) GroupNonUniformIMul 42 InclusiveScan 1906 + 1908: 1693(ptr) AccessChain 34(data) 1904 67 38 + Store 1908 1907 + 1909: 6(int) Load 8(invocation) + 1910: 1700(ptr) AccessChain 34(data) 46 67 + 1911: 24(i16vec4) Load 1910 + 1912:1699(i16vec2) VectorShuffle 1911 1911 0 1 + 1913:1699(i16vec2) GroupNonUniformIMul 42 InclusiveScan 1912 + 1914: 1700(ptr) AccessChain 34(data) 1909 67 + 1915: 24(i16vec4) Load 1914 + 1916: 24(i16vec4) VectorShuffle 1915 1913 4 5 2 3 + Store 1914 1916 + 1917: 6(int) Load 8(invocation) + 1918: 1700(ptr) AccessChain 34(data) 57 67 + 1919: 24(i16vec4) Load 1918 + 1920:1709(i16vec3) VectorShuffle 1919 1919 0 1 2 + 1921:1709(i16vec3) GroupNonUniformIMul 42 InclusiveScan 1920 + 1922: 1700(ptr) AccessChain 34(data) 1917 67 + 1923: 24(i16vec4) Load 1922 + 1924: 24(i16vec4) VectorShuffle 1923 1921 4 5 6 3 + Store 1922 1924 + 1925: 6(int) Load 8(invocation) + 1926: 1700(ptr) AccessChain 34(data) 67 67 + 1927: 24(i16vec4) Load 1926 + 1928: 24(i16vec4) GroupNonUniformIMul 42 InclusiveScan 1927 + 1929: 1700(ptr) AccessChain 34(data) 1925 67 + Store 1929 1928 + 1930: 6(int) Load 8(invocation) + 1931: 1693(ptr) AccessChain 34(data) 37 67 38 + 1932: 23(int16_t) Load 1931 + 1933: 23(int16_t) GroupNonUniformUMin 42 InclusiveScan 1932 + 1934: 1693(ptr) AccessChain 34(data) 1930 67 38 + Store 1934 1933 + 1935: 6(int) Load 8(invocation) + 1936: 1700(ptr) AccessChain 34(data) 46 67 + 1937: 24(i16vec4) Load 1936 + 1938:1699(i16vec2) VectorShuffle 1937 1937 0 1 + 1939:1699(i16vec2) GroupNonUniformUMin 42 InclusiveScan 1938 + 1940: 1700(ptr) AccessChain 34(data) 1935 67 + 1941: 24(i16vec4) Load 1940 + 1942: 24(i16vec4) VectorShuffle 1941 1939 4 5 2 3 + Store 1940 1942 + 1943: 6(int) Load 8(invocation) + 1944: 1700(ptr) AccessChain 34(data) 57 67 + 1945: 24(i16vec4) Load 1944 + 1946:1709(i16vec3) VectorShuffle 1945 1945 0 1 2 + 1947:1709(i16vec3) GroupNonUniformUMin 42 InclusiveScan 1946 + 1948: 1700(ptr) AccessChain 34(data) 1943 67 + 1949: 24(i16vec4) Load 1948 + 1950: 24(i16vec4) VectorShuffle 1949 1947 4 5 6 3 + Store 1948 1950 + 1951: 6(int) Load 8(invocation) + 1952: 1700(ptr) AccessChain 34(data) 67 67 + 1953: 24(i16vec4) Load 1952 + 1954: 24(i16vec4) GroupNonUniformUMin 42 InclusiveScan 1953 + 1955: 1700(ptr) AccessChain 34(data) 1951 67 + Store 1955 1954 + 1956: 6(int) Load 8(invocation) + 1957: 1693(ptr) AccessChain 34(data) 37 67 38 + 1958: 23(int16_t) Load 1957 + 1959: 23(int16_t) GroupNonUniformUMax 42 InclusiveScan 1958 + 1960: 1693(ptr) AccessChain 34(data) 1956 67 38 + Store 1960 1959 + 1961: 6(int) Load 8(invocation) + 1962: 1700(ptr) AccessChain 34(data) 46 67 + 1963: 24(i16vec4) Load 1962 + 1964:1699(i16vec2) VectorShuffle 1963 1963 0 1 + 1965:1699(i16vec2) GroupNonUniformUMax 42 InclusiveScan 1964 + 1966: 1700(ptr) AccessChain 34(data) 1961 67 + 1967: 24(i16vec4) Load 1966 + 1968: 24(i16vec4) VectorShuffle 1967 1965 4 5 2 3 + Store 1966 1968 + 1969: 6(int) Load 8(invocation) + 1970: 1700(ptr) AccessChain 34(data) 57 67 + 1971: 24(i16vec4) Load 1970 + 1972:1709(i16vec3) VectorShuffle 1971 1971 0 1 2 + 1973:1709(i16vec3) GroupNonUniformUMax 42 InclusiveScan 1972 + 1974: 1700(ptr) AccessChain 34(data) 1969 67 + 1975: 24(i16vec4) Load 1974 + 1976: 24(i16vec4) VectorShuffle 1975 1973 4 5 6 3 + Store 1974 1976 + 1977: 6(int) Load 8(invocation) + 1978: 1700(ptr) AccessChain 34(data) 67 67 + 1979: 24(i16vec4) Load 1978 + 1980: 24(i16vec4) GroupNonUniformUMax 42 InclusiveScan 1979 + 1981: 1700(ptr) AccessChain 34(data) 1977 67 + Store 1981 1980 + 1982: 6(int) Load 8(invocation) + 1983: 1693(ptr) AccessChain 34(data) 37 67 38 + 1984: 23(int16_t) Load 1983 + 1985: 23(int16_t) GroupNonUniformBitwiseAnd 42 InclusiveScan 1984 + 1986: 1693(ptr) AccessChain 34(data) 1982 67 38 + Store 1986 1985 + 1987: 6(int) Load 8(invocation) + 1988: 1700(ptr) AccessChain 34(data) 46 67 + 1989: 24(i16vec4) Load 1988 + 1990:1699(i16vec2) VectorShuffle 1989 1989 0 1 + 1991:1699(i16vec2) GroupNonUniformBitwiseAnd 42 InclusiveScan 1990 + 1992: 1700(ptr) AccessChain 34(data) 1987 67 + 1993: 24(i16vec4) Load 1992 + 1994: 24(i16vec4) VectorShuffle 1993 1991 4 5 2 3 + Store 1992 1994 + 1995: 6(int) Load 8(invocation) + 1996: 1700(ptr) AccessChain 34(data) 57 67 + 1997: 24(i16vec4) Load 1996 + 1998:1709(i16vec3) VectorShuffle 1997 1997 0 1 2 + 1999:1709(i16vec3) GroupNonUniformBitwiseAnd 42 InclusiveScan 1998 + 2000: 1700(ptr) AccessChain 34(data) 1995 67 + 2001: 24(i16vec4) Load 2000 + 2002: 24(i16vec4) VectorShuffle 2001 1999 4 5 6 3 + Store 2000 2002 + 2003: 6(int) Load 8(invocation) + 2004: 1700(ptr) AccessChain 34(data) 67 67 + 2005: 24(i16vec4) Load 2004 + 2006: 24(i16vec4) GroupNonUniformBitwiseAnd 42 InclusiveScan 2005 + 2007: 1700(ptr) AccessChain 34(data) 2003 67 + Store 2007 2006 + 2008: 6(int) Load 8(invocation) + 2009: 1693(ptr) AccessChain 34(data) 37 67 38 + 2010: 23(int16_t) Load 2009 + 2011: 23(int16_t) GroupNonUniformBitwiseOr 42 InclusiveScan 2010 + 2012: 1693(ptr) AccessChain 34(data) 2008 67 38 + Store 2012 2011 + 2013: 6(int) Load 8(invocation) + 2014: 1700(ptr) AccessChain 34(data) 46 67 + 2015: 24(i16vec4) Load 2014 + 2016:1699(i16vec2) VectorShuffle 2015 2015 0 1 + 2017:1699(i16vec2) GroupNonUniformBitwiseOr 42 InclusiveScan 2016 + 2018: 1700(ptr) AccessChain 34(data) 2013 67 + 2019: 24(i16vec4) Load 2018 + 2020: 24(i16vec4) VectorShuffle 2019 2017 4 5 2 3 + Store 2018 2020 + 2021: 6(int) Load 8(invocation) + 2022: 1700(ptr) AccessChain 34(data) 57 67 + 2023: 24(i16vec4) Load 2022 + 2024:1709(i16vec3) VectorShuffle 2023 2023 0 1 2 + 2025:1709(i16vec3) GroupNonUniformBitwiseOr 42 InclusiveScan 2024 + 2026: 1700(ptr) AccessChain 34(data) 2021 67 + 2027: 24(i16vec4) Load 2026 + 2028: 24(i16vec4) VectorShuffle 2027 2025 4 5 6 3 + Store 2026 2028 + 2029: 6(int) Load 8(invocation) + 2030: 1700(ptr) AccessChain 34(data) 67 67 + 2031: 24(i16vec4) Load 2030 + 2032: 24(i16vec4) GroupNonUniformBitwiseOr 42 InclusiveScan 2031 + 2033: 1700(ptr) AccessChain 34(data) 2029 67 + Store 2033 2032 + 2034: 6(int) Load 8(invocation) + 2035: 1693(ptr) AccessChain 34(data) 37 67 38 + 2036: 23(int16_t) Load 2035 + 2037: 23(int16_t) GroupNonUniformBitwiseXor 42 InclusiveScan 2036 + 2038: 1693(ptr) AccessChain 34(data) 2034 67 38 + Store 2038 2037 + 2039: 6(int) Load 8(invocation) + 2040: 1700(ptr) AccessChain 34(data) 46 67 + 2041: 24(i16vec4) Load 2040 + 2042:1699(i16vec2) VectorShuffle 2041 2041 0 1 + 2043:1699(i16vec2) GroupNonUniformBitwiseXor 42 InclusiveScan 2042 + 2044: 1700(ptr) AccessChain 34(data) 2039 67 + 2045: 24(i16vec4) Load 2044 + 2046: 24(i16vec4) VectorShuffle 2045 2043 4 5 2 3 + Store 2044 2046 + 2047: 6(int) Load 8(invocation) + 2048: 1700(ptr) AccessChain 34(data) 57 67 + 2049: 24(i16vec4) Load 2048 + 2050:1709(i16vec3) VectorShuffle 2049 2049 0 1 2 + 2051:1709(i16vec3) GroupNonUniformBitwiseXor 42 InclusiveScan 2050 + 2052: 1700(ptr) AccessChain 34(data) 2047 67 + 2053: 24(i16vec4) Load 2052 + 2054: 24(i16vec4) VectorShuffle 2053 2051 4 5 6 3 + Store 2052 2054 + 2055: 6(int) Load 8(invocation) + 2056: 1700(ptr) AccessChain 34(data) 67 67 + 2057: 24(i16vec4) Load 2056 + 2058: 24(i16vec4) GroupNonUniformBitwiseXor 42 InclusiveScan 2057 + 2059: 1700(ptr) AccessChain 34(data) 2055 67 + Store 2059 2058 + 2060: 6(int) Load 8(invocation) + 2061: 1693(ptr) AccessChain 34(data) 37 67 38 + 2062: 23(int16_t) Load 2061 + 2063: 23(int16_t) GroupNonUniformIAdd 42 ExclusiveScan 2062 + 2064: 1693(ptr) AccessChain 34(data) 2060 67 38 + Store 2064 2063 + 2065: 6(int) Load 8(invocation) + 2066: 1700(ptr) AccessChain 34(data) 46 67 + 2067: 24(i16vec4) Load 2066 + 2068:1699(i16vec2) VectorShuffle 2067 2067 0 1 + 2069:1699(i16vec2) GroupNonUniformIAdd 42 ExclusiveScan 2068 + 2070: 1700(ptr) AccessChain 34(data) 2065 67 + 2071: 24(i16vec4) Load 2070 + 2072: 24(i16vec4) VectorShuffle 2071 2069 4 5 2 3 + Store 2070 2072 + 2073: 6(int) Load 8(invocation) + 2074: 1700(ptr) AccessChain 34(data) 57 67 + 2075: 24(i16vec4) Load 2074 + 2076:1709(i16vec3) VectorShuffle 2075 2075 0 1 2 + 2077:1709(i16vec3) GroupNonUniformIAdd 42 ExclusiveScan 2076 + 2078: 1700(ptr) AccessChain 34(data) 2073 67 + 2079: 24(i16vec4) Load 2078 + 2080: 24(i16vec4) VectorShuffle 2079 2077 4 5 6 3 + Store 2078 2080 + 2081: 6(int) Load 8(invocation) + 2082: 1700(ptr) AccessChain 34(data) 67 67 + 2083: 24(i16vec4) Load 2082 + 2084: 24(i16vec4) GroupNonUniformIAdd 42 ExclusiveScan 2083 + 2085: 1700(ptr) AccessChain 34(data) 2081 67 + Store 2085 2084 + 2086: 6(int) Load 8(invocation) + 2087: 1693(ptr) AccessChain 34(data) 37 67 38 + 2088: 23(int16_t) Load 2087 + 2089: 23(int16_t) GroupNonUniformIMul 42 ExclusiveScan 2088 + 2090: 1693(ptr) AccessChain 34(data) 2086 67 38 + Store 2090 2089 + 2091: 6(int) Load 8(invocation) + 2092: 1700(ptr) AccessChain 34(data) 46 67 + 2093: 24(i16vec4) Load 2092 + 2094:1699(i16vec2) VectorShuffle 2093 2093 0 1 + 2095:1699(i16vec2) GroupNonUniformIMul 42 ExclusiveScan 2094 + 2096: 1700(ptr) AccessChain 34(data) 2091 67 + 2097: 24(i16vec4) Load 2096 + 2098: 24(i16vec4) VectorShuffle 2097 2095 4 5 2 3 + Store 2096 2098 + 2099: 6(int) Load 8(invocation) + 2100: 1700(ptr) AccessChain 34(data) 57 67 + 2101: 24(i16vec4) Load 2100 + 2102:1709(i16vec3) VectorShuffle 2101 2101 0 1 2 + 2103:1709(i16vec3) GroupNonUniformIMul 42 ExclusiveScan 2102 + 2104: 1700(ptr) AccessChain 34(data) 2099 67 + 2105: 24(i16vec4) Load 2104 + 2106: 24(i16vec4) VectorShuffle 2105 2103 4 5 6 3 + Store 2104 2106 + 2107: 6(int) Load 8(invocation) + 2108: 1700(ptr) AccessChain 34(data) 67 67 + 2109: 24(i16vec4) Load 2108 + 2110: 24(i16vec4) GroupNonUniformIMul 42 ExclusiveScan 2109 + 2111: 1700(ptr) AccessChain 34(data) 2107 67 + Store 2111 2110 + 2112: 6(int) Load 8(invocation) + 2113: 1693(ptr) AccessChain 34(data) 37 67 38 + 2114: 23(int16_t) Load 2113 + 2115: 23(int16_t) GroupNonUniformUMin 42 ExclusiveScan 2114 + 2116: 1693(ptr) AccessChain 34(data) 2112 67 38 + Store 2116 2115 + 2117: 6(int) Load 8(invocation) + 2118: 1700(ptr) AccessChain 34(data) 46 67 + 2119: 24(i16vec4) Load 2118 + 2120:1699(i16vec2) VectorShuffle 2119 2119 0 1 + 2121:1699(i16vec2) GroupNonUniformUMin 42 ExclusiveScan 2120 + 2122: 1700(ptr) AccessChain 34(data) 2117 67 + 2123: 24(i16vec4) Load 2122 + 2124: 24(i16vec4) VectorShuffle 2123 2121 4 5 2 3 + Store 2122 2124 + 2125: 6(int) Load 8(invocation) + 2126: 1700(ptr) AccessChain 34(data) 57 67 + 2127: 24(i16vec4) Load 2126 + 2128:1709(i16vec3) VectorShuffle 2127 2127 0 1 2 + 2129:1709(i16vec3) GroupNonUniformUMin 42 ExclusiveScan 2128 + 2130: 1700(ptr) AccessChain 34(data) 2125 67 + 2131: 24(i16vec4) Load 2130 + 2132: 24(i16vec4) VectorShuffle 2131 2129 4 5 6 3 + Store 2130 2132 + 2133: 6(int) Load 8(invocation) + 2134: 1700(ptr) AccessChain 34(data) 67 67 + 2135: 24(i16vec4) Load 2134 + 2136: 24(i16vec4) GroupNonUniformUMin 42 ExclusiveScan 2135 + 2137: 1700(ptr) AccessChain 34(data) 2133 67 + Store 2137 2136 + 2138: 6(int) Load 8(invocation) + 2139: 1693(ptr) AccessChain 34(data) 37 67 38 + 2140: 23(int16_t) Load 2139 + 2141: 23(int16_t) GroupNonUniformUMax 42 ExclusiveScan 2140 + 2142: 1693(ptr) AccessChain 34(data) 2138 67 38 + Store 2142 2141 + 2143: 6(int) Load 8(invocation) + 2144: 1700(ptr) AccessChain 34(data) 46 67 + 2145: 24(i16vec4) Load 2144 + 2146:1699(i16vec2) VectorShuffle 2145 2145 0 1 + 2147:1699(i16vec2) GroupNonUniformUMax 42 ExclusiveScan 2146 + 2148: 1700(ptr) AccessChain 34(data) 2143 67 + 2149: 24(i16vec4) Load 2148 + 2150: 24(i16vec4) VectorShuffle 2149 2147 4 5 2 3 + Store 2148 2150 + 2151: 6(int) Load 8(invocation) + 2152: 1700(ptr) AccessChain 34(data) 57 67 + 2153: 24(i16vec4) Load 2152 + 2154:1709(i16vec3) VectorShuffle 2153 2153 0 1 2 + 2155:1709(i16vec3) GroupNonUniformUMax 42 ExclusiveScan 2154 + 2156: 1700(ptr) AccessChain 34(data) 2151 67 + 2157: 24(i16vec4) Load 2156 + 2158: 24(i16vec4) VectorShuffle 2157 2155 4 5 6 3 + Store 2156 2158 + 2159: 6(int) Load 8(invocation) + 2160: 1700(ptr) AccessChain 34(data) 67 67 + 2161: 24(i16vec4) Load 2160 + 2162: 24(i16vec4) GroupNonUniformUMax 42 ExclusiveScan 2161 + 2163: 1700(ptr) AccessChain 34(data) 2159 67 + Store 2163 2162 + 2164: 6(int) Load 8(invocation) + 2165: 1693(ptr) AccessChain 34(data) 37 67 38 + 2166: 23(int16_t) Load 2165 + 2167: 23(int16_t) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2166 + 2168: 1693(ptr) AccessChain 34(data) 2164 67 38 + Store 2168 2167 + 2169: 6(int) Load 8(invocation) + 2170: 1700(ptr) AccessChain 34(data) 46 67 + 2171: 24(i16vec4) Load 2170 + 2172:1699(i16vec2) VectorShuffle 2171 2171 0 1 + 2173:1699(i16vec2) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2172 + 2174: 1700(ptr) AccessChain 34(data) 2169 67 + 2175: 24(i16vec4) Load 2174 + 2176: 24(i16vec4) VectorShuffle 2175 2173 4 5 2 3 + Store 2174 2176 + 2177: 6(int) Load 8(invocation) + 2178: 1700(ptr) AccessChain 34(data) 57 67 + 2179: 24(i16vec4) Load 2178 + 2180:1709(i16vec3) VectorShuffle 2179 2179 0 1 2 + 2181:1709(i16vec3) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2180 + 2182: 1700(ptr) AccessChain 34(data) 2177 67 + 2183: 24(i16vec4) Load 2182 + 2184: 24(i16vec4) VectorShuffle 2183 2181 4 5 6 3 + Store 2182 2184 + 2185: 6(int) Load 8(invocation) + 2186: 1700(ptr) AccessChain 34(data) 67 67 + 2187: 24(i16vec4) Load 2186 + 2188: 24(i16vec4) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2187 + 2189: 1700(ptr) AccessChain 34(data) 2185 67 + Store 2189 2188 + 2190: 6(int) Load 8(invocation) + 2191: 1693(ptr) AccessChain 34(data) 37 67 38 + 2192: 23(int16_t) Load 2191 + 2193: 23(int16_t) GroupNonUniformBitwiseOr 42 ExclusiveScan 2192 + 2194: 1693(ptr) AccessChain 34(data) 2190 67 38 + Store 2194 2193 + 2195: 6(int) Load 8(invocation) + 2196: 1700(ptr) AccessChain 34(data) 46 67 + 2197: 24(i16vec4) Load 2196 + 2198:1699(i16vec2) VectorShuffle 2197 2197 0 1 + 2199:1699(i16vec2) GroupNonUniformBitwiseOr 42 ExclusiveScan 2198 + 2200: 1700(ptr) AccessChain 34(data) 2195 67 + 2201: 24(i16vec4) Load 2200 + 2202: 24(i16vec4) VectorShuffle 2201 2199 4 5 2 3 + Store 2200 2202 + 2203: 6(int) Load 8(invocation) + 2204: 1700(ptr) AccessChain 34(data) 57 67 + 2205: 24(i16vec4) Load 2204 + 2206:1709(i16vec3) VectorShuffle 2205 2205 0 1 2 + 2207:1709(i16vec3) GroupNonUniformBitwiseOr 42 ExclusiveScan 2206 + 2208: 1700(ptr) AccessChain 34(data) 2203 67 + 2209: 24(i16vec4) Load 2208 + 2210: 24(i16vec4) VectorShuffle 2209 2207 4 5 6 3 + Store 2208 2210 + 2211: 6(int) Load 8(invocation) + 2212: 1700(ptr) AccessChain 34(data) 67 67 + 2213: 24(i16vec4) Load 2212 + 2214: 24(i16vec4) GroupNonUniformBitwiseOr 42 ExclusiveScan 2213 + 2215: 1700(ptr) AccessChain 34(data) 2211 67 + Store 2215 2214 + 2216: 6(int) Load 8(invocation) + 2217: 1693(ptr) AccessChain 34(data) 37 67 38 + 2218: 23(int16_t) Load 2217 + 2219: 23(int16_t) GroupNonUniformBitwiseXor 42 ExclusiveScan 2218 + 2220: 1693(ptr) AccessChain 34(data) 2216 67 38 + Store 2220 2219 + 2221: 6(int) Load 8(invocation) + 2222: 1700(ptr) AccessChain 34(data) 46 67 + 2223: 24(i16vec4) Load 2222 + 2224:1699(i16vec2) VectorShuffle 2223 2223 0 1 + 2225:1699(i16vec2) GroupNonUniformBitwiseXor 42 ExclusiveScan 2224 + 2226: 1700(ptr) AccessChain 34(data) 2221 67 + 2227: 24(i16vec4) Load 2226 + 2228: 24(i16vec4) VectorShuffle 2227 2225 4 5 2 3 + Store 2226 2228 + 2229: 6(int) Load 8(invocation) + 2230: 1700(ptr) AccessChain 34(data) 57 67 + 2231: 24(i16vec4) Load 2230 + 2232:1709(i16vec3) VectorShuffle 2231 2231 0 1 2 + 2233:1709(i16vec3) GroupNonUniformBitwiseXor 42 ExclusiveScan 2232 + 2234: 1700(ptr) AccessChain 34(data) 2229 67 + 2235: 24(i16vec4) Load 2234 + 2236: 24(i16vec4) VectorShuffle 2235 2233 4 5 6 3 + Store 2234 2236 + 2237: 6(int) Load 8(invocation) + 2238: 1700(ptr) AccessChain 34(data) 67 67 + 2239: 24(i16vec4) Load 2238 + 2240: 24(i16vec4) GroupNonUniformBitwiseXor 42 ExclusiveScan 2239 + 2241: 1700(ptr) AccessChain 34(data) 2237 67 + Store 2241 2240 + 2242: 6(int) Load 8(invocation) + 2245: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2246: 25(int64_t) Load 2245 + 2247: 25(int64_t) GroupNonUniformIAdd 42 Reduce 2246 + 2248: 2244(ptr) AccessChain 34(data) 2242 2243 38 + Store 2248 2247 + 2249: 6(int) Load 8(invocation) + 2252: 2251(ptr) AccessChain 34(data) 46 2243 + 2253: 26(i64vec4) Load 2252 + 2254:2250(i64vec2) VectorShuffle 2253 2253 0 1 + 2255:2250(i64vec2) GroupNonUniformIAdd 42 Reduce 2254 + 2256: 2251(ptr) AccessChain 34(data) 2249 2243 + 2257: 26(i64vec4) Load 2256 + 2258: 26(i64vec4) VectorShuffle 2257 2255 4 5 2 3 + Store 2256 2258 + 2259: 6(int) Load 8(invocation) + 2261: 2251(ptr) AccessChain 34(data) 57 2243 + 2262: 26(i64vec4) Load 2261 + 2263:2260(i64vec3) VectorShuffle 2262 2262 0 1 2 + 2264:2260(i64vec3) GroupNonUniformIAdd 42 Reduce 2263 + 2265: 2251(ptr) AccessChain 34(data) 2259 2243 + 2266: 26(i64vec4) Load 2265 + 2267: 26(i64vec4) VectorShuffle 2266 2264 4 5 6 3 + Store 2265 2267 + 2268: 6(int) Load 8(invocation) + 2269: 2251(ptr) AccessChain 34(data) 67 2243 + 2270: 26(i64vec4) Load 2269 + 2271: 26(i64vec4) GroupNonUniformIAdd 42 Reduce 2270 + 2272: 2251(ptr) AccessChain 34(data) 2268 2243 + Store 2272 2271 + 2273: 6(int) Load 8(invocation) + 2274: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2275: 25(int64_t) Load 2274 + 2276: 25(int64_t) GroupNonUniformIMul 42 Reduce 2275 + 2277: 2244(ptr) AccessChain 34(data) 2273 2243 38 + Store 2277 2276 + 2278: 6(int) Load 8(invocation) + 2279: 2251(ptr) AccessChain 34(data) 46 2243 + 2280: 26(i64vec4) Load 2279 + 2281:2250(i64vec2) VectorShuffle 2280 2280 0 1 + 2282:2250(i64vec2) GroupNonUniformIMul 42 Reduce 2281 + 2283: 2251(ptr) AccessChain 34(data) 2278 2243 + 2284: 26(i64vec4) Load 2283 + 2285: 26(i64vec4) VectorShuffle 2284 2282 4 5 2 3 + Store 2283 2285 + 2286: 6(int) Load 8(invocation) + 2287: 2251(ptr) AccessChain 34(data) 57 2243 + 2288: 26(i64vec4) Load 2287 + 2289:2260(i64vec3) VectorShuffle 2288 2288 0 1 2 + 2290:2260(i64vec3) GroupNonUniformIMul 42 Reduce 2289 + 2291: 2251(ptr) AccessChain 34(data) 2286 2243 + 2292: 26(i64vec4) Load 2291 + 2293: 26(i64vec4) VectorShuffle 2292 2290 4 5 6 3 + Store 2291 2293 + 2294: 6(int) Load 8(invocation) + 2295: 2251(ptr) AccessChain 34(data) 67 2243 + 2296: 26(i64vec4) Load 2295 + 2297: 26(i64vec4) GroupNonUniformIMul 42 Reduce 2296 + 2298: 2251(ptr) AccessChain 34(data) 2294 2243 + Store 2298 2297 + 2299: 6(int) Load 8(invocation) + 2300: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2301: 25(int64_t) Load 2300 + 2302: 25(int64_t) GroupNonUniformSMin 42 Reduce 2301 + 2303: 2244(ptr) AccessChain 34(data) 2299 2243 38 + Store 2303 2302 + 2304: 6(int) Load 8(invocation) + 2305: 2251(ptr) AccessChain 34(data) 46 2243 + 2306: 26(i64vec4) Load 2305 + 2307:2250(i64vec2) VectorShuffle 2306 2306 0 1 + 2308:2250(i64vec2) GroupNonUniformSMin 42 Reduce 2307 + 2309: 2251(ptr) AccessChain 34(data) 2304 2243 + 2310: 26(i64vec4) Load 2309 + 2311: 26(i64vec4) VectorShuffle 2310 2308 4 5 2 3 + Store 2309 2311 + 2312: 6(int) Load 8(invocation) + 2313: 2251(ptr) AccessChain 34(data) 57 2243 + 2314: 26(i64vec4) Load 2313 + 2315:2260(i64vec3) VectorShuffle 2314 2314 0 1 2 + 2316:2260(i64vec3) GroupNonUniformSMin 42 Reduce 2315 + 2317: 2251(ptr) AccessChain 34(data) 2312 2243 + 2318: 26(i64vec4) Load 2317 + 2319: 26(i64vec4) VectorShuffle 2318 2316 4 5 6 3 + Store 2317 2319 + 2320: 6(int) Load 8(invocation) + 2321: 2251(ptr) AccessChain 34(data) 67 2243 + 2322: 26(i64vec4) Load 2321 + 2323: 26(i64vec4) GroupNonUniformSMin 42 Reduce 2322 + 2324: 2251(ptr) AccessChain 34(data) 2320 2243 + Store 2324 2323 + 2325: 6(int) Load 8(invocation) + 2326: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2327: 25(int64_t) Load 2326 + 2328: 25(int64_t) GroupNonUniformSMax 42 Reduce 2327 + 2329: 2244(ptr) AccessChain 34(data) 2325 2243 38 + Store 2329 2328 + 2330: 6(int) Load 8(invocation) + 2331: 2251(ptr) AccessChain 34(data) 46 2243 + 2332: 26(i64vec4) Load 2331 + 2333:2250(i64vec2) VectorShuffle 2332 2332 0 1 + 2334:2250(i64vec2) GroupNonUniformSMax 42 Reduce 2333 + 2335: 2251(ptr) AccessChain 34(data) 2330 2243 + 2336: 26(i64vec4) Load 2335 + 2337: 26(i64vec4) VectorShuffle 2336 2334 4 5 2 3 + Store 2335 2337 + 2338: 6(int) Load 8(invocation) + 2339: 2251(ptr) AccessChain 34(data) 57 2243 + 2340: 26(i64vec4) Load 2339 + 2341:2260(i64vec3) VectorShuffle 2340 2340 0 1 2 + 2342:2260(i64vec3) GroupNonUniformSMax 42 Reduce 2341 + 2343: 2251(ptr) AccessChain 34(data) 2338 2243 + 2344: 26(i64vec4) Load 2343 + 2345: 26(i64vec4) VectorShuffle 2344 2342 4 5 6 3 + Store 2343 2345 + 2346: 6(int) Load 8(invocation) + 2347: 2251(ptr) AccessChain 34(data) 67 2243 + 2348: 26(i64vec4) Load 2347 + 2349: 26(i64vec4) GroupNonUniformSMax 42 Reduce 2348 + 2350: 2251(ptr) AccessChain 34(data) 2346 2243 + Store 2350 2349 + 2351: 6(int) Load 8(invocation) + 2352: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2353: 25(int64_t) Load 2352 + 2354: 25(int64_t) GroupNonUniformBitwiseAnd 42 Reduce 2353 + 2355: 2244(ptr) AccessChain 34(data) 2351 2243 38 + Store 2355 2354 + 2356: 6(int) Load 8(invocation) + 2357: 2251(ptr) AccessChain 34(data) 46 2243 + 2358: 26(i64vec4) Load 2357 + 2359:2250(i64vec2) VectorShuffle 2358 2358 0 1 + 2360:2250(i64vec2) GroupNonUniformBitwiseAnd 42 Reduce 2359 + 2361: 2251(ptr) AccessChain 34(data) 2356 2243 + 2362: 26(i64vec4) Load 2361 + 2363: 26(i64vec4) VectorShuffle 2362 2360 4 5 2 3 + Store 2361 2363 + 2364: 6(int) Load 8(invocation) + 2365: 2251(ptr) AccessChain 34(data) 57 2243 + 2366: 26(i64vec4) Load 2365 + 2367:2260(i64vec3) VectorShuffle 2366 2366 0 1 2 + 2368:2260(i64vec3) GroupNonUniformBitwiseAnd 42 Reduce 2367 + 2369: 2251(ptr) AccessChain 34(data) 2364 2243 + 2370: 26(i64vec4) Load 2369 + 2371: 26(i64vec4) VectorShuffle 2370 2368 4 5 6 3 + Store 2369 2371 + 2372: 6(int) Load 8(invocation) + 2373: 2251(ptr) AccessChain 34(data) 67 2243 + 2374: 26(i64vec4) Load 2373 + 2375: 26(i64vec4) GroupNonUniformBitwiseAnd 42 Reduce 2374 + 2376: 2251(ptr) AccessChain 34(data) 2372 2243 + Store 2376 2375 + 2377: 6(int) Load 8(invocation) + 2378: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2379: 25(int64_t) Load 2378 + 2380: 25(int64_t) GroupNonUniformBitwiseOr 42 Reduce 2379 + 2381: 2244(ptr) AccessChain 34(data) 2377 2243 38 + Store 2381 2380 + 2382: 6(int) Load 8(invocation) + 2383: 2251(ptr) AccessChain 34(data) 46 2243 + 2384: 26(i64vec4) Load 2383 + 2385:2250(i64vec2) VectorShuffle 2384 2384 0 1 + 2386:2250(i64vec2) GroupNonUniformBitwiseOr 42 Reduce 2385 + 2387: 2251(ptr) AccessChain 34(data) 2382 2243 + 2388: 26(i64vec4) Load 2387 + 2389: 26(i64vec4) VectorShuffle 2388 2386 4 5 2 3 + Store 2387 2389 + 2390: 6(int) Load 8(invocation) + 2391: 2251(ptr) AccessChain 34(data) 57 2243 + 2392: 26(i64vec4) Load 2391 + 2393:2260(i64vec3) VectorShuffle 2392 2392 0 1 2 + 2394:2260(i64vec3) GroupNonUniformBitwiseOr 42 Reduce 2393 + 2395: 2251(ptr) AccessChain 34(data) 2390 2243 + 2396: 26(i64vec4) Load 2395 + 2397: 26(i64vec4) VectorShuffle 2396 2394 4 5 6 3 + Store 2395 2397 + 2398: 6(int) Load 8(invocation) + 2399: 2251(ptr) AccessChain 34(data) 67 2243 + 2400: 26(i64vec4) Load 2399 + 2401: 26(i64vec4) GroupNonUniformBitwiseOr 42 Reduce 2400 + 2402: 2251(ptr) AccessChain 34(data) 2398 2243 + Store 2402 2401 + 2403: 6(int) Load 8(invocation) + 2404: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2405: 25(int64_t) Load 2404 + 2406: 25(int64_t) GroupNonUniformBitwiseXor 42 Reduce 2405 + 2407: 2244(ptr) AccessChain 34(data) 2403 2243 38 + Store 2407 2406 + 2408: 6(int) Load 8(invocation) + 2409: 2251(ptr) AccessChain 34(data) 46 2243 + 2410: 26(i64vec4) Load 2409 + 2411:2250(i64vec2) VectorShuffle 2410 2410 0 1 + 2412:2250(i64vec2) GroupNonUniformBitwiseXor 42 Reduce 2411 + 2413: 2251(ptr) AccessChain 34(data) 2408 2243 + 2414: 26(i64vec4) Load 2413 + 2415: 26(i64vec4) VectorShuffle 2414 2412 4 5 2 3 + Store 2413 2415 + 2416: 6(int) Load 8(invocation) + 2417: 2251(ptr) AccessChain 34(data) 57 2243 + 2418: 26(i64vec4) Load 2417 + 2419:2260(i64vec3) VectorShuffle 2418 2418 0 1 2 + 2420:2260(i64vec3) GroupNonUniformBitwiseXor 42 Reduce 2419 + 2421: 2251(ptr) AccessChain 34(data) 2416 2243 + 2422: 26(i64vec4) Load 2421 + 2423: 26(i64vec4) VectorShuffle 2422 2420 4 5 6 3 + Store 2421 2423 + 2424: 6(int) Load 8(invocation) + 2425: 2251(ptr) AccessChain 34(data) 67 2243 + 2426: 26(i64vec4) Load 2425 + 2427: 26(i64vec4) GroupNonUniformBitwiseXor 42 Reduce 2426 + 2428: 2251(ptr) AccessChain 34(data) 2424 2243 + Store 2428 2427 + 2429: 6(int) Load 8(invocation) + 2430: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2431: 25(int64_t) Load 2430 + 2432: 25(int64_t) GroupNonUniformIAdd 42 InclusiveScan 2431 + 2433: 2244(ptr) AccessChain 34(data) 2429 2243 38 + Store 2433 2432 + 2434: 6(int) Load 8(invocation) + 2435: 2251(ptr) AccessChain 34(data) 46 2243 + 2436: 26(i64vec4) Load 2435 + 2437:2250(i64vec2) VectorShuffle 2436 2436 0 1 + 2438:2250(i64vec2) GroupNonUniformIAdd 42 InclusiveScan 2437 + 2439: 2251(ptr) AccessChain 34(data) 2434 2243 + 2440: 26(i64vec4) Load 2439 + 2441: 26(i64vec4) VectorShuffle 2440 2438 4 5 2 3 + Store 2439 2441 + 2442: 6(int) Load 8(invocation) + 2443: 2251(ptr) AccessChain 34(data) 57 2243 + 2444: 26(i64vec4) Load 2443 + 2445:2260(i64vec3) VectorShuffle 2444 2444 0 1 2 + 2446:2260(i64vec3) GroupNonUniformIAdd 42 InclusiveScan 2445 + 2447: 2251(ptr) AccessChain 34(data) 2442 2243 + 2448: 26(i64vec4) Load 2447 + 2449: 26(i64vec4) VectorShuffle 2448 2446 4 5 6 3 + Store 2447 2449 + 2450: 6(int) Load 8(invocation) + 2451: 2251(ptr) AccessChain 34(data) 67 2243 + 2452: 26(i64vec4) Load 2451 + 2453: 26(i64vec4) GroupNonUniformIAdd 42 InclusiveScan 2452 + 2454: 2251(ptr) AccessChain 34(data) 2450 2243 + Store 2454 2453 + 2455: 6(int) Load 8(invocation) + 2456: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2457: 25(int64_t) Load 2456 + 2458: 25(int64_t) GroupNonUniformIMul 42 InclusiveScan 2457 + 2459: 2244(ptr) AccessChain 34(data) 2455 2243 38 + Store 2459 2458 + 2460: 6(int) Load 8(invocation) + 2461: 2251(ptr) AccessChain 34(data) 46 2243 + 2462: 26(i64vec4) Load 2461 + 2463:2250(i64vec2) VectorShuffle 2462 2462 0 1 + 2464:2250(i64vec2) GroupNonUniformIMul 42 InclusiveScan 2463 + 2465: 2251(ptr) AccessChain 34(data) 2460 2243 + 2466: 26(i64vec4) Load 2465 + 2467: 26(i64vec4) VectorShuffle 2466 2464 4 5 2 3 + Store 2465 2467 + 2468: 6(int) Load 8(invocation) + 2469: 2251(ptr) AccessChain 34(data) 57 2243 + 2470: 26(i64vec4) Load 2469 + 2471:2260(i64vec3) VectorShuffle 2470 2470 0 1 2 + 2472:2260(i64vec3) GroupNonUniformIMul 42 InclusiveScan 2471 + 2473: 2251(ptr) AccessChain 34(data) 2468 2243 + 2474: 26(i64vec4) Load 2473 + 2475: 26(i64vec4) VectorShuffle 2474 2472 4 5 6 3 + Store 2473 2475 + 2476: 6(int) Load 8(invocation) + 2477: 2251(ptr) AccessChain 34(data) 67 2243 + 2478: 26(i64vec4) Load 2477 + 2479: 26(i64vec4) GroupNonUniformIMul 42 InclusiveScan 2478 + 2480: 2251(ptr) AccessChain 34(data) 2476 2243 + Store 2480 2479 + 2481: 6(int) Load 8(invocation) + 2482: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2483: 25(int64_t) Load 2482 + 2484: 25(int64_t) GroupNonUniformSMin 42 InclusiveScan 2483 + 2485: 2244(ptr) AccessChain 34(data) 2481 2243 38 + Store 2485 2484 + 2486: 6(int) Load 8(invocation) + 2487: 2251(ptr) AccessChain 34(data) 46 2243 + 2488: 26(i64vec4) Load 2487 + 2489:2250(i64vec2) VectorShuffle 2488 2488 0 1 + 2490:2250(i64vec2) GroupNonUniformSMin 42 InclusiveScan 2489 + 2491: 2251(ptr) AccessChain 34(data) 2486 2243 + 2492: 26(i64vec4) Load 2491 + 2493: 26(i64vec4) VectorShuffle 2492 2490 4 5 2 3 + Store 2491 2493 + 2494: 6(int) Load 8(invocation) + 2495: 2251(ptr) AccessChain 34(data) 57 2243 + 2496: 26(i64vec4) Load 2495 + 2497:2260(i64vec3) VectorShuffle 2496 2496 0 1 2 + 2498:2260(i64vec3) GroupNonUniformSMin 42 InclusiveScan 2497 + 2499: 2251(ptr) AccessChain 34(data) 2494 2243 + 2500: 26(i64vec4) Load 2499 + 2501: 26(i64vec4) VectorShuffle 2500 2498 4 5 6 3 + Store 2499 2501 + 2502: 6(int) Load 8(invocation) + 2503: 2251(ptr) AccessChain 34(data) 67 2243 + 2504: 26(i64vec4) Load 2503 + 2505: 26(i64vec4) GroupNonUniformSMin 42 InclusiveScan 2504 + 2506: 2251(ptr) AccessChain 34(data) 2502 2243 + Store 2506 2505 + 2507: 6(int) Load 8(invocation) + 2508: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2509: 25(int64_t) Load 2508 + 2510: 25(int64_t) GroupNonUniformSMax 42 InclusiveScan 2509 + 2511: 2244(ptr) AccessChain 34(data) 2507 2243 38 + Store 2511 2510 + 2512: 6(int) Load 8(invocation) + 2513: 2251(ptr) AccessChain 34(data) 46 2243 + 2514: 26(i64vec4) Load 2513 + 2515:2250(i64vec2) VectorShuffle 2514 2514 0 1 + 2516:2250(i64vec2) GroupNonUniformSMax 42 InclusiveScan 2515 + 2517: 2251(ptr) AccessChain 34(data) 2512 2243 + 2518: 26(i64vec4) Load 2517 + 2519: 26(i64vec4) VectorShuffle 2518 2516 4 5 2 3 + Store 2517 2519 + 2520: 6(int) Load 8(invocation) + 2521: 2251(ptr) AccessChain 34(data) 57 2243 + 2522: 26(i64vec4) Load 2521 + 2523:2260(i64vec3) VectorShuffle 2522 2522 0 1 2 + 2524:2260(i64vec3) GroupNonUniformSMax 42 InclusiveScan 2523 + 2525: 2251(ptr) AccessChain 34(data) 2520 2243 + 2526: 26(i64vec4) Load 2525 + 2527: 26(i64vec4) VectorShuffle 2526 2524 4 5 6 3 + Store 2525 2527 + 2528: 6(int) Load 8(invocation) + 2529: 2251(ptr) AccessChain 34(data) 67 2243 + 2530: 26(i64vec4) Load 2529 + 2531: 26(i64vec4) GroupNonUniformSMax 42 InclusiveScan 2530 + 2532: 2251(ptr) AccessChain 34(data) 2528 2243 + Store 2532 2531 + 2533: 6(int) Load 8(invocation) + 2534: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2535: 25(int64_t) Load 2534 + 2536: 25(int64_t) GroupNonUniformBitwiseAnd 42 InclusiveScan 2535 + 2537: 2244(ptr) AccessChain 34(data) 2533 2243 38 + Store 2537 2536 + 2538: 6(int) Load 8(invocation) + 2539: 2251(ptr) AccessChain 34(data) 46 2243 + 2540: 26(i64vec4) Load 2539 + 2541:2250(i64vec2) VectorShuffle 2540 2540 0 1 + 2542:2250(i64vec2) GroupNonUniformBitwiseAnd 42 InclusiveScan 2541 + 2543: 2251(ptr) AccessChain 34(data) 2538 2243 + 2544: 26(i64vec4) Load 2543 + 2545: 26(i64vec4) VectorShuffle 2544 2542 4 5 2 3 + Store 2543 2545 + 2546: 6(int) Load 8(invocation) + 2547: 2251(ptr) AccessChain 34(data) 57 2243 + 2548: 26(i64vec4) Load 2547 + 2549:2260(i64vec3) VectorShuffle 2548 2548 0 1 2 + 2550:2260(i64vec3) GroupNonUniformBitwiseAnd 42 InclusiveScan 2549 + 2551: 2251(ptr) AccessChain 34(data) 2546 2243 + 2552: 26(i64vec4) Load 2551 + 2553: 26(i64vec4) VectorShuffle 2552 2550 4 5 6 3 + Store 2551 2553 + 2554: 6(int) Load 8(invocation) + 2555: 2251(ptr) AccessChain 34(data) 67 2243 + 2556: 26(i64vec4) Load 2555 + 2557: 26(i64vec4) GroupNonUniformBitwiseAnd 42 InclusiveScan 2556 + 2558: 2251(ptr) AccessChain 34(data) 2554 2243 + Store 2558 2557 + 2559: 6(int) Load 8(invocation) + 2560: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2561: 25(int64_t) Load 2560 + 2562: 25(int64_t) GroupNonUniformBitwiseOr 42 InclusiveScan 2561 + 2563: 2244(ptr) AccessChain 34(data) 2559 2243 38 + Store 2563 2562 + 2564: 6(int) Load 8(invocation) + 2565: 2251(ptr) AccessChain 34(data) 46 2243 + 2566: 26(i64vec4) Load 2565 + 2567:2250(i64vec2) VectorShuffle 2566 2566 0 1 + 2568:2250(i64vec2) GroupNonUniformBitwiseOr 42 InclusiveScan 2567 + 2569: 2251(ptr) AccessChain 34(data) 2564 2243 + 2570: 26(i64vec4) Load 2569 + 2571: 26(i64vec4) VectorShuffle 2570 2568 4 5 2 3 + Store 2569 2571 + 2572: 6(int) Load 8(invocation) + 2573: 2251(ptr) AccessChain 34(data) 57 2243 + 2574: 26(i64vec4) Load 2573 + 2575:2260(i64vec3) VectorShuffle 2574 2574 0 1 2 + 2576:2260(i64vec3) GroupNonUniformBitwiseOr 42 InclusiveScan 2575 + 2577: 2251(ptr) AccessChain 34(data) 2572 2243 + 2578: 26(i64vec4) Load 2577 + 2579: 26(i64vec4) VectorShuffle 2578 2576 4 5 6 3 + Store 2577 2579 + 2580: 6(int) Load 8(invocation) + 2581: 2251(ptr) AccessChain 34(data) 67 2243 + 2582: 26(i64vec4) Load 2581 + 2583: 26(i64vec4) GroupNonUniformBitwiseOr 42 InclusiveScan 2582 + 2584: 2251(ptr) AccessChain 34(data) 2580 2243 + Store 2584 2583 + 2585: 6(int) Load 8(invocation) + 2586: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2587: 25(int64_t) Load 2586 + 2588: 25(int64_t) GroupNonUniformBitwiseXor 42 InclusiveScan 2587 + 2589: 2244(ptr) AccessChain 34(data) 2585 2243 38 + Store 2589 2588 + 2590: 6(int) Load 8(invocation) + 2591: 2251(ptr) AccessChain 34(data) 46 2243 + 2592: 26(i64vec4) Load 2591 + 2593:2250(i64vec2) VectorShuffle 2592 2592 0 1 + 2594:2250(i64vec2) GroupNonUniformBitwiseXor 42 InclusiveScan 2593 + 2595: 2251(ptr) AccessChain 34(data) 2590 2243 + 2596: 26(i64vec4) Load 2595 + 2597: 26(i64vec4) VectorShuffle 2596 2594 4 5 2 3 + Store 2595 2597 + 2598: 6(int) Load 8(invocation) + 2599: 2251(ptr) AccessChain 34(data) 57 2243 + 2600: 26(i64vec4) Load 2599 + 2601:2260(i64vec3) VectorShuffle 2600 2600 0 1 2 + 2602:2260(i64vec3) GroupNonUniformBitwiseXor 42 InclusiveScan 2601 + 2603: 2251(ptr) AccessChain 34(data) 2598 2243 + 2604: 26(i64vec4) Load 2603 + 2605: 26(i64vec4) VectorShuffle 2604 2602 4 5 6 3 + Store 2603 2605 + 2606: 6(int) Load 8(invocation) + 2607: 2251(ptr) AccessChain 34(data) 67 2243 + 2608: 26(i64vec4) Load 2607 + 2609: 26(i64vec4) GroupNonUniformBitwiseXor 42 InclusiveScan 2608 + 2610: 2251(ptr) AccessChain 34(data) 2606 2243 + Store 2610 2609 + 2611: 6(int) Load 8(invocation) + 2612: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2613: 25(int64_t) Load 2612 + 2614: 25(int64_t) GroupNonUniformIAdd 42 ExclusiveScan 2613 + 2615: 2244(ptr) AccessChain 34(data) 2611 2243 38 + Store 2615 2614 + 2616: 6(int) Load 8(invocation) + 2617: 2251(ptr) AccessChain 34(data) 46 2243 + 2618: 26(i64vec4) Load 2617 + 2619:2250(i64vec2) VectorShuffle 2618 2618 0 1 + 2620:2250(i64vec2) GroupNonUniformIAdd 42 ExclusiveScan 2619 + 2621: 2251(ptr) AccessChain 34(data) 2616 2243 + 2622: 26(i64vec4) Load 2621 + 2623: 26(i64vec4) VectorShuffle 2622 2620 4 5 2 3 + Store 2621 2623 + 2624: 6(int) Load 8(invocation) + 2625: 2251(ptr) AccessChain 34(data) 57 2243 + 2626: 26(i64vec4) Load 2625 + 2627:2260(i64vec3) VectorShuffle 2626 2626 0 1 2 + 2628:2260(i64vec3) GroupNonUniformIAdd 42 ExclusiveScan 2627 + 2629: 2251(ptr) AccessChain 34(data) 2624 2243 + 2630: 26(i64vec4) Load 2629 + 2631: 26(i64vec4) VectorShuffle 2630 2628 4 5 6 3 + Store 2629 2631 + 2632: 6(int) Load 8(invocation) + 2633: 2251(ptr) AccessChain 34(data) 67 2243 + 2634: 26(i64vec4) Load 2633 + 2635: 26(i64vec4) GroupNonUniformIAdd 42 ExclusiveScan 2634 + 2636: 2251(ptr) AccessChain 34(data) 2632 2243 + Store 2636 2635 + 2637: 6(int) Load 8(invocation) + 2638: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2639: 25(int64_t) Load 2638 + 2640: 25(int64_t) GroupNonUniformIMul 42 ExclusiveScan 2639 + 2641: 2244(ptr) AccessChain 34(data) 2637 2243 38 + Store 2641 2640 + 2642: 6(int) Load 8(invocation) + 2643: 2251(ptr) AccessChain 34(data) 46 2243 + 2644: 26(i64vec4) Load 2643 + 2645:2250(i64vec2) VectorShuffle 2644 2644 0 1 + 2646:2250(i64vec2) GroupNonUniformIMul 42 ExclusiveScan 2645 + 2647: 2251(ptr) AccessChain 34(data) 2642 2243 + 2648: 26(i64vec4) Load 2647 + 2649: 26(i64vec4) VectorShuffle 2648 2646 4 5 2 3 + Store 2647 2649 + 2650: 6(int) Load 8(invocation) + 2651: 2251(ptr) AccessChain 34(data) 57 2243 + 2652: 26(i64vec4) Load 2651 + 2653:2260(i64vec3) VectorShuffle 2652 2652 0 1 2 + 2654:2260(i64vec3) GroupNonUniformIMul 42 ExclusiveScan 2653 + 2655: 2251(ptr) AccessChain 34(data) 2650 2243 + 2656: 26(i64vec4) Load 2655 + 2657: 26(i64vec4) VectorShuffle 2656 2654 4 5 6 3 + Store 2655 2657 + 2658: 6(int) Load 8(invocation) + 2659: 2251(ptr) AccessChain 34(data) 67 2243 + 2660: 26(i64vec4) Load 2659 + 2661: 26(i64vec4) GroupNonUniformIMul 42 ExclusiveScan 2660 + 2662: 2251(ptr) AccessChain 34(data) 2658 2243 + Store 2662 2661 + 2663: 6(int) Load 8(invocation) + 2664: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2665: 25(int64_t) Load 2664 + 2666: 25(int64_t) GroupNonUniformSMin 42 ExclusiveScan 2665 + 2667: 2244(ptr) AccessChain 34(data) 2663 2243 38 + Store 2667 2666 + 2668: 6(int) Load 8(invocation) + 2669: 2251(ptr) AccessChain 34(data) 46 2243 + 2670: 26(i64vec4) Load 2669 + 2671:2250(i64vec2) VectorShuffle 2670 2670 0 1 + 2672:2250(i64vec2) GroupNonUniformSMin 42 ExclusiveScan 2671 + 2673: 2251(ptr) AccessChain 34(data) 2668 2243 + 2674: 26(i64vec4) Load 2673 + 2675: 26(i64vec4) VectorShuffle 2674 2672 4 5 2 3 + Store 2673 2675 + 2676: 6(int) Load 8(invocation) + 2677: 2251(ptr) AccessChain 34(data) 57 2243 + 2678: 26(i64vec4) Load 2677 + 2679:2260(i64vec3) VectorShuffle 2678 2678 0 1 2 + 2680:2260(i64vec3) GroupNonUniformSMin 42 ExclusiveScan 2679 + 2681: 2251(ptr) AccessChain 34(data) 2676 2243 + 2682: 26(i64vec4) Load 2681 + 2683: 26(i64vec4) VectorShuffle 2682 2680 4 5 6 3 + Store 2681 2683 + 2684: 6(int) Load 8(invocation) + 2685: 2251(ptr) AccessChain 34(data) 67 2243 + 2686: 26(i64vec4) Load 2685 + 2687: 26(i64vec4) GroupNonUniformSMin 42 ExclusiveScan 2686 + 2688: 2251(ptr) AccessChain 34(data) 2684 2243 + Store 2688 2687 + 2689: 6(int) Load 8(invocation) + 2690: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2691: 25(int64_t) Load 2690 + 2692: 25(int64_t) GroupNonUniformSMax 42 ExclusiveScan 2691 + 2693: 2244(ptr) AccessChain 34(data) 2689 2243 38 + Store 2693 2692 + 2694: 6(int) Load 8(invocation) + 2695: 2251(ptr) AccessChain 34(data) 46 2243 + 2696: 26(i64vec4) Load 2695 + 2697:2250(i64vec2) VectorShuffle 2696 2696 0 1 + 2698:2250(i64vec2) GroupNonUniformSMax 42 ExclusiveScan 2697 + 2699: 2251(ptr) AccessChain 34(data) 2694 2243 + 2700: 26(i64vec4) Load 2699 + 2701: 26(i64vec4) VectorShuffle 2700 2698 4 5 2 3 + Store 2699 2701 + 2702: 6(int) Load 8(invocation) + 2703: 2251(ptr) AccessChain 34(data) 57 2243 + 2704: 26(i64vec4) Load 2703 + 2705:2260(i64vec3) VectorShuffle 2704 2704 0 1 2 + 2706:2260(i64vec3) GroupNonUniformSMax 42 ExclusiveScan 2705 + 2707: 2251(ptr) AccessChain 34(data) 2702 2243 + 2708: 26(i64vec4) Load 2707 + 2709: 26(i64vec4) VectorShuffle 2708 2706 4 5 6 3 + Store 2707 2709 + 2710: 6(int) Load 8(invocation) + 2711: 2251(ptr) AccessChain 34(data) 67 2243 + 2712: 26(i64vec4) Load 2711 + 2713: 26(i64vec4) GroupNonUniformSMax 42 ExclusiveScan 2712 + 2714: 2251(ptr) AccessChain 34(data) 2710 2243 + Store 2714 2713 + 2715: 6(int) Load 8(invocation) + 2716: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2717: 25(int64_t) Load 2716 + 2718: 25(int64_t) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2717 + 2719: 2244(ptr) AccessChain 34(data) 2715 2243 38 + Store 2719 2718 + 2720: 6(int) Load 8(invocation) + 2721: 2251(ptr) AccessChain 34(data) 46 2243 + 2722: 26(i64vec4) Load 2721 + 2723:2250(i64vec2) VectorShuffle 2722 2722 0 1 + 2724:2250(i64vec2) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2723 + 2725: 2251(ptr) AccessChain 34(data) 2720 2243 + 2726: 26(i64vec4) Load 2725 + 2727: 26(i64vec4) VectorShuffle 2726 2724 4 5 2 3 + Store 2725 2727 + 2728: 6(int) Load 8(invocation) + 2729: 2251(ptr) AccessChain 34(data) 57 2243 + 2730: 26(i64vec4) Load 2729 + 2731:2260(i64vec3) VectorShuffle 2730 2730 0 1 2 + 2732:2260(i64vec3) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2731 + 2733: 2251(ptr) AccessChain 34(data) 2728 2243 + 2734: 26(i64vec4) Load 2733 + 2735: 26(i64vec4) VectorShuffle 2734 2732 4 5 6 3 + Store 2733 2735 + 2736: 6(int) Load 8(invocation) + 2737: 2251(ptr) AccessChain 34(data) 67 2243 + 2738: 26(i64vec4) Load 2737 + 2739: 26(i64vec4) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2738 + 2740: 2251(ptr) AccessChain 34(data) 2736 2243 + Store 2740 2739 + 2741: 6(int) Load 8(invocation) + 2742: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2743: 25(int64_t) Load 2742 + 2744: 25(int64_t) GroupNonUniformBitwiseOr 42 ExclusiveScan 2743 + 2745: 2244(ptr) AccessChain 34(data) 2741 2243 38 + Store 2745 2744 + 2746: 6(int) Load 8(invocation) + 2747: 2251(ptr) AccessChain 34(data) 46 2243 + 2748: 26(i64vec4) Load 2747 + 2749:2250(i64vec2) VectorShuffle 2748 2748 0 1 + 2750:2250(i64vec2) GroupNonUniformBitwiseOr 42 ExclusiveScan 2749 + 2751: 2251(ptr) AccessChain 34(data) 2746 2243 + 2752: 26(i64vec4) Load 2751 + 2753: 26(i64vec4) VectorShuffle 2752 2750 4 5 2 3 + Store 2751 2753 + 2754: 6(int) Load 8(invocation) + 2755: 2251(ptr) AccessChain 34(data) 57 2243 + 2756: 26(i64vec4) Load 2755 + 2757:2260(i64vec3) VectorShuffle 2756 2756 0 1 2 + 2758:2260(i64vec3) GroupNonUniformBitwiseOr 42 ExclusiveScan 2757 + 2759: 2251(ptr) AccessChain 34(data) 2754 2243 + 2760: 26(i64vec4) Load 2759 + 2761: 26(i64vec4) VectorShuffle 2760 2758 4 5 6 3 + Store 2759 2761 + 2762: 6(int) Load 8(invocation) + 2763: 2251(ptr) AccessChain 34(data) 67 2243 + 2764: 26(i64vec4) Load 2763 + 2765: 26(i64vec4) GroupNonUniformBitwiseOr 42 ExclusiveScan 2764 + 2766: 2251(ptr) AccessChain 34(data) 2762 2243 + Store 2766 2765 + 2767: 6(int) Load 8(invocation) + 2768: 2244(ptr) AccessChain 34(data) 37 2243 38 + 2769: 25(int64_t) Load 2768 + 2770: 25(int64_t) GroupNonUniformBitwiseXor 42 ExclusiveScan 2769 + 2771: 2244(ptr) AccessChain 34(data) 2767 2243 38 + Store 2771 2770 + 2772: 6(int) Load 8(invocation) + 2773: 2251(ptr) AccessChain 34(data) 46 2243 + 2774: 26(i64vec4) Load 2773 + 2775:2250(i64vec2) VectorShuffle 2774 2774 0 1 + 2776:2250(i64vec2) GroupNonUniformBitwiseXor 42 ExclusiveScan 2775 + 2777: 2251(ptr) AccessChain 34(data) 2772 2243 + 2778: 26(i64vec4) Load 2777 + 2779: 26(i64vec4) VectorShuffle 2778 2776 4 5 2 3 + Store 2777 2779 + 2780: 6(int) Load 8(invocation) + 2781: 2251(ptr) AccessChain 34(data) 57 2243 + 2782: 26(i64vec4) Load 2781 + 2783:2260(i64vec3) VectorShuffle 2782 2782 0 1 2 + 2784:2260(i64vec3) GroupNonUniformBitwiseXor 42 ExclusiveScan 2783 + 2785: 2251(ptr) AccessChain 34(data) 2780 2243 + 2786: 26(i64vec4) Load 2785 + 2787: 26(i64vec4) VectorShuffle 2786 2784 4 5 6 3 + Store 2785 2787 + 2788: 6(int) Load 8(invocation) + 2789: 2251(ptr) AccessChain 34(data) 67 2243 + 2790: 26(i64vec4) Load 2789 + 2791: 26(i64vec4) GroupNonUniformBitwiseXor 42 ExclusiveScan 2790 + 2792: 2251(ptr) AccessChain 34(data) 2788 2243 + Store 2792 2791 + 2793: 6(int) Load 8(invocation) + 2796: 2795(ptr) AccessChain 34(data) 37 2794 38 + 2797: 27(int64_t) Load 2796 + 2798: 27(int64_t) GroupNonUniformIAdd 42 Reduce 2797 + 2799: 2795(ptr) AccessChain 34(data) 2793 2794 38 + Store 2799 2798 + 2800: 6(int) Load 8(invocation) + 2803: 2802(ptr) AccessChain 34(data) 46 2794 + 2804: 28(i64vec4) Load 2803 + 2805:2801(i64vec2) VectorShuffle 2804 2804 0 1 + 2806:2801(i64vec2) GroupNonUniformIAdd 42 Reduce 2805 + 2807: 2802(ptr) AccessChain 34(data) 2800 2794 + 2808: 28(i64vec4) Load 2807 + 2809: 28(i64vec4) VectorShuffle 2808 2806 4 5 2 3 + Store 2807 2809 + 2810: 6(int) Load 8(invocation) + 2812: 2802(ptr) AccessChain 34(data) 57 2794 + 2813: 28(i64vec4) Load 2812 + 2814:2811(i64vec3) VectorShuffle 2813 2813 0 1 2 + 2815:2811(i64vec3) GroupNonUniformIAdd 42 Reduce 2814 + 2816: 2802(ptr) AccessChain 34(data) 2810 2794 + 2817: 28(i64vec4) Load 2816 + 2818: 28(i64vec4) VectorShuffle 2817 2815 4 5 6 3 + Store 2816 2818 + 2819: 6(int) Load 8(invocation) + 2820: 2802(ptr) AccessChain 34(data) 67 2794 + 2821: 28(i64vec4) Load 2820 + 2822: 28(i64vec4) GroupNonUniformIAdd 42 Reduce 2821 + 2823: 2802(ptr) AccessChain 34(data) 2819 2794 + Store 2823 2822 + 2824: 6(int) Load 8(invocation) + 2825: 2795(ptr) AccessChain 34(data) 37 2794 38 + 2826: 27(int64_t) Load 2825 + 2827: 27(int64_t) GroupNonUniformIMul 42 Reduce 2826 + 2828: 2795(ptr) AccessChain 34(data) 2824 2794 38 + Store 2828 2827 + 2829: 6(int) Load 8(invocation) + 2830: 2802(ptr) AccessChain 34(data) 46 2794 + 2831: 28(i64vec4) Load 2830 + 2832:2801(i64vec2) VectorShuffle 2831 2831 0 1 + 2833:2801(i64vec2) GroupNonUniformIMul 42 Reduce 2832 + 2834: 2802(ptr) AccessChain 34(data) 2829 2794 + 2835: 28(i64vec4) Load 2834 + 2836: 28(i64vec4) VectorShuffle 2835 2833 4 5 2 3 + Store 2834 2836 + 2837: 6(int) Load 8(invocation) + 2838: 2802(ptr) AccessChain 34(data) 57 2794 + 2839: 28(i64vec4) Load 2838 + 2840:2811(i64vec3) VectorShuffle 2839 2839 0 1 2 + 2841:2811(i64vec3) GroupNonUniformIMul 42 Reduce 2840 + 2842: 2802(ptr) AccessChain 34(data) 2837 2794 + 2843: 28(i64vec4) Load 2842 + 2844: 28(i64vec4) VectorShuffle 2843 2841 4 5 6 3 + Store 2842 2844 + 2845: 6(int) Load 8(invocation) + 2846: 2802(ptr) AccessChain 34(data) 67 2794 + 2847: 28(i64vec4) Load 2846 + 2848: 28(i64vec4) GroupNonUniformIMul 42 Reduce 2847 + 2849: 2802(ptr) AccessChain 34(data) 2845 2794 + Store 2849 2848 + 2850: 6(int) Load 8(invocation) + 2851: 2795(ptr) AccessChain 34(data) 37 2794 38 + 2852: 27(int64_t) Load 2851 + 2853: 27(int64_t) GroupNonUniformUMin 42 Reduce 2852 + 2854: 2795(ptr) AccessChain 34(data) 2850 2794 38 + Store 2854 2853 + 2855: 6(int) Load 8(invocation) + 2856: 2802(ptr) AccessChain 34(data) 46 2794 + 2857: 28(i64vec4) Load 2856 + 2858:2801(i64vec2) VectorShuffle 2857 2857 0 1 + 2859:2801(i64vec2) GroupNonUniformUMin 42 Reduce 2858 + 2860: 2802(ptr) AccessChain 34(data) 2855 2794 + 2861: 28(i64vec4) Load 2860 + 2862: 28(i64vec4) VectorShuffle 2861 2859 4 5 2 3 + Store 2860 2862 + 2863: 6(int) Load 8(invocation) + 2864: 2802(ptr) AccessChain 34(data) 57 2794 + 2865: 28(i64vec4) Load 2864 + 2866:2811(i64vec3) VectorShuffle 2865 2865 0 1 2 + 2867:2811(i64vec3) GroupNonUniformUMin 42 Reduce 2866 + 2868: 2802(ptr) AccessChain 34(data) 2863 2794 + 2869: 28(i64vec4) Load 2868 + 2870: 28(i64vec4) VectorShuffle 2869 2867 4 5 6 3 + Store 2868 2870 + 2871: 6(int) Load 8(invocation) + 2872: 2802(ptr) AccessChain 34(data) 67 2794 + 2873: 28(i64vec4) Load 2872 + 2874: 28(i64vec4) GroupNonUniformUMin 42 Reduce 2873 + 2875: 2802(ptr) AccessChain 34(data) 2871 2794 + Store 2875 2874 + 2876: 6(int) Load 8(invocation) + 2877: 2795(ptr) AccessChain 34(data) 37 2794 38 + 2878: 27(int64_t) Load 2877 + 2879: 27(int64_t) GroupNonUniformUMax 42 Reduce 2878 + 2880: 2795(ptr) AccessChain 34(data) 2876 2794 38 + Store 2880 2879 + 2881: 6(int) Load 8(invocation) + 2882: 2802(ptr) AccessChain 34(data) 46 2794 + 2883: 28(i64vec4) Load 2882 + 2884:2801(i64vec2) VectorShuffle 2883 2883 0 1 + 2885:2801(i64vec2) GroupNonUniformUMax 42 Reduce 2884 + 2886: 2802(ptr) AccessChain 34(data) 2881 2794 + 2887: 28(i64vec4) Load 2886 + 2888: 28(i64vec4) VectorShuffle 2887 2885 4 5 2 3 + Store 2886 2888 + 2889: 6(int) Load 8(invocation) + 2890: 2802(ptr) AccessChain 34(data) 57 2794 + 2891: 28(i64vec4) Load 2890 + 2892:2811(i64vec3) VectorShuffle 2891 2891 0 1 2 + 2893:2811(i64vec3) GroupNonUniformUMax 42 Reduce 2892 + 2894: 2802(ptr) AccessChain 34(data) 2889 2794 + 2895: 28(i64vec4) Load 2894 + 2896: 28(i64vec4) VectorShuffle 2895 2893 4 5 6 3 + Store 2894 2896 + 2897: 6(int) Load 8(invocation) + 2898: 2802(ptr) AccessChain 34(data) 67 2794 + 2899: 28(i64vec4) Load 2898 + 2900: 28(i64vec4) GroupNonUniformUMax 42 Reduce 2899 + 2901: 2802(ptr) AccessChain 34(data) 2897 2794 + Store 2901 2900 + 2902: 6(int) Load 8(invocation) + 2903: 2795(ptr) AccessChain 34(data) 37 2794 38 + 2904: 27(int64_t) Load 2903 + 2905: 27(int64_t) GroupNonUniformBitwiseAnd 42 Reduce 2904 + 2906: 2795(ptr) AccessChain 34(data) 2902 2794 38 + Store 2906 2905 + 2907: 6(int) Load 8(invocation) + 2908: 2802(ptr) AccessChain 34(data) 46 2794 + 2909: 28(i64vec4) Load 2908 + 2910:2801(i64vec2) VectorShuffle 2909 2909 0 1 + 2911:2801(i64vec2) GroupNonUniformBitwiseAnd 42 Reduce 2910 + 2912: 2802(ptr) AccessChain 34(data) 2907 2794 + 2913: 28(i64vec4) Load 2912 + 2914: 28(i64vec4) VectorShuffle 2913 2911 4 5 2 3 + Store 2912 2914 + 2915: 6(int) Load 8(invocation) + 2916: 2802(ptr) AccessChain 34(data) 57 2794 + 2917: 28(i64vec4) Load 2916 + 2918:2811(i64vec3) VectorShuffle 2917 2917 0 1 2 + 2919:2811(i64vec3) GroupNonUniformBitwiseAnd 42 Reduce 2918 + 2920: 2802(ptr) AccessChain 34(data) 2915 2794 + 2921: 28(i64vec4) Load 2920 + 2922: 28(i64vec4) VectorShuffle 2921 2919 4 5 6 3 + Store 2920 2922 + 2923: 6(int) Load 8(invocation) + 2924: 2802(ptr) AccessChain 34(data) 67 2794 + 2925: 28(i64vec4) Load 2924 + 2926: 28(i64vec4) GroupNonUniformBitwiseAnd 42 Reduce 2925 + 2927: 2802(ptr) AccessChain 34(data) 2923 2794 + Store 2927 2926 + 2928: 6(int) Load 8(invocation) + 2929: 2795(ptr) AccessChain 34(data) 37 2794 38 + 2930: 27(int64_t) Load 2929 + 2931: 27(int64_t) GroupNonUniformBitwiseOr 42 Reduce 2930 + 2932: 2795(ptr) AccessChain 34(data) 2928 2794 38 + Store 2932 2931 + 2933: 6(int) Load 8(invocation) + 2934: 2802(ptr) AccessChain 34(data) 46 2794 + 2935: 28(i64vec4) Load 2934 + 2936:2801(i64vec2) VectorShuffle 2935 2935 0 1 + 2937:2801(i64vec2) GroupNonUniformBitwiseOr 42 Reduce 2936 + 2938: 2802(ptr) AccessChain 34(data) 2933 2794 + 2939: 28(i64vec4) Load 2938 + 2940: 28(i64vec4) VectorShuffle 2939 2937 4 5 2 3 + Store 2938 2940 + 2941: 6(int) Load 8(invocation) + 2942: 2802(ptr) AccessChain 34(data) 57 2794 + 2943: 28(i64vec4) Load 2942 + 2944:2811(i64vec3) VectorShuffle 2943 2943 0 1 2 + 2945:2811(i64vec3) GroupNonUniformBitwiseOr 42 Reduce 2944 + 2946: 2802(ptr) AccessChain 34(data) 2941 2794 + 2947: 28(i64vec4) Load 2946 + 2948: 28(i64vec4) VectorShuffle 2947 2945 4 5 6 3 + Store 2946 2948 + 2949: 6(int) Load 8(invocation) + 2950: 2802(ptr) AccessChain 34(data) 67 2794 + 2951: 28(i64vec4) Load 2950 + 2952: 28(i64vec4) GroupNonUniformBitwiseOr 42 Reduce 2951 + 2953: 2802(ptr) AccessChain 34(data) 2949 2794 + Store 2953 2952 + 2954: 6(int) Load 8(invocation) + 2955: 2795(ptr) AccessChain 34(data) 37 2794 38 + 2956: 27(int64_t) Load 2955 + 2957: 27(int64_t) GroupNonUniformBitwiseXor 42 Reduce 2956 + 2958: 2795(ptr) AccessChain 34(data) 2954 2794 38 + Store 2958 2957 + 2959: 6(int) Load 8(invocation) + 2960: 2802(ptr) AccessChain 34(data) 46 2794 + 2961: 28(i64vec4) Load 2960 + 2962:2801(i64vec2) VectorShuffle 2961 2961 0 1 + 2963:2801(i64vec2) GroupNonUniformBitwiseXor 42 Reduce 2962 + 2964: 2802(ptr) AccessChain 34(data) 2959 2794 + 2965: 28(i64vec4) Load 2964 + 2966: 28(i64vec4) VectorShuffle 2965 2963 4 5 2 3 + Store 2964 2966 + 2967: 6(int) Load 8(invocation) + 2968: 2802(ptr) AccessChain 34(data) 57 2794 + 2969: 28(i64vec4) Load 2968 + 2970:2811(i64vec3) VectorShuffle 2969 2969 0 1 2 + 2971:2811(i64vec3) GroupNonUniformBitwiseXor 42 Reduce 2970 + 2972: 2802(ptr) AccessChain 34(data) 2967 2794 + 2973: 28(i64vec4) Load 2972 + 2974: 28(i64vec4) VectorShuffle 2973 2971 4 5 6 3 + Store 2972 2974 + 2975: 6(int) Load 8(invocation) + 2976: 2802(ptr) AccessChain 34(data) 67 2794 + 2977: 28(i64vec4) Load 2976 + 2978: 28(i64vec4) GroupNonUniformBitwiseXor 42 Reduce 2977 + 2979: 2802(ptr) AccessChain 34(data) 2975 2794 + Store 2979 2978 + 2980: 6(int) Load 8(invocation) + 2981: 2795(ptr) AccessChain 34(data) 37 2794 38 + 2982: 27(int64_t) Load 2981 + 2983: 27(int64_t) GroupNonUniformIAdd 42 InclusiveScan 2982 + 2984: 2795(ptr) AccessChain 34(data) 2980 2794 38 + Store 2984 2983 + 2985: 6(int) Load 8(invocation) + 2986: 2802(ptr) AccessChain 34(data) 46 2794 + 2987: 28(i64vec4) Load 2986 + 2988:2801(i64vec2) VectorShuffle 2987 2987 0 1 + 2989:2801(i64vec2) GroupNonUniformIAdd 42 InclusiveScan 2988 + 2990: 2802(ptr) AccessChain 34(data) 2985 2794 + 2991: 28(i64vec4) Load 2990 + 2992: 28(i64vec4) VectorShuffle 2991 2989 4 5 2 3 + Store 2990 2992 + 2993: 6(int) Load 8(invocation) + 2994: 2802(ptr) AccessChain 34(data) 57 2794 + 2995: 28(i64vec4) Load 2994 + 2996:2811(i64vec3) VectorShuffle 2995 2995 0 1 2 + 2997:2811(i64vec3) GroupNonUniformIAdd 42 InclusiveScan 2996 + 2998: 2802(ptr) AccessChain 34(data) 2993 2794 + 2999: 28(i64vec4) Load 2998 + 3000: 28(i64vec4) VectorShuffle 2999 2997 4 5 6 3 + Store 2998 3000 + 3001: 6(int) Load 8(invocation) + 3002: 2802(ptr) AccessChain 34(data) 67 2794 + 3003: 28(i64vec4) Load 3002 + 3004: 28(i64vec4) GroupNonUniformIAdd 42 InclusiveScan 3003 + 3005: 2802(ptr) AccessChain 34(data) 3001 2794 + Store 3005 3004 + 3006: 6(int) Load 8(invocation) + 3007: 2795(ptr) AccessChain 34(data) 37 2794 38 + 3008: 27(int64_t) Load 3007 + 3009: 27(int64_t) GroupNonUniformIMul 42 InclusiveScan 3008 + 3010: 2795(ptr) AccessChain 34(data) 3006 2794 38 + Store 3010 3009 + 3011: 6(int) Load 8(invocation) + 3012: 2802(ptr) AccessChain 34(data) 46 2794 + 3013: 28(i64vec4) Load 3012 + 3014:2801(i64vec2) VectorShuffle 3013 3013 0 1 + 3015:2801(i64vec2) GroupNonUniformIMul 42 InclusiveScan 3014 + 3016: 2802(ptr) AccessChain 34(data) 3011 2794 + 3017: 28(i64vec4) Load 3016 + 3018: 28(i64vec4) VectorShuffle 3017 3015 4 5 2 3 + Store 3016 3018 + 3019: 6(int) Load 8(invocation) + 3020: 2802(ptr) AccessChain 34(data) 57 2794 + 3021: 28(i64vec4) Load 3020 + 3022:2811(i64vec3) VectorShuffle 3021 3021 0 1 2 + 3023:2811(i64vec3) GroupNonUniformIMul 42 InclusiveScan 3022 + 3024: 2802(ptr) AccessChain 34(data) 3019 2794 + 3025: 28(i64vec4) Load 3024 + 3026: 28(i64vec4) VectorShuffle 3025 3023 4 5 6 3 + Store 3024 3026 + 3027: 6(int) Load 8(invocation) + 3028: 2802(ptr) AccessChain 34(data) 67 2794 + 3029: 28(i64vec4) Load 3028 + 3030: 28(i64vec4) GroupNonUniformIMul 42 InclusiveScan 3029 + 3031: 2802(ptr) AccessChain 34(data) 3027 2794 + Store 3031 3030 + 3032: 6(int) Load 8(invocation) + 3033: 2795(ptr) AccessChain 34(data) 37 2794 38 + 3034: 27(int64_t) Load 3033 + 3035: 27(int64_t) GroupNonUniformUMin 42 InclusiveScan 3034 + 3036: 2795(ptr) AccessChain 34(data) 3032 2794 38 + Store 3036 3035 + 3037: 6(int) Load 8(invocation) + 3038: 2802(ptr) AccessChain 34(data) 46 2794 + 3039: 28(i64vec4) Load 3038 + 3040:2801(i64vec2) VectorShuffle 3039 3039 0 1 + 3041:2801(i64vec2) GroupNonUniformUMin 42 InclusiveScan 3040 + 3042: 2802(ptr) AccessChain 34(data) 3037 2794 + 3043: 28(i64vec4) Load 3042 + 3044: 28(i64vec4) VectorShuffle 3043 3041 4 5 2 3 + Store 3042 3044 + 3045: 6(int) Load 8(invocation) + 3046: 2802(ptr) AccessChain 34(data) 57 2794 + 3047: 28(i64vec4) Load 3046 + 3048:2811(i64vec3) VectorShuffle 3047 3047 0 1 2 + 3049:2811(i64vec3) GroupNonUniformUMin 42 InclusiveScan 3048 + 3050: 2802(ptr) AccessChain 34(data) 3045 2794 + 3051: 28(i64vec4) Load 3050 + 3052: 28(i64vec4) VectorShuffle 3051 3049 4 5 6 3 + Store 3050 3052 + 3053: 6(int) Load 8(invocation) + 3054: 2802(ptr) AccessChain 34(data) 67 2794 + 3055: 28(i64vec4) Load 3054 + 3056: 28(i64vec4) GroupNonUniformUMin 42 InclusiveScan 3055 + 3057: 2802(ptr) AccessChain 34(data) 3053 2794 + Store 3057 3056 + 3058: 6(int) Load 8(invocation) + 3059: 2795(ptr) AccessChain 34(data) 37 2794 38 + 3060: 27(int64_t) Load 3059 + 3061: 27(int64_t) GroupNonUniformUMax 42 InclusiveScan 3060 + 3062: 2795(ptr) AccessChain 34(data) 3058 2794 38 + Store 3062 3061 + 3063: 6(int) Load 8(invocation) + 3064: 2802(ptr) AccessChain 34(data) 46 2794 + 3065: 28(i64vec4) Load 3064 + 3066:2801(i64vec2) VectorShuffle 3065 3065 0 1 + 3067:2801(i64vec2) GroupNonUniformUMax 42 InclusiveScan 3066 + 3068: 2802(ptr) AccessChain 34(data) 3063 2794 + 3069: 28(i64vec4) Load 3068 + 3070: 28(i64vec4) VectorShuffle 3069 3067 4 5 2 3 + Store 3068 3070 + 3071: 6(int) Load 8(invocation) + 3072: 2802(ptr) AccessChain 34(data) 57 2794 + 3073: 28(i64vec4) Load 3072 + 3074:2811(i64vec3) VectorShuffle 3073 3073 0 1 2 + 3075:2811(i64vec3) GroupNonUniformUMax 42 InclusiveScan 3074 + 3076: 2802(ptr) AccessChain 34(data) 3071 2794 + 3077: 28(i64vec4) Load 3076 + 3078: 28(i64vec4) VectorShuffle 3077 3075 4 5 6 3 + Store 3076 3078 + 3079: 6(int) Load 8(invocation) + 3080: 2802(ptr) AccessChain 34(data) 67 2794 + 3081: 28(i64vec4) Load 3080 + 3082: 28(i64vec4) GroupNonUniformUMax 42 InclusiveScan 3081 + 3083: 2802(ptr) AccessChain 34(data) 3079 2794 + Store 3083 3082 + 3084: 6(int) Load 8(invocation) + 3085: 2795(ptr) AccessChain 34(data) 37 2794 38 + 3086: 27(int64_t) Load 3085 + 3087: 27(int64_t) GroupNonUniformBitwiseAnd 42 InclusiveScan 3086 + 3088: 2795(ptr) AccessChain 34(data) 3084 2794 38 + Store 3088 3087 + 3089: 6(int) Load 8(invocation) + 3090: 2802(ptr) AccessChain 34(data) 46 2794 + 3091: 28(i64vec4) Load 3090 + 3092:2801(i64vec2) VectorShuffle 3091 3091 0 1 + 3093:2801(i64vec2) GroupNonUniformBitwiseAnd 42 InclusiveScan 3092 + 3094: 2802(ptr) AccessChain 34(data) 3089 2794 + 3095: 28(i64vec4) Load 3094 + 3096: 28(i64vec4) VectorShuffle 3095 3093 4 5 2 3 + Store 3094 3096 + 3097: 6(int) Load 8(invocation) + 3098: 2802(ptr) AccessChain 34(data) 57 2794 + 3099: 28(i64vec4) Load 3098 + 3100:2811(i64vec3) VectorShuffle 3099 3099 0 1 2 + 3101:2811(i64vec3) GroupNonUniformBitwiseAnd 42 InclusiveScan 3100 + 3102: 2802(ptr) AccessChain 34(data) 3097 2794 + 3103: 28(i64vec4) Load 3102 + 3104: 28(i64vec4) VectorShuffle 3103 3101 4 5 6 3 + Store 3102 3104 + 3105: 6(int) Load 8(invocation) + 3106: 2802(ptr) AccessChain 34(data) 67 2794 + 3107: 28(i64vec4) Load 3106 + 3108: 28(i64vec4) GroupNonUniformBitwiseAnd 42 InclusiveScan 3107 + 3109: 2802(ptr) AccessChain 34(data) 3105 2794 + Store 3109 3108 + 3110: 6(int) Load 8(invocation) + 3111: 2795(ptr) AccessChain 34(data) 37 2794 38 + 3112: 27(int64_t) Load 3111 + 3113: 27(int64_t) GroupNonUniformBitwiseOr 42 InclusiveScan 3112 + 3114: 2795(ptr) AccessChain 34(data) 3110 2794 38 + Store 3114 3113 + 3115: 6(int) Load 8(invocation) + 3116: 2802(ptr) AccessChain 34(data) 46 2794 + 3117: 28(i64vec4) Load 3116 + 3118:2801(i64vec2) VectorShuffle 3117 3117 0 1 + 3119:2801(i64vec2) GroupNonUniformBitwiseOr 42 InclusiveScan 3118 + 3120: 2802(ptr) AccessChain 34(data) 3115 2794 + 3121: 28(i64vec4) Load 3120 + 3122: 28(i64vec4) VectorShuffle 3121 3119 4 5 2 3 + Store 3120 3122 + 3123: 6(int) Load 8(invocation) + 3124: 2802(ptr) AccessChain 34(data) 57 2794 + 3125: 28(i64vec4) Load 3124 + 3126:2811(i64vec3) VectorShuffle 3125 3125 0 1 2 + 3127:2811(i64vec3) GroupNonUniformBitwiseOr 42 InclusiveScan 3126 + 3128: 2802(ptr) AccessChain 34(data) 3123 2794 + 3129: 28(i64vec4) Load 3128 + 3130: 28(i64vec4) VectorShuffle 3129 3127 4 5 6 3 + Store 3128 3130 + 3131: 6(int) Load 8(invocation) + 3132: 2802(ptr) AccessChain 34(data) 67 2794 + 3133: 28(i64vec4) Load 3132 + 3134: 28(i64vec4) GroupNonUniformBitwiseOr 42 InclusiveScan 3133 + 3135: 2802(ptr) AccessChain 34(data) 3131 2794 + Store 3135 3134 + 3136: 6(int) Load 8(invocation) + 3137: 2795(ptr) AccessChain 34(data) 37 2794 38 + 3138: 27(int64_t) Load 3137 + 3139: 27(int64_t) GroupNonUniformBitwiseXor 42 InclusiveScan 3138 + 3140: 2795(ptr) AccessChain 34(data) 3136 2794 38 + Store 3140 3139 + 3141: 6(int) Load 8(invocation) + 3142: 2802(ptr) AccessChain 34(data) 46 2794 + 3143: 28(i64vec4) Load 3142 + 3144:2801(i64vec2) VectorShuffle 3143 3143 0 1 + 3145:2801(i64vec2) GroupNonUniformBitwiseXor 42 InclusiveScan 3144 + 3146: 2802(ptr) AccessChain 34(data) 3141 2794 + 3147: 28(i64vec4) Load 3146 + 3148: 28(i64vec4) VectorShuffle 3147 3145 4 5 2 3 + Store 3146 3148 + 3149: 6(int) Load 8(invocation) + 3150: 2802(ptr) AccessChain 34(data) 57 2794 + 3151: 28(i64vec4) Load 3150 + 3152:2811(i64vec3) VectorShuffle 3151 3151 0 1 2 + 3153:2811(i64vec3) GroupNonUniformBitwiseXor 42 InclusiveScan 3152 + 3154: 2802(ptr) AccessChain 34(data) 3149 2794 + 3155: 28(i64vec4) Load 3154 + 3156: 28(i64vec4) VectorShuffle 3155 3153 4 5 6 3 + Store 3154 3156 + 3157: 6(int) Load 8(invocation) + 3158: 2802(ptr) AccessChain 34(data) 67 2794 + 3159: 28(i64vec4) Load 3158 + 3160: 28(i64vec4) GroupNonUniformBitwiseXor 42 InclusiveScan 3159 + 3161: 2802(ptr) AccessChain 34(data) 3157 2794 + Store 3161 3160 + 3162: 6(int) Load 8(invocation) + 3163: 2795(ptr) AccessChain 34(data) 37 2794 38 + 3164: 27(int64_t) Load 3163 + 3165: 27(int64_t) GroupNonUniformIAdd 42 ExclusiveScan 3164 + 3166: 2795(ptr) AccessChain 34(data) 3162 2794 38 + Store 3166 3165 + 3167: 6(int) Load 8(invocation) + 3168: 2802(ptr) AccessChain 34(data) 46 2794 + 3169: 28(i64vec4) Load 3168 + 3170:2801(i64vec2) VectorShuffle 3169 3169 0 1 + 3171:2801(i64vec2) GroupNonUniformIAdd 42 ExclusiveScan 3170 + 3172: 2802(ptr) AccessChain 34(data) 3167 2794 + 3173: 28(i64vec4) Load 3172 + 3174: 28(i64vec4) VectorShuffle 3173 3171 4 5 2 3 + Store 3172 3174 + 3175: 6(int) Load 8(invocation) + 3176: 2802(ptr) AccessChain 34(data) 57 2794 + 3177: 28(i64vec4) Load 3176 + 3178:2811(i64vec3) VectorShuffle 3177 3177 0 1 2 + 3179:2811(i64vec3) GroupNonUniformIAdd 42 ExclusiveScan 3178 + 3180: 2802(ptr) AccessChain 34(data) 3175 2794 + 3181: 28(i64vec4) Load 3180 + 3182: 28(i64vec4) VectorShuffle 3181 3179 4 5 6 3 + Store 3180 3182 + 3183: 6(int) Load 8(invocation) + 3184: 2802(ptr) AccessChain 34(data) 67 2794 + 3185: 28(i64vec4) Load 3184 + 3186: 28(i64vec4) GroupNonUniformIAdd 42 ExclusiveScan 3185 + 3187: 2802(ptr) AccessChain 34(data) 3183 2794 + Store 3187 3186 + 3188: 6(int) Load 8(invocation) + 3189: 2795(ptr) AccessChain 34(data) 37 2794 38 + 3190: 27(int64_t) Load 3189 + 3191: 27(int64_t) GroupNonUniformIMul 42 ExclusiveScan 3190 + 3192: 2795(ptr) AccessChain 34(data) 3188 2794 38 + Store 3192 3191 + 3193: 6(int) Load 8(invocation) + 3194: 2802(ptr) AccessChain 34(data) 46 2794 + 3195: 28(i64vec4) Load 3194 + 3196:2801(i64vec2) VectorShuffle 3195 3195 0 1 + 3197:2801(i64vec2) GroupNonUniformIMul 42 ExclusiveScan 3196 + 3198: 2802(ptr) AccessChain 34(data) 3193 2794 + 3199: 28(i64vec4) Load 3198 + 3200: 28(i64vec4) VectorShuffle 3199 3197 4 5 2 3 + Store 3198 3200 + 3201: 6(int) Load 8(invocation) + 3202: 2802(ptr) AccessChain 34(data) 57 2794 + 3203: 28(i64vec4) Load 3202 + 3204:2811(i64vec3) VectorShuffle 3203 3203 0 1 2 + 3205:2811(i64vec3) GroupNonUniformIMul 42 ExclusiveScan 3204 + 3206: 2802(ptr) AccessChain 34(data) 3201 2794 + 3207: 28(i64vec4) Load 3206 + 3208: 28(i64vec4) VectorShuffle 3207 3205 4 5 6 3 + Store 3206 3208 + 3209: 6(int) Load 8(invocation) + 3210: 2802(ptr) AccessChain 34(data) 67 2794 + 3211: 28(i64vec4) Load 3210 + 3212: 28(i64vec4) GroupNonUniformIMul 42 ExclusiveScan 3211 + 3213: 2802(ptr) AccessChain 34(data) 3209 2794 + Store 3213 3212 + 3214: 6(int) Load 8(invocation) + 3215: 2795(ptr) AccessChain 34(data) 37 2794 38 + 3216: 27(int64_t) Load 3215 + 3217: 27(int64_t) GroupNonUniformUMin 42 ExclusiveScan 3216 + 3218: 2795(ptr) AccessChain 34(data) 3214 2794 38 + Store 3218 3217 + 3219: 6(int) Load 8(invocation) + 3220: 2802(ptr) AccessChain 34(data) 46 2794 + 3221: 28(i64vec4) Load 3220 + 3222:2801(i64vec2) VectorShuffle 3221 3221 0 1 + 3223:2801(i64vec2) GroupNonUniformUMin 42 ExclusiveScan 3222 + 3224: 2802(ptr) AccessChain 34(data) 3219 2794 + 3225: 28(i64vec4) Load 3224 + 3226: 28(i64vec4) VectorShuffle 3225 3223 4 5 2 3 + Store 3224 3226 + 3227: 6(int) Load 8(invocation) + 3228: 2802(ptr) AccessChain 34(data) 57 2794 + 3229: 28(i64vec4) Load 3228 + 3230:2811(i64vec3) VectorShuffle 3229 3229 0 1 2 + 3231:2811(i64vec3) GroupNonUniformUMin 42 ExclusiveScan 3230 + 3232: 2802(ptr) AccessChain 34(data) 3227 2794 + 3233: 28(i64vec4) Load 3232 + 3234: 28(i64vec4) VectorShuffle 3233 3231 4 5 6 3 + Store 3232 3234 + 3235: 6(int) Load 8(invocation) + 3236: 2802(ptr) AccessChain 34(data) 67 2794 + 3237: 28(i64vec4) Load 3236 + 3238: 28(i64vec4) GroupNonUniformUMin 42 ExclusiveScan 3237 + 3239: 2802(ptr) AccessChain 34(data) 3235 2794 + Store 3239 3238 + 3240: 6(int) Load 8(invocation) + 3241: 2795(ptr) AccessChain 34(data) 37 2794 38 + 3242: 27(int64_t) Load 3241 + 3243: 27(int64_t) GroupNonUniformUMax 42 ExclusiveScan 3242 + 3244: 2795(ptr) AccessChain 34(data) 3240 2794 38 + Store 3244 3243 + 3245: 6(int) Load 8(invocation) + 3246: 2802(ptr) AccessChain 34(data) 46 2794 + 3247: 28(i64vec4) Load 3246 + 3248:2801(i64vec2) VectorShuffle 3247 3247 0 1 + 3249:2801(i64vec2) GroupNonUniformUMax 42 ExclusiveScan 3248 + 3250: 2802(ptr) AccessChain 34(data) 3245 2794 + 3251: 28(i64vec4) Load 3250 + 3252: 28(i64vec4) VectorShuffle 3251 3249 4 5 2 3 + Store 3250 3252 + 3253: 6(int) Load 8(invocation) + 3254: 2802(ptr) AccessChain 34(data) 57 2794 + 3255: 28(i64vec4) Load 3254 + 3256:2811(i64vec3) VectorShuffle 3255 3255 0 1 2 + 3257:2811(i64vec3) GroupNonUniformUMax 42 ExclusiveScan 3256 + 3258: 2802(ptr) AccessChain 34(data) 3253 2794 + 3259: 28(i64vec4) Load 3258 + 3260: 28(i64vec4) VectorShuffle 3259 3257 4 5 6 3 + Store 3258 3260 + 3261: 6(int) Load 8(invocation) + 3262: 2802(ptr) AccessChain 34(data) 67 2794 + 3263: 28(i64vec4) Load 3262 + 3264: 28(i64vec4) GroupNonUniformUMax 42 ExclusiveScan 3263 + 3265: 2802(ptr) AccessChain 34(data) 3261 2794 + Store 3265 3264 + 3266: 6(int) Load 8(invocation) + 3267: 2795(ptr) AccessChain 34(data) 37 2794 38 + 3268: 27(int64_t) Load 3267 + 3269: 27(int64_t) GroupNonUniformBitwiseAnd 42 ExclusiveScan 3268 + 3270: 2795(ptr) AccessChain 34(data) 3266 2794 38 + Store 3270 3269 + 3271: 6(int) Load 8(invocation) + 3272: 2802(ptr) AccessChain 34(data) 46 2794 + 3273: 28(i64vec4) Load 3272 + 3274:2801(i64vec2) VectorShuffle 3273 3273 0 1 + 3275:2801(i64vec2) GroupNonUniformBitwiseAnd 42 ExclusiveScan 3274 + 3276: 2802(ptr) AccessChain 34(data) 3271 2794 + 3277: 28(i64vec4) Load 3276 + 3278: 28(i64vec4) VectorShuffle 3277 3275 4 5 2 3 + Store 3276 3278 + 3279: 6(int) Load 8(invocation) + 3280: 2802(ptr) AccessChain 34(data) 57 2794 + 3281: 28(i64vec4) Load 3280 + 3282:2811(i64vec3) VectorShuffle 3281 3281 0 1 2 + 3283:2811(i64vec3) GroupNonUniformBitwiseAnd 42 ExclusiveScan 3282 + 3284: 2802(ptr) AccessChain 34(data) 3279 2794 + 3285: 28(i64vec4) Load 3284 + 3286: 28(i64vec4) VectorShuffle 3285 3283 4 5 6 3 + Store 3284 3286 + 3287: 6(int) Load 8(invocation) + 3288: 2802(ptr) AccessChain 34(data) 67 2794 + 3289: 28(i64vec4) Load 3288 + 3290: 28(i64vec4) GroupNonUniformBitwiseAnd 42 ExclusiveScan 3289 + 3291: 2802(ptr) AccessChain 34(data) 3287 2794 + Store 3291 3290 + 3292: 6(int) Load 8(invocation) + 3293: 2795(ptr) AccessChain 34(data) 37 2794 38 + 3294: 27(int64_t) Load 3293 + 3295: 27(int64_t) GroupNonUniformBitwiseOr 42 ExclusiveScan 3294 + 3296: 2795(ptr) AccessChain 34(data) 3292 2794 38 + Store 3296 3295 + 3297: 6(int) Load 8(invocation) + 3298: 2802(ptr) AccessChain 34(data) 46 2794 + 3299: 28(i64vec4) Load 3298 + 3300:2801(i64vec2) VectorShuffle 3299 3299 0 1 + 3301:2801(i64vec2) GroupNonUniformBitwiseOr 42 ExclusiveScan 3300 + 3302: 2802(ptr) AccessChain 34(data) 3297 2794 + 3303: 28(i64vec4) Load 3302 + 3304: 28(i64vec4) VectorShuffle 3303 3301 4 5 2 3 + Store 3302 3304 + 3305: 6(int) Load 8(invocation) + 3306: 2802(ptr) AccessChain 34(data) 57 2794 + 3307: 28(i64vec4) Load 3306 + 3308:2811(i64vec3) VectorShuffle 3307 3307 0 1 2 + 3309:2811(i64vec3) GroupNonUniformBitwiseOr 42 ExclusiveScan 3308 + 3310: 2802(ptr) AccessChain 34(data) 3305 2794 + 3311: 28(i64vec4) Load 3310 + 3312: 28(i64vec4) VectorShuffle 3311 3309 4 5 6 3 + Store 3310 3312 + 3313: 6(int) Load 8(invocation) + 3314: 2802(ptr) AccessChain 34(data) 67 2794 + 3315: 28(i64vec4) Load 3314 + 3316: 28(i64vec4) GroupNonUniformBitwiseOr 42 ExclusiveScan 3315 + 3317: 2802(ptr) AccessChain 34(data) 3313 2794 + Store 3317 3316 + 3318: 6(int) Load 8(invocation) + 3319: 2795(ptr) AccessChain 34(data) 37 2794 38 + 3320: 27(int64_t) Load 3319 + 3321: 27(int64_t) GroupNonUniformBitwiseXor 42 ExclusiveScan 3320 + 3322: 2795(ptr) AccessChain 34(data) 3318 2794 38 + Store 3322 3321 + 3323: 6(int) Load 8(invocation) + 3324: 2802(ptr) AccessChain 34(data) 46 2794 + 3325: 28(i64vec4) Load 3324 + 3326:2801(i64vec2) VectorShuffle 3325 3325 0 1 + 3327:2801(i64vec2) GroupNonUniformBitwiseXor 42 ExclusiveScan 3326 + 3328: 2802(ptr) AccessChain 34(data) 3323 2794 + 3329: 28(i64vec4) Load 3328 + 3330: 28(i64vec4) VectorShuffle 3329 3327 4 5 2 3 + Store 3328 3330 + 3331: 6(int) Load 8(invocation) + 3332: 2802(ptr) AccessChain 34(data) 57 2794 + 3333: 28(i64vec4) Load 3332 + 3334:2811(i64vec3) VectorShuffle 3333 3333 0 1 2 + 3335:2811(i64vec3) GroupNonUniformBitwiseXor 42 ExclusiveScan 3334 + 3336: 2802(ptr) AccessChain 34(data) 3331 2794 + 3337: 28(i64vec4) Load 3336 + 3338: 28(i64vec4) VectorShuffle 3337 3335 4 5 6 3 + Store 3336 3338 + 3339: 6(int) Load 8(invocation) + 3340: 2802(ptr) AccessChain 34(data) 67 2794 + 3341: 28(i64vec4) Load 3340 + 3342: 28(i64vec4) GroupNonUniformBitwiseXor 42 ExclusiveScan 3341 + 3343: 2802(ptr) AccessChain 34(data) 3339 2794 + Store 3343 3342 + 3344: 6(int) Load 8(invocation) + 3347: 3346(ptr) AccessChain 34(data) 37 3345 38 + 3348:29(float16_t) Load 3347 + 3349:29(float16_t) GroupNonUniformFAdd 42 Reduce 3348 + 3350: 3346(ptr) AccessChain 34(data) 3344 3345 38 + Store 3350 3349 + 3351: 6(int) Load 8(invocation) + 3354: 3353(ptr) AccessChain 34(data) 46 3345 + 3355: 30(f16vec4) Load 3354 + 3356:3352(f16vec2) VectorShuffle 3355 3355 0 1 + 3357:3352(f16vec2) GroupNonUniformFAdd 42 Reduce 3356 + 3358: 3353(ptr) AccessChain 34(data) 3351 3345 + 3359: 30(f16vec4) Load 3358 + 3360: 30(f16vec4) VectorShuffle 3359 3357 4 5 2 3 + Store 3358 3360 + 3361: 6(int) Load 8(invocation) + 3363: 3353(ptr) AccessChain 34(data) 57 3345 + 3364: 30(f16vec4) Load 3363 + 3365:3362(f16vec3) VectorShuffle 3364 3364 0 1 2 + 3366:3362(f16vec3) GroupNonUniformFAdd 42 Reduce 3365 + 3367: 3353(ptr) AccessChain 34(data) 3361 3345 + 3368: 30(f16vec4) Load 3367 + 3369: 30(f16vec4) VectorShuffle 3368 3366 4 5 6 3 + Store 3367 3369 + 3370: 6(int) Load 8(invocation) + 3371: 3353(ptr) AccessChain 34(data) 67 3345 + 3372: 30(f16vec4) Load 3371 + 3373: 30(f16vec4) GroupNonUniformFAdd 42 Reduce 3372 + 3374: 3353(ptr) AccessChain 34(data) 3370 3345 + Store 3374 3373 + 3375: 6(int) Load 8(invocation) + 3376: 3346(ptr) AccessChain 34(data) 37 3345 38 + 3377:29(float16_t) Load 3376 + 3378:29(float16_t) GroupNonUniformFMul 42 Reduce 3377 + 3379: 3346(ptr) AccessChain 34(data) 3375 3345 38 + Store 3379 3378 + 3380: 6(int) Load 8(invocation) + 3381: 3353(ptr) AccessChain 34(data) 46 3345 + 3382: 30(f16vec4) Load 3381 + 3383:3352(f16vec2) VectorShuffle 3382 3382 0 1 + 3384:3352(f16vec2) GroupNonUniformFMul 42 Reduce 3383 + 3385: 3353(ptr) AccessChain 34(data) 3380 3345 + 3386: 30(f16vec4) Load 3385 + 3387: 30(f16vec4) VectorShuffle 3386 3384 4 5 2 3 + Store 3385 3387 + 3388: 6(int) Load 8(invocation) + 3389: 3353(ptr) AccessChain 34(data) 57 3345 + 3390: 30(f16vec4) Load 3389 + 3391:3362(f16vec3) VectorShuffle 3390 3390 0 1 2 + 3392:3362(f16vec3) GroupNonUniformFMul 42 Reduce 3391 + 3393: 3353(ptr) AccessChain 34(data) 3388 3345 + 3394: 30(f16vec4) Load 3393 + 3395: 30(f16vec4) VectorShuffle 3394 3392 4 5 6 3 + Store 3393 3395 + 3396: 6(int) Load 8(invocation) + 3397: 3353(ptr) AccessChain 34(data) 67 3345 + 3398: 30(f16vec4) Load 3397 + 3399: 30(f16vec4) GroupNonUniformFMul 42 Reduce 3398 + 3400: 3353(ptr) AccessChain 34(data) 3396 3345 + Store 3400 3399 + 3401: 6(int) Load 8(invocation) + 3402: 3346(ptr) AccessChain 34(data) 37 3345 38 + 3403:29(float16_t) Load 3402 + 3404:29(float16_t) GroupNonUniformFMin 42 Reduce 3403 + 3405: 3346(ptr) AccessChain 34(data) 3401 3345 38 + Store 3405 3404 + 3406: 6(int) Load 8(invocation) + 3407: 3353(ptr) AccessChain 34(data) 46 3345 + 3408: 30(f16vec4) Load 3407 + 3409:3352(f16vec2) VectorShuffle 3408 3408 0 1 + 3410:3352(f16vec2) GroupNonUniformFMin 42 Reduce 3409 + 3411: 3353(ptr) AccessChain 34(data) 3406 3345 + 3412: 30(f16vec4) Load 3411 + 3413: 30(f16vec4) VectorShuffle 3412 3410 4 5 2 3 + Store 3411 3413 + 3414: 6(int) Load 8(invocation) + 3415: 3353(ptr) AccessChain 34(data) 57 3345 + 3416: 30(f16vec4) Load 3415 + 3417:3362(f16vec3) VectorShuffle 3416 3416 0 1 2 + 3418:3362(f16vec3) GroupNonUniformFMin 42 Reduce 3417 + 3419: 3353(ptr) AccessChain 34(data) 3414 3345 + 3420: 30(f16vec4) Load 3419 + 3421: 30(f16vec4) VectorShuffle 3420 3418 4 5 6 3 + Store 3419 3421 + 3422: 6(int) Load 8(invocation) + 3423: 3353(ptr) AccessChain 34(data) 67 3345 + 3424: 30(f16vec4) Load 3423 + 3425: 30(f16vec4) GroupNonUniformFMin 42 Reduce 3424 + 3426: 3353(ptr) AccessChain 34(data) 3422 3345 + Store 3426 3425 + 3427: 6(int) Load 8(invocation) + 3428: 3346(ptr) AccessChain 34(data) 37 3345 38 + 3429:29(float16_t) Load 3428 + 3430:29(float16_t) GroupNonUniformFMax 42 Reduce 3429 + 3431: 3346(ptr) AccessChain 34(data) 3427 3345 38 + Store 3431 3430 + 3432: 6(int) Load 8(invocation) + 3433: 3353(ptr) AccessChain 34(data) 46 3345 + 3434: 30(f16vec4) Load 3433 + 3435:3352(f16vec2) VectorShuffle 3434 3434 0 1 + 3436:3352(f16vec2) GroupNonUniformFMax 42 Reduce 3435 + 3437: 3353(ptr) AccessChain 34(data) 3432 3345 + 3438: 30(f16vec4) Load 3437 + 3439: 30(f16vec4) VectorShuffle 3438 3436 4 5 2 3 + Store 3437 3439 + 3440: 6(int) Load 8(invocation) + 3441: 3353(ptr) AccessChain 34(data) 57 3345 + 3442: 30(f16vec4) Load 3441 + 3443:3362(f16vec3) VectorShuffle 3442 3442 0 1 2 + 3444:3362(f16vec3) GroupNonUniformFMax 42 Reduce 3443 + 3445: 3353(ptr) AccessChain 34(data) 3440 3345 + 3446: 30(f16vec4) Load 3445 + 3447: 30(f16vec4) VectorShuffle 3446 3444 4 5 6 3 + Store 3445 3447 + 3448: 6(int) Load 8(invocation) + 3449: 3353(ptr) AccessChain 34(data) 67 3345 + 3450: 30(f16vec4) Load 3449 + 3451: 30(f16vec4) GroupNonUniformFMax 42 Reduce 3450 + 3452: 3353(ptr) AccessChain 34(data) 3448 3345 + Store 3452 3451 + 3453: 6(int) Load 8(invocation) + 3454: 3346(ptr) AccessChain 34(data) 37 3345 38 + 3455:29(float16_t) Load 3454 + 3456:29(float16_t) GroupNonUniformFAdd 42 InclusiveScan 3455 + 3457: 3346(ptr) AccessChain 34(data) 3453 3345 38 + Store 3457 3456 + 3458: 6(int) Load 8(invocation) + 3459: 3353(ptr) AccessChain 34(data) 46 3345 + 3460: 30(f16vec4) Load 3459 + 3461:3352(f16vec2) VectorShuffle 3460 3460 0 1 + 3462:3352(f16vec2) GroupNonUniformFAdd 42 InclusiveScan 3461 + 3463: 3353(ptr) AccessChain 34(data) 3458 3345 + 3464: 30(f16vec4) Load 3463 + 3465: 30(f16vec4) VectorShuffle 3464 3462 4 5 2 3 + Store 3463 3465 + 3466: 6(int) Load 8(invocation) + 3467: 3353(ptr) AccessChain 34(data) 57 3345 + 3468: 30(f16vec4) Load 3467 + 3469:3362(f16vec3) VectorShuffle 3468 3468 0 1 2 + 3470:3362(f16vec3) GroupNonUniformFAdd 42 InclusiveScan 3469 + 3471: 3353(ptr) AccessChain 34(data) 3466 3345 + 3472: 30(f16vec4) Load 3471 + 3473: 30(f16vec4) VectorShuffle 3472 3470 4 5 6 3 + Store 3471 3473 + 3474: 6(int) Load 8(invocation) + 3475: 3353(ptr) AccessChain 34(data) 67 3345 + 3476: 30(f16vec4) Load 3475 + 3477: 30(f16vec4) GroupNonUniformFAdd 42 InclusiveScan 3476 + 3478: 3353(ptr) AccessChain 34(data) 3474 3345 + Store 3478 3477 + 3479: 6(int) Load 8(invocation) + 3480: 3346(ptr) AccessChain 34(data) 37 3345 38 + 3481:29(float16_t) Load 3480 + 3482:29(float16_t) GroupNonUniformFMul 42 InclusiveScan 3481 + 3483: 3346(ptr) AccessChain 34(data) 3479 3345 38 + Store 3483 3482 + 3484: 6(int) Load 8(invocation) + 3485: 3353(ptr) AccessChain 34(data) 46 3345 + 3486: 30(f16vec4) Load 3485 + 3487:3352(f16vec2) VectorShuffle 3486 3486 0 1 + 3488:3352(f16vec2) GroupNonUniformFMul 42 InclusiveScan 3487 + 3489: 3353(ptr) AccessChain 34(data) 3484 3345 + 3490: 30(f16vec4) Load 3489 + 3491: 30(f16vec4) VectorShuffle 3490 3488 4 5 2 3 + Store 3489 3491 + 3492: 6(int) Load 8(invocation) + 3493: 3353(ptr) AccessChain 34(data) 57 3345 + 3494: 30(f16vec4) Load 3493 + 3495:3362(f16vec3) VectorShuffle 3494 3494 0 1 2 + 3496:3362(f16vec3) GroupNonUniformFMul 42 InclusiveScan 3495 + 3497: 3353(ptr) AccessChain 34(data) 3492 3345 + 3498: 30(f16vec4) Load 3497 + 3499: 30(f16vec4) VectorShuffle 3498 3496 4 5 6 3 + Store 3497 3499 + 3500: 6(int) Load 8(invocation) + 3501: 3353(ptr) AccessChain 34(data) 67 3345 + 3502: 30(f16vec4) Load 3501 + 3503: 30(f16vec4) GroupNonUniformFMul 42 InclusiveScan 3502 + 3504: 3353(ptr) AccessChain 34(data) 3500 3345 + Store 3504 3503 + 3505: 6(int) Load 8(invocation) + 3506: 3346(ptr) AccessChain 34(data) 37 3345 38 + 3507:29(float16_t) Load 3506 + 3508:29(float16_t) GroupNonUniformFMin 42 InclusiveScan 3507 + 3509: 3346(ptr) AccessChain 34(data) 3505 3345 38 + Store 3509 3508 + 3510: 6(int) Load 8(invocation) + 3511: 3353(ptr) AccessChain 34(data) 46 3345 + 3512: 30(f16vec4) Load 3511 + 3513:3352(f16vec2) VectorShuffle 3512 3512 0 1 + 3514:3352(f16vec2) GroupNonUniformFMin 42 InclusiveScan 3513 + 3515: 3353(ptr) AccessChain 34(data) 3510 3345 + 3516: 30(f16vec4) Load 3515 + 3517: 30(f16vec4) VectorShuffle 3516 3514 4 5 2 3 + Store 3515 3517 + 3518: 6(int) Load 8(invocation) + 3519: 3353(ptr) AccessChain 34(data) 57 3345 + 3520: 30(f16vec4) Load 3519 + 3521:3362(f16vec3) VectorShuffle 3520 3520 0 1 2 + 3522:3362(f16vec3) GroupNonUniformFMin 42 InclusiveScan 3521 + 3523: 3353(ptr) AccessChain 34(data) 3518 3345 + 3524: 30(f16vec4) Load 3523 + 3525: 30(f16vec4) VectorShuffle 3524 3522 4 5 6 3 + Store 3523 3525 + 3526: 6(int) Load 8(invocation) + 3527: 3353(ptr) AccessChain 34(data) 67 3345 + 3528: 30(f16vec4) Load 3527 + 3529: 30(f16vec4) GroupNonUniformFMin 42 InclusiveScan 3528 + 3530: 3353(ptr) AccessChain 34(data) 3526 3345 + Store 3530 3529 + 3531: 6(int) Load 8(invocation) + 3532: 3346(ptr) AccessChain 34(data) 37 3345 38 + 3533:29(float16_t) Load 3532 + 3534:29(float16_t) GroupNonUniformFMax 42 InclusiveScan 3533 + 3535: 3346(ptr) AccessChain 34(data) 3531 3345 38 + Store 3535 3534 + 3536: 6(int) Load 8(invocation) + 3537: 3353(ptr) AccessChain 34(data) 46 3345 + 3538: 30(f16vec4) Load 3537 + 3539:3352(f16vec2) VectorShuffle 3538 3538 0 1 + 3540:3352(f16vec2) GroupNonUniformFMax 42 InclusiveScan 3539 + 3541: 3353(ptr) AccessChain 34(data) 3536 3345 + 3542: 30(f16vec4) Load 3541 + 3543: 30(f16vec4) VectorShuffle 3542 3540 4 5 2 3 + Store 3541 3543 + 3544: 6(int) Load 8(invocation) + 3545: 3353(ptr) AccessChain 34(data) 57 3345 + 3546: 30(f16vec4) Load 3545 + 3547:3362(f16vec3) VectorShuffle 3546 3546 0 1 2 + 3548:3362(f16vec3) GroupNonUniformFMax 42 InclusiveScan 3547 + 3549: 3353(ptr) AccessChain 34(data) 3544 3345 + 3550: 30(f16vec4) Load 3549 + 3551: 30(f16vec4) VectorShuffle 3550 3548 4 5 6 3 + Store 3549 3551 + 3552: 6(int) Load 8(invocation) + 3553: 3353(ptr) AccessChain 34(data) 67 3345 + 3554: 30(f16vec4) Load 3553 + 3555: 30(f16vec4) GroupNonUniformFMax 42 InclusiveScan 3554 + 3556: 3353(ptr) AccessChain 34(data) 3552 3345 + Store 3556 3555 + 3557: 6(int) Load 8(invocation) + 3558: 3346(ptr) AccessChain 34(data) 37 3345 38 + 3559:29(float16_t) Load 3558 + 3560:29(float16_t) GroupNonUniformFAdd 42 ExclusiveScan 3559 + 3561: 3346(ptr) AccessChain 34(data) 3557 3345 38 + Store 3561 3560 + 3562: 6(int) Load 8(invocation) + 3563: 3353(ptr) AccessChain 34(data) 46 3345 + 3564: 30(f16vec4) Load 3563 + 3565:3352(f16vec2) VectorShuffle 3564 3564 0 1 + 3566:3352(f16vec2) GroupNonUniformFAdd 42 ExclusiveScan 3565 + 3567: 3353(ptr) AccessChain 34(data) 3562 3345 + 3568: 30(f16vec4) Load 3567 + 3569: 30(f16vec4) VectorShuffle 3568 3566 4 5 2 3 + Store 3567 3569 + 3570: 6(int) Load 8(invocation) + 3571: 3353(ptr) AccessChain 34(data) 57 3345 + 3572: 30(f16vec4) Load 3571 + 3573:3362(f16vec3) VectorShuffle 3572 3572 0 1 2 + 3574:3362(f16vec3) GroupNonUniformFAdd 42 ExclusiveScan 3573 + 3575: 3353(ptr) AccessChain 34(data) 3570 3345 + 3576: 30(f16vec4) Load 3575 + 3577: 30(f16vec4) VectorShuffle 3576 3574 4 5 6 3 + Store 3575 3577 + 3578: 6(int) Load 8(invocation) + 3579: 3353(ptr) AccessChain 34(data) 67 3345 + 3580: 30(f16vec4) Load 3579 + 3581: 30(f16vec4) GroupNonUniformFAdd 42 ExclusiveScan 3580 + 3582: 3353(ptr) AccessChain 34(data) 3578 3345 + Store 3582 3581 + 3583: 6(int) Load 8(invocation) + 3584: 3346(ptr) AccessChain 34(data) 37 3345 38 + 3585:29(float16_t) Load 3584 + 3586:29(float16_t) GroupNonUniformFMul 42 ExclusiveScan 3585 + 3587: 3346(ptr) AccessChain 34(data) 3583 3345 38 + Store 3587 3586 + 3588: 6(int) Load 8(invocation) + 3589: 3353(ptr) AccessChain 34(data) 46 3345 + 3590: 30(f16vec4) Load 3589 + 3591:3352(f16vec2) VectorShuffle 3590 3590 0 1 + 3592:3352(f16vec2) GroupNonUniformFMul 42 ExclusiveScan 3591 + 3593: 3353(ptr) AccessChain 34(data) 3588 3345 + 3594: 30(f16vec4) Load 3593 + 3595: 30(f16vec4) VectorShuffle 3594 3592 4 5 2 3 + Store 3593 3595 + 3596: 6(int) Load 8(invocation) + 3597: 3353(ptr) AccessChain 34(data) 57 3345 + 3598: 30(f16vec4) Load 3597 + 3599:3362(f16vec3) VectorShuffle 3598 3598 0 1 2 + 3600:3362(f16vec3) GroupNonUniformFMul 42 ExclusiveScan 3599 + 3601: 3353(ptr) AccessChain 34(data) 3596 3345 + 3602: 30(f16vec4) Load 3601 + 3603: 30(f16vec4) VectorShuffle 3602 3600 4 5 6 3 + Store 3601 3603 + 3604: 6(int) Load 8(invocation) + 3605: 3353(ptr) AccessChain 34(data) 67 3345 + 3606: 30(f16vec4) Load 3605 + 3607: 30(f16vec4) GroupNonUniformFMul 42 ExclusiveScan 3606 + 3608: 3353(ptr) AccessChain 34(data) 3604 3345 + Store 3608 3607 + 3609: 6(int) Load 8(invocation) + 3610: 3346(ptr) AccessChain 34(data) 37 3345 38 + 3611:29(float16_t) Load 3610 + 3612:29(float16_t) GroupNonUniformFMin 42 ExclusiveScan 3611 + 3613: 3346(ptr) AccessChain 34(data) 3609 3345 38 + Store 3613 3612 + 3614: 6(int) Load 8(invocation) + 3615: 3353(ptr) AccessChain 34(data) 46 3345 + 3616: 30(f16vec4) Load 3615 + 3617:3352(f16vec2) VectorShuffle 3616 3616 0 1 + 3618:3352(f16vec2) GroupNonUniformFMin 42 ExclusiveScan 3617 + 3619: 3353(ptr) AccessChain 34(data) 3614 3345 + 3620: 30(f16vec4) Load 3619 + 3621: 30(f16vec4) VectorShuffle 3620 3618 4 5 2 3 + Store 3619 3621 + 3622: 6(int) Load 8(invocation) + 3623: 3353(ptr) AccessChain 34(data) 57 3345 + 3624: 30(f16vec4) Load 3623 + 3625:3362(f16vec3) VectorShuffle 3624 3624 0 1 2 + 3626:3362(f16vec3) GroupNonUniformFMin 42 ExclusiveScan 3625 + 3627: 3353(ptr) AccessChain 34(data) 3622 3345 + 3628: 30(f16vec4) Load 3627 + 3629: 30(f16vec4) VectorShuffle 3628 3626 4 5 6 3 + Store 3627 3629 + 3630: 6(int) Load 8(invocation) + 3631: 3353(ptr) AccessChain 34(data) 67 3345 + 3632: 30(f16vec4) Load 3631 + 3633: 30(f16vec4) GroupNonUniformFMin 42 ExclusiveScan 3632 + 3634: 3353(ptr) AccessChain 34(data) 3630 3345 + Store 3634 3633 + 3635: 6(int) Load 8(invocation) + 3636: 3346(ptr) AccessChain 34(data) 37 3345 38 + 3637:29(float16_t) Load 3636 + 3638:29(float16_t) GroupNonUniformFMax 42 ExclusiveScan 3637 + 3639: 3346(ptr) AccessChain 34(data) 3635 3345 38 + Store 3639 3638 + 3640: 6(int) Load 8(invocation) + 3641: 3353(ptr) AccessChain 34(data) 46 3345 + 3642: 30(f16vec4) Load 3641 + 3643:3352(f16vec2) VectorShuffle 3642 3642 0 1 + 3644:3352(f16vec2) GroupNonUniformFMax 42 ExclusiveScan 3643 + 3645: 3353(ptr) AccessChain 34(data) 3640 3345 + 3646: 30(f16vec4) Load 3645 + 3647: 30(f16vec4) VectorShuffle 3646 3644 4 5 2 3 + Store 3645 3647 + 3648: 6(int) Load 8(invocation) + 3649: 3353(ptr) AccessChain 34(data) 57 3345 + 3650: 30(f16vec4) Load 3649 + 3651:3362(f16vec3) VectorShuffle 3650 3650 0 1 2 + 3652:3362(f16vec3) GroupNonUniformFMax 42 ExclusiveScan 3651 + 3653: 3353(ptr) AccessChain 34(data) 3648 3345 + 3654: 30(f16vec4) Load 3653 + 3655: 30(f16vec4) VectorShuffle 3654 3652 4 5 6 3 + Store 3653 3655 + 3656: 6(int) Load 8(invocation) + 3657: 3353(ptr) AccessChain 34(data) 67 3345 + 3658: 30(f16vec4) Load 3657 + 3659: 30(f16vec4) GroupNonUniformFMax 42 ExclusiveScan 3658 + 3660: 3353(ptr) AccessChain 34(data) 3656 3345 + Store 3660 3659 + Return + FunctionEnd diff --git a/Test/baseResults/spv.subgroupExtendedTypesArithmeticNeg.comp.out b/Test/baseResults/spv.subgroupExtendedTypesArithmeticNeg.comp.out new file mode 100644 index 00000000..47505596 --- /dev/null +++ b/Test/baseResults/spv.subgroupExtendedTypesArithmeticNeg.comp.out @@ -0,0 +1,557 @@ +spv.subgroupExtendedTypesArithmeticNeg.comp +ERROR: 0:26: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:27: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:28: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:29: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:31: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:32: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:33: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:34: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:36: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:37: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:38: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:39: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:41: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:42: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:43: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:44: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:46: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:47: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:48: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:49: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:51: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:52: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:53: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:54: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:56: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:57: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:58: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:59: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:61: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:62: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:63: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:64: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:66: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:67: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:68: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:69: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:71: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:72: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:73: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:74: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:76: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:77: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:78: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:79: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:81: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:82: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:83: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:84: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:86: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:87: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:88: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:89: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:91: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:92: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:93: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:94: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:96: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:97: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:98: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:99: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:101: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:102: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:103: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:104: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:106: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:107: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:108: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:109: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:111: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:112: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:113: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:114: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:116: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:117: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:118: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:119: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:121: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:122: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:123: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:124: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:126: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:127: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:128: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:129: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:131: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:132: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:133: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:134: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:136: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:137: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:138: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:139: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:141: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:142: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:143: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:144: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:146: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:147: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:148: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:149: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:151: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:152: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:153: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:154: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:156: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:157: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:158: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:159: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:161: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:162: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:163: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:164: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:166: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:167: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:168: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:169: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:171: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:172: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:173: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:174: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:176: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:177: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:178: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:179: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:181: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:182: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:183: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:184: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:186: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:187: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:188: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:189: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:191: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:192: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:193: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:194: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:196: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:197: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:198: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:199: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:201: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:202: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:203: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:204: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:206: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:207: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:208: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:209: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:211: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:212: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:213: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:214: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:216: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:217: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:218: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:219: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:221: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:222: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:223: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:224: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:226: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:227: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:228: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:229: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:231: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:232: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:233: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:234: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:236: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:237: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:238: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:239: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:241: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:242: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:243: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:244: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:246: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:247: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:248: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:249: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:251: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:252: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:253: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:254: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:256: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:257: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:258: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:259: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:261: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:262: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:263: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:264: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:266: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:267: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:268: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:269: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:271: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:272: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:273: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:274: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:276: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:277: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:278: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:279: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:281: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:282: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:283: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:284: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:286: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:287: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:288: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:289: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:291: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:292: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:293: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:294: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:296: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:297: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:298: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:299: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:301: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:302: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:303: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:304: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:306: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:307: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:308: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:309: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:311: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:312: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:313: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:314: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:316: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:317: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:318: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:319: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:321: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:322: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:323: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:324: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:326: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:327: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:328: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:329: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:331: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:332: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:333: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:334: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:336: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:337: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:338: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:339: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:341: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:342: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:343: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:344: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:346: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:347: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:348: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:349: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:351: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:352: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:353: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:354: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:356: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:357: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:358: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:359: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:361: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:362: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:363: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:364: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:366: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:367: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:368: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:369: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:371: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:372: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:373: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:374: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:376: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:377: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:378: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:379: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:381: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:382: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:383: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:384: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:386: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:387: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:388: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:389: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:391: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:392: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:393: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:394: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:396: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:397: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:398: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:399: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:401: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:402: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:403: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:404: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:406: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:407: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:408: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:409: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:411: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:412: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:413: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:414: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:416: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:417: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:418: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:419: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:421: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:422: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:423: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:424: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:426: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:427: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:428: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:429: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:431: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:432: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:433: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:434: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:436: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:437: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:438: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:439: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:441: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:442: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:443: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:444: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:446: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:447: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:448: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:449: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:451: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:452: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:453: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:454: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:456: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:457: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:458: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:459: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:461: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:462: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:463: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:464: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:466: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:467: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:468: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:469: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:471: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:472: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:473: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:474: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:476: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:477: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:478: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:479: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:481: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:482: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:483: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:484: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:486: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:487: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:488: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:489: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:491: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:492: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:493: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:494: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:496: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:497: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:498: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:499: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:501: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:502: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:503: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:504: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:506: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:507: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:508: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:509: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:511: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:512: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:513: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:514: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:516: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:517: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:518: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:519: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:521: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:522: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:523: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:524: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:526: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:527: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:528: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:529: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:531: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:532: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:533: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:534: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:536: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:537: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:538: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:539: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:541: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:542: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:543: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:544: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:546: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:547: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:548: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:549: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:551: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:552: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:553: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:554: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:556: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:557: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:558: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:559: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:561: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:562: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:563: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:564: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:566: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:567: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:568: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:569: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:571: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:572: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:573: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:574: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:576: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:577: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:578: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:579: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:581: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:582: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:583: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:584: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:586: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:587: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:588: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:589: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:591: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:592: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:593: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:594: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:596: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:597: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:598: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:599: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:601: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:602: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:603: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:604: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:606: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:607: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:608: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:609: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:611: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:612: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:613: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:614: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:616: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:617: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:618: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:619: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:621: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:622: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:623: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:624: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:626: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:627: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:628: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:629: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:631: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:632: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:633: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:634: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:636: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:637: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:638: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:639: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:641: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:642: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:643: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:644: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:646: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:647: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:648: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:649: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:651: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:652: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:653: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:654: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:656: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:657: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:658: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:659: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:661: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:662: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:663: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:664: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:666: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:667: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:668: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:669: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:671: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:672: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:673: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:674: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:676: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:677: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:678: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:679: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:681: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:682: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:683: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:684: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:686: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:687: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:688: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:689: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:691: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:692: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:693: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:694: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:696: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:697: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:698: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:699: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:701: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:702: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:703: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:704: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:706: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:707: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:708: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:709: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:711: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:712: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:713: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:714: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 552 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out b/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out new file mode 100644 index 00000000..4e1b2dc1 --- /dev/null +++ b/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out @@ -0,0 +1,560 @@ +spv.subgroupExtendedTypesBallot.comp +// Module Version 10300 +// Generated by (magic number): 80007 +// Id's are bound by 441 + + Capability Shader + Capability Float16 + Capability Int64 + Capability Int16 + Capability Int8 + Capability GroupNonUniform + Capability GroupNonUniformBallot + Capability StorageUniformBufferBlock16 + Capability StorageBuffer8BitAccess + Extension "SPV_KHR_8bit_storage" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" 10 12 + ExecutionMode 4 LocalSize 8 1 1 + Source GLSL 450 + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" + SourceExtension "GL_EXT_shader_subgroup_extended_types_float16" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int16" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int64" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int8" + SourceExtension "GL_KHR_shader_subgroup_ballot" + SourceExtension "GL_KHR_shader_subgroup_basic" + Name 4 "main" + Name 8 "invocation" + Name 10 "gl_SubgroupInvocationID" + Name 12 "gl_SubgroupSize" + Name 31 "Buffers" + MemberName 31(Buffers) 0 "i8" + MemberName 31(Buffers) 1 "u8" + MemberName 31(Buffers) 2 "i16" + MemberName 31(Buffers) 3 "u16" + MemberName 31(Buffers) 4 "i64" + MemberName 31(Buffers) 5 "u64" + MemberName 31(Buffers) 6 "f16" + Name 34 "data" + Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision + Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId + Decorate 11 RelaxedPrecision + Decorate 12(gl_SubgroupSize) RelaxedPrecision + Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize + Decorate 13 RelaxedPrecision + Decorate 14 RelaxedPrecision + Decorate 16 RelaxedPrecision + MemberDecorate 31(Buffers) 0 Offset 0 + MemberDecorate 31(Buffers) 1 Offset 4 + MemberDecorate 31(Buffers) 2 Offset 8 + MemberDecorate 31(Buffers) 3 Offset 16 + MemberDecorate 31(Buffers) 4 Offset 32 + MemberDecorate 31(Buffers) 5 Offset 64 + MemberDecorate 31(Buffers) 6 Offset 96 + Decorate 31(Buffers) Block + Decorate 34(data) DescriptorSet 0 + Decorate 34(data) Binding 0 + Decorate 440 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 9: TypePointer Input 6(int) +10(gl_SubgroupInvocationID): 9(ptr) Variable Input +12(gl_SubgroupSize): 9(ptr) Variable Input + 15: 6(int) Constant 4 + 17: TypeInt 8 1 + 18: TypeVector 17(int8_t) 4 + 19: TypeInt 8 0 + 20: TypeVector 19(int8_t) 4 + 21: TypeInt 16 1 + 22: TypeVector 21(int16_t) 4 + 23: TypeInt 16 0 + 24: TypeVector 23(int16_t) 4 + 25: TypeInt 64 1 + 26: TypeVector 25(int64_t) 4 + 27: TypeInt 64 0 + 28: TypeVector 27(int64_t) 4 + 29: TypeFloat 16 + 30: TypeVector 29(float16_t) 4 + 31(Buffers): TypeStruct 18(i8vec4) 20(i8vec4) 22(i16vec4) 24(i16vec4) 26(i64vec4) 28(i64vec4) 30(f16vec4) + 32: TypeArray 31(Buffers) 15 + 33: TypePointer StorageBuffer 32 + 34(data): 33(ptr) Variable StorageBuffer + 36: TypeInt 32 1 + 37: 36(int) Constant 0 + 38: 6(int) Constant 0 + 39: TypePointer StorageBuffer 17(int8_t) + 42: 6(int) Constant 3 + 46: 36(int) Constant 1 + 47: TypeVector 17(int8_t) 2 + 48: TypePointer StorageBuffer 18(i8vec4) + 57: 36(int) Constant 2 + 58: TypeVector 17(int8_t) 3 + 67: 36(int) Constant 3 + 99: TypePointer StorageBuffer 19(int8_t) + 105: TypeVector 19(int8_t) 2 + 106: TypePointer StorageBuffer 20(i8vec4) + 115: TypeVector 19(int8_t) 3 + 155: TypePointer StorageBuffer 21(int16_t) + 161: TypeVector 21(int16_t) 2 + 162: TypePointer StorageBuffer 22(i16vec4) + 171: TypeVector 21(int16_t) 3 + 211: TypePointer StorageBuffer 23(int16_t) + 217: TypeVector 23(int16_t) 2 + 218: TypePointer StorageBuffer 24(i16vec4) + 227: TypeVector 23(int16_t) 3 + 267: 36(int) Constant 4 + 268: TypePointer StorageBuffer 25(int64_t) + 274: TypeVector 25(int64_t) 2 + 275: TypePointer StorageBuffer 26(i64vec4) + 284: TypeVector 25(int64_t) 3 + 324: 36(int) Constant 5 + 325: TypePointer StorageBuffer 27(int64_t) + 331: TypeVector 27(int64_t) 2 + 332: TypePointer StorageBuffer 28(i64vec4) + 341: TypeVector 27(int64_t) 3 + 381: 36(int) Constant 6 + 382: TypePointer StorageBuffer 29(float16_t) + 388: TypeVector 29(float16_t) 2 + 389: TypePointer StorageBuffer 30(f16vec4) + 398: TypeVector 29(float16_t) 3 + 437: TypeVector 6(int) 3 + 438: 6(int) Constant 8 + 439: 6(int) Constant 1 + 440: 437(ivec3) ConstantComposite 438 439 439 + 4(main): 2 Function None 3 + 5: Label + 8(invocation): 7(ptr) Variable Function + 11: 6(int) Load 10(gl_SubgroupInvocationID) + 13: 6(int) Load 12(gl_SubgroupSize) + 14: 6(int) IAdd 11 13 + 16: 6(int) UMod 14 15 + Store 8(invocation) 16 + 35: 6(int) Load 8(invocation) + 40: 39(ptr) AccessChain 34(data) 37 37 38 + 41: 17(int8_t) Load 40 + 43: 17(int8_t) GroupNonUniformBroadcast 42 41 42 + 44: 39(ptr) AccessChain 34(data) 35 37 38 + Store 44 43 + 45: 6(int) Load 8(invocation) + 49: 48(ptr) AccessChain 34(data) 46 37 + 50: 18(i8vec4) Load 49 + 51: 47(i8vec2) VectorShuffle 50 50 0 1 + 52: 47(i8vec2) GroupNonUniformBroadcast 42 51 42 + 53: 48(ptr) AccessChain 34(data) 45 37 + 54: 18(i8vec4) Load 53 + 55: 18(i8vec4) VectorShuffle 54 52 4 5 2 3 + Store 53 55 + 56: 6(int) Load 8(invocation) + 59: 48(ptr) AccessChain 34(data) 57 37 + 60: 18(i8vec4) Load 59 + 61: 58(i8vec3) VectorShuffle 60 60 0 1 2 + 62: 58(i8vec3) GroupNonUniformBroadcast 42 61 42 + 63: 48(ptr) AccessChain 34(data) 56 37 + 64: 18(i8vec4) Load 63 + 65: 18(i8vec4) VectorShuffle 64 62 4 5 6 3 + Store 63 65 + 66: 6(int) Load 8(invocation) + 68: 48(ptr) AccessChain 34(data) 67 37 + 69: 18(i8vec4) Load 68 + 70: 18(i8vec4) GroupNonUniformBroadcast 42 69 42 + 71: 48(ptr) AccessChain 34(data) 66 37 + Store 71 70 + 72: 6(int) Load 8(invocation) + 73: 39(ptr) AccessChain 34(data) 37 37 38 + 74: 17(int8_t) Load 73 + 75: 17(int8_t) GroupNonUniformBroadcastFirst 42 74 + 76: 39(ptr) AccessChain 34(data) 72 37 38 + Store 76 75 + 77: 6(int) Load 8(invocation) + 78: 48(ptr) AccessChain 34(data) 46 37 + 79: 18(i8vec4) Load 78 + 80: 47(i8vec2) VectorShuffle 79 79 0 1 + 81: 47(i8vec2) GroupNonUniformBroadcastFirst 42 80 + 82: 48(ptr) AccessChain 34(data) 77 37 + 83: 18(i8vec4) Load 82 + 84: 18(i8vec4) VectorShuffle 83 81 4 5 2 3 + Store 82 84 + 85: 6(int) Load 8(invocation) + 86: 48(ptr) AccessChain 34(data) 57 37 + 87: 18(i8vec4) Load 86 + 88: 58(i8vec3) VectorShuffle 87 87 0 1 2 + 89: 58(i8vec3) GroupNonUniformBroadcastFirst 42 88 + 90: 48(ptr) AccessChain 34(data) 85 37 + 91: 18(i8vec4) Load 90 + 92: 18(i8vec4) VectorShuffle 91 89 4 5 6 3 + Store 90 92 + 93: 6(int) Load 8(invocation) + 94: 48(ptr) AccessChain 34(data) 67 37 + 95: 18(i8vec4) Load 94 + 96: 18(i8vec4) GroupNonUniformBroadcastFirst 42 95 + 97: 48(ptr) AccessChain 34(data) 93 37 + Store 97 96 + 98: 6(int) Load 8(invocation) + 100: 99(ptr) AccessChain 34(data) 37 46 38 + 101: 19(int8_t) Load 100 + 102: 19(int8_t) GroupNonUniformBroadcast 42 101 42 + 103: 99(ptr) AccessChain 34(data) 98 46 38 + Store 103 102 + 104: 6(int) Load 8(invocation) + 107: 106(ptr) AccessChain 34(data) 46 46 + 108: 20(i8vec4) Load 107 + 109: 105(i8vec2) VectorShuffle 108 108 0 1 + 110: 105(i8vec2) GroupNonUniformBroadcast 42 109 42 + 111: 106(ptr) AccessChain 34(data) 104 46 + 112: 20(i8vec4) Load 111 + 113: 20(i8vec4) VectorShuffle 112 110 4 5 2 3 + Store 111 113 + 114: 6(int) Load 8(invocation) + 116: 106(ptr) AccessChain 34(data) 57 46 + 117: 20(i8vec4) Load 116 + 118: 115(i8vec3) VectorShuffle 117 117 0 1 2 + 119: 115(i8vec3) GroupNonUniformBroadcast 42 118 42 + 120: 106(ptr) AccessChain 34(data) 114 46 + 121: 20(i8vec4) Load 120 + 122: 20(i8vec4) VectorShuffle 121 119 4 5 6 3 + Store 120 122 + 123: 6(int) Load 8(invocation) + 124: 106(ptr) AccessChain 34(data) 67 46 + 125: 20(i8vec4) Load 124 + 126: 20(i8vec4) GroupNonUniformBroadcast 42 125 42 + 127: 106(ptr) AccessChain 34(data) 123 46 + Store 127 126 + 128: 6(int) Load 8(invocation) + 129: 99(ptr) AccessChain 34(data) 37 46 38 + 130: 19(int8_t) Load 129 + 131: 19(int8_t) GroupNonUniformBroadcastFirst 42 130 + 132: 99(ptr) AccessChain 34(data) 128 46 38 + Store 132 131 + 133: 6(int) Load 8(invocation) + 134: 106(ptr) AccessChain 34(data) 46 46 + 135: 20(i8vec4) Load 134 + 136: 105(i8vec2) VectorShuffle 135 135 0 1 + 137: 105(i8vec2) GroupNonUniformBroadcastFirst 42 136 + 138: 106(ptr) AccessChain 34(data) 133 46 + 139: 20(i8vec4) Load 138 + 140: 20(i8vec4) VectorShuffle 139 137 4 5 2 3 + Store 138 140 + 141: 6(int) Load 8(invocation) + 142: 106(ptr) AccessChain 34(data) 57 46 + 143: 20(i8vec4) Load 142 + 144: 115(i8vec3) VectorShuffle 143 143 0 1 2 + 145: 115(i8vec3) GroupNonUniformBroadcastFirst 42 144 + 146: 106(ptr) AccessChain 34(data) 141 46 + 147: 20(i8vec4) Load 146 + 148: 20(i8vec4) VectorShuffle 147 145 4 5 6 3 + Store 146 148 + 149: 6(int) Load 8(invocation) + 150: 106(ptr) AccessChain 34(data) 67 46 + 151: 20(i8vec4) Load 150 + 152: 20(i8vec4) GroupNonUniformBroadcastFirst 42 151 + 153: 106(ptr) AccessChain 34(data) 149 46 + Store 153 152 + 154: 6(int) Load 8(invocation) + 156: 155(ptr) AccessChain 34(data) 37 57 38 + 157: 21(int16_t) Load 156 + 158: 21(int16_t) GroupNonUniformBroadcast 42 157 42 + 159: 155(ptr) AccessChain 34(data) 154 57 38 + Store 159 158 + 160: 6(int) Load 8(invocation) + 163: 162(ptr) AccessChain 34(data) 46 57 + 164: 22(i16vec4) Load 163 + 165:161(i16vec2) VectorShuffle 164 164 0 1 + 166:161(i16vec2) GroupNonUniformBroadcast 42 165 42 + 167: 162(ptr) AccessChain 34(data) 160 57 + 168: 22(i16vec4) Load 167 + 169: 22(i16vec4) VectorShuffle 168 166 4 5 2 3 + Store 167 169 + 170: 6(int) Load 8(invocation) + 172: 162(ptr) AccessChain 34(data) 57 57 + 173: 22(i16vec4) Load 172 + 174:171(i16vec3) VectorShuffle 173 173 0 1 2 + 175:171(i16vec3) GroupNonUniformBroadcast 42 174 42 + 176: 162(ptr) AccessChain 34(data) 170 57 + 177: 22(i16vec4) Load 176 + 178: 22(i16vec4) VectorShuffle 177 175 4 5 6 3 + Store 176 178 + 179: 6(int) Load 8(invocation) + 180: 162(ptr) AccessChain 34(data) 67 57 + 181: 22(i16vec4) Load 180 + 182: 22(i16vec4) GroupNonUniformBroadcast 42 181 42 + 183: 162(ptr) AccessChain 34(data) 179 57 + Store 183 182 + 184: 6(int) Load 8(invocation) + 185: 155(ptr) AccessChain 34(data) 37 57 38 + 186: 21(int16_t) Load 185 + 187: 21(int16_t) GroupNonUniformBroadcastFirst 42 186 + 188: 155(ptr) AccessChain 34(data) 184 57 38 + Store 188 187 + 189: 6(int) Load 8(invocation) + 190: 162(ptr) AccessChain 34(data) 46 57 + 191: 22(i16vec4) Load 190 + 192:161(i16vec2) VectorShuffle 191 191 0 1 + 193:161(i16vec2) GroupNonUniformBroadcastFirst 42 192 + 194: 162(ptr) AccessChain 34(data) 189 57 + 195: 22(i16vec4) Load 194 + 196: 22(i16vec4) VectorShuffle 195 193 4 5 2 3 + Store 194 196 + 197: 6(int) Load 8(invocation) + 198: 162(ptr) AccessChain 34(data) 57 57 + 199: 22(i16vec4) Load 198 + 200:171(i16vec3) VectorShuffle 199 199 0 1 2 + 201:171(i16vec3) GroupNonUniformBroadcastFirst 42 200 + 202: 162(ptr) AccessChain 34(data) 197 57 + 203: 22(i16vec4) Load 202 + 204: 22(i16vec4) VectorShuffle 203 201 4 5 6 3 + Store 202 204 + 205: 6(int) Load 8(invocation) + 206: 162(ptr) AccessChain 34(data) 67 57 + 207: 22(i16vec4) Load 206 + 208: 22(i16vec4) GroupNonUniformBroadcastFirst 42 207 + 209: 162(ptr) AccessChain 34(data) 205 57 + Store 209 208 + 210: 6(int) Load 8(invocation) + 212: 211(ptr) AccessChain 34(data) 37 67 38 + 213: 23(int16_t) Load 212 + 214: 23(int16_t) GroupNonUniformBroadcast 42 213 42 + 215: 211(ptr) AccessChain 34(data) 210 67 38 + Store 215 214 + 216: 6(int) Load 8(invocation) + 219: 218(ptr) AccessChain 34(data) 46 67 + 220: 24(i16vec4) Load 219 + 221:217(i16vec2) VectorShuffle 220 220 0 1 + 222:217(i16vec2) GroupNonUniformBroadcast 42 221 42 + 223: 218(ptr) AccessChain 34(data) 216 67 + 224: 24(i16vec4) Load 223 + 225: 24(i16vec4) VectorShuffle 224 222 4 5 2 3 + Store 223 225 + 226: 6(int) Load 8(invocation) + 228: 218(ptr) AccessChain 34(data) 57 67 + 229: 24(i16vec4) Load 228 + 230:227(i16vec3) VectorShuffle 229 229 0 1 2 + 231:227(i16vec3) GroupNonUniformBroadcast 42 230 42 + 232: 218(ptr) AccessChain 34(data) 226 67 + 233: 24(i16vec4) Load 232 + 234: 24(i16vec4) VectorShuffle 233 231 4 5 6 3 + Store 232 234 + 235: 6(int) Load 8(invocation) + 236: 218(ptr) AccessChain 34(data) 67 67 + 237: 24(i16vec4) Load 236 + 238: 24(i16vec4) GroupNonUniformBroadcast 42 237 42 + 239: 218(ptr) AccessChain 34(data) 235 67 + Store 239 238 + 240: 6(int) Load 8(invocation) + 241: 211(ptr) AccessChain 34(data) 37 67 38 + 242: 23(int16_t) Load 241 + 243: 23(int16_t) GroupNonUniformBroadcastFirst 42 242 + 244: 211(ptr) AccessChain 34(data) 240 67 38 + Store 244 243 + 245: 6(int) Load 8(invocation) + 246: 218(ptr) AccessChain 34(data) 46 67 + 247: 24(i16vec4) Load 246 + 248:217(i16vec2) VectorShuffle 247 247 0 1 + 249:217(i16vec2) GroupNonUniformBroadcastFirst 42 248 + 250: 218(ptr) AccessChain 34(data) 245 67 + 251: 24(i16vec4) Load 250 + 252: 24(i16vec4) VectorShuffle 251 249 4 5 2 3 + Store 250 252 + 253: 6(int) Load 8(invocation) + 254: 218(ptr) AccessChain 34(data) 57 67 + 255: 24(i16vec4) Load 254 + 256:227(i16vec3) VectorShuffle 255 255 0 1 2 + 257:227(i16vec3) GroupNonUniformBroadcastFirst 42 256 + 258: 218(ptr) AccessChain 34(data) 253 67 + 259: 24(i16vec4) Load 258 + 260: 24(i16vec4) VectorShuffle 259 257 4 5 6 3 + Store 258 260 + 261: 6(int) Load 8(invocation) + 262: 218(ptr) AccessChain 34(data) 67 67 + 263: 24(i16vec4) Load 262 + 264: 24(i16vec4) GroupNonUniformBroadcastFirst 42 263 + 265: 218(ptr) AccessChain 34(data) 261 67 + Store 265 264 + 266: 6(int) Load 8(invocation) + 269: 268(ptr) AccessChain 34(data) 37 267 38 + 270: 25(int64_t) Load 269 + 271: 25(int64_t) GroupNonUniformBroadcast 42 270 42 + 272: 268(ptr) AccessChain 34(data) 266 267 38 + Store 272 271 + 273: 6(int) Load 8(invocation) + 276: 275(ptr) AccessChain 34(data) 46 267 + 277: 26(i64vec4) Load 276 + 278:274(i64vec2) VectorShuffle 277 277 0 1 + 279:274(i64vec2) GroupNonUniformBroadcast 42 278 42 + 280: 275(ptr) AccessChain 34(data) 273 267 + 281: 26(i64vec4) Load 280 + 282: 26(i64vec4) VectorShuffle 281 279 4 5 2 3 + Store 280 282 + 283: 6(int) Load 8(invocation) + 285: 275(ptr) AccessChain 34(data) 57 267 + 286: 26(i64vec4) Load 285 + 287:284(i64vec3) VectorShuffle 286 286 0 1 2 + 288:284(i64vec3) GroupNonUniformBroadcast 42 287 42 + 289: 275(ptr) AccessChain 34(data) 283 267 + 290: 26(i64vec4) Load 289 + 291: 26(i64vec4) VectorShuffle 290 288 4 5 6 3 + Store 289 291 + 292: 6(int) Load 8(invocation) + 293: 275(ptr) AccessChain 34(data) 67 267 + 294: 26(i64vec4) Load 293 + 295: 26(i64vec4) GroupNonUniformBroadcast 42 294 42 + 296: 275(ptr) AccessChain 34(data) 292 267 + Store 296 295 + 297: 6(int) Load 8(invocation) + 298: 268(ptr) AccessChain 34(data) 37 267 38 + 299: 25(int64_t) Load 298 + 300: 25(int64_t) GroupNonUniformBroadcastFirst 42 299 + 301: 268(ptr) AccessChain 34(data) 297 267 38 + Store 301 300 + 302: 6(int) Load 8(invocation) + 303: 275(ptr) AccessChain 34(data) 46 267 + 304: 26(i64vec4) Load 303 + 305:274(i64vec2) VectorShuffle 304 304 0 1 + 306:274(i64vec2) GroupNonUniformBroadcastFirst 42 305 + 307: 275(ptr) AccessChain 34(data) 302 267 + 308: 26(i64vec4) Load 307 + 309: 26(i64vec4) VectorShuffle 308 306 4 5 2 3 + Store 307 309 + 310: 6(int) Load 8(invocation) + 311: 275(ptr) AccessChain 34(data) 57 267 + 312: 26(i64vec4) Load 311 + 313:284(i64vec3) VectorShuffle 312 312 0 1 2 + 314:284(i64vec3) GroupNonUniformBroadcastFirst 42 313 + 315: 275(ptr) AccessChain 34(data) 310 267 + 316: 26(i64vec4) Load 315 + 317: 26(i64vec4) VectorShuffle 316 314 4 5 6 3 + Store 315 317 + 318: 6(int) Load 8(invocation) + 319: 275(ptr) AccessChain 34(data) 67 267 + 320: 26(i64vec4) Load 319 + 321: 26(i64vec4) GroupNonUniformBroadcastFirst 42 320 + 322: 275(ptr) AccessChain 34(data) 318 267 + Store 322 321 + 323: 6(int) Load 8(invocation) + 326: 325(ptr) AccessChain 34(data) 37 324 38 + 327: 27(int64_t) Load 326 + 328: 27(int64_t) GroupNonUniformBroadcast 42 327 42 + 329: 325(ptr) AccessChain 34(data) 323 324 38 + Store 329 328 + 330: 6(int) Load 8(invocation) + 333: 332(ptr) AccessChain 34(data) 46 324 + 334: 28(i64vec4) Load 333 + 335:331(i64vec2) VectorShuffle 334 334 0 1 + 336:331(i64vec2) GroupNonUniformBroadcast 42 335 42 + 337: 332(ptr) AccessChain 34(data) 330 324 + 338: 28(i64vec4) Load 337 + 339: 28(i64vec4) VectorShuffle 338 336 4 5 2 3 + Store 337 339 + 340: 6(int) Load 8(invocation) + 342: 332(ptr) AccessChain 34(data) 57 324 + 343: 28(i64vec4) Load 342 + 344:341(i64vec3) VectorShuffle 343 343 0 1 2 + 345:341(i64vec3) GroupNonUniformBroadcast 42 344 42 + 346: 332(ptr) AccessChain 34(data) 340 324 + 347: 28(i64vec4) Load 346 + 348: 28(i64vec4) VectorShuffle 347 345 4 5 6 3 + Store 346 348 + 349: 6(int) Load 8(invocation) + 350: 332(ptr) AccessChain 34(data) 67 324 + 351: 28(i64vec4) Load 350 + 352: 28(i64vec4) GroupNonUniformBroadcast 42 351 42 + 353: 332(ptr) AccessChain 34(data) 349 324 + Store 353 352 + 354: 6(int) Load 8(invocation) + 355: 325(ptr) AccessChain 34(data) 37 324 38 + 356: 27(int64_t) Load 355 + 357: 27(int64_t) GroupNonUniformBroadcastFirst 42 356 + 358: 325(ptr) AccessChain 34(data) 354 324 38 + Store 358 357 + 359: 6(int) Load 8(invocation) + 360: 332(ptr) AccessChain 34(data) 46 324 + 361: 28(i64vec4) Load 360 + 362:331(i64vec2) VectorShuffle 361 361 0 1 + 363:331(i64vec2) GroupNonUniformBroadcastFirst 42 362 + 364: 332(ptr) AccessChain 34(data) 359 324 + 365: 28(i64vec4) Load 364 + 366: 28(i64vec4) VectorShuffle 365 363 4 5 2 3 + Store 364 366 + 367: 6(int) Load 8(invocation) + 368: 332(ptr) AccessChain 34(data) 57 324 + 369: 28(i64vec4) Load 368 + 370:341(i64vec3) VectorShuffle 369 369 0 1 2 + 371:341(i64vec3) GroupNonUniformBroadcastFirst 42 370 + 372: 332(ptr) AccessChain 34(data) 367 324 + 373: 28(i64vec4) Load 372 + 374: 28(i64vec4) VectorShuffle 373 371 4 5 6 3 + Store 372 374 + 375: 6(int) Load 8(invocation) + 376: 332(ptr) AccessChain 34(data) 67 324 + 377: 28(i64vec4) Load 376 + 378: 28(i64vec4) GroupNonUniformBroadcastFirst 42 377 + 379: 332(ptr) AccessChain 34(data) 375 324 + Store 379 378 + 380: 6(int) Load 8(invocation) + 383: 382(ptr) AccessChain 34(data) 37 381 38 + 384:29(float16_t) Load 383 + 385:29(float16_t) GroupNonUniformBroadcast 42 384 42 + 386: 382(ptr) AccessChain 34(data) 380 381 38 + Store 386 385 + 387: 6(int) Load 8(invocation) + 390: 389(ptr) AccessChain 34(data) 46 381 + 391: 30(f16vec4) Load 390 + 392:388(f16vec2) VectorShuffle 391 391 0 1 + 393:388(f16vec2) GroupNonUniformBroadcast 42 392 42 + 394: 389(ptr) AccessChain 34(data) 387 381 + 395: 30(f16vec4) Load 394 + 396: 30(f16vec4) VectorShuffle 395 393 4 5 2 3 + Store 394 396 + 397: 6(int) Load 8(invocation) + 399: 389(ptr) AccessChain 34(data) 57 381 + 400: 30(f16vec4) Load 399 + 401:398(f16vec3) VectorShuffle 400 400 0 1 2 + 402:398(f16vec3) GroupNonUniformBroadcast 42 401 42 + 403: 389(ptr) AccessChain 34(data) 397 381 + 404: 30(f16vec4) Load 403 + 405: 30(f16vec4) VectorShuffle 404 402 4 5 6 3 + Store 403 405 + 406: 6(int) Load 8(invocation) + 407: 389(ptr) AccessChain 34(data) 67 381 + 408: 30(f16vec4) Load 407 + 409: 30(f16vec4) GroupNonUniformBroadcast 42 408 42 + 410: 389(ptr) AccessChain 34(data) 406 381 + Store 410 409 + 411: 6(int) Load 8(invocation) + 412: 382(ptr) AccessChain 34(data) 37 381 38 + 413:29(float16_t) Load 412 + 414:29(float16_t) GroupNonUniformBroadcastFirst 42 413 + 415: 382(ptr) AccessChain 34(data) 411 381 38 + Store 415 414 + 416: 6(int) Load 8(invocation) + 417: 389(ptr) AccessChain 34(data) 46 381 + 418: 30(f16vec4) Load 417 + 419:388(f16vec2) VectorShuffle 418 418 0 1 + 420:388(f16vec2) GroupNonUniformBroadcastFirst 42 419 + 421: 389(ptr) AccessChain 34(data) 416 381 + 422: 30(f16vec4) Load 421 + 423: 30(f16vec4) VectorShuffle 422 420 4 5 2 3 + Store 421 423 + 424: 6(int) Load 8(invocation) + 425: 389(ptr) AccessChain 34(data) 57 381 + 426: 30(f16vec4) Load 425 + 427:398(f16vec3) VectorShuffle 426 426 0 1 2 + 428:398(f16vec3) GroupNonUniformBroadcastFirst 42 427 + 429: 389(ptr) AccessChain 34(data) 424 381 + 430: 30(f16vec4) Load 429 + 431: 30(f16vec4) VectorShuffle 430 428 4 5 6 3 + Store 429 431 + 432: 6(int) Load 8(invocation) + 433: 389(ptr) AccessChain 34(data) 67 381 + 434: 30(f16vec4) Load 433 + 435: 30(f16vec4) GroupNonUniformBroadcastFirst 42 434 + 436: 389(ptr) AccessChain 34(data) 432 381 + Store 436 435 + Return + FunctionEnd diff --git a/Test/baseResults/spv.subgroupExtendedTypesBallotNeg.comp.out b/Test/baseResults/spv.subgroupExtendedTypesBallotNeg.comp.out new file mode 100644 index 00000000..534560d8 --- /dev/null +++ b/Test/baseResults/spv.subgroupExtendedTypesBallotNeg.comp.out @@ -0,0 +1,61 @@ +spv.subgroupExtendedTypesBallotNeg.comp +ERROR: 0:26: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:27: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:28: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:29: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:30: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:31: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:32: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:33: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:35: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:36: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:37: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:38: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:39: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:40: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:41: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:42: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:44: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:45: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:46: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:47: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:48: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:49: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:50: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:51: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:53: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:54: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:55: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:56: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:57: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:58: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:59: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:60: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:62: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:63: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:64: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:65: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:66: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:67: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:68: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:69: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:71: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:72: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:73: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:74: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:75: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:76: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:77: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:78: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:80: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:81: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:82: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:83: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:84: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:85: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:86: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:87: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 56 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/spv.subgroupExtendedTypesBasic.comp.out b/Test/baseResults/spv.subgroupExtendedTypesBasic.comp.out new file mode 100644 index 00000000..63196977 --- /dev/null +++ b/Test/baseResults/spv.subgroupExtendedTypesBasic.comp.out @@ -0,0 +1,9 @@ +spv.subgroupExtendedTypesBasic.comp +ERROR: #version: compute shaders require es profile with version 310 or above, or non-es profile with version 420 or above +ERROR: #version: statement must appear first in es-profile shader; before comments or newlines +ERROR: 1 compilation errors. No code generated. + + +ERROR: Linking compute stage: Missing entry point: Each stage requires one entry point + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out b/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out new file mode 100644 index 00000000..b0b94b50 --- /dev/null +++ b/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out @@ -0,0 +1,1520 @@ +spv.subgroupExtendedTypesClustered.comp +// Module Version 10300 +// Generated by (magic number): 80007 +// Id's are bound by 1273 + + Capability Shader + Capability Float16 + Capability Int64 + Capability Int16 + Capability Int8 + Capability GroupNonUniform + Capability GroupNonUniformClustered + Capability StorageUniformBufferBlock16 + Capability StorageBuffer8BitAccess + Extension "SPV_KHR_8bit_storage" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" 10 12 + ExecutionMode 4 LocalSize 8 1 1 + Source GLSL 450 + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" + SourceExtension "GL_EXT_shader_subgroup_extended_types_float16" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int16" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int64" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int8" + SourceExtension "GL_KHR_shader_subgroup_basic" + SourceExtension "GL_KHR_shader_subgroup_clustered" + Name 4 "main" + Name 8 "invocation" + Name 10 "gl_SubgroupInvocationID" + Name 12 "gl_SubgroupSize" + Name 31 "Buffers" + MemberName 31(Buffers) 0 "i8" + MemberName 31(Buffers) 1 "u8" + MemberName 31(Buffers) 2 "i16" + MemberName 31(Buffers) 3 "u16" + MemberName 31(Buffers) 4 "i64" + MemberName 31(Buffers) 5 "u64" + MemberName 31(Buffers) 6 "f16" + Name 34 "data" + Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision + Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId + Decorate 11 RelaxedPrecision + Decorate 12(gl_SubgroupSize) RelaxedPrecision + Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize + Decorate 13 RelaxedPrecision + Decorate 14 RelaxedPrecision + Decorate 16 RelaxedPrecision + MemberDecorate 31(Buffers) 0 Offset 0 + MemberDecorate 31(Buffers) 1 Offset 4 + MemberDecorate 31(Buffers) 2 Offset 8 + MemberDecorate 31(Buffers) 3 Offset 16 + MemberDecorate 31(Buffers) 4 Offset 32 + MemberDecorate 31(Buffers) 5 Offset 64 + MemberDecorate 31(Buffers) 6 Offset 96 + Decorate 31(Buffers) Block + Decorate 34(data) DescriptorSet 0 + Decorate 34(data) Binding 0 + Decorate 1272 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 9: TypePointer Input 6(int) +10(gl_SubgroupInvocationID): 9(ptr) Variable Input +12(gl_SubgroupSize): 9(ptr) Variable Input + 15: 6(int) Constant 4 + 17: TypeInt 8 1 + 18: TypeVector 17(int8_t) 4 + 19: TypeInt 8 0 + 20: TypeVector 19(int8_t) 4 + 21: TypeInt 16 1 + 22: TypeVector 21(int16_t) 4 + 23: TypeInt 16 0 + 24: TypeVector 23(int16_t) 4 + 25: TypeInt 64 1 + 26: TypeVector 25(int64_t) 4 + 27: TypeInt 64 0 + 28: TypeVector 27(int64_t) 4 + 29: TypeFloat 16 + 30: TypeVector 29(float16_t) 4 + 31(Buffers): TypeStruct 18(i8vec4) 20(i8vec4) 22(i16vec4) 24(i16vec4) 26(i64vec4) 28(i64vec4) 30(f16vec4) + 32: TypeArray 31(Buffers) 15 + 33: TypePointer StorageBuffer 32 + 34(data): 33(ptr) Variable StorageBuffer + 36: TypeInt 32 1 + 37: 36(int) Constant 0 + 38: 6(int) Constant 0 + 39: TypePointer StorageBuffer 17(int8_t) + 42: 6(int) Constant 1 + 43: 6(int) Constant 3 + 47: 36(int) Constant 1 + 48: TypeVector 17(int8_t) 2 + 49: TypePointer StorageBuffer 18(i8vec4) + 58: 36(int) Constant 2 + 59: TypeVector 17(int8_t) 3 + 68: 36(int) Constant 3 + 230: TypePointer StorageBuffer 19(int8_t) + 236: TypeVector 19(int8_t) 2 + 237: TypePointer StorageBuffer 20(i8vec4) + 246: TypeVector 19(int8_t) 3 + 416: TypePointer StorageBuffer 21(int16_t) + 422: TypeVector 21(int16_t) 2 + 423: TypePointer StorageBuffer 22(i16vec4) + 432: TypeVector 21(int16_t) 3 + 602: TypePointer StorageBuffer 23(int16_t) + 608: TypeVector 23(int16_t) 2 + 609: TypePointer StorageBuffer 24(i16vec4) + 618: TypeVector 23(int16_t) 3 + 788: 36(int) Constant 4 + 789: TypePointer StorageBuffer 25(int64_t) + 795: TypeVector 25(int64_t) 2 + 796: TypePointer StorageBuffer 26(i64vec4) + 805: TypeVector 25(int64_t) 3 + 975: 36(int) Constant 5 + 976: TypePointer StorageBuffer 27(int64_t) + 982: TypeVector 27(int64_t) 2 + 983: TypePointer StorageBuffer 28(i64vec4) + 992: TypeVector 27(int64_t) 3 + 1162: 36(int) Constant 6 + 1163: TypePointer StorageBuffer 29(float16_t) + 1169: TypeVector 29(float16_t) 2 + 1170: TypePointer StorageBuffer 30(f16vec4) + 1179: TypeVector 29(float16_t) 3 + 1270: TypeVector 6(int) 3 + 1271: 6(int) Constant 8 + 1272: 1270(ivec3) ConstantComposite 1271 42 42 + 4(main): 2 Function None 3 + 5: Label + 8(invocation): 7(ptr) Variable Function + 11: 6(int) Load 10(gl_SubgroupInvocationID) + 13: 6(int) Load 12(gl_SubgroupSize) + 14: 6(int) IAdd 11 13 + 16: 6(int) UMod 14 15 + Store 8(invocation) 16 + 35: 6(int) Load 8(invocation) + 40: 39(ptr) AccessChain 34(data) 37 37 38 + 41: 17(int8_t) Load 40 + 44: 17(int8_t) GroupNonUniformIAdd 43 ClusteredReduce 41 42 + 45: 39(ptr) AccessChain 34(data) 35 37 38 + Store 45 44 + 46: 6(int) Load 8(invocation) + 50: 49(ptr) AccessChain 34(data) 47 37 + 51: 18(i8vec4) Load 50 + 52: 48(i8vec2) VectorShuffle 51 51 0 1 + 53: 48(i8vec2) GroupNonUniformIAdd 43 ClusteredReduce 52 42 + 54: 49(ptr) AccessChain 34(data) 46 37 + 55: 18(i8vec4) Load 54 + 56: 18(i8vec4) VectorShuffle 55 53 4 5 2 3 + Store 54 56 + 57: 6(int) Load 8(invocation) + 60: 49(ptr) AccessChain 34(data) 58 37 + 61: 18(i8vec4) Load 60 + 62: 59(i8vec3) VectorShuffle 61 61 0 1 2 + 63: 59(i8vec3) GroupNonUniformIAdd 43 ClusteredReduce 62 42 + 64: 49(ptr) AccessChain 34(data) 57 37 + 65: 18(i8vec4) Load 64 + 66: 18(i8vec4) VectorShuffle 65 63 4 5 6 3 + Store 64 66 + 67: 6(int) Load 8(invocation) + 69: 49(ptr) AccessChain 34(data) 68 37 + 70: 18(i8vec4) Load 69 + 71: 18(i8vec4) GroupNonUniformIAdd 43 ClusteredReduce 70 42 + 72: 49(ptr) AccessChain 34(data) 67 37 + Store 72 71 + 73: 6(int) Load 8(invocation) + 74: 39(ptr) AccessChain 34(data) 37 37 38 + 75: 17(int8_t) Load 74 + 76: 17(int8_t) GroupNonUniformIMul 43 ClusteredReduce 75 42 + 77: 39(ptr) AccessChain 34(data) 73 37 38 + Store 77 76 + 78: 6(int) Load 8(invocation) + 79: 49(ptr) AccessChain 34(data) 47 37 + 80: 18(i8vec4) Load 79 + 81: 48(i8vec2) VectorShuffle 80 80 0 1 + 82: 48(i8vec2) GroupNonUniformIMul 43 ClusteredReduce 81 42 + 83: 49(ptr) AccessChain 34(data) 78 37 + 84: 18(i8vec4) Load 83 + 85: 18(i8vec4) VectorShuffle 84 82 4 5 2 3 + Store 83 85 + 86: 6(int) Load 8(invocation) + 87: 49(ptr) AccessChain 34(data) 58 37 + 88: 18(i8vec4) Load 87 + 89: 59(i8vec3) VectorShuffle 88 88 0 1 2 + 90: 59(i8vec3) GroupNonUniformIMul 43 ClusteredReduce 89 42 + 91: 49(ptr) AccessChain 34(data) 86 37 + 92: 18(i8vec4) Load 91 + 93: 18(i8vec4) VectorShuffle 92 90 4 5 6 3 + Store 91 93 + 94: 6(int) Load 8(invocation) + 95: 49(ptr) AccessChain 34(data) 68 37 + 96: 18(i8vec4) Load 95 + 97: 18(i8vec4) GroupNonUniformIMul 43 ClusteredReduce 96 42 + 98: 49(ptr) AccessChain 34(data) 94 37 + Store 98 97 + 99: 6(int) Load 8(invocation) + 100: 39(ptr) AccessChain 34(data) 37 37 38 + 101: 17(int8_t) Load 100 + 102: 17(int8_t) GroupNonUniformSMin 43 ClusteredReduce 101 42 + 103: 39(ptr) AccessChain 34(data) 99 37 38 + Store 103 102 + 104: 6(int) Load 8(invocation) + 105: 49(ptr) AccessChain 34(data) 47 37 + 106: 18(i8vec4) Load 105 + 107: 48(i8vec2) VectorShuffle 106 106 0 1 + 108: 48(i8vec2) GroupNonUniformSMin 43 ClusteredReduce 107 42 + 109: 49(ptr) AccessChain 34(data) 104 37 + 110: 18(i8vec4) Load 109 + 111: 18(i8vec4) VectorShuffle 110 108 4 5 2 3 + Store 109 111 + 112: 6(int) Load 8(invocation) + 113: 49(ptr) AccessChain 34(data) 58 37 + 114: 18(i8vec4) Load 113 + 115: 59(i8vec3) VectorShuffle 114 114 0 1 2 + 116: 59(i8vec3) GroupNonUniformSMin 43 ClusteredReduce 115 42 + 117: 49(ptr) AccessChain 34(data) 112 37 + 118: 18(i8vec4) Load 117 + 119: 18(i8vec4) VectorShuffle 118 116 4 5 6 3 + Store 117 119 + 120: 6(int) Load 8(invocation) + 121: 49(ptr) AccessChain 34(data) 68 37 + 122: 18(i8vec4) Load 121 + 123: 18(i8vec4) GroupNonUniformSMin 43 ClusteredReduce 122 42 + 124: 49(ptr) AccessChain 34(data) 120 37 + Store 124 123 + 125: 6(int) Load 8(invocation) + 126: 39(ptr) AccessChain 34(data) 37 37 38 + 127: 17(int8_t) Load 126 + 128: 17(int8_t) GroupNonUniformSMax 43 ClusteredReduce 127 42 + 129: 39(ptr) AccessChain 34(data) 125 37 38 + Store 129 128 + 130: 6(int) Load 8(invocation) + 131: 49(ptr) AccessChain 34(data) 47 37 + 132: 18(i8vec4) Load 131 + 133: 48(i8vec2) VectorShuffle 132 132 0 1 + 134: 48(i8vec2) GroupNonUniformSMax 43 ClusteredReduce 133 42 + 135: 49(ptr) AccessChain 34(data) 130 37 + 136: 18(i8vec4) Load 135 + 137: 18(i8vec4) VectorShuffle 136 134 4 5 2 3 + Store 135 137 + 138: 6(int) Load 8(invocation) + 139: 49(ptr) AccessChain 34(data) 58 37 + 140: 18(i8vec4) Load 139 + 141: 59(i8vec3) VectorShuffle 140 140 0 1 2 + 142: 59(i8vec3) GroupNonUniformSMax 43 ClusteredReduce 141 42 + 143: 49(ptr) AccessChain 34(data) 138 37 + 144: 18(i8vec4) Load 143 + 145: 18(i8vec4) VectorShuffle 144 142 4 5 6 3 + Store 143 145 + 146: 6(int) Load 8(invocation) + 147: 49(ptr) AccessChain 34(data) 68 37 + 148: 18(i8vec4) Load 147 + 149: 18(i8vec4) GroupNonUniformSMax 43 ClusteredReduce 148 42 + 150: 49(ptr) AccessChain 34(data) 146 37 + Store 150 149 + 151: 6(int) Load 8(invocation) + 152: 39(ptr) AccessChain 34(data) 37 37 38 + 153: 17(int8_t) Load 152 + 154: 17(int8_t) GroupNonUniformBitwiseAnd 43 ClusteredReduce 153 42 + 155: 39(ptr) AccessChain 34(data) 151 37 38 + Store 155 154 + 156: 6(int) Load 8(invocation) + 157: 49(ptr) AccessChain 34(data) 47 37 + 158: 18(i8vec4) Load 157 + 159: 48(i8vec2) VectorShuffle 158 158 0 1 + 160: 48(i8vec2) GroupNonUniformBitwiseAnd 43 ClusteredReduce 159 42 + 161: 49(ptr) AccessChain 34(data) 156 37 + 162: 18(i8vec4) Load 161 + 163: 18(i8vec4) VectorShuffle 162 160 4 5 2 3 + Store 161 163 + 164: 6(int) Load 8(invocation) + 165: 49(ptr) AccessChain 34(data) 58 37 + 166: 18(i8vec4) Load 165 + 167: 59(i8vec3) VectorShuffle 166 166 0 1 2 + 168: 59(i8vec3) GroupNonUniformBitwiseAnd 43 ClusteredReduce 167 42 + 169: 49(ptr) AccessChain 34(data) 164 37 + 170: 18(i8vec4) Load 169 + 171: 18(i8vec4) VectorShuffle 170 168 4 5 6 3 + Store 169 171 + 172: 6(int) Load 8(invocation) + 173: 49(ptr) AccessChain 34(data) 68 37 + 174: 18(i8vec4) Load 173 + 175: 18(i8vec4) GroupNonUniformBitwiseAnd 43 ClusteredReduce 174 42 + 176: 49(ptr) AccessChain 34(data) 172 37 + Store 176 175 + 177: 6(int) Load 8(invocation) + 178: 39(ptr) AccessChain 34(data) 37 37 38 + 179: 17(int8_t) Load 178 + 180: 17(int8_t) GroupNonUniformBitwiseOr 43 ClusteredReduce 179 42 + 181: 39(ptr) AccessChain 34(data) 177 37 38 + Store 181 180 + 182: 6(int) Load 8(invocation) + 183: 49(ptr) AccessChain 34(data) 47 37 + 184: 18(i8vec4) Load 183 + 185: 48(i8vec2) VectorShuffle 184 184 0 1 + 186: 48(i8vec2) GroupNonUniformBitwiseOr 43 ClusteredReduce 185 42 + 187: 49(ptr) AccessChain 34(data) 182 37 + 188: 18(i8vec4) Load 187 + 189: 18(i8vec4) VectorShuffle 188 186 4 5 2 3 + Store 187 189 + 190: 6(int) Load 8(invocation) + 191: 49(ptr) AccessChain 34(data) 58 37 + 192: 18(i8vec4) Load 191 + 193: 59(i8vec3) VectorShuffle 192 192 0 1 2 + 194: 59(i8vec3) GroupNonUniformBitwiseOr 43 ClusteredReduce 193 42 + 195: 49(ptr) AccessChain 34(data) 190 37 + 196: 18(i8vec4) Load 195 + 197: 18(i8vec4) VectorShuffle 196 194 4 5 6 3 + Store 195 197 + 198: 6(int) Load 8(invocation) + 199: 49(ptr) AccessChain 34(data) 68 37 + 200: 18(i8vec4) Load 199 + 201: 18(i8vec4) GroupNonUniformBitwiseOr 43 ClusteredReduce 200 42 + 202: 49(ptr) AccessChain 34(data) 198 37 + Store 202 201 + 203: 6(int) Load 8(invocation) + 204: 39(ptr) AccessChain 34(data) 37 37 38 + 205: 17(int8_t) Load 204 + 206: 17(int8_t) GroupNonUniformBitwiseXor 43 ClusteredReduce 205 42 + 207: 39(ptr) AccessChain 34(data) 203 37 38 + Store 207 206 + 208: 6(int) Load 8(invocation) + 209: 49(ptr) AccessChain 34(data) 47 37 + 210: 18(i8vec4) Load 209 + 211: 48(i8vec2) VectorShuffle 210 210 0 1 + 212: 48(i8vec2) GroupNonUniformBitwiseXor 43 ClusteredReduce 211 42 + 213: 49(ptr) AccessChain 34(data) 208 37 + 214: 18(i8vec4) Load 213 + 215: 18(i8vec4) VectorShuffle 214 212 4 5 2 3 + Store 213 215 + 216: 6(int) Load 8(invocation) + 217: 49(ptr) AccessChain 34(data) 58 37 + 218: 18(i8vec4) Load 217 + 219: 59(i8vec3) VectorShuffle 218 218 0 1 2 + 220: 59(i8vec3) GroupNonUniformBitwiseXor 43 ClusteredReduce 219 42 + 221: 49(ptr) AccessChain 34(data) 216 37 + 222: 18(i8vec4) Load 221 + 223: 18(i8vec4) VectorShuffle 222 220 4 5 6 3 + Store 221 223 + 224: 6(int) Load 8(invocation) + 225: 49(ptr) AccessChain 34(data) 68 37 + 226: 18(i8vec4) Load 225 + 227: 18(i8vec4) GroupNonUniformBitwiseXor 43 ClusteredReduce 226 42 + 228: 49(ptr) AccessChain 34(data) 224 37 + Store 228 227 + 229: 6(int) Load 8(invocation) + 231: 230(ptr) AccessChain 34(data) 37 47 38 + 232: 19(int8_t) Load 231 + 233: 19(int8_t) GroupNonUniformIAdd 43 ClusteredReduce 232 42 + 234: 230(ptr) AccessChain 34(data) 229 47 38 + Store 234 233 + 235: 6(int) Load 8(invocation) + 238: 237(ptr) AccessChain 34(data) 47 47 + 239: 20(i8vec4) Load 238 + 240: 236(i8vec2) VectorShuffle 239 239 0 1 + 241: 236(i8vec2) GroupNonUniformIAdd 43 ClusteredReduce 240 42 + 242: 237(ptr) AccessChain 34(data) 235 47 + 243: 20(i8vec4) Load 242 + 244: 20(i8vec4) VectorShuffle 243 241 4 5 2 3 + Store 242 244 + 245: 6(int) Load 8(invocation) + 247: 237(ptr) AccessChain 34(data) 58 47 + 248: 20(i8vec4) Load 247 + 249: 246(i8vec3) VectorShuffle 248 248 0 1 2 + 250: 246(i8vec3) GroupNonUniformIAdd 43 ClusteredReduce 249 42 + 251: 237(ptr) AccessChain 34(data) 245 47 + 252: 20(i8vec4) Load 251 + 253: 20(i8vec4) VectorShuffle 252 250 4 5 6 3 + Store 251 253 + 254: 6(int) Load 8(invocation) + 255: 237(ptr) AccessChain 34(data) 68 47 + 256: 20(i8vec4) Load 255 + 257: 20(i8vec4) GroupNonUniformIAdd 43 ClusteredReduce 256 42 + 258: 237(ptr) AccessChain 34(data) 254 47 + Store 258 257 + 259: 6(int) Load 8(invocation) + 260: 230(ptr) AccessChain 34(data) 37 47 38 + 261: 19(int8_t) Load 260 + 262: 19(int8_t) GroupNonUniformIMul 43 ClusteredReduce 261 42 + 263: 230(ptr) AccessChain 34(data) 259 47 38 + Store 263 262 + 264: 6(int) Load 8(invocation) + 265: 237(ptr) AccessChain 34(data) 47 47 + 266: 20(i8vec4) Load 265 + 267: 236(i8vec2) VectorShuffle 266 266 0 1 + 268: 236(i8vec2) GroupNonUniformIMul 43 ClusteredReduce 267 42 + 269: 237(ptr) AccessChain 34(data) 264 47 + 270: 20(i8vec4) Load 269 + 271: 20(i8vec4) VectorShuffle 270 268 4 5 2 3 + Store 269 271 + 272: 6(int) Load 8(invocation) + 273: 237(ptr) AccessChain 34(data) 58 47 + 274: 20(i8vec4) Load 273 + 275: 246(i8vec3) VectorShuffle 274 274 0 1 2 + 276: 246(i8vec3) GroupNonUniformIMul 43 ClusteredReduce 275 42 + 277: 237(ptr) AccessChain 34(data) 272 47 + 278: 20(i8vec4) Load 277 + 279: 20(i8vec4) VectorShuffle 278 276 4 5 6 3 + Store 277 279 + 280: 6(int) Load 8(invocation) + 281: 237(ptr) AccessChain 34(data) 68 47 + 282: 20(i8vec4) Load 281 + 283: 20(i8vec4) GroupNonUniformIMul 43 ClusteredReduce 282 42 + 284: 237(ptr) AccessChain 34(data) 280 47 + Store 284 283 + 285: 6(int) Load 8(invocation) + 286: 230(ptr) AccessChain 34(data) 37 47 38 + 287: 19(int8_t) Load 286 + 288: 19(int8_t) GroupNonUniformUMin 43 ClusteredReduce 287 42 + 289: 230(ptr) AccessChain 34(data) 285 47 38 + Store 289 288 + 290: 6(int) Load 8(invocation) + 291: 237(ptr) AccessChain 34(data) 47 47 + 292: 20(i8vec4) Load 291 + 293: 236(i8vec2) VectorShuffle 292 292 0 1 + 294: 236(i8vec2) GroupNonUniformUMin 43 ClusteredReduce 293 42 + 295: 237(ptr) AccessChain 34(data) 290 47 + 296: 20(i8vec4) Load 295 + 297: 20(i8vec4) VectorShuffle 296 294 4 5 2 3 + Store 295 297 + 298: 6(int) Load 8(invocation) + 299: 237(ptr) AccessChain 34(data) 58 47 + 300: 20(i8vec4) Load 299 + 301: 246(i8vec3) VectorShuffle 300 300 0 1 2 + 302: 246(i8vec3) GroupNonUniformUMin 43 ClusteredReduce 301 42 + 303: 237(ptr) AccessChain 34(data) 298 47 + 304: 20(i8vec4) Load 303 + 305: 20(i8vec4) VectorShuffle 304 302 4 5 6 3 + Store 303 305 + 306: 6(int) Load 8(invocation) + 307: 237(ptr) AccessChain 34(data) 68 47 + 308: 20(i8vec4) Load 307 + 309: 20(i8vec4) GroupNonUniformUMin 43 ClusteredReduce 308 42 + 310: 237(ptr) AccessChain 34(data) 306 47 + Store 310 309 + 311: 6(int) Load 8(invocation) + 312: 230(ptr) AccessChain 34(data) 37 47 38 + 313: 19(int8_t) Load 312 + 314: 19(int8_t) GroupNonUniformUMax 43 ClusteredReduce 313 42 + 315: 230(ptr) AccessChain 34(data) 311 47 38 + Store 315 314 + 316: 6(int) Load 8(invocation) + 317: 237(ptr) AccessChain 34(data) 47 47 + 318: 20(i8vec4) Load 317 + 319: 236(i8vec2) VectorShuffle 318 318 0 1 + 320: 236(i8vec2) GroupNonUniformUMax 43 ClusteredReduce 319 42 + 321: 237(ptr) AccessChain 34(data) 316 47 + 322: 20(i8vec4) Load 321 + 323: 20(i8vec4) VectorShuffle 322 320 4 5 2 3 + Store 321 323 + 324: 6(int) Load 8(invocation) + 325: 237(ptr) AccessChain 34(data) 58 47 + 326: 20(i8vec4) Load 325 + 327: 246(i8vec3) VectorShuffle 326 326 0 1 2 + 328: 246(i8vec3) GroupNonUniformUMax 43 ClusteredReduce 327 42 + 329: 237(ptr) AccessChain 34(data) 324 47 + 330: 20(i8vec4) Load 329 + 331: 20(i8vec4) VectorShuffle 330 328 4 5 6 3 + Store 329 331 + 332: 6(int) Load 8(invocation) + 333: 237(ptr) AccessChain 34(data) 68 47 + 334: 20(i8vec4) Load 333 + 335: 20(i8vec4) GroupNonUniformUMax 43 ClusteredReduce 334 42 + 336: 237(ptr) AccessChain 34(data) 332 47 + Store 336 335 + 337: 6(int) Load 8(invocation) + 338: 230(ptr) AccessChain 34(data) 37 47 38 + 339: 19(int8_t) Load 338 + 340: 19(int8_t) GroupNonUniformBitwiseAnd 43 ClusteredReduce 339 42 + 341: 230(ptr) AccessChain 34(data) 337 47 38 + Store 341 340 + 342: 6(int) Load 8(invocation) + 343: 237(ptr) AccessChain 34(data) 47 47 + 344: 20(i8vec4) Load 343 + 345: 236(i8vec2) VectorShuffle 344 344 0 1 + 346: 236(i8vec2) GroupNonUniformBitwiseAnd 43 ClusteredReduce 345 42 + 347: 237(ptr) AccessChain 34(data) 342 47 + 348: 20(i8vec4) Load 347 + 349: 20(i8vec4) VectorShuffle 348 346 4 5 2 3 + Store 347 349 + 350: 6(int) Load 8(invocation) + 351: 237(ptr) AccessChain 34(data) 58 47 + 352: 20(i8vec4) Load 351 + 353: 246(i8vec3) VectorShuffle 352 352 0 1 2 + 354: 246(i8vec3) GroupNonUniformBitwiseAnd 43 ClusteredReduce 353 42 + 355: 237(ptr) AccessChain 34(data) 350 47 + 356: 20(i8vec4) Load 355 + 357: 20(i8vec4) VectorShuffle 356 354 4 5 6 3 + Store 355 357 + 358: 6(int) Load 8(invocation) + 359: 237(ptr) AccessChain 34(data) 68 47 + 360: 20(i8vec4) Load 359 + 361: 20(i8vec4) GroupNonUniformBitwiseAnd 43 ClusteredReduce 360 42 + 362: 237(ptr) AccessChain 34(data) 358 47 + Store 362 361 + 363: 6(int) Load 8(invocation) + 364: 230(ptr) AccessChain 34(data) 37 47 38 + 365: 19(int8_t) Load 364 + 366: 19(int8_t) GroupNonUniformBitwiseOr 43 ClusteredReduce 365 42 + 367: 230(ptr) AccessChain 34(data) 363 47 38 + Store 367 366 + 368: 6(int) Load 8(invocation) + 369: 237(ptr) AccessChain 34(data) 47 47 + 370: 20(i8vec4) Load 369 + 371: 236(i8vec2) VectorShuffle 370 370 0 1 + 372: 236(i8vec2) GroupNonUniformBitwiseOr 43 ClusteredReduce 371 42 + 373: 237(ptr) AccessChain 34(data) 368 47 + 374: 20(i8vec4) Load 373 + 375: 20(i8vec4) VectorShuffle 374 372 4 5 2 3 + Store 373 375 + 376: 6(int) Load 8(invocation) + 377: 237(ptr) AccessChain 34(data) 58 47 + 378: 20(i8vec4) Load 377 + 379: 246(i8vec3) VectorShuffle 378 378 0 1 2 + 380: 246(i8vec3) GroupNonUniformBitwiseOr 43 ClusteredReduce 379 42 + 381: 237(ptr) AccessChain 34(data) 376 47 + 382: 20(i8vec4) Load 381 + 383: 20(i8vec4) VectorShuffle 382 380 4 5 6 3 + Store 381 383 + 384: 6(int) Load 8(invocation) + 385: 237(ptr) AccessChain 34(data) 68 47 + 386: 20(i8vec4) Load 385 + 387: 20(i8vec4) GroupNonUniformBitwiseOr 43 ClusteredReduce 386 42 + 388: 237(ptr) AccessChain 34(data) 384 47 + Store 388 387 + 389: 6(int) Load 8(invocation) + 390: 230(ptr) AccessChain 34(data) 37 47 38 + 391: 19(int8_t) Load 390 + 392: 19(int8_t) GroupNonUniformBitwiseXor 43 ClusteredReduce 391 42 + 393: 230(ptr) AccessChain 34(data) 389 47 38 + Store 393 392 + 394: 6(int) Load 8(invocation) + 395: 237(ptr) AccessChain 34(data) 47 47 + 396: 20(i8vec4) Load 395 + 397: 236(i8vec2) VectorShuffle 396 396 0 1 + 398: 236(i8vec2) GroupNonUniformBitwiseXor 43 ClusteredReduce 397 42 + 399: 237(ptr) AccessChain 34(data) 394 47 + 400: 20(i8vec4) Load 399 + 401: 20(i8vec4) VectorShuffle 400 398 4 5 2 3 + Store 399 401 + 402: 6(int) Load 8(invocation) + 403: 237(ptr) AccessChain 34(data) 58 47 + 404: 20(i8vec4) Load 403 + 405: 246(i8vec3) VectorShuffle 404 404 0 1 2 + 406: 246(i8vec3) GroupNonUniformBitwiseXor 43 ClusteredReduce 405 42 + 407: 237(ptr) AccessChain 34(data) 402 47 + 408: 20(i8vec4) Load 407 + 409: 20(i8vec4) VectorShuffle 408 406 4 5 6 3 + Store 407 409 + 410: 6(int) Load 8(invocation) + 411: 237(ptr) AccessChain 34(data) 68 47 + 412: 20(i8vec4) Load 411 + 413: 20(i8vec4) GroupNonUniformBitwiseXor 43 ClusteredReduce 412 42 + 414: 237(ptr) AccessChain 34(data) 410 47 + Store 414 413 + 415: 6(int) Load 8(invocation) + 417: 416(ptr) AccessChain 34(data) 37 58 38 + 418: 21(int16_t) Load 417 + 419: 21(int16_t) GroupNonUniformIAdd 43 ClusteredReduce 418 42 + 420: 416(ptr) AccessChain 34(data) 415 58 38 + Store 420 419 + 421: 6(int) Load 8(invocation) + 424: 423(ptr) AccessChain 34(data) 47 58 + 425: 22(i16vec4) Load 424 + 426:422(i16vec2) VectorShuffle 425 425 0 1 + 427:422(i16vec2) GroupNonUniformIAdd 43 ClusteredReduce 426 42 + 428: 423(ptr) AccessChain 34(data) 421 58 + 429: 22(i16vec4) Load 428 + 430: 22(i16vec4) VectorShuffle 429 427 4 5 2 3 + Store 428 430 + 431: 6(int) Load 8(invocation) + 433: 423(ptr) AccessChain 34(data) 58 58 + 434: 22(i16vec4) Load 433 + 435:432(i16vec3) VectorShuffle 434 434 0 1 2 + 436:432(i16vec3) GroupNonUniformIAdd 43 ClusteredReduce 435 42 + 437: 423(ptr) AccessChain 34(data) 431 58 + 438: 22(i16vec4) Load 437 + 439: 22(i16vec4) VectorShuffle 438 436 4 5 6 3 + Store 437 439 + 440: 6(int) Load 8(invocation) + 441: 423(ptr) AccessChain 34(data) 68 58 + 442: 22(i16vec4) Load 441 + 443: 22(i16vec4) GroupNonUniformIAdd 43 ClusteredReduce 442 42 + 444: 423(ptr) AccessChain 34(data) 440 58 + Store 444 443 + 445: 6(int) Load 8(invocation) + 446: 416(ptr) AccessChain 34(data) 37 58 38 + 447: 21(int16_t) Load 446 + 448: 21(int16_t) GroupNonUniformIMul 43 ClusteredReduce 447 42 + 449: 416(ptr) AccessChain 34(data) 445 58 38 + Store 449 448 + 450: 6(int) Load 8(invocation) + 451: 423(ptr) AccessChain 34(data) 47 58 + 452: 22(i16vec4) Load 451 + 453:422(i16vec2) VectorShuffle 452 452 0 1 + 454:422(i16vec2) GroupNonUniformIMul 43 ClusteredReduce 453 42 + 455: 423(ptr) AccessChain 34(data) 450 58 + 456: 22(i16vec4) Load 455 + 457: 22(i16vec4) VectorShuffle 456 454 4 5 2 3 + Store 455 457 + 458: 6(int) Load 8(invocation) + 459: 423(ptr) AccessChain 34(data) 58 58 + 460: 22(i16vec4) Load 459 + 461:432(i16vec3) VectorShuffle 460 460 0 1 2 + 462:432(i16vec3) GroupNonUniformIMul 43 ClusteredReduce 461 42 + 463: 423(ptr) AccessChain 34(data) 458 58 + 464: 22(i16vec4) Load 463 + 465: 22(i16vec4) VectorShuffle 464 462 4 5 6 3 + Store 463 465 + 466: 6(int) Load 8(invocation) + 467: 423(ptr) AccessChain 34(data) 68 58 + 468: 22(i16vec4) Load 467 + 469: 22(i16vec4) GroupNonUniformIMul 43 ClusteredReduce 468 42 + 470: 423(ptr) AccessChain 34(data) 466 58 + Store 470 469 + 471: 6(int) Load 8(invocation) + 472: 416(ptr) AccessChain 34(data) 37 58 38 + 473: 21(int16_t) Load 472 + 474: 21(int16_t) GroupNonUniformSMin 43 ClusteredReduce 473 42 + 475: 416(ptr) AccessChain 34(data) 471 58 38 + Store 475 474 + 476: 6(int) Load 8(invocation) + 477: 423(ptr) AccessChain 34(data) 47 58 + 478: 22(i16vec4) Load 477 + 479:422(i16vec2) VectorShuffle 478 478 0 1 + 480:422(i16vec2) GroupNonUniformSMin 43 ClusteredReduce 479 42 + 481: 423(ptr) AccessChain 34(data) 476 58 + 482: 22(i16vec4) Load 481 + 483: 22(i16vec4) VectorShuffle 482 480 4 5 2 3 + Store 481 483 + 484: 6(int) Load 8(invocation) + 485: 423(ptr) AccessChain 34(data) 58 58 + 486: 22(i16vec4) Load 485 + 487:432(i16vec3) VectorShuffle 486 486 0 1 2 + 488:432(i16vec3) GroupNonUniformSMin 43 ClusteredReduce 487 42 + 489: 423(ptr) AccessChain 34(data) 484 58 + 490: 22(i16vec4) Load 489 + 491: 22(i16vec4) VectorShuffle 490 488 4 5 6 3 + Store 489 491 + 492: 6(int) Load 8(invocation) + 493: 423(ptr) AccessChain 34(data) 68 58 + 494: 22(i16vec4) Load 493 + 495: 22(i16vec4) GroupNonUniformSMin 43 ClusteredReduce 494 42 + 496: 423(ptr) AccessChain 34(data) 492 58 + Store 496 495 + 497: 6(int) Load 8(invocation) + 498: 416(ptr) AccessChain 34(data) 37 58 38 + 499: 21(int16_t) Load 498 + 500: 21(int16_t) GroupNonUniformSMax 43 ClusteredReduce 499 42 + 501: 416(ptr) AccessChain 34(data) 497 58 38 + Store 501 500 + 502: 6(int) Load 8(invocation) + 503: 423(ptr) AccessChain 34(data) 47 58 + 504: 22(i16vec4) Load 503 + 505:422(i16vec2) VectorShuffle 504 504 0 1 + 506:422(i16vec2) GroupNonUniformSMax 43 ClusteredReduce 505 42 + 507: 423(ptr) AccessChain 34(data) 502 58 + 508: 22(i16vec4) Load 507 + 509: 22(i16vec4) VectorShuffle 508 506 4 5 2 3 + Store 507 509 + 510: 6(int) Load 8(invocation) + 511: 423(ptr) AccessChain 34(data) 58 58 + 512: 22(i16vec4) Load 511 + 513:432(i16vec3) VectorShuffle 512 512 0 1 2 + 514:432(i16vec3) GroupNonUniformSMax 43 ClusteredReduce 513 42 + 515: 423(ptr) AccessChain 34(data) 510 58 + 516: 22(i16vec4) Load 515 + 517: 22(i16vec4) VectorShuffle 516 514 4 5 6 3 + Store 515 517 + 518: 6(int) Load 8(invocation) + 519: 423(ptr) AccessChain 34(data) 68 58 + 520: 22(i16vec4) Load 519 + 521: 22(i16vec4) GroupNonUniformSMax 43 ClusteredReduce 520 42 + 522: 423(ptr) AccessChain 34(data) 518 58 + Store 522 521 + 523: 6(int) Load 8(invocation) + 524: 416(ptr) AccessChain 34(data) 37 58 38 + 525: 21(int16_t) Load 524 + 526: 21(int16_t) GroupNonUniformBitwiseAnd 43 ClusteredReduce 525 42 + 527: 416(ptr) AccessChain 34(data) 523 58 38 + Store 527 526 + 528: 6(int) Load 8(invocation) + 529: 423(ptr) AccessChain 34(data) 47 58 + 530: 22(i16vec4) Load 529 + 531:422(i16vec2) VectorShuffle 530 530 0 1 + 532:422(i16vec2) GroupNonUniformBitwiseAnd 43 ClusteredReduce 531 42 + 533: 423(ptr) AccessChain 34(data) 528 58 + 534: 22(i16vec4) Load 533 + 535: 22(i16vec4) VectorShuffle 534 532 4 5 2 3 + Store 533 535 + 536: 6(int) Load 8(invocation) + 537: 423(ptr) AccessChain 34(data) 58 58 + 538: 22(i16vec4) Load 537 + 539:432(i16vec3) VectorShuffle 538 538 0 1 2 + 540:432(i16vec3) GroupNonUniformBitwiseAnd 43 ClusteredReduce 539 42 + 541: 423(ptr) AccessChain 34(data) 536 58 + 542: 22(i16vec4) Load 541 + 543: 22(i16vec4) VectorShuffle 542 540 4 5 6 3 + Store 541 543 + 544: 6(int) Load 8(invocation) + 545: 423(ptr) AccessChain 34(data) 68 58 + 546: 22(i16vec4) Load 545 + 547: 22(i16vec4) GroupNonUniformBitwiseAnd 43 ClusteredReduce 546 42 + 548: 423(ptr) AccessChain 34(data) 544 58 + Store 548 547 + 549: 6(int) Load 8(invocation) + 550: 416(ptr) AccessChain 34(data) 37 58 38 + 551: 21(int16_t) Load 550 + 552: 21(int16_t) GroupNonUniformBitwiseOr 43 ClusteredReduce 551 42 + 553: 416(ptr) AccessChain 34(data) 549 58 38 + Store 553 552 + 554: 6(int) Load 8(invocation) + 555: 423(ptr) AccessChain 34(data) 47 58 + 556: 22(i16vec4) Load 555 + 557:422(i16vec2) VectorShuffle 556 556 0 1 + 558:422(i16vec2) GroupNonUniformBitwiseOr 43 ClusteredReduce 557 42 + 559: 423(ptr) AccessChain 34(data) 554 58 + 560: 22(i16vec4) Load 559 + 561: 22(i16vec4) VectorShuffle 560 558 4 5 2 3 + Store 559 561 + 562: 6(int) Load 8(invocation) + 563: 423(ptr) AccessChain 34(data) 58 58 + 564: 22(i16vec4) Load 563 + 565:432(i16vec3) VectorShuffle 564 564 0 1 2 + 566:432(i16vec3) GroupNonUniformBitwiseOr 43 ClusteredReduce 565 42 + 567: 423(ptr) AccessChain 34(data) 562 58 + 568: 22(i16vec4) Load 567 + 569: 22(i16vec4) VectorShuffle 568 566 4 5 6 3 + Store 567 569 + 570: 6(int) Load 8(invocation) + 571: 423(ptr) AccessChain 34(data) 68 58 + 572: 22(i16vec4) Load 571 + 573: 22(i16vec4) GroupNonUniformBitwiseOr 43 ClusteredReduce 572 42 + 574: 423(ptr) AccessChain 34(data) 570 58 + Store 574 573 + 575: 6(int) Load 8(invocation) + 576: 416(ptr) AccessChain 34(data) 37 58 38 + 577: 21(int16_t) Load 576 + 578: 21(int16_t) GroupNonUniformBitwiseXor 43 ClusteredReduce 577 42 + 579: 416(ptr) AccessChain 34(data) 575 58 38 + Store 579 578 + 580: 6(int) Load 8(invocation) + 581: 423(ptr) AccessChain 34(data) 47 58 + 582: 22(i16vec4) Load 581 + 583:422(i16vec2) VectorShuffle 582 582 0 1 + 584:422(i16vec2) GroupNonUniformBitwiseXor 43 ClusteredReduce 583 42 + 585: 423(ptr) AccessChain 34(data) 580 58 + 586: 22(i16vec4) Load 585 + 587: 22(i16vec4) VectorShuffle 586 584 4 5 2 3 + Store 585 587 + 588: 6(int) Load 8(invocation) + 589: 423(ptr) AccessChain 34(data) 58 58 + 590: 22(i16vec4) Load 589 + 591:432(i16vec3) VectorShuffle 590 590 0 1 2 + 592:432(i16vec3) GroupNonUniformBitwiseXor 43 ClusteredReduce 591 42 + 593: 423(ptr) AccessChain 34(data) 588 58 + 594: 22(i16vec4) Load 593 + 595: 22(i16vec4) VectorShuffle 594 592 4 5 6 3 + Store 593 595 + 596: 6(int) Load 8(invocation) + 597: 423(ptr) AccessChain 34(data) 68 58 + 598: 22(i16vec4) Load 597 + 599: 22(i16vec4) GroupNonUniformBitwiseXor 43 ClusteredReduce 598 42 + 600: 423(ptr) AccessChain 34(data) 596 58 + Store 600 599 + 601: 6(int) Load 8(invocation) + 603: 602(ptr) AccessChain 34(data) 37 68 38 + 604: 23(int16_t) Load 603 + 605: 23(int16_t) GroupNonUniformIAdd 43 ClusteredReduce 604 42 + 606: 602(ptr) AccessChain 34(data) 601 68 38 + Store 606 605 + 607: 6(int) Load 8(invocation) + 610: 609(ptr) AccessChain 34(data) 47 68 + 611: 24(i16vec4) Load 610 + 612:608(i16vec2) VectorShuffle 611 611 0 1 + 613:608(i16vec2) GroupNonUniformIAdd 43 ClusteredReduce 612 42 + 614: 609(ptr) AccessChain 34(data) 607 68 + 615: 24(i16vec4) Load 614 + 616: 24(i16vec4) VectorShuffle 615 613 4 5 2 3 + Store 614 616 + 617: 6(int) Load 8(invocation) + 619: 609(ptr) AccessChain 34(data) 58 68 + 620: 24(i16vec4) Load 619 + 621:618(i16vec3) VectorShuffle 620 620 0 1 2 + 622:618(i16vec3) GroupNonUniformIAdd 43 ClusteredReduce 621 42 + 623: 609(ptr) AccessChain 34(data) 617 68 + 624: 24(i16vec4) Load 623 + 625: 24(i16vec4) VectorShuffle 624 622 4 5 6 3 + Store 623 625 + 626: 6(int) Load 8(invocation) + 627: 609(ptr) AccessChain 34(data) 68 68 + 628: 24(i16vec4) Load 627 + 629: 24(i16vec4) GroupNonUniformIAdd 43 ClusteredReduce 628 42 + 630: 609(ptr) AccessChain 34(data) 626 68 + Store 630 629 + 631: 6(int) Load 8(invocation) + 632: 602(ptr) AccessChain 34(data) 37 68 38 + 633: 23(int16_t) Load 632 + 634: 23(int16_t) GroupNonUniformIMul 43 ClusteredReduce 633 42 + 635: 602(ptr) AccessChain 34(data) 631 68 38 + Store 635 634 + 636: 6(int) Load 8(invocation) + 637: 609(ptr) AccessChain 34(data) 47 68 + 638: 24(i16vec4) Load 637 + 639:608(i16vec2) VectorShuffle 638 638 0 1 + 640:608(i16vec2) GroupNonUniformIMul 43 ClusteredReduce 639 42 + 641: 609(ptr) AccessChain 34(data) 636 68 + 642: 24(i16vec4) Load 641 + 643: 24(i16vec4) VectorShuffle 642 640 4 5 2 3 + Store 641 643 + 644: 6(int) Load 8(invocation) + 645: 609(ptr) AccessChain 34(data) 58 68 + 646: 24(i16vec4) Load 645 + 647:618(i16vec3) VectorShuffle 646 646 0 1 2 + 648:618(i16vec3) GroupNonUniformIMul 43 ClusteredReduce 647 42 + 649: 609(ptr) AccessChain 34(data) 644 68 + 650: 24(i16vec4) Load 649 + 651: 24(i16vec4) VectorShuffle 650 648 4 5 6 3 + Store 649 651 + 652: 6(int) Load 8(invocation) + 653: 609(ptr) AccessChain 34(data) 68 68 + 654: 24(i16vec4) Load 653 + 655: 24(i16vec4) GroupNonUniformIMul 43 ClusteredReduce 654 42 + 656: 609(ptr) AccessChain 34(data) 652 68 + Store 656 655 + 657: 6(int) Load 8(invocation) + 658: 602(ptr) AccessChain 34(data) 37 68 38 + 659: 23(int16_t) Load 658 + 660: 23(int16_t) GroupNonUniformUMin 43 ClusteredReduce 659 42 + 661: 602(ptr) AccessChain 34(data) 657 68 38 + Store 661 660 + 662: 6(int) Load 8(invocation) + 663: 609(ptr) AccessChain 34(data) 47 68 + 664: 24(i16vec4) Load 663 + 665:608(i16vec2) VectorShuffle 664 664 0 1 + 666:608(i16vec2) GroupNonUniformUMin 43 ClusteredReduce 665 42 + 667: 609(ptr) AccessChain 34(data) 662 68 + 668: 24(i16vec4) Load 667 + 669: 24(i16vec4) VectorShuffle 668 666 4 5 2 3 + Store 667 669 + 670: 6(int) Load 8(invocation) + 671: 609(ptr) AccessChain 34(data) 58 68 + 672: 24(i16vec4) Load 671 + 673:618(i16vec3) VectorShuffle 672 672 0 1 2 + 674:618(i16vec3) GroupNonUniformUMin 43 ClusteredReduce 673 42 + 675: 609(ptr) AccessChain 34(data) 670 68 + 676: 24(i16vec4) Load 675 + 677: 24(i16vec4) VectorShuffle 676 674 4 5 6 3 + Store 675 677 + 678: 6(int) Load 8(invocation) + 679: 609(ptr) AccessChain 34(data) 68 68 + 680: 24(i16vec4) Load 679 + 681: 24(i16vec4) GroupNonUniformUMin 43 ClusteredReduce 680 42 + 682: 609(ptr) AccessChain 34(data) 678 68 + Store 682 681 + 683: 6(int) Load 8(invocation) + 684: 602(ptr) AccessChain 34(data) 37 68 38 + 685: 23(int16_t) Load 684 + 686: 23(int16_t) GroupNonUniformUMax 43 ClusteredReduce 685 42 + 687: 602(ptr) AccessChain 34(data) 683 68 38 + Store 687 686 + 688: 6(int) Load 8(invocation) + 689: 609(ptr) AccessChain 34(data) 47 68 + 690: 24(i16vec4) Load 689 + 691:608(i16vec2) VectorShuffle 690 690 0 1 + 692:608(i16vec2) GroupNonUniformUMax 43 ClusteredReduce 691 42 + 693: 609(ptr) AccessChain 34(data) 688 68 + 694: 24(i16vec4) Load 693 + 695: 24(i16vec4) VectorShuffle 694 692 4 5 2 3 + Store 693 695 + 696: 6(int) Load 8(invocation) + 697: 609(ptr) AccessChain 34(data) 58 68 + 698: 24(i16vec4) Load 697 + 699:618(i16vec3) VectorShuffle 698 698 0 1 2 + 700:618(i16vec3) GroupNonUniformUMax 43 ClusteredReduce 699 42 + 701: 609(ptr) AccessChain 34(data) 696 68 + 702: 24(i16vec4) Load 701 + 703: 24(i16vec4) VectorShuffle 702 700 4 5 6 3 + Store 701 703 + 704: 6(int) Load 8(invocation) + 705: 609(ptr) AccessChain 34(data) 68 68 + 706: 24(i16vec4) Load 705 + 707: 24(i16vec4) GroupNonUniformUMax 43 ClusteredReduce 706 42 + 708: 609(ptr) AccessChain 34(data) 704 68 + Store 708 707 + 709: 6(int) Load 8(invocation) + 710: 602(ptr) AccessChain 34(data) 37 68 38 + 711: 23(int16_t) Load 710 + 712: 23(int16_t) GroupNonUniformBitwiseAnd 43 ClusteredReduce 711 42 + 713: 602(ptr) AccessChain 34(data) 709 68 38 + Store 713 712 + 714: 6(int) Load 8(invocation) + 715: 609(ptr) AccessChain 34(data) 47 68 + 716: 24(i16vec4) Load 715 + 717:608(i16vec2) VectorShuffle 716 716 0 1 + 718:608(i16vec2) GroupNonUniformBitwiseAnd 43 ClusteredReduce 717 42 + 719: 609(ptr) AccessChain 34(data) 714 68 + 720: 24(i16vec4) Load 719 + 721: 24(i16vec4) VectorShuffle 720 718 4 5 2 3 + Store 719 721 + 722: 6(int) Load 8(invocation) + 723: 609(ptr) AccessChain 34(data) 58 68 + 724: 24(i16vec4) Load 723 + 725:618(i16vec3) VectorShuffle 724 724 0 1 2 + 726:618(i16vec3) GroupNonUniformBitwiseAnd 43 ClusteredReduce 725 42 + 727: 609(ptr) AccessChain 34(data) 722 68 + 728: 24(i16vec4) Load 727 + 729: 24(i16vec4) VectorShuffle 728 726 4 5 6 3 + Store 727 729 + 730: 6(int) Load 8(invocation) + 731: 609(ptr) AccessChain 34(data) 68 68 + 732: 24(i16vec4) Load 731 + 733: 24(i16vec4) GroupNonUniformBitwiseAnd 43 ClusteredReduce 732 42 + 734: 609(ptr) AccessChain 34(data) 730 68 + Store 734 733 + 735: 6(int) Load 8(invocation) + 736: 602(ptr) AccessChain 34(data) 37 68 38 + 737: 23(int16_t) Load 736 + 738: 23(int16_t) GroupNonUniformBitwiseOr 43 ClusteredReduce 737 42 + 739: 602(ptr) AccessChain 34(data) 735 68 38 + Store 739 738 + 740: 6(int) Load 8(invocation) + 741: 609(ptr) AccessChain 34(data) 47 68 + 742: 24(i16vec4) Load 741 + 743:608(i16vec2) VectorShuffle 742 742 0 1 + 744:608(i16vec2) GroupNonUniformBitwiseOr 43 ClusteredReduce 743 42 + 745: 609(ptr) AccessChain 34(data) 740 68 + 746: 24(i16vec4) Load 745 + 747: 24(i16vec4) VectorShuffle 746 744 4 5 2 3 + Store 745 747 + 748: 6(int) Load 8(invocation) + 749: 609(ptr) AccessChain 34(data) 58 68 + 750: 24(i16vec4) Load 749 + 751:618(i16vec3) VectorShuffle 750 750 0 1 2 + 752:618(i16vec3) GroupNonUniformBitwiseOr 43 ClusteredReduce 751 42 + 753: 609(ptr) AccessChain 34(data) 748 68 + 754: 24(i16vec4) Load 753 + 755: 24(i16vec4) VectorShuffle 754 752 4 5 6 3 + Store 753 755 + 756: 6(int) Load 8(invocation) + 757: 609(ptr) AccessChain 34(data) 68 68 + 758: 24(i16vec4) Load 757 + 759: 24(i16vec4) GroupNonUniformBitwiseOr 43 ClusteredReduce 758 42 + 760: 609(ptr) AccessChain 34(data) 756 68 + Store 760 759 + 761: 6(int) Load 8(invocation) + 762: 602(ptr) AccessChain 34(data) 37 68 38 + 763: 23(int16_t) Load 762 + 764: 23(int16_t) GroupNonUniformBitwiseXor 43 ClusteredReduce 763 42 + 765: 602(ptr) AccessChain 34(data) 761 68 38 + Store 765 764 + 766: 6(int) Load 8(invocation) + 767: 609(ptr) AccessChain 34(data) 47 68 + 768: 24(i16vec4) Load 767 + 769:608(i16vec2) VectorShuffle 768 768 0 1 + 770:608(i16vec2) GroupNonUniformBitwiseXor 43 ClusteredReduce 769 42 + 771: 609(ptr) AccessChain 34(data) 766 68 + 772: 24(i16vec4) Load 771 + 773: 24(i16vec4) VectorShuffle 772 770 4 5 2 3 + Store 771 773 + 774: 6(int) Load 8(invocation) + 775: 609(ptr) AccessChain 34(data) 58 68 + 776: 24(i16vec4) Load 775 + 777:618(i16vec3) VectorShuffle 776 776 0 1 2 + 778:618(i16vec3) GroupNonUniformBitwiseXor 43 ClusteredReduce 777 42 + 779: 609(ptr) AccessChain 34(data) 774 68 + 780: 24(i16vec4) Load 779 + 781: 24(i16vec4) VectorShuffle 780 778 4 5 6 3 + Store 779 781 + 782: 6(int) Load 8(invocation) + 783: 609(ptr) AccessChain 34(data) 68 68 + 784: 24(i16vec4) Load 783 + 785: 24(i16vec4) GroupNonUniformBitwiseXor 43 ClusteredReduce 784 42 + 786: 609(ptr) AccessChain 34(data) 782 68 + Store 786 785 + 787: 6(int) Load 8(invocation) + 790: 789(ptr) AccessChain 34(data) 37 788 38 + 791: 25(int64_t) Load 790 + 792: 25(int64_t) GroupNonUniformIAdd 43 ClusteredReduce 791 42 + 793: 789(ptr) AccessChain 34(data) 787 788 38 + Store 793 792 + 794: 6(int) Load 8(invocation) + 797: 796(ptr) AccessChain 34(data) 47 788 + 798: 26(i64vec4) Load 797 + 799:795(i64vec2) VectorShuffle 798 798 0 1 + 800:795(i64vec2) GroupNonUniformIAdd 43 ClusteredReduce 799 42 + 801: 796(ptr) AccessChain 34(data) 794 788 + 802: 26(i64vec4) Load 801 + 803: 26(i64vec4) VectorShuffle 802 800 4 5 2 3 + Store 801 803 + 804: 6(int) Load 8(invocation) + 806: 796(ptr) AccessChain 34(data) 58 788 + 807: 26(i64vec4) Load 806 + 808:805(i64vec3) VectorShuffle 807 807 0 1 2 + 809:805(i64vec3) GroupNonUniformIAdd 43 ClusteredReduce 808 42 + 810: 796(ptr) AccessChain 34(data) 804 788 + 811: 26(i64vec4) Load 810 + 812: 26(i64vec4) VectorShuffle 811 809 4 5 6 3 + Store 810 812 + 813: 6(int) Load 8(invocation) + 814: 796(ptr) AccessChain 34(data) 68 788 + 815: 26(i64vec4) Load 814 + 816: 26(i64vec4) GroupNonUniformIAdd 43 ClusteredReduce 815 42 + 817: 796(ptr) AccessChain 34(data) 813 788 + Store 817 816 + 818: 6(int) Load 8(invocation) + 819: 789(ptr) AccessChain 34(data) 37 788 38 + 820: 25(int64_t) Load 819 + 821: 25(int64_t) GroupNonUniformIMul 43 ClusteredReduce 820 42 + 822: 789(ptr) AccessChain 34(data) 818 788 38 + Store 822 821 + 823: 6(int) Load 8(invocation) + 824: 796(ptr) AccessChain 34(data) 47 788 + 825: 26(i64vec4) Load 824 + 826:795(i64vec2) VectorShuffle 825 825 0 1 + 827:795(i64vec2) GroupNonUniformIMul 43 ClusteredReduce 826 42 + 828: 796(ptr) AccessChain 34(data) 823 788 + 829: 26(i64vec4) Load 828 + 830: 26(i64vec4) VectorShuffle 829 827 4 5 2 3 + Store 828 830 + 831: 6(int) Load 8(invocation) + 832: 796(ptr) AccessChain 34(data) 58 788 + 833: 26(i64vec4) Load 832 + 834:805(i64vec3) VectorShuffle 833 833 0 1 2 + 835:805(i64vec3) GroupNonUniformIMul 43 ClusteredReduce 834 42 + 836: 796(ptr) AccessChain 34(data) 831 788 + 837: 26(i64vec4) Load 836 + 838: 26(i64vec4) VectorShuffle 837 835 4 5 6 3 + Store 836 838 + 839: 6(int) Load 8(invocation) + 840: 796(ptr) AccessChain 34(data) 68 788 + 841: 26(i64vec4) Load 840 + 842: 26(i64vec4) GroupNonUniformIMul 43 ClusteredReduce 841 42 + 843: 796(ptr) AccessChain 34(data) 839 788 + Store 843 842 + 844: 6(int) Load 8(invocation) + 845: 789(ptr) AccessChain 34(data) 37 788 38 + 846: 25(int64_t) Load 845 + 847: 25(int64_t) GroupNonUniformSMin 43 ClusteredReduce 846 42 + 848: 789(ptr) AccessChain 34(data) 844 788 38 + Store 848 847 + 849: 6(int) Load 8(invocation) + 850: 796(ptr) AccessChain 34(data) 47 788 + 851: 26(i64vec4) Load 850 + 852:795(i64vec2) VectorShuffle 851 851 0 1 + 853:795(i64vec2) GroupNonUniformSMin 43 ClusteredReduce 852 42 + 854: 796(ptr) AccessChain 34(data) 849 788 + 855: 26(i64vec4) Load 854 + 856: 26(i64vec4) VectorShuffle 855 853 4 5 2 3 + Store 854 856 + 857: 6(int) Load 8(invocation) + 858: 796(ptr) AccessChain 34(data) 58 788 + 859: 26(i64vec4) Load 858 + 860:805(i64vec3) VectorShuffle 859 859 0 1 2 + 861:805(i64vec3) GroupNonUniformSMin 43 ClusteredReduce 860 42 + 862: 796(ptr) AccessChain 34(data) 857 788 + 863: 26(i64vec4) Load 862 + 864: 26(i64vec4) VectorShuffle 863 861 4 5 6 3 + Store 862 864 + 865: 6(int) Load 8(invocation) + 866: 796(ptr) AccessChain 34(data) 68 788 + 867: 26(i64vec4) Load 866 + 868: 26(i64vec4) GroupNonUniformSMin 43 ClusteredReduce 867 42 + 869: 796(ptr) AccessChain 34(data) 865 788 + Store 869 868 + 870: 6(int) Load 8(invocation) + 871: 789(ptr) AccessChain 34(data) 37 788 38 + 872: 25(int64_t) Load 871 + 873: 25(int64_t) GroupNonUniformSMax 43 ClusteredReduce 872 42 + 874: 789(ptr) AccessChain 34(data) 870 788 38 + Store 874 873 + 875: 6(int) Load 8(invocation) + 876: 796(ptr) AccessChain 34(data) 47 788 + 877: 26(i64vec4) Load 876 + 878:795(i64vec2) VectorShuffle 877 877 0 1 + 879:795(i64vec2) GroupNonUniformSMax 43 ClusteredReduce 878 42 + 880: 796(ptr) AccessChain 34(data) 875 788 + 881: 26(i64vec4) Load 880 + 882: 26(i64vec4) VectorShuffle 881 879 4 5 2 3 + Store 880 882 + 883: 6(int) Load 8(invocation) + 884: 796(ptr) AccessChain 34(data) 58 788 + 885: 26(i64vec4) Load 884 + 886:805(i64vec3) VectorShuffle 885 885 0 1 2 + 887:805(i64vec3) GroupNonUniformSMax 43 ClusteredReduce 886 42 + 888: 796(ptr) AccessChain 34(data) 883 788 + 889: 26(i64vec4) Load 888 + 890: 26(i64vec4) VectorShuffle 889 887 4 5 6 3 + Store 888 890 + 891: 6(int) Load 8(invocation) + 892: 796(ptr) AccessChain 34(data) 68 788 + 893: 26(i64vec4) Load 892 + 894: 26(i64vec4) GroupNonUniformSMax 43 ClusteredReduce 893 42 + 895: 796(ptr) AccessChain 34(data) 891 788 + Store 895 894 + 896: 6(int) Load 8(invocation) + 897: 789(ptr) AccessChain 34(data) 37 788 38 + 898: 25(int64_t) Load 897 + 899: 25(int64_t) GroupNonUniformBitwiseAnd 43 ClusteredReduce 898 42 + 900: 789(ptr) AccessChain 34(data) 896 788 38 + Store 900 899 + 901: 6(int) Load 8(invocation) + 902: 796(ptr) AccessChain 34(data) 47 788 + 903: 26(i64vec4) Load 902 + 904:795(i64vec2) VectorShuffle 903 903 0 1 + 905:795(i64vec2) GroupNonUniformBitwiseAnd 43 ClusteredReduce 904 42 + 906: 796(ptr) AccessChain 34(data) 901 788 + 907: 26(i64vec4) Load 906 + 908: 26(i64vec4) VectorShuffle 907 905 4 5 2 3 + Store 906 908 + 909: 6(int) Load 8(invocation) + 910: 796(ptr) AccessChain 34(data) 58 788 + 911: 26(i64vec4) Load 910 + 912:805(i64vec3) VectorShuffle 911 911 0 1 2 + 913:805(i64vec3) GroupNonUniformBitwiseAnd 43 ClusteredReduce 912 42 + 914: 796(ptr) AccessChain 34(data) 909 788 + 915: 26(i64vec4) Load 914 + 916: 26(i64vec4) VectorShuffle 915 913 4 5 6 3 + Store 914 916 + 917: 6(int) Load 8(invocation) + 918: 796(ptr) AccessChain 34(data) 68 788 + 919: 26(i64vec4) Load 918 + 920: 26(i64vec4) GroupNonUniformBitwiseAnd 43 ClusteredReduce 919 42 + 921: 796(ptr) AccessChain 34(data) 917 788 + Store 921 920 + 922: 6(int) Load 8(invocation) + 923: 789(ptr) AccessChain 34(data) 37 788 38 + 924: 25(int64_t) Load 923 + 925: 25(int64_t) GroupNonUniformBitwiseOr 43 ClusteredReduce 924 42 + 926: 789(ptr) AccessChain 34(data) 922 788 38 + Store 926 925 + 927: 6(int) Load 8(invocation) + 928: 796(ptr) AccessChain 34(data) 47 788 + 929: 26(i64vec4) Load 928 + 930:795(i64vec2) VectorShuffle 929 929 0 1 + 931:795(i64vec2) GroupNonUniformBitwiseOr 43 ClusteredReduce 930 42 + 932: 796(ptr) AccessChain 34(data) 927 788 + 933: 26(i64vec4) Load 932 + 934: 26(i64vec4) VectorShuffle 933 931 4 5 2 3 + Store 932 934 + 935: 6(int) Load 8(invocation) + 936: 796(ptr) AccessChain 34(data) 58 788 + 937: 26(i64vec4) Load 936 + 938:805(i64vec3) VectorShuffle 937 937 0 1 2 + 939:805(i64vec3) GroupNonUniformBitwiseOr 43 ClusteredReduce 938 42 + 940: 796(ptr) AccessChain 34(data) 935 788 + 941: 26(i64vec4) Load 940 + 942: 26(i64vec4) VectorShuffle 941 939 4 5 6 3 + Store 940 942 + 943: 6(int) Load 8(invocation) + 944: 796(ptr) AccessChain 34(data) 68 788 + 945: 26(i64vec4) Load 944 + 946: 26(i64vec4) GroupNonUniformBitwiseOr 43 ClusteredReduce 945 42 + 947: 796(ptr) AccessChain 34(data) 943 788 + Store 947 946 + 948: 6(int) Load 8(invocation) + 949: 789(ptr) AccessChain 34(data) 37 788 38 + 950: 25(int64_t) Load 949 + 951: 25(int64_t) GroupNonUniformBitwiseXor 43 ClusteredReduce 950 42 + 952: 789(ptr) AccessChain 34(data) 948 788 38 + Store 952 951 + 953: 6(int) Load 8(invocation) + 954: 796(ptr) AccessChain 34(data) 47 788 + 955: 26(i64vec4) Load 954 + 956:795(i64vec2) VectorShuffle 955 955 0 1 + 957:795(i64vec2) GroupNonUniformBitwiseXor 43 ClusteredReduce 956 42 + 958: 796(ptr) AccessChain 34(data) 953 788 + 959: 26(i64vec4) Load 958 + 960: 26(i64vec4) VectorShuffle 959 957 4 5 2 3 + Store 958 960 + 961: 6(int) Load 8(invocation) + 962: 796(ptr) AccessChain 34(data) 58 788 + 963: 26(i64vec4) Load 962 + 964:805(i64vec3) VectorShuffle 963 963 0 1 2 + 965:805(i64vec3) GroupNonUniformBitwiseXor 43 ClusteredReduce 964 42 + 966: 796(ptr) AccessChain 34(data) 961 788 + 967: 26(i64vec4) Load 966 + 968: 26(i64vec4) VectorShuffle 967 965 4 5 6 3 + Store 966 968 + 969: 6(int) Load 8(invocation) + 970: 796(ptr) AccessChain 34(data) 68 788 + 971: 26(i64vec4) Load 970 + 972: 26(i64vec4) GroupNonUniformBitwiseXor 43 ClusteredReduce 971 42 + 973: 796(ptr) AccessChain 34(data) 969 788 + Store 973 972 + 974: 6(int) Load 8(invocation) + 977: 976(ptr) AccessChain 34(data) 37 975 38 + 978: 27(int64_t) Load 977 + 979: 27(int64_t) GroupNonUniformIAdd 43 ClusteredReduce 978 42 + 980: 976(ptr) AccessChain 34(data) 974 975 38 + Store 980 979 + 981: 6(int) Load 8(invocation) + 984: 983(ptr) AccessChain 34(data) 47 975 + 985: 28(i64vec4) Load 984 + 986:982(i64vec2) VectorShuffle 985 985 0 1 + 987:982(i64vec2) GroupNonUniformIAdd 43 ClusteredReduce 986 42 + 988: 983(ptr) AccessChain 34(data) 981 975 + 989: 28(i64vec4) Load 988 + 990: 28(i64vec4) VectorShuffle 989 987 4 5 2 3 + Store 988 990 + 991: 6(int) Load 8(invocation) + 993: 983(ptr) AccessChain 34(data) 58 975 + 994: 28(i64vec4) Load 993 + 995:992(i64vec3) VectorShuffle 994 994 0 1 2 + 996:992(i64vec3) GroupNonUniformIAdd 43 ClusteredReduce 995 42 + 997: 983(ptr) AccessChain 34(data) 991 975 + 998: 28(i64vec4) Load 997 + 999: 28(i64vec4) VectorShuffle 998 996 4 5 6 3 + Store 997 999 + 1000: 6(int) Load 8(invocation) + 1001: 983(ptr) AccessChain 34(data) 68 975 + 1002: 28(i64vec4) Load 1001 + 1003: 28(i64vec4) GroupNonUniformIAdd 43 ClusteredReduce 1002 42 + 1004: 983(ptr) AccessChain 34(data) 1000 975 + Store 1004 1003 + 1005: 6(int) Load 8(invocation) + 1006: 976(ptr) AccessChain 34(data) 37 975 38 + 1007: 27(int64_t) Load 1006 + 1008: 27(int64_t) GroupNonUniformIMul 43 ClusteredReduce 1007 42 + 1009: 976(ptr) AccessChain 34(data) 1005 975 38 + Store 1009 1008 + 1010: 6(int) Load 8(invocation) + 1011: 983(ptr) AccessChain 34(data) 47 975 + 1012: 28(i64vec4) Load 1011 + 1013:982(i64vec2) VectorShuffle 1012 1012 0 1 + 1014:982(i64vec2) GroupNonUniformIMul 43 ClusteredReduce 1013 42 + 1015: 983(ptr) AccessChain 34(data) 1010 975 + 1016: 28(i64vec4) Load 1015 + 1017: 28(i64vec4) VectorShuffle 1016 1014 4 5 2 3 + Store 1015 1017 + 1018: 6(int) Load 8(invocation) + 1019: 983(ptr) AccessChain 34(data) 58 975 + 1020: 28(i64vec4) Load 1019 + 1021:992(i64vec3) VectorShuffle 1020 1020 0 1 2 + 1022:992(i64vec3) GroupNonUniformIMul 43 ClusteredReduce 1021 42 + 1023: 983(ptr) AccessChain 34(data) 1018 975 + 1024: 28(i64vec4) Load 1023 + 1025: 28(i64vec4) VectorShuffle 1024 1022 4 5 6 3 + Store 1023 1025 + 1026: 6(int) Load 8(invocation) + 1027: 983(ptr) AccessChain 34(data) 68 975 + 1028: 28(i64vec4) Load 1027 + 1029: 28(i64vec4) GroupNonUniformIMul 43 ClusteredReduce 1028 42 + 1030: 983(ptr) AccessChain 34(data) 1026 975 + Store 1030 1029 + 1031: 6(int) Load 8(invocation) + 1032: 976(ptr) AccessChain 34(data) 37 975 38 + 1033: 27(int64_t) Load 1032 + 1034: 27(int64_t) GroupNonUniformUMin 43 ClusteredReduce 1033 42 + 1035: 976(ptr) AccessChain 34(data) 1031 975 38 + Store 1035 1034 + 1036: 6(int) Load 8(invocation) + 1037: 983(ptr) AccessChain 34(data) 47 975 + 1038: 28(i64vec4) Load 1037 + 1039:982(i64vec2) VectorShuffle 1038 1038 0 1 + 1040:982(i64vec2) GroupNonUniformUMin 43 ClusteredReduce 1039 42 + 1041: 983(ptr) AccessChain 34(data) 1036 975 + 1042: 28(i64vec4) Load 1041 + 1043: 28(i64vec4) VectorShuffle 1042 1040 4 5 2 3 + Store 1041 1043 + 1044: 6(int) Load 8(invocation) + 1045: 983(ptr) AccessChain 34(data) 58 975 + 1046: 28(i64vec4) Load 1045 + 1047:992(i64vec3) VectorShuffle 1046 1046 0 1 2 + 1048:992(i64vec3) GroupNonUniformUMin 43 ClusteredReduce 1047 42 + 1049: 983(ptr) AccessChain 34(data) 1044 975 + 1050: 28(i64vec4) Load 1049 + 1051: 28(i64vec4) VectorShuffle 1050 1048 4 5 6 3 + Store 1049 1051 + 1052: 6(int) Load 8(invocation) + 1053: 983(ptr) AccessChain 34(data) 68 975 + 1054: 28(i64vec4) Load 1053 + 1055: 28(i64vec4) GroupNonUniformUMin 43 ClusteredReduce 1054 42 + 1056: 983(ptr) AccessChain 34(data) 1052 975 + Store 1056 1055 + 1057: 6(int) Load 8(invocation) + 1058: 976(ptr) AccessChain 34(data) 37 975 38 + 1059: 27(int64_t) Load 1058 + 1060: 27(int64_t) GroupNonUniformUMax 43 ClusteredReduce 1059 42 + 1061: 976(ptr) AccessChain 34(data) 1057 975 38 + Store 1061 1060 + 1062: 6(int) Load 8(invocation) + 1063: 983(ptr) AccessChain 34(data) 47 975 + 1064: 28(i64vec4) Load 1063 + 1065:982(i64vec2) VectorShuffle 1064 1064 0 1 + 1066:982(i64vec2) GroupNonUniformUMax 43 ClusteredReduce 1065 42 + 1067: 983(ptr) AccessChain 34(data) 1062 975 + 1068: 28(i64vec4) Load 1067 + 1069: 28(i64vec4) VectorShuffle 1068 1066 4 5 2 3 + Store 1067 1069 + 1070: 6(int) Load 8(invocation) + 1071: 983(ptr) AccessChain 34(data) 58 975 + 1072: 28(i64vec4) Load 1071 + 1073:992(i64vec3) VectorShuffle 1072 1072 0 1 2 + 1074:992(i64vec3) GroupNonUniformUMax 43 ClusteredReduce 1073 42 + 1075: 983(ptr) AccessChain 34(data) 1070 975 + 1076: 28(i64vec4) Load 1075 + 1077: 28(i64vec4) VectorShuffle 1076 1074 4 5 6 3 + Store 1075 1077 + 1078: 6(int) Load 8(invocation) + 1079: 983(ptr) AccessChain 34(data) 68 975 + 1080: 28(i64vec4) Load 1079 + 1081: 28(i64vec4) GroupNonUniformUMax 43 ClusteredReduce 1080 42 + 1082: 983(ptr) AccessChain 34(data) 1078 975 + Store 1082 1081 + 1083: 6(int) Load 8(invocation) + 1084: 976(ptr) AccessChain 34(data) 37 975 38 + 1085: 27(int64_t) Load 1084 + 1086: 27(int64_t) GroupNonUniformBitwiseAnd 43 ClusteredReduce 1085 42 + 1087: 976(ptr) AccessChain 34(data) 1083 975 38 + Store 1087 1086 + 1088: 6(int) Load 8(invocation) + 1089: 983(ptr) AccessChain 34(data) 47 975 + 1090: 28(i64vec4) Load 1089 + 1091:982(i64vec2) VectorShuffle 1090 1090 0 1 + 1092:982(i64vec2) GroupNonUniformBitwiseAnd 43 ClusteredReduce 1091 42 + 1093: 983(ptr) AccessChain 34(data) 1088 975 + 1094: 28(i64vec4) Load 1093 + 1095: 28(i64vec4) VectorShuffle 1094 1092 4 5 2 3 + Store 1093 1095 + 1096: 6(int) Load 8(invocation) + 1097: 983(ptr) AccessChain 34(data) 58 975 + 1098: 28(i64vec4) Load 1097 + 1099:992(i64vec3) VectorShuffle 1098 1098 0 1 2 + 1100:992(i64vec3) GroupNonUniformBitwiseAnd 43 ClusteredReduce 1099 42 + 1101: 983(ptr) AccessChain 34(data) 1096 975 + 1102: 28(i64vec4) Load 1101 + 1103: 28(i64vec4) VectorShuffle 1102 1100 4 5 6 3 + Store 1101 1103 + 1104: 6(int) Load 8(invocation) + 1105: 983(ptr) AccessChain 34(data) 68 975 + 1106: 28(i64vec4) Load 1105 + 1107: 28(i64vec4) GroupNonUniformBitwiseAnd 43 ClusteredReduce 1106 42 + 1108: 983(ptr) AccessChain 34(data) 1104 975 + Store 1108 1107 + 1109: 6(int) Load 8(invocation) + 1110: 976(ptr) AccessChain 34(data) 37 975 38 + 1111: 27(int64_t) Load 1110 + 1112: 27(int64_t) GroupNonUniformBitwiseOr 43 ClusteredReduce 1111 42 + 1113: 976(ptr) AccessChain 34(data) 1109 975 38 + Store 1113 1112 + 1114: 6(int) Load 8(invocation) + 1115: 983(ptr) AccessChain 34(data) 47 975 + 1116: 28(i64vec4) Load 1115 + 1117:982(i64vec2) VectorShuffle 1116 1116 0 1 + 1118:982(i64vec2) GroupNonUniformBitwiseOr 43 ClusteredReduce 1117 42 + 1119: 983(ptr) AccessChain 34(data) 1114 975 + 1120: 28(i64vec4) Load 1119 + 1121: 28(i64vec4) VectorShuffle 1120 1118 4 5 2 3 + Store 1119 1121 + 1122: 6(int) Load 8(invocation) + 1123: 983(ptr) AccessChain 34(data) 58 975 + 1124: 28(i64vec4) Load 1123 + 1125:992(i64vec3) VectorShuffle 1124 1124 0 1 2 + 1126:992(i64vec3) GroupNonUniformBitwiseOr 43 ClusteredReduce 1125 42 + 1127: 983(ptr) AccessChain 34(data) 1122 975 + 1128: 28(i64vec4) Load 1127 + 1129: 28(i64vec4) VectorShuffle 1128 1126 4 5 6 3 + Store 1127 1129 + 1130: 6(int) Load 8(invocation) + 1131: 983(ptr) AccessChain 34(data) 68 975 + 1132: 28(i64vec4) Load 1131 + 1133: 28(i64vec4) GroupNonUniformBitwiseOr 43 ClusteredReduce 1132 42 + 1134: 983(ptr) AccessChain 34(data) 1130 975 + Store 1134 1133 + 1135: 6(int) Load 8(invocation) + 1136: 976(ptr) AccessChain 34(data) 37 975 38 + 1137: 27(int64_t) Load 1136 + 1138: 27(int64_t) GroupNonUniformBitwiseXor 43 ClusteredReduce 1137 42 + 1139: 976(ptr) AccessChain 34(data) 1135 975 38 + Store 1139 1138 + 1140: 6(int) Load 8(invocation) + 1141: 983(ptr) AccessChain 34(data) 47 975 + 1142: 28(i64vec4) Load 1141 + 1143:982(i64vec2) VectorShuffle 1142 1142 0 1 + 1144:982(i64vec2) GroupNonUniformBitwiseXor 43 ClusteredReduce 1143 42 + 1145: 983(ptr) AccessChain 34(data) 1140 975 + 1146: 28(i64vec4) Load 1145 + 1147: 28(i64vec4) VectorShuffle 1146 1144 4 5 2 3 + Store 1145 1147 + 1148: 6(int) Load 8(invocation) + 1149: 983(ptr) AccessChain 34(data) 58 975 + 1150: 28(i64vec4) Load 1149 + 1151:992(i64vec3) VectorShuffle 1150 1150 0 1 2 + 1152:992(i64vec3) GroupNonUniformBitwiseXor 43 ClusteredReduce 1151 42 + 1153: 983(ptr) AccessChain 34(data) 1148 975 + 1154: 28(i64vec4) Load 1153 + 1155: 28(i64vec4) VectorShuffle 1154 1152 4 5 6 3 + Store 1153 1155 + 1156: 6(int) Load 8(invocation) + 1157: 983(ptr) AccessChain 34(data) 68 975 + 1158: 28(i64vec4) Load 1157 + 1159: 28(i64vec4) GroupNonUniformBitwiseXor 43 ClusteredReduce 1158 42 + 1160: 983(ptr) AccessChain 34(data) 1156 975 + Store 1160 1159 + 1161: 6(int) Load 8(invocation) + 1164: 1163(ptr) AccessChain 34(data) 37 1162 38 + 1165:29(float16_t) Load 1164 + 1166:29(float16_t) GroupNonUniformFAdd 43 ClusteredReduce 1165 42 + 1167: 1163(ptr) AccessChain 34(data) 1161 1162 38 + Store 1167 1166 + 1168: 6(int) Load 8(invocation) + 1171: 1170(ptr) AccessChain 34(data) 47 1162 + 1172: 30(f16vec4) Load 1171 + 1173:1169(f16vec2) VectorShuffle 1172 1172 0 1 + 1174:1169(f16vec2) GroupNonUniformFAdd 43 ClusteredReduce 1173 42 + 1175: 1170(ptr) AccessChain 34(data) 1168 1162 + 1176: 30(f16vec4) Load 1175 + 1177: 30(f16vec4) VectorShuffle 1176 1174 4 5 2 3 + Store 1175 1177 + 1178: 6(int) Load 8(invocation) + 1180: 1170(ptr) AccessChain 34(data) 58 1162 + 1181: 30(f16vec4) Load 1180 + 1182:1179(f16vec3) VectorShuffle 1181 1181 0 1 2 + 1183:1179(f16vec3) GroupNonUniformFAdd 43 ClusteredReduce 1182 42 + 1184: 1170(ptr) AccessChain 34(data) 1178 1162 + 1185: 30(f16vec4) Load 1184 + 1186: 30(f16vec4) VectorShuffle 1185 1183 4 5 6 3 + Store 1184 1186 + 1187: 6(int) Load 8(invocation) + 1188: 1170(ptr) AccessChain 34(data) 68 1162 + 1189: 30(f16vec4) Load 1188 + 1190: 30(f16vec4) GroupNonUniformFAdd 43 ClusteredReduce 1189 42 + 1191: 1170(ptr) AccessChain 34(data) 1187 1162 + Store 1191 1190 + 1192: 6(int) Load 8(invocation) + 1193: 1163(ptr) AccessChain 34(data) 37 1162 38 + 1194:29(float16_t) Load 1193 + 1195:29(float16_t) GroupNonUniformFMul 43 ClusteredReduce 1194 42 + 1196: 1163(ptr) AccessChain 34(data) 1192 1162 38 + Store 1196 1195 + 1197: 6(int) Load 8(invocation) + 1198: 1170(ptr) AccessChain 34(data) 47 1162 + 1199: 30(f16vec4) Load 1198 + 1200:1169(f16vec2) VectorShuffle 1199 1199 0 1 + 1201:1169(f16vec2) GroupNonUniformFMul 43 ClusteredReduce 1200 42 + 1202: 1170(ptr) AccessChain 34(data) 1197 1162 + 1203: 30(f16vec4) Load 1202 + 1204: 30(f16vec4) VectorShuffle 1203 1201 4 5 2 3 + Store 1202 1204 + 1205: 6(int) Load 8(invocation) + 1206: 1170(ptr) AccessChain 34(data) 58 1162 + 1207: 30(f16vec4) Load 1206 + 1208:1179(f16vec3) VectorShuffle 1207 1207 0 1 2 + 1209:1179(f16vec3) GroupNonUniformFMul 43 ClusteredReduce 1208 42 + 1210: 1170(ptr) AccessChain 34(data) 1205 1162 + 1211: 30(f16vec4) Load 1210 + 1212: 30(f16vec4) VectorShuffle 1211 1209 4 5 6 3 + Store 1210 1212 + 1213: 6(int) Load 8(invocation) + 1214: 1170(ptr) AccessChain 34(data) 68 1162 + 1215: 30(f16vec4) Load 1214 + 1216: 30(f16vec4) GroupNonUniformFMul 43 ClusteredReduce 1215 42 + 1217: 1170(ptr) AccessChain 34(data) 1213 1162 + Store 1217 1216 + 1218: 6(int) Load 8(invocation) + 1219: 1163(ptr) AccessChain 34(data) 37 1162 38 + 1220:29(float16_t) Load 1219 + 1221:29(float16_t) GroupNonUniformFMin 43 ClusteredReduce 1220 42 + 1222: 1163(ptr) AccessChain 34(data) 1218 1162 38 + Store 1222 1221 + 1223: 6(int) Load 8(invocation) + 1224: 1170(ptr) AccessChain 34(data) 47 1162 + 1225: 30(f16vec4) Load 1224 + 1226:1169(f16vec2) VectorShuffle 1225 1225 0 1 + 1227:1169(f16vec2) GroupNonUniformFMin 43 ClusteredReduce 1226 42 + 1228: 1170(ptr) AccessChain 34(data) 1223 1162 + 1229: 30(f16vec4) Load 1228 + 1230: 30(f16vec4) VectorShuffle 1229 1227 4 5 2 3 + Store 1228 1230 + 1231: 6(int) Load 8(invocation) + 1232: 1170(ptr) AccessChain 34(data) 58 1162 + 1233: 30(f16vec4) Load 1232 + 1234:1179(f16vec3) VectorShuffle 1233 1233 0 1 2 + 1235:1179(f16vec3) GroupNonUniformFMin 43 ClusteredReduce 1234 42 + 1236: 1170(ptr) AccessChain 34(data) 1231 1162 + 1237: 30(f16vec4) Load 1236 + 1238: 30(f16vec4) VectorShuffle 1237 1235 4 5 6 3 + Store 1236 1238 + 1239: 6(int) Load 8(invocation) + 1240: 1170(ptr) AccessChain 34(data) 68 1162 + 1241: 30(f16vec4) Load 1240 + 1242: 30(f16vec4) GroupNonUniformFMin 43 ClusteredReduce 1241 42 + 1243: 1170(ptr) AccessChain 34(data) 1239 1162 + Store 1243 1242 + 1244: 6(int) Load 8(invocation) + 1245: 1163(ptr) AccessChain 34(data) 37 1162 38 + 1246:29(float16_t) Load 1245 + 1247:29(float16_t) GroupNonUniformFMax 43 ClusteredReduce 1246 42 + 1248: 1163(ptr) AccessChain 34(data) 1244 1162 38 + Store 1248 1247 + 1249: 6(int) Load 8(invocation) + 1250: 1170(ptr) AccessChain 34(data) 47 1162 + 1251: 30(f16vec4) Load 1250 + 1252:1169(f16vec2) VectorShuffle 1251 1251 0 1 + 1253:1169(f16vec2) GroupNonUniformFMax 43 ClusteredReduce 1252 42 + 1254: 1170(ptr) AccessChain 34(data) 1249 1162 + 1255: 30(f16vec4) Load 1254 + 1256: 30(f16vec4) VectorShuffle 1255 1253 4 5 2 3 + Store 1254 1256 + 1257: 6(int) Load 8(invocation) + 1258: 1170(ptr) AccessChain 34(data) 58 1162 + 1259: 30(f16vec4) Load 1258 + 1260:1179(f16vec3) VectorShuffle 1259 1259 0 1 2 + 1261:1179(f16vec3) GroupNonUniformFMax 43 ClusteredReduce 1260 42 + 1262: 1170(ptr) AccessChain 34(data) 1257 1162 + 1263: 30(f16vec4) Load 1262 + 1264: 30(f16vec4) VectorShuffle 1263 1261 4 5 6 3 + Store 1262 1264 + 1265: 6(int) Load 8(invocation) + 1266: 1170(ptr) AccessChain 34(data) 68 1162 + 1267: 30(f16vec4) Load 1266 + 1268: 30(f16vec4) GroupNonUniformFMax 43 ClusteredReduce 1267 42 + 1269: 1170(ptr) AccessChain 34(data) 1265 1162 + Store 1269 1268 + Return + FunctionEnd diff --git a/Test/baseResults/spv.subgroupExtendedTypesClusteredNeg.comp.out b/Test/baseResults/spv.subgroupExtendedTypesClusteredNeg.comp.out new file mode 100644 index 00000000..fd01ef39 --- /dev/null +++ b/Test/baseResults/spv.subgroupExtendedTypesClusteredNeg.comp.out @@ -0,0 +1,189 @@ +spv.subgroupExtendedTypesClusteredNeg.comp +ERROR: 0:26: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:27: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:28: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:29: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:31: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:32: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:33: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:34: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:36: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:37: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:38: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:39: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:41: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:42: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:43: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:44: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:46: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:47: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:48: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:49: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:51: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:52: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:53: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:54: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:56: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:57: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:58: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:59: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:61: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:62: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:63: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:64: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:66: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:67: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:68: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:69: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:71: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:72: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:73: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:74: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:76: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:77: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:78: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:79: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:81: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:82: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:83: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:84: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:86: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:87: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:88: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:89: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:91: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:92: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:93: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:94: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:96: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:97: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:98: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:99: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:101: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:102: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:103: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:104: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:106: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:107: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:108: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:109: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:111: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:112: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:113: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:114: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:116: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:117: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:118: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:119: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:121: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:122: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:123: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:124: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:126: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:127: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:128: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:129: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:131: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:132: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:133: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:134: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:136: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:137: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:138: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:139: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:141: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:142: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:143: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:144: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:146: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:147: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:148: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:149: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:151: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:152: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:153: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:154: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:156: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:157: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:158: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:159: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:161: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:162: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:163: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:164: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:166: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:167: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:168: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:169: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:171: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:172: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:173: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:174: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:176: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:177: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:178: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:179: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:181: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:182: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:183: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:184: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:186: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:187: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:188: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:189: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:191: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:192: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:193: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:194: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:196: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:197: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:198: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:199: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:201: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:202: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:203: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:204: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:206: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:207: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:208: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:209: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:211: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:212: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:213: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:214: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:216: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:217: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:218: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:219: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:221: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:222: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:223: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:224: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:226: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:227: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:228: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:229: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:231: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:232: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:233: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:234: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:236: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:237: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:238: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:239: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:241: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:242: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:243: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:244: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:246: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:247: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:248: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:249: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:251: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:252: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:253: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:254: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 184 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out b/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out new file mode 100644 index 00000000..2f5a5703 --- /dev/null +++ b/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out @@ -0,0 +1,1835 @@ +spv.subgroupExtendedTypesPartitioned.comp +// Module Version 10300 +// Generated by (magic number): 80007 +// Id's are bound by 1558 + + Capability Shader + Capability Float16 + Capability Int64 + Capability Int16 + Capability Int8 + Capability GroupNonUniform + Capability StorageUniformBufferBlock16 + Capability StorageBuffer8BitAccess + Capability GroupNonUniformPartitionedNV + Extension "SPV_KHR_8bit_storage" + Extension "SPV_NV_shader_subgroup_partitioned" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" 10 12 + ExecutionMode 4 LocalSize 8 1 1 + Source GLSL 450 + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" + SourceExtension "GL_EXT_shader_subgroup_extended_types_float16" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int16" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int64" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int8" + SourceExtension "GL_KHR_shader_subgroup_basic" + SourceExtension "GL_NV_shader_subgroup_partitioned" + Name 4 "main" + Name 8 "invocation" + Name 10 "gl_SubgroupInvocationID" + Name 12 "gl_SubgroupSize" + Name 19 "ballot" + Name 34 "Buffers" + MemberName 34(Buffers) 0 "i8" + MemberName 34(Buffers) 1 "u8" + MemberName 34(Buffers) 2 "i16" + MemberName 34(Buffers) 3 "u16" + MemberName 34(Buffers) 4 "i64" + MemberName 34(Buffers) 5 "u64" + MemberName 34(Buffers) 6 "f16" + Name 37 "data" + Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision + Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId + Decorate 11 RelaxedPrecision + Decorate 12(gl_SubgroupSize) RelaxedPrecision + Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize + Decorate 13 RelaxedPrecision + Decorate 14 RelaxedPrecision + Decorate 16 RelaxedPrecision + MemberDecorate 34(Buffers) 0 Offset 0 + MemberDecorate 34(Buffers) 1 Offset 4 + MemberDecorate 34(Buffers) 2 Offset 8 + MemberDecorate 34(Buffers) 3 Offset 16 + MemberDecorate 34(Buffers) 4 Offset 32 + MemberDecorate 34(Buffers) 5 Offset 64 + MemberDecorate 34(Buffers) 6 Offset 96 + Decorate 34(Buffers) Block + Decorate 37(data) DescriptorSet 0 + Decorate 37(data) Binding 0 + Decorate 1557 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 9: TypePointer Input 6(int) +10(gl_SubgroupInvocationID): 9(ptr) Variable Input +12(gl_SubgroupSize): 9(ptr) Variable Input + 15: 6(int) Constant 4 + 17: TypeVector 6(int) 4 + 18: TypePointer Function 17(ivec4) + 20: TypeInt 8 1 + 21: TypeVector 20(int8_t) 4 + 22: TypeInt 8 0 + 23: TypeVector 22(int8_t) 4 + 24: TypeInt 16 1 + 25: TypeVector 24(int16_t) 4 + 26: TypeInt 16 0 + 27: TypeVector 26(int16_t) 4 + 28: TypeInt 64 1 + 29: TypeVector 28(int64_t) 4 + 30: TypeInt 64 0 + 31: TypeVector 30(int64_t) 4 + 32: TypeFloat 16 + 33: TypeVector 32(float16_t) 4 + 34(Buffers): TypeStruct 21(i8vec4) 23(i8vec4) 25(i16vec4) 27(i16vec4) 29(i64vec4) 31(i64vec4) 33(f16vec4) + 35: TypeArray 34(Buffers) 15 + 36: TypePointer StorageBuffer 35 + 37(data): 36(ptr) Variable StorageBuffer + 38: TypeInt 32 1 + 39: 38(int) Constant 0 + 40: 6(int) Constant 0 + 41: TypePointer StorageBuffer 20(int8_t) + 45: 38(int) Constant 1 + 46: TypeVector 20(int8_t) 2 + 47: TypePointer StorageBuffer 21(i8vec4) + 52: 38(int) Constant 2 + 53: TypeVector 20(int8_t) 3 + 58: 38(int) Constant 3 + 62: TypePointer StorageBuffer 22(int8_t) + 66: TypeVector 22(int8_t) 2 + 67: TypePointer StorageBuffer 23(i8vec4) + 72: TypeVector 22(int8_t) 3 + 80: TypePointer StorageBuffer 24(int16_t) + 84: TypeVector 24(int16_t) 2 + 85: TypePointer StorageBuffer 25(i16vec4) + 90: TypeVector 24(int16_t) 3 + 98: TypePointer StorageBuffer 26(int16_t) + 102: TypeVector 26(int16_t) 2 + 103: TypePointer StorageBuffer 27(i16vec4) + 108: TypeVector 26(int16_t) 3 + 116: 38(int) Constant 4 + 117: TypePointer StorageBuffer 28(int64_t) + 121: TypeVector 28(int64_t) 2 + 122: TypePointer StorageBuffer 29(i64vec4) + 127: TypeVector 28(int64_t) 3 + 135: 38(int) Constant 5 + 136: TypePointer StorageBuffer 30(int64_t) + 140: TypeVector 30(int64_t) 2 + 141: TypePointer StorageBuffer 31(i64vec4) + 146: TypeVector 30(int64_t) 3 + 154: 38(int) Constant 6 + 155: TypePointer StorageBuffer 32(float16_t) + 159: TypeVector 32(float16_t) 2 + 160: TypePointer StorageBuffer 33(f16vec4) + 165: TypeVector 32(float16_t) 3 + 177: 6(int) Constant 3 + 1554: TypeVector 6(int) 3 + 1555: 6(int) Constant 8 + 1556: 6(int) Constant 1 + 1557: 1554(ivec3) ConstantComposite 1555 1556 1556 + 4(main): 2 Function None 3 + 5: Label + 8(invocation): 7(ptr) Variable Function + 19(ballot): 18(ptr) Variable Function + 11: 6(int) Load 10(gl_SubgroupInvocationID) + 13: 6(int) Load 12(gl_SubgroupSize) + 14: 6(int) IAdd 11 13 + 16: 6(int) UMod 14 15 + Store 8(invocation) 16 + 42: 41(ptr) AccessChain 37(data) 39 39 40 + 43: 20(int8_t) Load 42 + 44: 17(ivec4) GroupNonUniformPartitionNV 43 + Store 19(ballot) 44 + 48: 47(ptr) AccessChain 37(data) 45 39 + 49: 21(i8vec4) Load 48 + 50: 46(i8vec2) VectorShuffle 49 49 0 1 + 51: 17(ivec4) GroupNonUniformPartitionNV 50 + Store 19(ballot) 51 + 54: 47(ptr) AccessChain 37(data) 52 39 + 55: 21(i8vec4) Load 54 + 56: 53(i8vec3) VectorShuffle 55 55 0 1 2 + 57: 17(ivec4) GroupNonUniformPartitionNV 56 + Store 19(ballot) 57 + 59: 47(ptr) AccessChain 37(data) 58 39 + 60: 21(i8vec4) Load 59 + 61: 17(ivec4) GroupNonUniformPartitionNV 60 + Store 19(ballot) 61 + 63: 62(ptr) AccessChain 37(data) 39 45 40 + 64: 22(int8_t) Load 63 + 65: 17(ivec4) GroupNonUniformPartitionNV 64 + Store 19(ballot) 65 + 68: 67(ptr) AccessChain 37(data) 45 45 + 69: 23(i8vec4) Load 68 + 70: 66(i8vec2) VectorShuffle 69 69 0 1 + 71: 17(ivec4) GroupNonUniformPartitionNV 70 + Store 19(ballot) 71 + 73: 67(ptr) AccessChain 37(data) 52 45 + 74: 23(i8vec4) Load 73 + 75: 72(i8vec3) VectorShuffle 74 74 0 1 2 + 76: 17(ivec4) GroupNonUniformPartitionNV 75 + Store 19(ballot) 76 + 77: 67(ptr) AccessChain 37(data) 58 45 + 78: 23(i8vec4) Load 77 + 79: 17(ivec4) GroupNonUniformPartitionNV 78 + Store 19(ballot) 79 + 81: 80(ptr) AccessChain 37(data) 39 52 40 + 82: 24(int16_t) Load 81 + 83: 17(ivec4) GroupNonUniformPartitionNV 82 + Store 19(ballot) 83 + 86: 85(ptr) AccessChain 37(data) 45 52 + 87: 25(i16vec4) Load 86 + 88: 84(i16vec2) VectorShuffle 87 87 0 1 + 89: 17(ivec4) GroupNonUniformPartitionNV 88 + Store 19(ballot) 89 + 91: 85(ptr) AccessChain 37(data) 52 52 + 92: 25(i16vec4) Load 91 + 93: 90(i16vec3) VectorShuffle 92 92 0 1 2 + 94: 17(ivec4) GroupNonUniformPartitionNV 93 + Store 19(ballot) 94 + 95: 85(ptr) AccessChain 37(data) 58 52 + 96: 25(i16vec4) Load 95 + 97: 17(ivec4) GroupNonUniformPartitionNV 96 + Store 19(ballot) 97 + 99: 98(ptr) AccessChain 37(data) 39 58 40 + 100: 26(int16_t) Load 99 + 101: 17(ivec4) GroupNonUniformPartitionNV 100 + Store 19(ballot) 101 + 104: 103(ptr) AccessChain 37(data) 45 58 + 105: 27(i16vec4) Load 104 + 106:102(i16vec2) VectorShuffle 105 105 0 1 + 107: 17(ivec4) GroupNonUniformPartitionNV 106 + Store 19(ballot) 107 + 109: 103(ptr) AccessChain 37(data) 52 58 + 110: 27(i16vec4) Load 109 + 111:108(i16vec3) VectorShuffle 110 110 0 1 2 + 112: 17(ivec4) GroupNonUniformPartitionNV 111 + Store 19(ballot) 112 + 113: 103(ptr) AccessChain 37(data) 58 58 + 114: 27(i16vec4) Load 113 + 115: 17(ivec4) GroupNonUniformPartitionNV 114 + Store 19(ballot) 115 + 118: 117(ptr) AccessChain 37(data) 39 116 40 + 119: 28(int64_t) Load 118 + 120: 17(ivec4) GroupNonUniformPartitionNV 119 + Store 19(ballot) 120 + 123: 122(ptr) AccessChain 37(data) 45 116 + 124: 29(i64vec4) Load 123 + 125:121(i64vec2) VectorShuffle 124 124 0 1 + 126: 17(ivec4) GroupNonUniformPartitionNV 125 + Store 19(ballot) 126 + 128: 122(ptr) AccessChain 37(data) 52 116 + 129: 29(i64vec4) Load 128 + 130:127(i64vec3) VectorShuffle 129 129 0 1 2 + 131: 17(ivec4) GroupNonUniformPartitionNV 130 + Store 19(ballot) 131 + 132: 122(ptr) AccessChain 37(data) 58 116 + 133: 29(i64vec4) Load 132 + 134: 17(ivec4) GroupNonUniformPartitionNV 133 + Store 19(ballot) 134 + 137: 136(ptr) AccessChain 37(data) 39 135 40 + 138: 30(int64_t) Load 137 + 139: 17(ivec4) GroupNonUniformPartitionNV 138 + Store 19(ballot) 139 + 142: 141(ptr) AccessChain 37(data) 45 135 + 143: 31(i64vec4) Load 142 + 144:140(i64vec2) VectorShuffle 143 143 0 1 + 145: 17(ivec4) GroupNonUniformPartitionNV 144 + Store 19(ballot) 145 + 147: 141(ptr) AccessChain 37(data) 52 135 + 148: 31(i64vec4) Load 147 + 149:146(i64vec3) VectorShuffle 148 148 0 1 2 + 150: 17(ivec4) GroupNonUniformPartitionNV 149 + Store 19(ballot) 150 + 151: 141(ptr) AccessChain 37(data) 58 135 + 152: 31(i64vec4) Load 151 + 153: 17(ivec4) GroupNonUniformPartitionNV 152 + Store 19(ballot) 153 + 156: 155(ptr) AccessChain 37(data) 39 154 40 + 157:32(float16_t) Load 156 + 158: 17(ivec4) GroupNonUniformPartitionNV 157 + Store 19(ballot) 158 + 161: 160(ptr) AccessChain 37(data) 45 154 + 162: 33(f16vec4) Load 161 + 163:159(f16vec2) VectorShuffle 162 162 0 1 + 164: 17(ivec4) GroupNonUniformPartitionNV 163 + Store 19(ballot) 164 + 166: 160(ptr) AccessChain 37(data) 52 154 + 167: 33(f16vec4) Load 166 + 168:165(f16vec3) VectorShuffle 167 167 0 1 2 + 169: 17(ivec4) GroupNonUniformPartitionNV 168 + Store 19(ballot) 169 + 170: 160(ptr) AccessChain 37(data) 58 154 + 171: 33(f16vec4) Load 170 + 172: 17(ivec4) GroupNonUniformPartitionNV 171 + Store 19(ballot) 172 + 173: 6(int) Load 8(invocation) + 174: 41(ptr) AccessChain 37(data) 39 39 40 + 175: 20(int8_t) Load 174 + 176: 17(ivec4) Load 19(ballot) + 178: 20(int8_t) GroupNonUniformIAdd 177 PartitionedReduceNV 175 176 + 179: 41(ptr) AccessChain 37(data) 173 39 40 + Store 179 178 + 180: 6(int) Load 8(invocation) + 181: 47(ptr) AccessChain 37(data) 45 39 + 182: 21(i8vec4) Load 181 + 183: 46(i8vec2) VectorShuffle 182 182 0 1 + 184: 17(ivec4) Load 19(ballot) + 185: 46(i8vec2) GroupNonUniformIAdd 177 PartitionedReduceNV 183 184 + 186: 47(ptr) AccessChain 37(data) 180 39 + 187: 21(i8vec4) Load 186 + 188: 21(i8vec4) VectorShuffle 187 185 4 5 2 3 + Store 186 188 + 189: 6(int) Load 8(invocation) + 190: 47(ptr) AccessChain 37(data) 52 39 + 191: 21(i8vec4) Load 190 + 192: 53(i8vec3) VectorShuffle 191 191 0 1 2 + 193: 17(ivec4) Load 19(ballot) + 194: 53(i8vec3) GroupNonUniformIAdd 177 PartitionedReduceNV 192 193 + 195: 47(ptr) AccessChain 37(data) 189 39 + 196: 21(i8vec4) Load 195 + 197: 21(i8vec4) VectorShuffle 196 194 4 5 6 3 + Store 195 197 + 198: 6(int) Load 8(invocation) + 199: 47(ptr) AccessChain 37(data) 58 39 + 200: 21(i8vec4) Load 199 + 201: 17(ivec4) Load 19(ballot) + 202: 21(i8vec4) GroupNonUniformIAdd 177 PartitionedReduceNV 200 201 + 203: 47(ptr) AccessChain 37(data) 198 39 + Store 203 202 + 204: 6(int) Load 8(invocation) + 205: 41(ptr) AccessChain 37(data) 39 39 40 + 206: 20(int8_t) Load 205 + 207: 17(ivec4) Load 19(ballot) + 208: 20(int8_t) GroupNonUniformIMul 177 PartitionedReduceNV 206 207 + 209: 41(ptr) AccessChain 37(data) 204 39 40 + Store 209 208 + 210: 6(int) Load 8(invocation) + 211: 47(ptr) AccessChain 37(data) 45 39 + 212: 21(i8vec4) Load 211 + 213: 46(i8vec2) VectorShuffle 212 212 0 1 + 214: 17(ivec4) Load 19(ballot) + 215: 46(i8vec2) GroupNonUniformIMul 177 PartitionedReduceNV 213 214 + 216: 47(ptr) AccessChain 37(data) 210 39 + 217: 21(i8vec4) Load 216 + 218: 21(i8vec4) VectorShuffle 217 215 4 5 2 3 + Store 216 218 + 219: 6(int) Load 8(invocation) + 220: 47(ptr) AccessChain 37(data) 52 39 + 221: 21(i8vec4) Load 220 + 222: 53(i8vec3) VectorShuffle 221 221 0 1 2 + 223: 17(ivec4) Load 19(ballot) + 224: 53(i8vec3) GroupNonUniformIMul 177 PartitionedReduceNV 222 223 + 225: 47(ptr) AccessChain 37(data) 219 39 + 226: 21(i8vec4) Load 225 + 227: 21(i8vec4) VectorShuffle 226 224 4 5 6 3 + Store 225 227 + 228: 6(int) Load 8(invocation) + 229: 47(ptr) AccessChain 37(data) 58 39 + 230: 21(i8vec4) Load 229 + 231: 17(ivec4) Load 19(ballot) + 232: 21(i8vec4) GroupNonUniformIMul 177 PartitionedReduceNV 230 231 + 233: 47(ptr) AccessChain 37(data) 228 39 + Store 233 232 + 234: 6(int) Load 8(invocation) + 235: 41(ptr) AccessChain 37(data) 39 39 40 + 236: 20(int8_t) Load 235 + 237: 17(ivec4) Load 19(ballot) + 238: 20(int8_t) GroupNonUniformSMin 177 PartitionedReduceNV 236 237 + 239: 41(ptr) AccessChain 37(data) 234 39 40 + Store 239 238 + 240: 6(int) Load 8(invocation) + 241: 47(ptr) AccessChain 37(data) 45 39 + 242: 21(i8vec4) Load 241 + 243: 46(i8vec2) VectorShuffle 242 242 0 1 + 244: 17(ivec4) Load 19(ballot) + 245: 46(i8vec2) GroupNonUniformSMin 177 PartitionedReduceNV 243 244 + 246: 47(ptr) AccessChain 37(data) 240 39 + 247: 21(i8vec4) Load 246 + 248: 21(i8vec4) VectorShuffle 247 245 4 5 2 3 + Store 246 248 + 249: 6(int) Load 8(invocation) + 250: 47(ptr) AccessChain 37(data) 52 39 + 251: 21(i8vec4) Load 250 + 252: 53(i8vec3) VectorShuffle 251 251 0 1 2 + 253: 17(ivec4) Load 19(ballot) + 254: 53(i8vec3) GroupNonUniformSMin 177 PartitionedReduceNV 252 253 + 255: 47(ptr) AccessChain 37(data) 249 39 + 256: 21(i8vec4) Load 255 + 257: 21(i8vec4) VectorShuffle 256 254 4 5 6 3 + Store 255 257 + 258: 6(int) Load 8(invocation) + 259: 47(ptr) AccessChain 37(data) 58 39 + 260: 21(i8vec4) Load 259 + 261: 17(ivec4) Load 19(ballot) + 262: 21(i8vec4) GroupNonUniformSMin 177 PartitionedReduceNV 260 261 + 263: 47(ptr) AccessChain 37(data) 258 39 + Store 263 262 + 264: 6(int) Load 8(invocation) + 265: 41(ptr) AccessChain 37(data) 39 39 40 + 266: 20(int8_t) Load 265 + 267: 17(ivec4) Load 19(ballot) + 268: 20(int8_t) GroupNonUniformSMax 177 PartitionedReduceNV 266 267 + 269: 41(ptr) AccessChain 37(data) 264 39 40 + Store 269 268 + 270: 6(int) Load 8(invocation) + 271: 47(ptr) AccessChain 37(data) 45 39 + 272: 21(i8vec4) Load 271 + 273: 46(i8vec2) VectorShuffle 272 272 0 1 + 274: 17(ivec4) Load 19(ballot) + 275: 46(i8vec2) GroupNonUniformSMax 177 PartitionedReduceNV 273 274 + 276: 47(ptr) AccessChain 37(data) 270 39 + 277: 21(i8vec4) Load 276 + 278: 21(i8vec4) VectorShuffle 277 275 4 5 2 3 + Store 276 278 + 279: 6(int) Load 8(invocation) + 280: 47(ptr) AccessChain 37(data) 52 39 + 281: 21(i8vec4) Load 280 + 282: 53(i8vec3) VectorShuffle 281 281 0 1 2 + 283: 17(ivec4) Load 19(ballot) + 284: 53(i8vec3) GroupNonUniformSMax 177 PartitionedReduceNV 282 283 + 285: 47(ptr) AccessChain 37(data) 279 39 + 286: 21(i8vec4) Load 285 + 287: 21(i8vec4) VectorShuffle 286 284 4 5 6 3 + Store 285 287 + 288: 6(int) Load 8(invocation) + 289: 47(ptr) AccessChain 37(data) 58 39 + 290: 21(i8vec4) Load 289 + 291: 17(ivec4) Load 19(ballot) + 292: 21(i8vec4) GroupNonUniformSMax 177 PartitionedReduceNV 290 291 + 293: 47(ptr) AccessChain 37(data) 288 39 + Store 293 292 + 294: 6(int) Load 8(invocation) + 295: 41(ptr) AccessChain 37(data) 39 39 40 + 296: 20(int8_t) Load 295 + 297: 17(ivec4) Load 19(ballot) + 298: 20(int8_t) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 296 297 + 299: 41(ptr) AccessChain 37(data) 294 39 40 + Store 299 298 + 300: 6(int) Load 8(invocation) + 301: 47(ptr) AccessChain 37(data) 45 39 + 302: 21(i8vec4) Load 301 + 303: 46(i8vec2) VectorShuffle 302 302 0 1 + 304: 17(ivec4) Load 19(ballot) + 305: 46(i8vec2) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 303 304 + 306: 47(ptr) AccessChain 37(data) 300 39 + 307: 21(i8vec4) Load 306 + 308: 21(i8vec4) VectorShuffle 307 305 4 5 2 3 + Store 306 308 + 309: 6(int) Load 8(invocation) + 310: 47(ptr) AccessChain 37(data) 52 39 + 311: 21(i8vec4) Load 310 + 312: 53(i8vec3) VectorShuffle 311 311 0 1 2 + 313: 17(ivec4) Load 19(ballot) + 314: 53(i8vec3) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 312 313 + 315: 47(ptr) AccessChain 37(data) 309 39 + 316: 21(i8vec4) Load 315 + 317: 21(i8vec4) VectorShuffle 316 314 4 5 6 3 + Store 315 317 + 318: 6(int) Load 8(invocation) + 319: 47(ptr) AccessChain 37(data) 58 39 + 320: 21(i8vec4) Load 319 + 321: 17(ivec4) Load 19(ballot) + 322: 21(i8vec4) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 320 321 + 323: 47(ptr) AccessChain 37(data) 318 39 + Store 323 322 + 324: 6(int) Load 8(invocation) + 325: 41(ptr) AccessChain 37(data) 39 39 40 + 326: 20(int8_t) Load 325 + 327: 17(ivec4) Load 19(ballot) + 328: 20(int8_t) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 326 327 + 329: 41(ptr) AccessChain 37(data) 324 39 40 + Store 329 328 + 330: 6(int) Load 8(invocation) + 331: 47(ptr) AccessChain 37(data) 45 39 + 332: 21(i8vec4) Load 331 + 333: 46(i8vec2) VectorShuffle 332 332 0 1 + 334: 17(ivec4) Load 19(ballot) + 335: 46(i8vec2) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 333 334 + 336: 47(ptr) AccessChain 37(data) 330 39 + 337: 21(i8vec4) Load 336 + 338: 21(i8vec4) VectorShuffle 337 335 4 5 2 3 + Store 336 338 + 339: 6(int) Load 8(invocation) + 340: 47(ptr) AccessChain 37(data) 52 39 + 341: 21(i8vec4) Load 340 + 342: 53(i8vec3) VectorShuffle 341 341 0 1 2 + 343: 17(ivec4) Load 19(ballot) + 344: 53(i8vec3) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 342 343 + 345: 47(ptr) AccessChain 37(data) 339 39 + 346: 21(i8vec4) Load 345 + 347: 21(i8vec4) VectorShuffle 346 344 4 5 6 3 + Store 345 347 + 348: 6(int) Load 8(invocation) + 349: 47(ptr) AccessChain 37(data) 58 39 + 350: 21(i8vec4) Load 349 + 351: 17(ivec4) Load 19(ballot) + 352: 21(i8vec4) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 350 351 + 353: 47(ptr) AccessChain 37(data) 348 39 + Store 353 352 + 354: 6(int) Load 8(invocation) + 355: 41(ptr) AccessChain 37(data) 39 39 40 + 356: 20(int8_t) Load 355 + 357: 17(ivec4) Load 19(ballot) + 358: 20(int8_t) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 356 357 + 359: 41(ptr) AccessChain 37(data) 354 39 40 + Store 359 358 + 360: 6(int) Load 8(invocation) + 361: 47(ptr) AccessChain 37(data) 45 39 + 362: 21(i8vec4) Load 361 + 363: 46(i8vec2) VectorShuffle 362 362 0 1 + 364: 17(ivec4) Load 19(ballot) + 365: 46(i8vec2) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 363 364 + 366: 47(ptr) AccessChain 37(data) 360 39 + 367: 21(i8vec4) Load 366 + 368: 21(i8vec4) VectorShuffle 367 365 4 5 2 3 + Store 366 368 + 369: 6(int) Load 8(invocation) + 370: 47(ptr) AccessChain 37(data) 52 39 + 371: 21(i8vec4) Load 370 + 372: 53(i8vec3) VectorShuffle 371 371 0 1 2 + 373: 17(ivec4) Load 19(ballot) + 374: 53(i8vec3) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 372 373 + 375: 47(ptr) AccessChain 37(data) 369 39 + 376: 21(i8vec4) Load 375 + 377: 21(i8vec4) VectorShuffle 376 374 4 5 6 3 + Store 375 377 + 378: 6(int) Load 8(invocation) + 379: 47(ptr) AccessChain 37(data) 58 39 + 380: 21(i8vec4) Load 379 + 381: 17(ivec4) Load 19(ballot) + 382: 21(i8vec4) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 380 381 + 383: 47(ptr) AccessChain 37(data) 378 39 + Store 383 382 + 384: 6(int) Load 8(invocation) + 385: 62(ptr) AccessChain 37(data) 39 45 40 + 386: 22(int8_t) Load 385 + 387: 17(ivec4) Load 19(ballot) + 388: 22(int8_t) GroupNonUniformIAdd 177 PartitionedReduceNV 386 387 + 389: 62(ptr) AccessChain 37(data) 384 45 40 + Store 389 388 + 390: 6(int) Load 8(invocation) + 391: 67(ptr) AccessChain 37(data) 45 45 + 392: 23(i8vec4) Load 391 + 393: 66(i8vec2) VectorShuffle 392 392 0 1 + 394: 17(ivec4) Load 19(ballot) + 395: 66(i8vec2) GroupNonUniformIAdd 177 PartitionedReduceNV 393 394 + 396: 67(ptr) AccessChain 37(data) 390 45 + 397: 23(i8vec4) Load 396 + 398: 23(i8vec4) VectorShuffle 397 395 4 5 2 3 + Store 396 398 + 399: 6(int) Load 8(invocation) + 400: 67(ptr) AccessChain 37(data) 52 45 + 401: 23(i8vec4) Load 400 + 402: 72(i8vec3) VectorShuffle 401 401 0 1 2 + 403: 17(ivec4) Load 19(ballot) + 404: 72(i8vec3) GroupNonUniformIAdd 177 PartitionedReduceNV 402 403 + 405: 67(ptr) AccessChain 37(data) 399 45 + 406: 23(i8vec4) Load 405 + 407: 23(i8vec4) VectorShuffle 406 404 4 5 6 3 + Store 405 407 + 408: 6(int) Load 8(invocation) + 409: 67(ptr) AccessChain 37(data) 58 45 + 410: 23(i8vec4) Load 409 + 411: 17(ivec4) Load 19(ballot) + 412: 23(i8vec4) GroupNonUniformIAdd 177 PartitionedReduceNV 410 411 + 413: 67(ptr) AccessChain 37(data) 408 45 + Store 413 412 + 414: 6(int) Load 8(invocation) + 415: 62(ptr) AccessChain 37(data) 39 45 40 + 416: 22(int8_t) Load 415 + 417: 17(ivec4) Load 19(ballot) + 418: 22(int8_t) GroupNonUniformIMul 177 PartitionedReduceNV 416 417 + 419: 62(ptr) AccessChain 37(data) 414 45 40 + Store 419 418 + 420: 6(int) Load 8(invocation) + 421: 67(ptr) AccessChain 37(data) 45 45 + 422: 23(i8vec4) Load 421 + 423: 66(i8vec2) VectorShuffle 422 422 0 1 + 424: 17(ivec4) Load 19(ballot) + 425: 66(i8vec2) GroupNonUniformIMul 177 PartitionedReduceNV 423 424 + 426: 67(ptr) AccessChain 37(data) 420 45 + 427: 23(i8vec4) Load 426 + 428: 23(i8vec4) VectorShuffle 427 425 4 5 2 3 + Store 426 428 + 429: 6(int) Load 8(invocation) + 430: 67(ptr) AccessChain 37(data) 52 45 + 431: 23(i8vec4) Load 430 + 432: 72(i8vec3) VectorShuffle 431 431 0 1 2 + 433: 17(ivec4) Load 19(ballot) + 434: 72(i8vec3) GroupNonUniformIMul 177 PartitionedReduceNV 432 433 + 435: 67(ptr) AccessChain 37(data) 429 45 + 436: 23(i8vec4) Load 435 + 437: 23(i8vec4) VectorShuffle 436 434 4 5 6 3 + Store 435 437 + 438: 6(int) Load 8(invocation) + 439: 67(ptr) AccessChain 37(data) 58 45 + 440: 23(i8vec4) Load 439 + 441: 17(ivec4) Load 19(ballot) + 442: 23(i8vec4) GroupNonUniformIMul 177 PartitionedReduceNV 440 441 + 443: 67(ptr) AccessChain 37(data) 438 45 + Store 443 442 + 444: 6(int) Load 8(invocation) + 445: 62(ptr) AccessChain 37(data) 39 45 40 + 446: 22(int8_t) Load 445 + 447: 17(ivec4) Load 19(ballot) + 448: 22(int8_t) GroupNonUniformUMin 177 PartitionedReduceNV 446 447 + 449: 62(ptr) AccessChain 37(data) 444 45 40 + Store 449 448 + 450: 6(int) Load 8(invocation) + 451: 67(ptr) AccessChain 37(data) 45 45 + 452: 23(i8vec4) Load 451 + 453: 66(i8vec2) VectorShuffle 452 452 0 1 + 454: 17(ivec4) Load 19(ballot) + 455: 66(i8vec2) GroupNonUniformUMin 177 PartitionedReduceNV 453 454 + 456: 67(ptr) AccessChain 37(data) 450 45 + 457: 23(i8vec4) Load 456 + 458: 23(i8vec4) VectorShuffle 457 455 4 5 2 3 + Store 456 458 + 459: 6(int) Load 8(invocation) + 460: 67(ptr) AccessChain 37(data) 52 45 + 461: 23(i8vec4) Load 460 + 462: 72(i8vec3) VectorShuffle 461 461 0 1 2 + 463: 17(ivec4) Load 19(ballot) + 464: 72(i8vec3) GroupNonUniformUMin 177 PartitionedReduceNV 462 463 + 465: 67(ptr) AccessChain 37(data) 459 45 + 466: 23(i8vec4) Load 465 + 467: 23(i8vec4) VectorShuffle 466 464 4 5 6 3 + Store 465 467 + 468: 6(int) Load 8(invocation) + 469: 67(ptr) AccessChain 37(data) 58 45 + 470: 23(i8vec4) Load 469 + 471: 17(ivec4) Load 19(ballot) + 472: 23(i8vec4) GroupNonUniformUMin 177 PartitionedReduceNV 470 471 + 473: 67(ptr) AccessChain 37(data) 468 45 + Store 473 472 + 474: 6(int) Load 8(invocation) + 475: 62(ptr) AccessChain 37(data) 39 45 40 + 476: 22(int8_t) Load 475 + 477: 17(ivec4) Load 19(ballot) + 478: 22(int8_t) GroupNonUniformUMax 177 PartitionedReduceNV 476 477 + 479: 62(ptr) AccessChain 37(data) 474 45 40 + Store 479 478 + 480: 6(int) Load 8(invocation) + 481: 67(ptr) AccessChain 37(data) 45 45 + 482: 23(i8vec4) Load 481 + 483: 66(i8vec2) VectorShuffle 482 482 0 1 + 484: 17(ivec4) Load 19(ballot) + 485: 66(i8vec2) GroupNonUniformUMax 177 PartitionedReduceNV 483 484 + 486: 67(ptr) AccessChain 37(data) 480 45 + 487: 23(i8vec4) Load 486 + 488: 23(i8vec4) VectorShuffle 487 485 4 5 2 3 + Store 486 488 + 489: 6(int) Load 8(invocation) + 490: 67(ptr) AccessChain 37(data) 52 45 + 491: 23(i8vec4) Load 490 + 492: 72(i8vec3) VectorShuffle 491 491 0 1 2 + 493: 17(ivec4) Load 19(ballot) + 494: 72(i8vec3) GroupNonUniformUMax 177 PartitionedReduceNV 492 493 + 495: 67(ptr) AccessChain 37(data) 489 45 + 496: 23(i8vec4) Load 495 + 497: 23(i8vec4) VectorShuffle 496 494 4 5 6 3 + Store 495 497 + 498: 6(int) Load 8(invocation) + 499: 67(ptr) AccessChain 37(data) 58 45 + 500: 23(i8vec4) Load 499 + 501: 17(ivec4) Load 19(ballot) + 502: 23(i8vec4) GroupNonUniformUMax 177 PartitionedReduceNV 500 501 + 503: 67(ptr) AccessChain 37(data) 498 45 + Store 503 502 + 504: 6(int) Load 8(invocation) + 505: 62(ptr) AccessChain 37(data) 39 45 40 + 506: 22(int8_t) Load 505 + 507: 17(ivec4) Load 19(ballot) + 508: 22(int8_t) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 506 507 + 509: 62(ptr) AccessChain 37(data) 504 45 40 + Store 509 508 + 510: 6(int) Load 8(invocation) + 511: 67(ptr) AccessChain 37(data) 45 45 + 512: 23(i8vec4) Load 511 + 513: 66(i8vec2) VectorShuffle 512 512 0 1 + 514: 17(ivec4) Load 19(ballot) + 515: 66(i8vec2) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 513 514 + 516: 67(ptr) AccessChain 37(data) 510 45 + 517: 23(i8vec4) Load 516 + 518: 23(i8vec4) VectorShuffle 517 515 4 5 2 3 + Store 516 518 + 519: 6(int) Load 8(invocation) + 520: 67(ptr) AccessChain 37(data) 52 45 + 521: 23(i8vec4) Load 520 + 522: 72(i8vec3) VectorShuffle 521 521 0 1 2 + 523: 17(ivec4) Load 19(ballot) + 524: 72(i8vec3) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 522 523 + 525: 67(ptr) AccessChain 37(data) 519 45 + 526: 23(i8vec4) Load 525 + 527: 23(i8vec4) VectorShuffle 526 524 4 5 6 3 + Store 525 527 + 528: 6(int) Load 8(invocation) + 529: 67(ptr) AccessChain 37(data) 58 45 + 530: 23(i8vec4) Load 529 + 531: 17(ivec4) Load 19(ballot) + 532: 23(i8vec4) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 530 531 + 533: 67(ptr) AccessChain 37(data) 528 45 + Store 533 532 + 534: 6(int) Load 8(invocation) + 535: 62(ptr) AccessChain 37(data) 39 45 40 + 536: 22(int8_t) Load 535 + 537: 17(ivec4) Load 19(ballot) + 538: 22(int8_t) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 536 537 + 539: 62(ptr) AccessChain 37(data) 534 45 40 + Store 539 538 + 540: 6(int) Load 8(invocation) + 541: 67(ptr) AccessChain 37(data) 45 45 + 542: 23(i8vec4) Load 541 + 543: 66(i8vec2) VectorShuffle 542 542 0 1 + 544: 17(ivec4) Load 19(ballot) + 545: 66(i8vec2) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 543 544 + 546: 67(ptr) AccessChain 37(data) 540 45 + 547: 23(i8vec4) Load 546 + 548: 23(i8vec4) VectorShuffle 547 545 4 5 2 3 + Store 546 548 + 549: 6(int) Load 8(invocation) + 550: 67(ptr) AccessChain 37(data) 52 45 + 551: 23(i8vec4) Load 550 + 552: 72(i8vec3) VectorShuffle 551 551 0 1 2 + 553: 17(ivec4) Load 19(ballot) + 554: 72(i8vec3) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 552 553 + 555: 67(ptr) AccessChain 37(data) 549 45 + 556: 23(i8vec4) Load 555 + 557: 23(i8vec4) VectorShuffle 556 554 4 5 6 3 + Store 555 557 + 558: 6(int) Load 8(invocation) + 559: 67(ptr) AccessChain 37(data) 58 45 + 560: 23(i8vec4) Load 559 + 561: 17(ivec4) Load 19(ballot) + 562: 23(i8vec4) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 560 561 + 563: 67(ptr) AccessChain 37(data) 558 45 + Store 563 562 + 564: 6(int) Load 8(invocation) + 565: 62(ptr) AccessChain 37(data) 39 45 40 + 566: 22(int8_t) Load 565 + 567: 17(ivec4) Load 19(ballot) + 568: 22(int8_t) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 566 567 + 569: 62(ptr) AccessChain 37(data) 564 45 40 + Store 569 568 + 570: 6(int) Load 8(invocation) + 571: 67(ptr) AccessChain 37(data) 45 45 + 572: 23(i8vec4) Load 571 + 573: 66(i8vec2) VectorShuffle 572 572 0 1 + 574: 17(ivec4) Load 19(ballot) + 575: 66(i8vec2) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 573 574 + 576: 67(ptr) AccessChain 37(data) 570 45 + 577: 23(i8vec4) Load 576 + 578: 23(i8vec4) VectorShuffle 577 575 4 5 2 3 + Store 576 578 + 579: 6(int) Load 8(invocation) + 580: 67(ptr) AccessChain 37(data) 52 45 + 581: 23(i8vec4) Load 580 + 582: 72(i8vec3) VectorShuffle 581 581 0 1 2 + 583: 17(ivec4) Load 19(ballot) + 584: 72(i8vec3) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 582 583 + 585: 67(ptr) AccessChain 37(data) 579 45 + 586: 23(i8vec4) Load 585 + 587: 23(i8vec4) VectorShuffle 586 584 4 5 6 3 + Store 585 587 + 588: 6(int) Load 8(invocation) + 589: 67(ptr) AccessChain 37(data) 58 45 + 590: 23(i8vec4) Load 589 + 591: 17(ivec4) Load 19(ballot) + 592: 23(i8vec4) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 590 591 + 593: 67(ptr) AccessChain 37(data) 588 45 + Store 593 592 + 594: 6(int) Load 8(invocation) + 595: 80(ptr) AccessChain 37(data) 39 52 40 + 596: 24(int16_t) Load 595 + 597: 17(ivec4) Load 19(ballot) + 598: 24(int16_t) GroupNonUniformIAdd 177 PartitionedReduceNV 596 597 + 599: 80(ptr) AccessChain 37(data) 594 52 40 + Store 599 598 + 600: 6(int) Load 8(invocation) + 601: 85(ptr) AccessChain 37(data) 45 52 + 602: 25(i16vec4) Load 601 + 603: 84(i16vec2) VectorShuffle 602 602 0 1 + 604: 17(ivec4) Load 19(ballot) + 605: 84(i16vec2) GroupNonUniformIAdd 177 PartitionedReduceNV 603 604 + 606: 85(ptr) AccessChain 37(data) 600 52 + 607: 25(i16vec4) Load 606 + 608: 25(i16vec4) VectorShuffle 607 605 4 5 2 3 + Store 606 608 + 609: 6(int) Load 8(invocation) + 610: 85(ptr) AccessChain 37(data) 52 52 + 611: 25(i16vec4) Load 610 + 612: 90(i16vec3) VectorShuffle 611 611 0 1 2 + 613: 17(ivec4) Load 19(ballot) + 614: 90(i16vec3) GroupNonUniformIAdd 177 PartitionedReduceNV 612 613 + 615: 85(ptr) AccessChain 37(data) 609 52 + 616: 25(i16vec4) Load 615 + 617: 25(i16vec4) VectorShuffle 616 614 4 5 6 3 + Store 615 617 + 618: 6(int) Load 8(invocation) + 619: 85(ptr) AccessChain 37(data) 58 52 + 620: 25(i16vec4) Load 619 + 621: 17(ivec4) Load 19(ballot) + 622: 25(i16vec4) GroupNonUniformIAdd 177 PartitionedReduceNV 620 621 + 623: 85(ptr) AccessChain 37(data) 618 52 + Store 623 622 + 624: 6(int) Load 8(invocation) + 625: 80(ptr) AccessChain 37(data) 39 52 40 + 626: 24(int16_t) Load 625 + 627: 17(ivec4) Load 19(ballot) + 628: 24(int16_t) GroupNonUniformIMul 177 PartitionedReduceNV 626 627 + 629: 80(ptr) AccessChain 37(data) 624 52 40 + Store 629 628 + 630: 6(int) Load 8(invocation) + 631: 85(ptr) AccessChain 37(data) 45 52 + 632: 25(i16vec4) Load 631 + 633: 84(i16vec2) VectorShuffle 632 632 0 1 + 634: 17(ivec4) Load 19(ballot) + 635: 84(i16vec2) GroupNonUniformIMul 177 PartitionedReduceNV 633 634 + 636: 85(ptr) AccessChain 37(data) 630 52 + 637: 25(i16vec4) Load 636 + 638: 25(i16vec4) VectorShuffle 637 635 4 5 2 3 + Store 636 638 + 639: 6(int) Load 8(invocation) + 640: 85(ptr) AccessChain 37(data) 52 52 + 641: 25(i16vec4) Load 640 + 642: 90(i16vec3) VectorShuffle 641 641 0 1 2 + 643: 17(ivec4) Load 19(ballot) + 644: 90(i16vec3) GroupNonUniformIMul 177 PartitionedReduceNV 642 643 + 645: 85(ptr) AccessChain 37(data) 639 52 + 646: 25(i16vec4) Load 645 + 647: 25(i16vec4) VectorShuffle 646 644 4 5 6 3 + Store 645 647 + 648: 6(int) Load 8(invocation) + 649: 85(ptr) AccessChain 37(data) 58 52 + 650: 25(i16vec4) Load 649 + 651: 17(ivec4) Load 19(ballot) + 652: 25(i16vec4) GroupNonUniformIMul 177 PartitionedReduceNV 650 651 + 653: 85(ptr) AccessChain 37(data) 648 52 + Store 653 652 + 654: 6(int) Load 8(invocation) + 655: 80(ptr) AccessChain 37(data) 39 52 40 + 656: 24(int16_t) Load 655 + 657: 17(ivec4) Load 19(ballot) + 658: 24(int16_t) GroupNonUniformSMin 177 PartitionedReduceNV 656 657 + 659: 80(ptr) AccessChain 37(data) 654 52 40 + Store 659 658 + 660: 6(int) Load 8(invocation) + 661: 85(ptr) AccessChain 37(data) 45 52 + 662: 25(i16vec4) Load 661 + 663: 84(i16vec2) VectorShuffle 662 662 0 1 + 664: 17(ivec4) Load 19(ballot) + 665: 84(i16vec2) GroupNonUniformSMin 177 PartitionedReduceNV 663 664 + 666: 85(ptr) AccessChain 37(data) 660 52 + 667: 25(i16vec4) Load 666 + 668: 25(i16vec4) VectorShuffle 667 665 4 5 2 3 + Store 666 668 + 669: 6(int) Load 8(invocation) + 670: 85(ptr) AccessChain 37(data) 52 52 + 671: 25(i16vec4) Load 670 + 672: 90(i16vec3) VectorShuffle 671 671 0 1 2 + 673: 17(ivec4) Load 19(ballot) + 674: 90(i16vec3) GroupNonUniformSMin 177 PartitionedReduceNV 672 673 + 675: 85(ptr) AccessChain 37(data) 669 52 + 676: 25(i16vec4) Load 675 + 677: 25(i16vec4) VectorShuffle 676 674 4 5 6 3 + Store 675 677 + 678: 6(int) Load 8(invocation) + 679: 85(ptr) AccessChain 37(data) 58 52 + 680: 25(i16vec4) Load 679 + 681: 17(ivec4) Load 19(ballot) + 682: 25(i16vec4) GroupNonUniformSMin 177 PartitionedReduceNV 680 681 + 683: 85(ptr) AccessChain 37(data) 678 52 + Store 683 682 + 684: 6(int) Load 8(invocation) + 685: 80(ptr) AccessChain 37(data) 39 52 40 + 686: 24(int16_t) Load 685 + 687: 17(ivec4) Load 19(ballot) + 688: 24(int16_t) GroupNonUniformSMax 177 PartitionedReduceNV 686 687 + 689: 80(ptr) AccessChain 37(data) 684 52 40 + Store 689 688 + 690: 6(int) Load 8(invocation) + 691: 85(ptr) AccessChain 37(data) 45 52 + 692: 25(i16vec4) Load 691 + 693: 84(i16vec2) VectorShuffle 692 692 0 1 + 694: 17(ivec4) Load 19(ballot) + 695: 84(i16vec2) GroupNonUniformSMax 177 PartitionedReduceNV 693 694 + 696: 85(ptr) AccessChain 37(data) 690 52 + 697: 25(i16vec4) Load 696 + 698: 25(i16vec4) VectorShuffle 697 695 4 5 2 3 + Store 696 698 + 699: 6(int) Load 8(invocation) + 700: 85(ptr) AccessChain 37(data) 52 52 + 701: 25(i16vec4) Load 700 + 702: 90(i16vec3) VectorShuffle 701 701 0 1 2 + 703: 17(ivec4) Load 19(ballot) + 704: 90(i16vec3) GroupNonUniformSMax 177 PartitionedReduceNV 702 703 + 705: 85(ptr) AccessChain 37(data) 699 52 + 706: 25(i16vec4) Load 705 + 707: 25(i16vec4) VectorShuffle 706 704 4 5 6 3 + Store 705 707 + 708: 6(int) Load 8(invocation) + 709: 85(ptr) AccessChain 37(data) 58 52 + 710: 25(i16vec4) Load 709 + 711: 17(ivec4) Load 19(ballot) + 712: 25(i16vec4) GroupNonUniformSMax 177 PartitionedReduceNV 710 711 + 713: 85(ptr) AccessChain 37(data) 708 52 + Store 713 712 + 714: 6(int) Load 8(invocation) + 715: 80(ptr) AccessChain 37(data) 39 52 40 + 716: 24(int16_t) Load 715 + 717: 17(ivec4) Load 19(ballot) + 718: 24(int16_t) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 716 717 + 719: 80(ptr) AccessChain 37(data) 714 52 40 + Store 719 718 + 720: 6(int) Load 8(invocation) + 721: 85(ptr) AccessChain 37(data) 45 52 + 722: 25(i16vec4) Load 721 + 723: 84(i16vec2) VectorShuffle 722 722 0 1 + 724: 17(ivec4) Load 19(ballot) + 725: 84(i16vec2) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 723 724 + 726: 85(ptr) AccessChain 37(data) 720 52 + 727: 25(i16vec4) Load 726 + 728: 25(i16vec4) VectorShuffle 727 725 4 5 2 3 + Store 726 728 + 729: 6(int) Load 8(invocation) + 730: 85(ptr) AccessChain 37(data) 52 52 + 731: 25(i16vec4) Load 730 + 732: 90(i16vec3) VectorShuffle 731 731 0 1 2 + 733: 17(ivec4) Load 19(ballot) + 734: 90(i16vec3) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 732 733 + 735: 85(ptr) AccessChain 37(data) 729 52 + 736: 25(i16vec4) Load 735 + 737: 25(i16vec4) VectorShuffle 736 734 4 5 6 3 + Store 735 737 + 738: 6(int) Load 8(invocation) + 739: 85(ptr) AccessChain 37(data) 58 52 + 740: 25(i16vec4) Load 739 + 741: 17(ivec4) Load 19(ballot) + 742: 25(i16vec4) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 740 741 + 743: 85(ptr) AccessChain 37(data) 738 52 + Store 743 742 + 744: 6(int) Load 8(invocation) + 745: 80(ptr) AccessChain 37(data) 39 52 40 + 746: 24(int16_t) Load 745 + 747: 17(ivec4) Load 19(ballot) + 748: 24(int16_t) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 746 747 + 749: 80(ptr) AccessChain 37(data) 744 52 40 + Store 749 748 + 750: 6(int) Load 8(invocation) + 751: 85(ptr) AccessChain 37(data) 45 52 + 752: 25(i16vec4) Load 751 + 753: 84(i16vec2) VectorShuffle 752 752 0 1 + 754: 17(ivec4) Load 19(ballot) + 755: 84(i16vec2) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 753 754 + 756: 85(ptr) AccessChain 37(data) 750 52 + 757: 25(i16vec4) Load 756 + 758: 25(i16vec4) VectorShuffle 757 755 4 5 2 3 + Store 756 758 + 759: 6(int) Load 8(invocation) + 760: 85(ptr) AccessChain 37(data) 52 52 + 761: 25(i16vec4) Load 760 + 762: 90(i16vec3) VectorShuffle 761 761 0 1 2 + 763: 17(ivec4) Load 19(ballot) + 764: 90(i16vec3) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 762 763 + 765: 85(ptr) AccessChain 37(data) 759 52 + 766: 25(i16vec4) Load 765 + 767: 25(i16vec4) VectorShuffle 766 764 4 5 6 3 + Store 765 767 + 768: 6(int) Load 8(invocation) + 769: 85(ptr) AccessChain 37(data) 58 52 + 770: 25(i16vec4) Load 769 + 771: 17(ivec4) Load 19(ballot) + 772: 25(i16vec4) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 770 771 + 773: 85(ptr) AccessChain 37(data) 768 52 + Store 773 772 + 774: 6(int) Load 8(invocation) + 775: 80(ptr) AccessChain 37(data) 39 52 40 + 776: 24(int16_t) Load 775 + 777: 17(ivec4) Load 19(ballot) + 778: 24(int16_t) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 776 777 + 779: 80(ptr) AccessChain 37(data) 774 52 40 + Store 779 778 + 780: 6(int) Load 8(invocation) + 781: 85(ptr) AccessChain 37(data) 45 52 + 782: 25(i16vec4) Load 781 + 783: 84(i16vec2) VectorShuffle 782 782 0 1 + 784: 17(ivec4) Load 19(ballot) + 785: 84(i16vec2) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 783 784 + 786: 85(ptr) AccessChain 37(data) 780 52 + 787: 25(i16vec4) Load 786 + 788: 25(i16vec4) VectorShuffle 787 785 4 5 2 3 + Store 786 788 + 789: 6(int) Load 8(invocation) + 790: 85(ptr) AccessChain 37(data) 52 52 + 791: 25(i16vec4) Load 790 + 792: 90(i16vec3) VectorShuffle 791 791 0 1 2 + 793: 17(ivec4) Load 19(ballot) + 794: 90(i16vec3) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 792 793 + 795: 85(ptr) AccessChain 37(data) 789 52 + 796: 25(i16vec4) Load 795 + 797: 25(i16vec4) VectorShuffle 796 794 4 5 6 3 + Store 795 797 + 798: 6(int) Load 8(invocation) + 799: 85(ptr) AccessChain 37(data) 58 52 + 800: 25(i16vec4) Load 799 + 801: 17(ivec4) Load 19(ballot) + 802: 25(i16vec4) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 800 801 + 803: 85(ptr) AccessChain 37(data) 798 52 + Store 803 802 + 804: 6(int) Load 8(invocation) + 805: 98(ptr) AccessChain 37(data) 39 58 40 + 806: 26(int16_t) Load 805 + 807: 17(ivec4) Load 19(ballot) + 808: 26(int16_t) GroupNonUniformIAdd 177 PartitionedReduceNV 806 807 + 809: 98(ptr) AccessChain 37(data) 804 58 40 + Store 809 808 + 810: 6(int) Load 8(invocation) + 811: 103(ptr) AccessChain 37(data) 45 58 + 812: 27(i16vec4) Load 811 + 813:102(i16vec2) VectorShuffle 812 812 0 1 + 814: 17(ivec4) Load 19(ballot) + 815:102(i16vec2) GroupNonUniformIAdd 177 PartitionedReduceNV 813 814 + 816: 103(ptr) AccessChain 37(data) 810 58 + 817: 27(i16vec4) Load 816 + 818: 27(i16vec4) VectorShuffle 817 815 4 5 2 3 + Store 816 818 + 819: 6(int) Load 8(invocation) + 820: 103(ptr) AccessChain 37(data) 52 58 + 821: 27(i16vec4) Load 820 + 822:108(i16vec3) VectorShuffle 821 821 0 1 2 + 823: 17(ivec4) Load 19(ballot) + 824:108(i16vec3) GroupNonUniformIAdd 177 PartitionedReduceNV 822 823 + 825: 103(ptr) AccessChain 37(data) 819 58 + 826: 27(i16vec4) Load 825 + 827: 27(i16vec4) VectorShuffle 826 824 4 5 6 3 + Store 825 827 + 828: 6(int) Load 8(invocation) + 829: 103(ptr) AccessChain 37(data) 58 58 + 830: 27(i16vec4) Load 829 + 831: 17(ivec4) Load 19(ballot) + 832: 27(i16vec4) GroupNonUniformIAdd 177 PartitionedReduceNV 830 831 + 833: 103(ptr) AccessChain 37(data) 828 58 + Store 833 832 + 834: 6(int) Load 8(invocation) + 835: 98(ptr) AccessChain 37(data) 39 58 40 + 836: 26(int16_t) Load 835 + 837: 17(ivec4) Load 19(ballot) + 838: 26(int16_t) GroupNonUniformIMul 177 PartitionedReduceNV 836 837 + 839: 98(ptr) AccessChain 37(data) 834 58 40 + Store 839 838 + 840: 6(int) Load 8(invocation) + 841: 103(ptr) AccessChain 37(data) 45 58 + 842: 27(i16vec4) Load 841 + 843:102(i16vec2) VectorShuffle 842 842 0 1 + 844: 17(ivec4) Load 19(ballot) + 845:102(i16vec2) GroupNonUniformIMul 177 PartitionedReduceNV 843 844 + 846: 103(ptr) AccessChain 37(data) 840 58 + 847: 27(i16vec4) Load 846 + 848: 27(i16vec4) VectorShuffle 847 845 4 5 2 3 + Store 846 848 + 849: 6(int) Load 8(invocation) + 850: 103(ptr) AccessChain 37(data) 52 58 + 851: 27(i16vec4) Load 850 + 852:108(i16vec3) VectorShuffle 851 851 0 1 2 + 853: 17(ivec4) Load 19(ballot) + 854:108(i16vec3) GroupNonUniformIMul 177 PartitionedReduceNV 852 853 + 855: 103(ptr) AccessChain 37(data) 849 58 + 856: 27(i16vec4) Load 855 + 857: 27(i16vec4) VectorShuffle 856 854 4 5 6 3 + Store 855 857 + 858: 6(int) Load 8(invocation) + 859: 103(ptr) AccessChain 37(data) 58 58 + 860: 27(i16vec4) Load 859 + 861: 17(ivec4) Load 19(ballot) + 862: 27(i16vec4) GroupNonUniformIMul 177 PartitionedReduceNV 860 861 + 863: 103(ptr) AccessChain 37(data) 858 58 + Store 863 862 + 864: 6(int) Load 8(invocation) + 865: 98(ptr) AccessChain 37(data) 39 58 40 + 866: 26(int16_t) Load 865 + 867: 17(ivec4) Load 19(ballot) + 868: 26(int16_t) GroupNonUniformUMin 177 PartitionedReduceNV 866 867 + 869: 98(ptr) AccessChain 37(data) 864 58 40 + Store 869 868 + 870: 6(int) Load 8(invocation) + 871: 103(ptr) AccessChain 37(data) 45 58 + 872: 27(i16vec4) Load 871 + 873:102(i16vec2) VectorShuffle 872 872 0 1 + 874: 17(ivec4) Load 19(ballot) + 875:102(i16vec2) GroupNonUniformUMin 177 PartitionedReduceNV 873 874 + 876: 103(ptr) AccessChain 37(data) 870 58 + 877: 27(i16vec4) Load 876 + 878: 27(i16vec4) VectorShuffle 877 875 4 5 2 3 + Store 876 878 + 879: 6(int) Load 8(invocation) + 880: 103(ptr) AccessChain 37(data) 52 58 + 881: 27(i16vec4) Load 880 + 882:108(i16vec3) VectorShuffle 881 881 0 1 2 + 883: 17(ivec4) Load 19(ballot) + 884:108(i16vec3) GroupNonUniformUMin 177 PartitionedReduceNV 882 883 + 885: 103(ptr) AccessChain 37(data) 879 58 + 886: 27(i16vec4) Load 885 + 887: 27(i16vec4) VectorShuffle 886 884 4 5 6 3 + Store 885 887 + 888: 6(int) Load 8(invocation) + 889: 103(ptr) AccessChain 37(data) 58 58 + 890: 27(i16vec4) Load 889 + 891: 17(ivec4) Load 19(ballot) + 892: 27(i16vec4) GroupNonUniformUMin 177 PartitionedReduceNV 890 891 + 893: 103(ptr) AccessChain 37(data) 888 58 + Store 893 892 + 894: 6(int) Load 8(invocation) + 895: 98(ptr) AccessChain 37(data) 39 58 40 + 896: 26(int16_t) Load 895 + 897: 17(ivec4) Load 19(ballot) + 898: 26(int16_t) GroupNonUniformUMax 177 PartitionedReduceNV 896 897 + 899: 98(ptr) AccessChain 37(data) 894 58 40 + Store 899 898 + 900: 6(int) Load 8(invocation) + 901: 103(ptr) AccessChain 37(data) 45 58 + 902: 27(i16vec4) Load 901 + 903:102(i16vec2) VectorShuffle 902 902 0 1 + 904: 17(ivec4) Load 19(ballot) + 905:102(i16vec2) GroupNonUniformUMax 177 PartitionedReduceNV 903 904 + 906: 103(ptr) AccessChain 37(data) 900 58 + 907: 27(i16vec4) Load 906 + 908: 27(i16vec4) VectorShuffle 907 905 4 5 2 3 + Store 906 908 + 909: 6(int) Load 8(invocation) + 910: 103(ptr) AccessChain 37(data) 52 58 + 911: 27(i16vec4) Load 910 + 912:108(i16vec3) VectorShuffle 911 911 0 1 2 + 913: 17(ivec4) Load 19(ballot) + 914:108(i16vec3) GroupNonUniformUMax 177 PartitionedReduceNV 912 913 + 915: 103(ptr) AccessChain 37(data) 909 58 + 916: 27(i16vec4) Load 915 + 917: 27(i16vec4) VectorShuffle 916 914 4 5 6 3 + Store 915 917 + 918: 6(int) Load 8(invocation) + 919: 103(ptr) AccessChain 37(data) 58 58 + 920: 27(i16vec4) Load 919 + 921: 17(ivec4) Load 19(ballot) + 922: 27(i16vec4) GroupNonUniformUMax 177 PartitionedReduceNV 920 921 + 923: 103(ptr) AccessChain 37(data) 918 58 + Store 923 922 + 924: 6(int) Load 8(invocation) + 925: 98(ptr) AccessChain 37(data) 39 58 40 + 926: 26(int16_t) Load 925 + 927: 17(ivec4) Load 19(ballot) + 928: 26(int16_t) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 926 927 + 929: 98(ptr) AccessChain 37(data) 924 58 40 + Store 929 928 + 930: 6(int) Load 8(invocation) + 931: 103(ptr) AccessChain 37(data) 45 58 + 932: 27(i16vec4) Load 931 + 933:102(i16vec2) VectorShuffle 932 932 0 1 + 934: 17(ivec4) Load 19(ballot) + 935:102(i16vec2) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 933 934 + 936: 103(ptr) AccessChain 37(data) 930 58 + 937: 27(i16vec4) Load 936 + 938: 27(i16vec4) VectorShuffle 937 935 4 5 2 3 + Store 936 938 + 939: 6(int) Load 8(invocation) + 940: 103(ptr) AccessChain 37(data) 52 58 + 941: 27(i16vec4) Load 940 + 942:108(i16vec3) VectorShuffle 941 941 0 1 2 + 943: 17(ivec4) Load 19(ballot) + 944:108(i16vec3) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 942 943 + 945: 103(ptr) AccessChain 37(data) 939 58 + 946: 27(i16vec4) Load 945 + 947: 27(i16vec4) VectorShuffle 946 944 4 5 6 3 + Store 945 947 + 948: 6(int) Load 8(invocation) + 949: 103(ptr) AccessChain 37(data) 58 58 + 950: 27(i16vec4) Load 949 + 951: 17(ivec4) Load 19(ballot) + 952: 27(i16vec4) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 950 951 + 953: 103(ptr) AccessChain 37(data) 948 58 + Store 953 952 + 954: 6(int) Load 8(invocation) + 955: 98(ptr) AccessChain 37(data) 39 58 40 + 956: 26(int16_t) Load 955 + 957: 17(ivec4) Load 19(ballot) + 958: 26(int16_t) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 956 957 + 959: 98(ptr) AccessChain 37(data) 954 58 40 + Store 959 958 + 960: 6(int) Load 8(invocation) + 961: 103(ptr) AccessChain 37(data) 45 58 + 962: 27(i16vec4) Load 961 + 963:102(i16vec2) VectorShuffle 962 962 0 1 + 964: 17(ivec4) Load 19(ballot) + 965:102(i16vec2) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 963 964 + 966: 103(ptr) AccessChain 37(data) 960 58 + 967: 27(i16vec4) Load 966 + 968: 27(i16vec4) VectorShuffle 967 965 4 5 2 3 + Store 966 968 + 969: 6(int) Load 8(invocation) + 970: 103(ptr) AccessChain 37(data) 52 58 + 971: 27(i16vec4) Load 970 + 972:108(i16vec3) VectorShuffle 971 971 0 1 2 + 973: 17(ivec4) Load 19(ballot) + 974:108(i16vec3) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 972 973 + 975: 103(ptr) AccessChain 37(data) 969 58 + 976: 27(i16vec4) Load 975 + 977: 27(i16vec4) VectorShuffle 976 974 4 5 6 3 + Store 975 977 + 978: 6(int) Load 8(invocation) + 979: 103(ptr) AccessChain 37(data) 58 58 + 980: 27(i16vec4) Load 979 + 981: 17(ivec4) Load 19(ballot) + 982: 27(i16vec4) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 980 981 + 983: 103(ptr) AccessChain 37(data) 978 58 + Store 983 982 + 984: 6(int) Load 8(invocation) + 985: 98(ptr) AccessChain 37(data) 39 58 40 + 986: 26(int16_t) Load 985 + 987: 17(ivec4) Load 19(ballot) + 988: 26(int16_t) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 986 987 + 989: 98(ptr) AccessChain 37(data) 984 58 40 + Store 989 988 + 990: 6(int) Load 8(invocation) + 991: 103(ptr) AccessChain 37(data) 45 58 + 992: 27(i16vec4) Load 991 + 993:102(i16vec2) VectorShuffle 992 992 0 1 + 994: 17(ivec4) Load 19(ballot) + 995:102(i16vec2) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 993 994 + 996: 103(ptr) AccessChain 37(data) 990 58 + 997: 27(i16vec4) Load 996 + 998: 27(i16vec4) VectorShuffle 997 995 4 5 2 3 + Store 996 998 + 999: 6(int) Load 8(invocation) + 1000: 103(ptr) AccessChain 37(data) 52 58 + 1001: 27(i16vec4) Load 1000 + 1002:108(i16vec3) VectorShuffle 1001 1001 0 1 2 + 1003: 17(ivec4) Load 19(ballot) + 1004:108(i16vec3) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1002 1003 + 1005: 103(ptr) AccessChain 37(data) 999 58 + 1006: 27(i16vec4) Load 1005 + 1007: 27(i16vec4) VectorShuffle 1006 1004 4 5 6 3 + Store 1005 1007 + 1008: 6(int) Load 8(invocation) + 1009: 103(ptr) AccessChain 37(data) 58 58 + 1010: 27(i16vec4) Load 1009 + 1011: 17(ivec4) Load 19(ballot) + 1012: 27(i16vec4) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1010 1011 + 1013: 103(ptr) AccessChain 37(data) 1008 58 + Store 1013 1012 + 1014: 6(int) Load 8(invocation) + 1015: 117(ptr) AccessChain 37(data) 39 116 40 + 1016: 28(int64_t) Load 1015 + 1017: 17(ivec4) Load 19(ballot) + 1018: 28(int64_t) GroupNonUniformIAdd 177 PartitionedReduceNV 1016 1017 + 1019: 117(ptr) AccessChain 37(data) 1014 116 40 + Store 1019 1018 + 1020: 6(int) Load 8(invocation) + 1021: 122(ptr) AccessChain 37(data) 45 116 + 1022: 29(i64vec4) Load 1021 + 1023:121(i64vec2) VectorShuffle 1022 1022 0 1 + 1024: 17(ivec4) Load 19(ballot) + 1025:121(i64vec2) GroupNonUniformIAdd 177 PartitionedReduceNV 1023 1024 + 1026: 122(ptr) AccessChain 37(data) 1020 116 + 1027: 29(i64vec4) Load 1026 + 1028: 29(i64vec4) VectorShuffle 1027 1025 4 5 2 3 + Store 1026 1028 + 1029: 6(int) Load 8(invocation) + 1030: 122(ptr) AccessChain 37(data) 52 116 + 1031: 29(i64vec4) Load 1030 + 1032:127(i64vec3) VectorShuffle 1031 1031 0 1 2 + 1033: 17(ivec4) Load 19(ballot) + 1034:127(i64vec3) GroupNonUniformIAdd 177 PartitionedReduceNV 1032 1033 + 1035: 122(ptr) AccessChain 37(data) 1029 116 + 1036: 29(i64vec4) Load 1035 + 1037: 29(i64vec4) VectorShuffle 1036 1034 4 5 6 3 + Store 1035 1037 + 1038: 6(int) Load 8(invocation) + 1039: 122(ptr) AccessChain 37(data) 58 116 + 1040: 29(i64vec4) Load 1039 + 1041: 17(ivec4) Load 19(ballot) + 1042: 29(i64vec4) GroupNonUniformIAdd 177 PartitionedReduceNV 1040 1041 + 1043: 122(ptr) AccessChain 37(data) 1038 116 + Store 1043 1042 + 1044: 6(int) Load 8(invocation) + 1045: 117(ptr) AccessChain 37(data) 39 116 40 + 1046: 28(int64_t) Load 1045 + 1047: 17(ivec4) Load 19(ballot) + 1048: 28(int64_t) GroupNonUniformIMul 177 PartitionedReduceNV 1046 1047 + 1049: 117(ptr) AccessChain 37(data) 1044 116 40 + Store 1049 1048 + 1050: 6(int) Load 8(invocation) + 1051: 122(ptr) AccessChain 37(data) 45 116 + 1052: 29(i64vec4) Load 1051 + 1053:121(i64vec2) VectorShuffle 1052 1052 0 1 + 1054: 17(ivec4) Load 19(ballot) + 1055:121(i64vec2) GroupNonUniformIMul 177 PartitionedReduceNV 1053 1054 + 1056: 122(ptr) AccessChain 37(data) 1050 116 + 1057: 29(i64vec4) Load 1056 + 1058: 29(i64vec4) VectorShuffle 1057 1055 4 5 2 3 + Store 1056 1058 + 1059: 6(int) Load 8(invocation) + 1060: 122(ptr) AccessChain 37(data) 52 116 + 1061: 29(i64vec4) Load 1060 + 1062:127(i64vec3) VectorShuffle 1061 1061 0 1 2 + 1063: 17(ivec4) Load 19(ballot) + 1064:127(i64vec3) GroupNonUniformIMul 177 PartitionedReduceNV 1062 1063 + 1065: 122(ptr) AccessChain 37(data) 1059 116 + 1066: 29(i64vec4) Load 1065 + 1067: 29(i64vec4) VectorShuffle 1066 1064 4 5 6 3 + Store 1065 1067 + 1068: 6(int) Load 8(invocation) + 1069: 122(ptr) AccessChain 37(data) 58 116 + 1070: 29(i64vec4) Load 1069 + 1071: 17(ivec4) Load 19(ballot) + 1072: 29(i64vec4) GroupNonUniformIMul 177 PartitionedReduceNV 1070 1071 + 1073: 122(ptr) AccessChain 37(data) 1068 116 + Store 1073 1072 + 1074: 6(int) Load 8(invocation) + 1075: 117(ptr) AccessChain 37(data) 39 116 40 + 1076: 28(int64_t) Load 1075 + 1077: 17(ivec4) Load 19(ballot) + 1078: 28(int64_t) GroupNonUniformSMin 177 PartitionedReduceNV 1076 1077 + 1079: 117(ptr) AccessChain 37(data) 1074 116 40 + Store 1079 1078 + 1080: 6(int) Load 8(invocation) + 1081: 122(ptr) AccessChain 37(data) 45 116 + 1082: 29(i64vec4) Load 1081 + 1083:121(i64vec2) VectorShuffle 1082 1082 0 1 + 1084: 17(ivec4) Load 19(ballot) + 1085:121(i64vec2) GroupNonUniformSMin 177 PartitionedReduceNV 1083 1084 + 1086: 122(ptr) AccessChain 37(data) 1080 116 + 1087: 29(i64vec4) Load 1086 + 1088: 29(i64vec4) VectorShuffle 1087 1085 4 5 2 3 + Store 1086 1088 + 1089: 6(int) Load 8(invocation) + 1090: 122(ptr) AccessChain 37(data) 52 116 + 1091: 29(i64vec4) Load 1090 + 1092:127(i64vec3) VectorShuffle 1091 1091 0 1 2 + 1093: 17(ivec4) Load 19(ballot) + 1094:127(i64vec3) GroupNonUniformSMin 177 PartitionedReduceNV 1092 1093 + 1095: 122(ptr) AccessChain 37(data) 1089 116 + 1096: 29(i64vec4) Load 1095 + 1097: 29(i64vec4) VectorShuffle 1096 1094 4 5 6 3 + Store 1095 1097 + 1098: 6(int) Load 8(invocation) + 1099: 122(ptr) AccessChain 37(data) 58 116 + 1100: 29(i64vec4) Load 1099 + 1101: 17(ivec4) Load 19(ballot) + 1102: 29(i64vec4) GroupNonUniformSMin 177 PartitionedReduceNV 1100 1101 + 1103: 122(ptr) AccessChain 37(data) 1098 116 + Store 1103 1102 + 1104: 6(int) Load 8(invocation) + 1105: 117(ptr) AccessChain 37(data) 39 116 40 + 1106: 28(int64_t) Load 1105 + 1107: 17(ivec4) Load 19(ballot) + 1108: 28(int64_t) GroupNonUniformSMax 177 PartitionedReduceNV 1106 1107 + 1109: 117(ptr) AccessChain 37(data) 1104 116 40 + Store 1109 1108 + 1110: 6(int) Load 8(invocation) + 1111: 122(ptr) AccessChain 37(data) 45 116 + 1112: 29(i64vec4) Load 1111 + 1113:121(i64vec2) VectorShuffle 1112 1112 0 1 + 1114: 17(ivec4) Load 19(ballot) + 1115:121(i64vec2) GroupNonUniformSMax 177 PartitionedReduceNV 1113 1114 + 1116: 122(ptr) AccessChain 37(data) 1110 116 + 1117: 29(i64vec4) Load 1116 + 1118: 29(i64vec4) VectorShuffle 1117 1115 4 5 2 3 + Store 1116 1118 + 1119: 6(int) Load 8(invocation) + 1120: 122(ptr) AccessChain 37(data) 52 116 + 1121: 29(i64vec4) Load 1120 + 1122:127(i64vec3) VectorShuffle 1121 1121 0 1 2 + 1123: 17(ivec4) Load 19(ballot) + 1124:127(i64vec3) GroupNonUniformSMax 177 PartitionedReduceNV 1122 1123 + 1125: 122(ptr) AccessChain 37(data) 1119 116 + 1126: 29(i64vec4) Load 1125 + 1127: 29(i64vec4) VectorShuffle 1126 1124 4 5 6 3 + Store 1125 1127 + 1128: 6(int) Load 8(invocation) + 1129: 122(ptr) AccessChain 37(data) 58 116 + 1130: 29(i64vec4) Load 1129 + 1131: 17(ivec4) Load 19(ballot) + 1132: 29(i64vec4) GroupNonUniformSMax 177 PartitionedReduceNV 1130 1131 + 1133: 122(ptr) AccessChain 37(data) 1128 116 + Store 1133 1132 + 1134: 6(int) Load 8(invocation) + 1135: 117(ptr) AccessChain 37(data) 39 116 40 + 1136: 28(int64_t) Load 1135 + 1137: 17(ivec4) Load 19(ballot) + 1138: 28(int64_t) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1136 1137 + 1139: 117(ptr) AccessChain 37(data) 1134 116 40 + Store 1139 1138 + 1140: 6(int) Load 8(invocation) + 1141: 122(ptr) AccessChain 37(data) 45 116 + 1142: 29(i64vec4) Load 1141 + 1143:121(i64vec2) VectorShuffle 1142 1142 0 1 + 1144: 17(ivec4) Load 19(ballot) + 1145:121(i64vec2) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1143 1144 + 1146: 122(ptr) AccessChain 37(data) 1140 116 + 1147: 29(i64vec4) Load 1146 + 1148: 29(i64vec4) VectorShuffle 1147 1145 4 5 2 3 + Store 1146 1148 + 1149: 6(int) Load 8(invocation) + 1150: 122(ptr) AccessChain 37(data) 52 116 + 1151: 29(i64vec4) Load 1150 + 1152:127(i64vec3) VectorShuffle 1151 1151 0 1 2 + 1153: 17(ivec4) Load 19(ballot) + 1154:127(i64vec3) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1152 1153 + 1155: 122(ptr) AccessChain 37(data) 1149 116 + 1156: 29(i64vec4) Load 1155 + 1157: 29(i64vec4) VectorShuffle 1156 1154 4 5 6 3 + Store 1155 1157 + 1158: 6(int) Load 8(invocation) + 1159: 122(ptr) AccessChain 37(data) 58 116 + 1160: 29(i64vec4) Load 1159 + 1161: 17(ivec4) Load 19(ballot) + 1162: 29(i64vec4) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1160 1161 + 1163: 122(ptr) AccessChain 37(data) 1158 116 + Store 1163 1162 + 1164: 6(int) Load 8(invocation) + 1165: 117(ptr) AccessChain 37(data) 39 116 40 + 1166: 28(int64_t) Load 1165 + 1167: 17(ivec4) Load 19(ballot) + 1168: 28(int64_t) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1166 1167 + 1169: 117(ptr) AccessChain 37(data) 1164 116 40 + Store 1169 1168 + 1170: 6(int) Load 8(invocation) + 1171: 122(ptr) AccessChain 37(data) 45 116 + 1172: 29(i64vec4) Load 1171 + 1173:121(i64vec2) VectorShuffle 1172 1172 0 1 + 1174: 17(ivec4) Load 19(ballot) + 1175:121(i64vec2) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1173 1174 + 1176: 122(ptr) AccessChain 37(data) 1170 116 + 1177: 29(i64vec4) Load 1176 + 1178: 29(i64vec4) VectorShuffle 1177 1175 4 5 2 3 + Store 1176 1178 + 1179: 6(int) Load 8(invocation) + 1180: 122(ptr) AccessChain 37(data) 52 116 + 1181: 29(i64vec4) Load 1180 + 1182:127(i64vec3) VectorShuffle 1181 1181 0 1 2 + 1183: 17(ivec4) Load 19(ballot) + 1184:127(i64vec3) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1182 1183 + 1185: 122(ptr) AccessChain 37(data) 1179 116 + 1186: 29(i64vec4) Load 1185 + 1187: 29(i64vec4) VectorShuffle 1186 1184 4 5 6 3 + Store 1185 1187 + 1188: 6(int) Load 8(invocation) + 1189: 122(ptr) AccessChain 37(data) 58 116 + 1190: 29(i64vec4) Load 1189 + 1191: 17(ivec4) Load 19(ballot) + 1192: 29(i64vec4) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1190 1191 + 1193: 122(ptr) AccessChain 37(data) 1188 116 + Store 1193 1192 + 1194: 6(int) Load 8(invocation) + 1195: 117(ptr) AccessChain 37(data) 39 116 40 + 1196: 28(int64_t) Load 1195 + 1197: 17(ivec4) Load 19(ballot) + 1198: 28(int64_t) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1196 1197 + 1199: 117(ptr) AccessChain 37(data) 1194 116 40 + Store 1199 1198 + 1200: 6(int) Load 8(invocation) + 1201: 122(ptr) AccessChain 37(data) 45 116 + 1202: 29(i64vec4) Load 1201 + 1203:121(i64vec2) VectorShuffle 1202 1202 0 1 + 1204: 17(ivec4) Load 19(ballot) + 1205:121(i64vec2) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1203 1204 + 1206: 122(ptr) AccessChain 37(data) 1200 116 + 1207: 29(i64vec4) Load 1206 + 1208: 29(i64vec4) VectorShuffle 1207 1205 4 5 2 3 + Store 1206 1208 + 1209: 6(int) Load 8(invocation) + 1210: 122(ptr) AccessChain 37(data) 52 116 + 1211: 29(i64vec4) Load 1210 + 1212:127(i64vec3) VectorShuffle 1211 1211 0 1 2 + 1213: 17(ivec4) Load 19(ballot) + 1214:127(i64vec3) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1212 1213 + 1215: 122(ptr) AccessChain 37(data) 1209 116 + 1216: 29(i64vec4) Load 1215 + 1217: 29(i64vec4) VectorShuffle 1216 1214 4 5 6 3 + Store 1215 1217 + 1218: 6(int) Load 8(invocation) + 1219: 122(ptr) AccessChain 37(data) 58 116 + 1220: 29(i64vec4) Load 1219 + 1221: 17(ivec4) Load 19(ballot) + 1222: 29(i64vec4) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1220 1221 + 1223: 122(ptr) AccessChain 37(data) 1218 116 + Store 1223 1222 + 1224: 6(int) Load 8(invocation) + 1225: 136(ptr) AccessChain 37(data) 39 135 40 + 1226: 30(int64_t) Load 1225 + 1227: 17(ivec4) Load 19(ballot) + 1228: 30(int64_t) GroupNonUniformIAdd 177 PartitionedReduceNV 1226 1227 + 1229: 136(ptr) AccessChain 37(data) 1224 135 40 + Store 1229 1228 + 1230: 6(int) Load 8(invocation) + 1231: 141(ptr) AccessChain 37(data) 45 135 + 1232: 31(i64vec4) Load 1231 + 1233:140(i64vec2) VectorShuffle 1232 1232 0 1 + 1234: 17(ivec4) Load 19(ballot) + 1235:140(i64vec2) GroupNonUniformIAdd 177 PartitionedReduceNV 1233 1234 + 1236: 141(ptr) AccessChain 37(data) 1230 135 + 1237: 31(i64vec4) Load 1236 + 1238: 31(i64vec4) VectorShuffle 1237 1235 4 5 2 3 + Store 1236 1238 + 1239: 6(int) Load 8(invocation) + 1240: 141(ptr) AccessChain 37(data) 52 135 + 1241: 31(i64vec4) Load 1240 + 1242:146(i64vec3) VectorShuffle 1241 1241 0 1 2 + 1243: 17(ivec4) Load 19(ballot) + 1244:146(i64vec3) GroupNonUniformIAdd 177 PartitionedReduceNV 1242 1243 + 1245: 141(ptr) AccessChain 37(data) 1239 135 + 1246: 31(i64vec4) Load 1245 + 1247: 31(i64vec4) VectorShuffle 1246 1244 4 5 6 3 + Store 1245 1247 + 1248: 6(int) Load 8(invocation) + 1249: 141(ptr) AccessChain 37(data) 58 135 + 1250: 31(i64vec4) Load 1249 + 1251: 17(ivec4) Load 19(ballot) + 1252: 31(i64vec4) GroupNonUniformIAdd 177 PartitionedReduceNV 1250 1251 + 1253: 141(ptr) AccessChain 37(data) 1248 135 + Store 1253 1252 + 1254: 6(int) Load 8(invocation) + 1255: 136(ptr) AccessChain 37(data) 39 135 40 + 1256: 30(int64_t) Load 1255 + 1257: 17(ivec4) Load 19(ballot) + 1258: 30(int64_t) GroupNonUniformIMul 177 PartitionedReduceNV 1256 1257 + 1259: 136(ptr) AccessChain 37(data) 1254 135 40 + Store 1259 1258 + 1260: 6(int) Load 8(invocation) + 1261: 141(ptr) AccessChain 37(data) 45 135 + 1262: 31(i64vec4) Load 1261 + 1263:140(i64vec2) VectorShuffle 1262 1262 0 1 + 1264: 17(ivec4) Load 19(ballot) + 1265:140(i64vec2) GroupNonUniformIMul 177 PartitionedReduceNV 1263 1264 + 1266: 141(ptr) AccessChain 37(data) 1260 135 + 1267: 31(i64vec4) Load 1266 + 1268: 31(i64vec4) VectorShuffle 1267 1265 4 5 2 3 + Store 1266 1268 + 1269: 6(int) Load 8(invocation) + 1270: 141(ptr) AccessChain 37(data) 52 135 + 1271: 31(i64vec4) Load 1270 + 1272:146(i64vec3) VectorShuffle 1271 1271 0 1 2 + 1273: 17(ivec4) Load 19(ballot) + 1274:146(i64vec3) GroupNonUniformIMul 177 PartitionedReduceNV 1272 1273 + 1275: 141(ptr) AccessChain 37(data) 1269 135 + 1276: 31(i64vec4) Load 1275 + 1277: 31(i64vec4) VectorShuffle 1276 1274 4 5 6 3 + Store 1275 1277 + 1278: 6(int) Load 8(invocation) + 1279: 141(ptr) AccessChain 37(data) 58 135 + 1280: 31(i64vec4) Load 1279 + 1281: 17(ivec4) Load 19(ballot) + 1282: 31(i64vec4) GroupNonUniformIMul 177 PartitionedReduceNV 1280 1281 + 1283: 141(ptr) AccessChain 37(data) 1278 135 + Store 1283 1282 + 1284: 6(int) Load 8(invocation) + 1285: 136(ptr) AccessChain 37(data) 39 135 40 + 1286: 30(int64_t) Load 1285 + 1287: 17(ivec4) Load 19(ballot) + 1288: 30(int64_t) GroupNonUniformUMin 177 PartitionedReduceNV 1286 1287 + 1289: 136(ptr) AccessChain 37(data) 1284 135 40 + Store 1289 1288 + 1290: 6(int) Load 8(invocation) + 1291: 141(ptr) AccessChain 37(data) 45 135 + 1292: 31(i64vec4) Load 1291 + 1293:140(i64vec2) VectorShuffle 1292 1292 0 1 + 1294: 17(ivec4) Load 19(ballot) + 1295:140(i64vec2) GroupNonUniformUMin 177 PartitionedReduceNV 1293 1294 + 1296: 141(ptr) AccessChain 37(data) 1290 135 + 1297: 31(i64vec4) Load 1296 + 1298: 31(i64vec4) VectorShuffle 1297 1295 4 5 2 3 + Store 1296 1298 + 1299: 6(int) Load 8(invocation) + 1300: 141(ptr) AccessChain 37(data) 52 135 + 1301: 31(i64vec4) Load 1300 + 1302:146(i64vec3) VectorShuffle 1301 1301 0 1 2 + 1303: 17(ivec4) Load 19(ballot) + 1304:146(i64vec3) GroupNonUniformUMin 177 PartitionedReduceNV 1302 1303 + 1305: 141(ptr) AccessChain 37(data) 1299 135 + 1306: 31(i64vec4) Load 1305 + 1307: 31(i64vec4) VectorShuffle 1306 1304 4 5 6 3 + Store 1305 1307 + 1308: 6(int) Load 8(invocation) + 1309: 141(ptr) AccessChain 37(data) 58 135 + 1310: 31(i64vec4) Load 1309 + 1311: 17(ivec4) Load 19(ballot) + 1312: 31(i64vec4) GroupNonUniformUMin 177 PartitionedReduceNV 1310 1311 + 1313: 141(ptr) AccessChain 37(data) 1308 135 + Store 1313 1312 + 1314: 6(int) Load 8(invocation) + 1315: 136(ptr) AccessChain 37(data) 39 135 40 + 1316: 30(int64_t) Load 1315 + 1317: 17(ivec4) Load 19(ballot) + 1318: 30(int64_t) GroupNonUniformUMax 177 PartitionedReduceNV 1316 1317 + 1319: 136(ptr) AccessChain 37(data) 1314 135 40 + Store 1319 1318 + 1320: 6(int) Load 8(invocation) + 1321: 141(ptr) AccessChain 37(data) 45 135 + 1322: 31(i64vec4) Load 1321 + 1323:140(i64vec2) VectorShuffle 1322 1322 0 1 + 1324: 17(ivec4) Load 19(ballot) + 1325:140(i64vec2) GroupNonUniformUMax 177 PartitionedReduceNV 1323 1324 + 1326: 141(ptr) AccessChain 37(data) 1320 135 + 1327: 31(i64vec4) Load 1326 + 1328: 31(i64vec4) VectorShuffle 1327 1325 4 5 2 3 + Store 1326 1328 + 1329: 6(int) Load 8(invocation) + 1330: 141(ptr) AccessChain 37(data) 52 135 + 1331: 31(i64vec4) Load 1330 + 1332:146(i64vec3) VectorShuffle 1331 1331 0 1 2 + 1333: 17(ivec4) Load 19(ballot) + 1334:146(i64vec3) GroupNonUniformUMax 177 PartitionedReduceNV 1332 1333 + 1335: 141(ptr) AccessChain 37(data) 1329 135 + 1336: 31(i64vec4) Load 1335 + 1337: 31(i64vec4) VectorShuffle 1336 1334 4 5 6 3 + Store 1335 1337 + 1338: 6(int) Load 8(invocation) + 1339: 141(ptr) AccessChain 37(data) 58 135 + 1340: 31(i64vec4) Load 1339 + 1341: 17(ivec4) Load 19(ballot) + 1342: 31(i64vec4) GroupNonUniformUMax 177 PartitionedReduceNV 1340 1341 + 1343: 141(ptr) AccessChain 37(data) 1338 135 + Store 1343 1342 + 1344: 6(int) Load 8(invocation) + 1345: 136(ptr) AccessChain 37(data) 39 135 40 + 1346: 30(int64_t) Load 1345 + 1347: 17(ivec4) Load 19(ballot) + 1348: 30(int64_t) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1346 1347 + 1349: 136(ptr) AccessChain 37(data) 1344 135 40 + Store 1349 1348 + 1350: 6(int) Load 8(invocation) + 1351: 141(ptr) AccessChain 37(data) 45 135 + 1352: 31(i64vec4) Load 1351 + 1353:140(i64vec2) VectorShuffle 1352 1352 0 1 + 1354: 17(ivec4) Load 19(ballot) + 1355:140(i64vec2) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1353 1354 + 1356: 141(ptr) AccessChain 37(data) 1350 135 + 1357: 31(i64vec4) Load 1356 + 1358: 31(i64vec4) VectorShuffle 1357 1355 4 5 2 3 + Store 1356 1358 + 1359: 6(int) Load 8(invocation) + 1360: 141(ptr) AccessChain 37(data) 52 135 + 1361: 31(i64vec4) Load 1360 + 1362:146(i64vec3) VectorShuffle 1361 1361 0 1 2 + 1363: 17(ivec4) Load 19(ballot) + 1364:146(i64vec3) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1362 1363 + 1365: 141(ptr) AccessChain 37(data) 1359 135 + 1366: 31(i64vec4) Load 1365 + 1367: 31(i64vec4) VectorShuffle 1366 1364 4 5 6 3 + Store 1365 1367 + 1368: 6(int) Load 8(invocation) + 1369: 141(ptr) AccessChain 37(data) 58 135 + 1370: 31(i64vec4) Load 1369 + 1371: 17(ivec4) Load 19(ballot) + 1372: 31(i64vec4) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1370 1371 + 1373: 141(ptr) AccessChain 37(data) 1368 135 + Store 1373 1372 + 1374: 6(int) Load 8(invocation) + 1375: 136(ptr) AccessChain 37(data) 39 135 40 + 1376: 30(int64_t) Load 1375 + 1377: 17(ivec4) Load 19(ballot) + 1378: 30(int64_t) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1376 1377 + 1379: 136(ptr) AccessChain 37(data) 1374 135 40 + Store 1379 1378 + 1380: 6(int) Load 8(invocation) + 1381: 141(ptr) AccessChain 37(data) 45 135 + 1382: 31(i64vec4) Load 1381 + 1383:140(i64vec2) VectorShuffle 1382 1382 0 1 + 1384: 17(ivec4) Load 19(ballot) + 1385:140(i64vec2) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1383 1384 + 1386: 141(ptr) AccessChain 37(data) 1380 135 + 1387: 31(i64vec4) Load 1386 + 1388: 31(i64vec4) VectorShuffle 1387 1385 4 5 2 3 + Store 1386 1388 + 1389: 6(int) Load 8(invocation) + 1390: 141(ptr) AccessChain 37(data) 52 135 + 1391: 31(i64vec4) Load 1390 + 1392:146(i64vec3) VectorShuffle 1391 1391 0 1 2 + 1393: 17(ivec4) Load 19(ballot) + 1394:146(i64vec3) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1392 1393 + 1395: 141(ptr) AccessChain 37(data) 1389 135 + 1396: 31(i64vec4) Load 1395 + 1397: 31(i64vec4) VectorShuffle 1396 1394 4 5 6 3 + Store 1395 1397 + 1398: 6(int) Load 8(invocation) + 1399: 141(ptr) AccessChain 37(data) 58 135 + 1400: 31(i64vec4) Load 1399 + 1401: 17(ivec4) Load 19(ballot) + 1402: 31(i64vec4) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1400 1401 + 1403: 141(ptr) AccessChain 37(data) 1398 135 + Store 1403 1402 + 1404: 6(int) Load 8(invocation) + 1405: 136(ptr) AccessChain 37(data) 39 135 40 + 1406: 30(int64_t) Load 1405 + 1407: 17(ivec4) Load 19(ballot) + 1408: 30(int64_t) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1406 1407 + 1409: 136(ptr) AccessChain 37(data) 1404 135 40 + Store 1409 1408 + 1410: 6(int) Load 8(invocation) + 1411: 141(ptr) AccessChain 37(data) 45 135 + 1412: 31(i64vec4) Load 1411 + 1413:140(i64vec2) VectorShuffle 1412 1412 0 1 + 1414: 17(ivec4) Load 19(ballot) + 1415:140(i64vec2) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1413 1414 + 1416: 141(ptr) AccessChain 37(data) 1410 135 + 1417: 31(i64vec4) Load 1416 + 1418: 31(i64vec4) VectorShuffle 1417 1415 4 5 2 3 + Store 1416 1418 + 1419: 6(int) Load 8(invocation) + 1420: 141(ptr) AccessChain 37(data) 52 135 + 1421: 31(i64vec4) Load 1420 + 1422:146(i64vec3) VectorShuffle 1421 1421 0 1 2 + 1423: 17(ivec4) Load 19(ballot) + 1424:146(i64vec3) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1422 1423 + 1425: 141(ptr) AccessChain 37(data) 1419 135 + 1426: 31(i64vec4) Load 1425 + 1427: 31(i64vec4) VectorShuffle 1426 1424 4 5 6 3 + Store 1425 1427 + 1428: 6(int) Load 8(invocation) + 1429: 141(ptr) AccessChain 37(data) 58 135 + 1430: 31(i64vec4) Load 1429 + 1431: 17(ivec4) Load 19(ballot) + 1432: 31(i64vec4) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1430 1431 + 1433: 141(ptr) AccessChain 37(data) 1428 135 + Store 1433 1432 + 1434: 6(int) Load 8(invocation) + 1435: 155(ptr) AccessChain 37(data) 39 154 40 + 1436:32(float16_t) Load 1435 + 1437: 17(ivec4) Load 19(ballot) + 1438:32(float16_t) GroupNonUniformFAdd 177 PartitionedReduceNV 1436 1437 + 1439: 155(ptr) AccessChain 37(data) 1434 154 40 + Store 1439 1438 + 1440: 6(int) Load 8(invocation) + 1441: 160(ptr) AccessChain 37(data) 45 154 + 1442: 33(f16vec4) Load 1441 + 1443:159(f16vec2) VectorShuffle 1442 1442 0 1 + 1444: 17(ivec4) Load 19(ballot) + 1445:159(f16vec2) GroupNonUniformFAdd 177 PartitionedReduceNV 1443 1444 + 1446: 160(ptr) AccessChain 37(data) 1440 154 + 1447: 33(f16vec4) Load 1446 + 1448: 33(f16vec4) VectorShuffle 1447 1445 4 5 2 3 + Store 1446 1448 + 1449: 6(int) Load 8(invocation) + 1450: 160(ptr) AccessChain 37(data) 52 154 + 1451: 33(f16vec4) Load 1450 + 1452:165(f16vec3) VectorShuffle 1451 1451 0 1 2 + 1453: 17(ivec4) Load 19(ballot) + 1454:165(f16vec3) GroupNonUniformFAdd 177 PartitionedReduceNV 1452 1453 + 1455: 160(ptr) AccessChain 37(data) 1449 154 + 1456: 33(f16vec4) Load 1455 + 1457: 33(f16vec4) VectorShuffle 1456 1454 4 5 6 3 + Store 1455 1457 + 1458: 6(int) Load 8(invocation) + 1459: 160(ptr) AccessChain 37(data) 58 154 + 1460: 33(f16vec4) Load 1459 + 1461: 17(ivec4) Load 19(ballot) + 1462: 33(f16vec4) GroupNonUniformFAdd 177 PartitionedReduceNV 1460 1461 + 1463: 160(ptr) AccessChain 37(data) 1458 154 + Store 1463 1462 + 1464: 6(int) Load 8(invocation) + 1465: 155(ptr) AccessChain 37(data) 39 154 40 + 1466:32(float16_t) Load 1465 + 1467: 17(ivec4) Load 19(ballot) + 1468:32(float16_t) GroupNonUniformFMul 177 PartitionedReduceNV 1466 1467 + 1469: 155(ptr) AccessChain 37(data) 1464 154 40 + Store 1469 1468 + 1470: 6(int) Load 8(invocation) + 1471: 160(ptr) AccessChain 37(data) 45 154 + 1472: 33(f16vec4) Load 1471 + 1473:159(f16vec2) VectorShuffle 1472 1472 0 1 + 1474: 17(ivec4) Load 19(ballot) + 1475:159(f16vec2) GroupNonUniformFMul 177 PartitionedReduceNV 1473 1474 + 1476: 160(ptr) AccessChain 37(data) 1470 154 + 1477: 33(f16vec4) Load 1476 + 1478: 33(f16vec4) VectorShuffle 1477 1475 4 5 2 3 + Store 1476 1478 + 1479: 6(int) Load 8(invocation) + 1480: 160(ptr) AccessChain 37(data) 52 154 + 1481: 33(f16vec4) Load 1480 + 1482:165(f16vec3) VectorShuffle 1481 1481 0 1 2 + 1483: 17(ivec4) Load 19(ballot) + 1484:165(f16vec3) GroupNonUniformFMul 177 PartitionedReduceNV 1482 1483 + 1485: 160(ptr) AccessChain 37(data) 1479 154 + 1486: 33(f16vec4) Load 1485 + 1487: 33(f16vec4) VectorShuffle 1486 1484 4 5 6 3 + Store 1485 1487 + 1488: 6(int) Load 8(invocation) + 1489: 160(ptr) AccessChain 37(data) 58 154 + 1490: 33(f16vec4) Load 1489 + 1491: 17(ivec4) Load 19(ballot) + 1492: 33(f16vec4) GroupNonUniformFMul 177 PartitionedReduceNV 1490 1491 + 1493: 160(ptr) AccessChain 37(data) 1488 154 + Store 1493 1492 + 1494: 6(int) Load 8(invocation) + 1495: 155(ptr) AccessChain 37(data) 39 154 40 + 1496:32(float16_t) Load 1495 + 1497: 17(ivec4) Load 19(ballot) + 1498:32(float16_t) GroupNonUniformFMin 177 PartitionedReduceNV 1496 1497 + 1499: 155(ptr) AccessChain 37(data) 1494 154 40 + Store 1499 1498 + 1500: 6(int) Load 8(invocation) + 1501: 160(ptr) AccessChain 37(data) 45 154 + 1502: 33(f16vec4) Load 1501 + 1503:159(f16vec2) VectorShuffle 1502 1502 0 1 + 1504: 17(ivec4) Load 19(ballot) + 1505:159(f16vec2) GroupNonUniformFMin 177 PartitionedReduceNV 1503 1504 + 1506: 160(ptr) AccessChain 37(data) 1500 154 + 1507: 33(f16vec4) Load 1506 + 1508: 33(f16vec4) VectorShuffle 1507 1505 4 5 2 3 + Store 1506 1508 + 1509: 6(int) Load 8(invocation) + 1510: 160(ptr) AccessChain 37(data) 52 154 + 1511: 33(f16vec4) Load 1510 + 1512:165(f16vec3) VectorShuffle 1511 1511 0 1 2 + 1513: 17(ivec4) Load 19(ballot) + 1514:165(f16vec3) GroupNonUniformFMin 177 PartitionedReduceNV 1512 1513 + 1515: 160(ptr) AccessChain 37(data) 1509 154 + 1516: 33(f16vec4) Load 1515 + 1517: 33(f16vec4) VectorShuffle 1516 1514 4 5 6 3 + Store 1515 1517 + 1518: 6(int) Load 8(invocation) + 1519: 160(ptr) AccessChain 37(data) 58 154 + 1520: 33(f16vec4) Load 1519 + 1521: 17(ivec4) Load 19(ballot) + 1522: 33(f16vec4) GroupNonUniformFMin 177 PartitionedReduceNV 1520 1521 + 1523: 160(ptr) AccessChain 37(data) 1518 154 + Store 1523 1522 + 1524: 6(int) Load 8(invocation) + 1525: 155(ptr) AccessChain 37(data) 39 154 40 + 1526:32(float16_t) Load 1525 + 1527: 17(ivec4) Load 19(ballot) + 1528:32(float16_t) GroupNonUniformFMax 177 PartitionedReduceNV 1526 1527 + 1529: 155(ptr) AccessChain 37(data) 1524 154 40 + Store 1529 1528 + 1530: 6(int) Load 8(invocation) + 1531: 160(ptr) AccessChain 37(data) 45 154 + 1532: 33(f16vec4) Load 1531 + 1533:159(f16vec2) VectorShuffle 1532 1532 0 1 + 1534: 17(ivec4) Load 19(ballot) + 1535:159(f16vec2) GroupNonUniformFMax 177 PartitionedReduceNV 1533 1534 + 1536: 160(ptr) AccessChain 37(data) 1530 154 + 1537: 33(f16vec4) Load 1536 + 1538: 33(f16vec4) VectorShuffle 1537 1535 4 5 2 3 + Store 1536 1538 + 1539: 6(int) Load 8(invocation) + 1540: 160(ptr) AccessChain 37(data) 52 154 + 1541: 33(f16vec4) Load 1540 + 1542:165(f16vec3) VectorShuffle 1541 1541 0 1 2 + 1543: 17(ivec4) Load 19(ballot) + 1544:165(f16vec3) GroupNonUniformFMax 177 PartitionedReduceNV 1542 1543 + 1545: 160(ptr) AccessChain 37(data) 1539 154 + 1546: 33(f16vec4) Load 1545 + 1547: 33(f16vec4) VectorShuffle 1546 1544 4 5 6 3 + Store 1545 1547 + 1548: 6(int) Load 8(invocation) + 1549: 160(ptr) AccessChain 37(data) 58 154 + 1550: 33(f16vec4) Load 1549 + 1551: 17(ivec4) Load 19(ballot) + 1552: 33(f16vec4) GroupNonUniformFMax 177 PartitionedReduceNV 1550 1551 + 1553: 160(ptr) AccessChain 37(data) 1548 154 + Store 1553 1552 + Return + FunctionEnd diff --git a/Test/baseResults/spv.subgroupExtendedTypesPartitionedNeg.comp.out b/Test/baseResults/spv.subgroupExtendedTypesPartitionedNeg.comp.out new file mode 100644 index 00000000..c029617f --- /dev/null +++ b/Test/baseResults/spv.subgroupExtendedTypesPartitionedNeg.comp.out @@ -0,0 +1,217 @@ +spv.subgroupExtendedTypesPartitionedNeg.comp +ERROR: 0:27: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:28: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:29: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:30: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:32: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:33: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:34: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:35: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:37: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:38: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:39: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:40: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:42: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:43: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:44: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:45: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:47: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:48: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:49: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:50: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:52: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:53: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:54: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:55: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:57: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:58: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:59: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:60: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:62: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:63: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:64: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:65: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:67: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:68: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:69: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:70: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:72: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:73: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:74: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:75: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:77: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:78: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:79: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:80: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:82: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:83: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:84: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:85: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:87: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:88: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:89: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:90: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:92: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:93: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:94: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:95: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:97: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:98: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:99: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:100: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:102: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:103: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:104: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:105: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:107: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:108: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:109: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:110: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:112: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:113: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:114: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:115: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:117: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:118: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:119: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:120: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:122: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:123: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:124: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:125: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:127: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:128: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:129: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:130: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:132: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:133: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:134: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:135: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:137: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:138: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:139: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:140: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:142: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:143: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:144: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:145: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:147: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:148: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:149: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:150: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:152: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:153: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:154: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:155: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:157: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:158: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:159: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:160: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:162: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:163: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:164: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:165: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:167: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:168: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:169: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:170: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:172: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:173: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:174: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:175: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:177: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:178: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:179: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:180: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:182: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:183: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:184: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:185: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:187: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:188: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:189: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:190: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:192: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:193: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:194: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:195: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:197: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:198: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:199: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:200: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:202: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:203: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:204: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:205: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:207: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:208: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:209: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:210: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:212: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:213: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:214: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:215: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:217: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:218: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:219: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:220: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:222: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:223: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:224: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:225: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:227: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:228: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:229: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:230: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:232: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:233: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:234: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:235: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:237: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:238: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:239: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:240: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:242: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:243: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:244: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:245: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:247: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:248: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:249: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:250: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:252: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:253: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:254: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:255: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:257: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:258: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:259: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:260: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:262: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:263: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:264: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:265: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:267: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:268: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:269: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:270: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:272: ' temp highp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:273: ' temp highp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:274: ' temp highp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:275: 'layout( column_major std430) buffer highp 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:277: ' temp highp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:278: ' temp highp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:279: ' temp highp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:280: 'layout( column_major std430) buffer highp 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:282: ' temp highp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:283: ' temp highp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:284: ' temp highp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:285: 'layout( column_major std430) buffer highp 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:287: ' temp highp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:288: ' temp highp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:289: ' temp highp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:290: 'layout( column_major std430) buffer highp 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 212 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out b/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out new file mode 100644 index 00000000..7d37a410 --- /dev/null +++ b/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out @@ -0,0 +1,981 @@ +spv.subgroupExtendedTypesQuad.comp +// Module Version 10300 +// Generated by (magic number): 80007 +// Id's are bound by 806 + + Capability Shader + Capability Float16 + Capability Int64 + Capability Int16 + Capability Int8 + Capability GroupNonUniform + Capability GroupNonUniformQuad + Capability StorageUniformBufferBlock16 + Capability StorageBuffer8BitAccess + Extension "SPV_KHR_8bit_storage" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" 10 12 + ExecutionMode 4 LocalSize 8 1 1 + Source GLSL 450 + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" + SourceExtension "GL_EXT_shader_subgroup_extended_types_float16" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int16" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int64" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int8" + SourceExtension "GL_KHR_shader_subgroup_basic" + SourceExtension "GL_KHR_shader_subgroup_quad" + Name 4 "main" + Name 8 "invocation" + Name 10 "gl_SubgroupInvocationID" + Name 12 "gl_SubgroupSize" + Name 31 "Buffers" + MemberName 31(Buffers) 0 "i8" + MemberName 31(Buffers) 1 "u8" + MemberName 31(Buffers) 2 "i16" + MemberName 31(Buffers) 3 "u16" + MemberName 31(Buffers) 4 "i64" + MemberName 31(Buffers) 5 "u64" + MemberName 31(Buffers) 6 "f16" + Name 34 "data" + Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision + Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId + Decorate 11 RelaxedPrecision + Decorate 12(gl_SubgroupSize) RelaxedPrecision + Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize + Decorate 13 RelaxedPrecision + Decorate 14 RelaxedPrecision + Decorate 16 RelaxedPrecision + MemberDecorate 31(Buffers) 0 Offset 0 + MemberDecorate 31(Buffers) 1 Offset 4 + MemberDecorate 31(Buffers) 2 Offset 8 + MemberDecorate 31(Buffers) 3 Offset 16 + MemberDecorate 31(Buffers) 4 Offset 32 + MemberDecorate 31(Buffers) 5 Offset 64 + MemberDecorate 31(Buffers) 6 Offset 96 + Decorate 31(Buffers) Block + Decorate 34(data) DescriptorSet 0 + Decorate 34(data) Binding 0 + Decorate 805 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 9: TypePointer Input 6(int) +10(gl_SubgroupInvocationID): 9(ptr) Variable Input +12(gl_SubgroupSize): 9(ptr) Variable Input + 15: 6(int) Constant 4 + 17: TypeInt 8 1 + 18: TypeVector 17(int8_t) 4 + 19: TypeInt 8 0 + 20: TypeVector 19(int8_t) 4 + 21: TypeInt 16 1 + 22: TypeVector 21(int16_t) 4 + 23: TypeInt 16 0 + 24: TypeVector 23(int16_t) 4 + 25: TypeInt 64 1 + 26: TypeVector 25(int64_t) 4 + 27: TypeInt 64 0 + 28: TypeVector 27(int64_t) 4 + 29: TypeFloat 16 + 30: TypeVector 29(float16_t) 4 + 31(Buffers): TypeStruct 18(i8vec4) 20(i8vec4) 22(i16vec4) 24(i16vec4) 26(i64vec4) 28(i64vec4) 30(f16vec4) + 32: TypeArray 31(Buffers) 15 + 33: TypePointer StorageBuffer 32 + 34(data): 33(ptr) Variable StorageBuffer + 36: TypeInt 32 1 + 37: 36(int) Constant 0 + 38: 6(int) Constant 0 + 39: TypePointer StorageBuffer 17(int8_t) + 42: 6(int) Constant 1 + 43: 6(int) Constant 3 + 47: 36(int) Constant 1 + 48: TypeVector 17(int8_t) 2 + 49: TypePointer StorageBuffer 18(i8vec4) + 58: 36(int) Constant 2 + 59: TypeVector 17(int8_t) 3 + 68: 36(int) Constant 3 + 128: 6(int) Constant 2 + 153: TypePointer StorageBuffer 19(int8_t) + 159: TypeVector 19(int8_t) 2 + 160: TypePointer StorageBuffer 20(i8vec4) + 169: TypeVector 19(int8_t) 3 + 261: TypePointer StorageBuffer 21(int16_t) + 267: TypeVector 21(int16_t) 2 + 268: TypePointer StorageBuffer 22(i16vec4) + 277: TypeVector 21(int16_t) 3 + 369: TypePointer StorageBuffer 23(int16_t) + 375: TypeVector 23(int16_t) 2 + 376: TypePointer StorageBuffer 24(i16vec4) + 385: TypeVector 23(int16_t) 3 + 477: 36(int) Constant 4 + 478: TypePointer StorageBuffer 25(int64_t) + 484: TypeVector 25(int64_t) 2 + 485: TypePointer StorageBuffer 26(i64vec4) + 494: TypeVector 25(int64_t) 3 + 586: 36(int) Constant 5 + 587: TypePointer StorageBuffer 27(int64_t) + 593: TypeVector 27(int64_t) 2 + 594: TypePointer StorageBuffer 28(i64vec4) + 603: TypeVector 27(int64_t) 3 + 695: 36(int) Constant 6 + 696: TypePointer StorageBuffer 29(float16_t) + 702: TypeVector 29(float16_t) 2 + 703: TypePointer StorageBuffer 30(f16vec4) + 712: TypeVector 29(float16_t) 3 + 803: TypeVector 6(int) 3 + 804: 6(int) Constant 8 + 805: 803(ivec3) ConstantComposite 804 42 42 + 4(main): 2 Function None 3 + 5: Label + 8(invocation): 7(ptr) Variable Function + 11: 6(int) Load 10(gl_SubgroupInvocationID) + 13: 6(int) Load 12(gl_SubgroupSize) + 14: 6(int) IAdd 11 13 + 16: 6(int) UMod 14 15 + Store 8(invocation) 16 + 35: 6(int) Load 8(invocation) + 40: 39(ptr) AccessChain 34(data) 37 37 38 + 41: 17(int8_t) Load 40 + 44: 17(int8_t) GroupNonUniformQuadBroadcast 43 41 42 + 45: 39(ptr) AccessChain 34(data) 35 37 38 + Store 45 44 + 46: 6(int) Load 8(invocation) + 50: 49(ptr) AccessChain 34(data) 47 37 + 51: 18(i8vec4) Load 50 + 52: 48(i8vec2) VectorShuffle 51 51 0 1 + 53: 48(i8vec2) GroupNonUniformQuadBroadcast 43 52 42 + 54: 49(ptr) AccessChain 34(data) 46 37 + 55: 18(i8vec4) Load 54 + 56: 18(i8vec4) VectorShuffle 55 53 4 5 2 3 + Store 54 56 + 57: 6(int) Load 8(invocation) + 60: 49(ptr) AccessChain 34(data) 58 37 + 61: 18(i8vec4) Load 60 + 62: 59(i8vec3) VectorShuffle 61 61 0 1 2 + 63: 59(i8vec3) GroupNonUniformQuadBroadcast 43 62 42 + 64: 49(ptr) AccessChain 34(data) 57 37 + 65: 18(i8vec4) Load 64 + 66: 18(i8vec4) VectorShuffle 65 63 4 5 6 3 + Store 64 66 + 67: 6(int) Load 8(invocation) + 69: 49(ptr) AccessChain 34(data) 68 37 + 70: 18(i8vec4) Load 69 + 71: 18(i8vec4) GroupNonUniformQuadBroadcast 43 70 42 + 72: 49(ptr) AccessChain 34(data) 67 37 + Store 72 71 + 73: 6(int) Load 8(invocation) + 74: 39(ptr) AccessChain 34(data) 37 37 38 + 75: 17(int8_t) Load 74 + 76: 17(int8_t) GroupNonUniformQuadSwap 43 75 38 + 77: 39(ptr) AccessChain 34(data) 73 37 38 + Store 77 76 + 78: 6(int) Load 8(invocation) + 79: 49(ptr) AccessChain 34(data) 47 37 + 80: 18(i8vec4) Load 79 + 81: 48(i8vec2) VectorShuffle 80 80 0 1 + 82: 48(i8vec2) GroupNonUniformQuadSwap 43 81 38 + 83: 49(ptr) AccessChain 34(data) 78 37 + 84: 18(i8vec4) Load 83 + 85: 18(i8vec4) VectorShuffle 84 82 4 5 2 3 + Store 83 85 + 86: 6(int) Load 8(invocation) + 87: 49(ptr) AccessChain 34(data) 58 37 + 88: 18(i8vec4) Load 87 + 89: 59(i8vec3) VectorShuffle 88 88 0 1 2 + 90: 59(i8vec3) GroupNonUniformQuadSwap 43 89 38 + 91: 49(ptr) AccessChain 34(data) 86 37 + 92: 18(i8vec4) Load 91 + 93: 18(i8vec4) VectorShuffle 92 90 4 5 6 3 + Store 91 93 + 94: 6(int) Load 8(invocation) + 95: 49(ptr) AccessChain 34(data) 68 37 + 96: 18(i8vec4) Load 95 + 97: 18(i8vec4) GroupNonUniformQuadSwap 43 96 38 + 98: 49(ptr) AccessChain 34(data) 94 37 + Store 98 97 + 99: 6(int) Load 8(invocation) + 100: 39(ptr) AccessChain 34(data) 37 37 38 + 101: 17(int8_t) Load 100 + 102: 17(int8_t) GroupNonUniformQuadSwap 43 101 42 + 103: 39(ptr) AccessChain 34(data) 99 37 38 + Store 103 102 + 104: 6(int) Load 8(invocation) + 105: 49(ptr) AccessChain 34(data) 47 37 + 106: 18(i8vec4) Load 105 + 107: 48(i8vec2) VectorShuffle 106 106 0 1 + 108: 48(i8vec2) GroupNonUniformQuadSwap 43 107 42 + 109: 49(ptr) AccessChain 34(data) 104 37 + 110: 18(i8vec4) Load 109 + 111: 18(i8vec4) VectorShuffle 110 108 4 5 2 3 + Store 109 111 + 112: 6(int) Load 8(invocation) + 113: 49(ptr) AccessChain 34(data) 58 37 + 114: 18(i8vec4) Load 113 + 115: 59(i8vec3) VectorShuffle 114 114 0 1 2 + 116: 59(i8vec3) GroupNonUniformQuadSwap 43 115 42 + 117: 49(ptr) AccessChain 34(data) 112 37 + 118: 18(i8vec4) Load 117 + 119: 18(i8vec4) VectorShuffle 118 116 4 5 6 3 + Store 117 119 + 120: 6(int) Load 8(invocation) + 121: 49(ptr) AccessChain 34(data) 68 37 + 122: 18(i8vec4) Load 121 + 123: 18(i8vec4) GroupNonUniformQuadSwap 43 122 42 + 124: 49(ptr) AccessChain 34(data) 120 37 + Store 124 123 + 125: 6(int) Load 8(invocation) + 126: 39(ptr) AccessChain 34(data) 37 37 38 + 127: 17(int8_t) Load 126 + 129: 17(int8_t) GroupNonUniformQuadSwap 43 127 128 + 130: 39(ptr) AccessChain 34(data) 125 37 38 + Store 130 129 + 131: 6(int) Load 8(invocation) + 132: 49(ptr) AccessChain 34(data) 47 37 + 133: 18(i8vec4) Load 132 + 134: 48(i8vec2) VectorShuffle 133 133 0 1 + 135: 48(i8vec2) GroupNonUniformQuadSwap 43 134 128 + 136: 49(ptr) AccessChain 34(data) 131 37 + 137: 18(i8vec4) Load 136 + 138: 18(i8vec4) VectorShuffle 137 135 4 5 2 3 + Store 136 138 + 139: 6(int) Load 8(invocation) + 140: 49(ptr) AccessChain 34(data) 58 37 + 141: 18(i8vec4) Load 140 + 142: 59(i8vec3) VectorShuffle 141 141 0 1 2 + 143: 59(i8vec3) GroupNonUniformQuadSwap 43 142 128 + 144: 49(ptr) AccessChain 34(data) 139 37 + 145: 18(i8vec4) Load 144 + 146: 18(i8vec4) VectorShuffle 145 143 4 5 6 3 + Store 144 146 + 147: 6(int) Load 8(invocation) + 148: 49(ptr) AccessChain 34(data) 68 37 + 149: 18(i8vec4) Load 148 + 150: 18(i8vec4) GroupNonUniformQuadSwap 43 149 128 + 151: 49(ptr) AccessChain 34(data) 147 37 + Store 151 150 + 152: 6(int) Load 8(invocation) + 154: 153(ptr) AccessChain 34(data) 37 47 38 + 155: 19(int8_t) Load 154 + 156: 19(int8_t) GroupNonUniformQuadBroadcast 43 155 42 + 157: 153(ptr) AccessChain 34(data) 152 47 38 + Store 157 156 + 158: 6(int) Load 8(invocation) + 161: 160(ptr) AccessChain 34(data) 47 47 + 162: 20(i8vec4) Load 161 + 163: 159(i8vec2) VectorShuffle 162 162 0 1 + 164: 159(i8vec2) GroupNonUniformQuadBroadcast 43 163 42 + 165: 160(ptr) AccessChain 34(data) 158 47 + 166: 20(i8vec4) Load 165 + 167: 20(i8vec4) VectorShuffle 166 164 4 5 2 3 + Store 165 167 + 168: 6(int) Load 8(invocation) + 170: 160(ptr) AccessChain 34(data) 58 47 + 171: 20(i8vec4) Load 170 + 172: 169(i8vec3) VectorShuffle 171 171 0 1 2 + 173: 169(i8vec3) GroupNonUniformQuadBroadcast 43 172 42 + 174: 160(ptr) AccessChain 34(data) 168 47 + 175: 20(i8vec4) Load 174 + 176: 20(i8vec4) VectorShuffle 175 173 4 5 6 3 + Store 174 176 + 177: 6(int) Load 8(invocation) + 178: 160(ptr) AccessChain 34(data) 68 47 + 179: 20(i8vec4) Load 178 + 180: 20(i8vec4) GroupNonUniformQuadBroadcast 43 179 42 + 181: 160(ptr) AccessChain 34(data) 177 47 + Store 181 180 + 182: 6(int) Load 8(invocation) + 183: 153(ptr) AccessChain 34(data) 37 47 38 + 184: 19(int8_t) Load 183 + 185: 19(int8_t) GroupNonUniformQuadSwap 43 184 38 + 186: 153(ptr) AccessChain 34(data) 182 47 38 + Store 186 185 + 187: 6(int) Load 8(invocation) + 188: 160(ptr) AccessChain 34(data) 47 47 + 189: 20(i8vec4) Load 188 + 190: 159(i8vec2) VectorShuffle 189 189 0 1 + 191: 159(i8vec2) GroupNonUniformQuadSwap 43 190 38 + 192: 160(ptr) AccessChain 34(data) 187 47 + 193: 20(i8vec4) Load 192 + 194: 20(i8vec4) VectorShuffle 193 191 4 5 2 3 + Store 192 194 + 195: 6(int) Load 8(invocation) + 196: 160(ptr) AccessChain 34(data) 58 47 + 197: 20(i8vec4) Load 196 + 198: 169(i8vec3) VectorShuffle 197 197 0 1 2 + 199: 169(i8vec3) GroupNonUniformQuadSwap 43 198 38 + 200: 160(ptr) AccessChain 34(data) 195 47 + 201: 20(i8vec4) Load 200 + 202: 20(i8vec4) VectorShuffle 201 199 4 5 6 3 + Store 200 202 + 203: 6(int) Load 8(invocation) + 204: 160(ptr) AccessChain 34(data) 68 47 + 205: 20(i8vec4) Load 204 + 206: 20(i8vec4) GroupNonUniformQuadSwap 43 205 38 + 207: 160(ptr) AccessChain 34(data) 203 47 + Store 207 206 + 208: 6(int) Load 8(invocation) + 209: 153(ptr) AccessChain 34(data) 37 47 38 + 210: 19(int8_t) Load 209 + 211: 19(int8_t) GroupNonUniformQuadSwap 43 210 42 + 212: 153(ptr) AccessChain 34(data) 208 47 38 + Store 212 211 + 213: 6(int) Load 8(invocation) + 214: 160(ptr) AccessChain 34(data) 47 47 + 215: 20(i8vec4) Load 214 + 216: 159(i8vec2) VectorShuffle 215 215 0 1 + 217: 159(i8vec2) GroupNonUniformQuadSwap 43 216 42 + 218: 160(ptr) AccessChain 34(data) 213 47 + 219: 20(i8vec4) Load 218 + 220: 20(i8vec4) VectorShuffle 219 217 4 5 2 3 + Store 218 220 + 221: 6(int) Load 8(invocation) + 222: 160(ptr) AccessChain 34(data) 58 47 + 223: 20(i8vec4) Load 222 + 224: 169(i8vec3) VectorShuffle 223 223 0 1 2 + 225: 169(i8vec3) GroupNonUniformQuadSwap 43 224 42 + 226: 160(ptr) AccessChain 34(data) 221 47 + 227: 20(i8vec4) Load 226 + 228: 20(i8vec4) VectorShuffle 227 225 4 5 6 3 + Store 226 228 + 229: 6(int) Load 8(invocation) + 230: 160(ptr) AccessChain 34(data) 68 47 + 231: 20(i8vec4) Load 230 + 232: 20(i8vec4) GroupNonUniformQuadSwap 43 231 42 + 233: 160(ptr) AccessChain 34(data) 229 47 + Store 233 232 + 234: 6(int) Load 8(invocation) + 235: 153(ptr) AccessChain 34(data) 37 47 38 + 236: 19(int8_t) Load 235 + 237: 19(int8_t) GroupNonUniformQuadSwap 43 236 128 + 238: 153(ptr) AccessChain 34(data) 234 47 38 + Store 238 237 + 239: 6(int) Load 8(invocation) + 240: 160(ptr) AccessChain 34(data) 47 47 + 241: 20(i8vec4) Load 240 + 242: 159(i8vec2) VectorShuffle 241 241 0 1 + 243: 159(i8vec2) GroupNonUniformQuadSwap 43 242 128 + 244: 160(ptr) AccessChain 34(data) 239 47 + 245: 20(i8vec4) Load 244 + 246: 20(i8vec4) VectorShuffle 245 243 4 5 2 3 + Store 244 246 + 247: 6(int) Load 8(invocation) + 248: 160(ptr) AccessChain 34(data) 58 47 + 249: 20(i8vec4) Load 248 + 250: 169(i8vec3) VectorShuffle 249 249 0 1 2 + 251: 169(i8vec3) GroupNonUniformQuadSwap 43 250 128 + 252: 160(ptr) AccessChain 34(data) 247 47 + 253: 20(i8vec4) Load 252 + 254: 20(i8vec4) VectorShuffle 253 251 4 5 6 3 + Store 252 254 + 255: 6(int) Load 8(invocation) + 256: 160(ptr) AccessChain 34(data) 68 47 + 257: 20(i8vec4) Load 256 + 258: 20(i8vec4) GroupNonUniformQuadSwap 43 257 128 + 259: 160(ptr) AccessChain 34(data) 255 47 + Store 259 258 + 260: 6(int) Load 8(invocation) + 262: 261(ptr) AccessChain 34(data) 37 58 38 + 263: 21(int16_t) Load 262 + 264: 21(int16_t) GroupNonUniformQuadBroadcast 43 263 42 + 265: 261(ptr) AccessChain 34(data) 260 58 38 + Store 265 264 + 266: 6(int) Load 8(invocation) + 269: 268(ptr) AccessChain 34(data) 47 58 + 270: 22(i16vec4) Load 269 + 271:267(i16vec2) VectorShuffle 270 270 0 1 + 272:267(i16vec2) GroupNonUniformQuadBroadcast 43 271 42 + 273: 268(ptr) AccessChain 34(data) 266 58 + 274: 22(i16vec4) Load 273 + 275: 22(i16vec4) VectorShuffle 274 272 4 5 2 3 + Store 273 275 + 276: 6(int) Load 8(invocation) + 278: 268(ptr) AccessChain 34(data) 58 58 + 279: 22(i16vec4) Load 278 + 280:277(i16vec3) VectorShuffle 279 279 0 1 2 + 281:277(i16vec3) GroupNonUniformQuadBroadcast 43 280 42 + 282: 268(ptr) AccessChain 34(data) 276 58 + 283: 22(i16vec4) Load 282 + 284: 22(i16vec4) VectorShuffle 283 281 4 5 6 3 + Store 282 284 + 285: 6(int) Load 8(invocation) + 286: 268(ptr) AccessChain 34(data) 68 58 + 287: 22(i16vec4) Load 286 + 288: 22(i16vec4) GroupNonUniformQuadBroadcast 43 287 42 + 289: 268(ptr) AccessChain 34(data) 285 58 + Store 289 288 + 290: 6(int) Load 8(invocation) + 291: 261(ptr) AccessChain 34(data) 37 58 38 + 292: 21(int16_t) Load 291 + 293: 21(int16_t) GroupNonUniformQuadSwap 43 292 38 + 294: 261(ptr) AccessChain 34(data) 290 58 38 + Store 294 293 + 295: 6(int) Load 8(invocation) + 296: 268(ptr) AccessChain 34(data) 47 58 + 297: 22(i16vec4) Load 296 + 298:267(i16vec2) VectorShuffle 297 297 0 1 + 299:267(i16vec2) GroupNonUniformQuadSwap 43 298 38 + 300: 268(ptr) AccessChain 34(data) 295 58 + 301: 22(i16vec4) Load 300 + 302: 22(i16vec4) VectorShuffle 301 299 4 5 2 3 + Store 300 302 + 303: 6(int) Load 8(invocation) + 304: 268(ptr) AccessChain 34(data) 58 58 + 305: 22(i16vec4) Load 304 + 306:277(i16vec3) VectorShuffle 305 305 0 1 2 + 307:277(i16vec3) GroupNonUniformQuadSwap 43 306 38 + 308: 268(ptr) AccessChain 34(data) 303 58 + 309: 22(i16vec4) Load 308 + 310: 22(i16vec4) VectorShuffle 309 307 4 5 6 3 + Store 308 310 + 311: 6(int) Load 8(invocation) + 312: 268(ptr) AccessChain 34(data) 68 58 + 313: 22(i16vec4) Load 312 + 314: 22(i16vec4) GroupNonUniformQuadSwap 43 313 38 + 315: 268(ptr) AccessChain 34(data) 311 58 + Store 315 314 + 316: 6(int) Load 8(invocation) + 317: 261(ptr) AccessChain 34(data) 37 58 38 + 318: 21(int16_t) Load 317 + 319: 21(int16_t) GroupNonUniformQuadSwap 43 318 42 + 320: 261(ptr) AccessChain 34(data) 316 58 38 + Store 320 319 + 321: 6(int) Load 8(invocation) + 322: 268(ptr) AccessChain 34(data) 47 58 + 323: 22(i16vec4) Load 322 + 324:267(i16vec2) VectorShuffle 323 323 0 1 + 325:267(i16vec2) GroupNonUniformQuadSwap 43 324 42 + 326: 268(ptr) AccessChain 34(data) 321 58 + 327: 22(i16vec4) Load 326 + 328: 22(i16vec4) VectorShuffle 327 325 4 5 2 3 + Store 326 328 + 329: 6(int) Load 8(invocation) + 330: 268(ptr) AccessChain 34(data) 58 58 + 331: 22(i16vec4) Load 330 + 332:277(i16vec3) VectorShuffle 331 331 0 1 2 + 333:277(i16vec3) GroupNonUniformQuadSwap 43 332 42 + 334: 268(ptr) AccessChain 34(data) 329 58 + 335: 22(i16vec4) Load 334 + 336: 22(i16vec4) VectorShuffle 335 333 4 5 6 3 + Store 334 336 + 337: 6(int) Load 8(invocation) + 338: 268(ptr) AccessChain 34(data) 68 58 + 339: 22(i16vec4) Load 338 + 340: 22(i16vec4) GroupNonUniformQuadSwap 43 339 42 + 341: 268(ptr) AccessChain 34(data) 337 58 + Store 341 340 + 342: 6(int) Load 8(invocation) + 343: 261(ptr) AccessChain 34(data) 37 58 38 + 344: 21(int16_t) Load 343 + 345: 21(int16_t) GroupNonUniformQuadSwap 43 344 128 + 346: 261(ptr) AccessChain 34(data) 342 58 38 + Store 346 345 + 347: 6(int) Load 8(invocation) + 348: 268(ptr) AccessChain 34(data) 47 58 + 349: 22(i16vec4) Load 348 + 350:267(i16vec2) VectorShuffle 349 349 0 1 + 351:267(i16vec2) GroupNonUniformQuadSwap 43 350 128 + 352: 268(ptr) AccessChain 34(data) 347 58 + 353: 22(i16vec4) Load 352 + 354: 22(i16vec4) VectorShuffle 353 351 4 5 2 3 + Store 352 354 + 355: 6(int) Load 8(invocation) + 356: 268(ptr) AccessChain 34(data) 58 58 + 357: 22(i16vec4) Load 356 + 358:277(i16vec3) VectorShuffle 357 357 0 1 2 + 359:277(i16vec3) GroupNonUniformQuadSwap 43 358 128 + 360: 268(ptr) AccessChain 34(data) 355 58 + 361: 22(i16vec4) Load 360 + 362: 22(i16vec4) VectorShuffle 361 359 4 5 6 3 + Store 360 362 + 363: 6(int) Load 8(invocation) + 364: 268(ptr) AccessChain 34(data) 68 58 + 365: 22(i16vec4) Load 364 + 366: 22(i16vec4) GroupNonUniformQuadSwap 43 365 128 + 367: 268(ptr) AccessChain 34(data) 363 58 + Store 367 366 + 368: 6(int) Load 8(invocation) + 370: 369(ptr) AccessChain 34(data) 37 68 38 + 371: 23(int16_t) Load 370 + 372: 23(int16_t) GroupNonUniformQuadBroadcast 43 371 42 + 373: 369(ptr) AccessChain 34(data) 368 68 38 + Store 373 372 + 374: 6(int) Load 8(invocation) + 377: 376(ptr) AccessChain 34(data) 47 68 + 378: 24(i16vec4) Load 377 + 379:375(i16vec2) VectorShuffle 378 378 0 1 + 380:375(i16vec2) GroupNonUniformQuadBroadcast 43 379 42 + 381: 376(ptr) AccessChain 34(data) 374 68 + 382: 24(i16vec4) Load 381 + 383: 24(i16vec4) VectorShuffle 382 380 4 5 2 3 + Store 381 383 + 384: 6(int) Load 8(invocation) + 386: 376(ptr) AccessChain 34(data) 58 68 + 387: 24(i16vec4) Load 386 + 388:385(i16vec3) VectorShuffle 387 387 0 1 2 + 389:385(i16vec3) GroupNonUniformQuadBroadcast 43 388 42 + 390: 376(ptr) AccessChain 34(data) 384 68 + 391: 24(i16vec4) Load 390 + 392: 24(i16vec4) VectorShuffle 391 389 4 5 6 3 + Store 390 392 + 393: 6(int) Load 8(invocation) + 394: 376(ptr) AccessChain 34(data) 68 68 + 395: 24(i16vec4) Load 394 + 396: 24(i16vec4) GroupNonUniformQuadBroadcast 43 395 42 + 397: 376(ptr) AccessChain 34(data) 393 68 + Store 397 396 + 398: 6(int) Load 8(invocation) + 399: 369(ptr) AccessChain 34(data) 37 68 38 + 400: 23(int16_t) Load 399 + 401: 23(int16_t) GroupNonUniformQuadSwap 43 400 38 + 402: 369(ptr) AccessChain 34(data) 398 68 38 + Store 402 401 + 403: 6(int) Load 8(invocation) + 404: 376(ptr) AccessChain 34(data) 47 68 + 405: 24(i16vec4) Load 404 + 406:375(i16vec2) VectorShuffle 405 405 0 1 + 407:375(i16vec2) GroupNonUniformQuadSwap 43 406 38 + 408: 376(ptr) AccessChain 34(data) 403 68 + 409: 24(i16vec4) Load 408 + 410: 24(i16vec4) VectorShuffle 409 407 4 5 2 3 + Store 408 410 + 411: 6(int) Load 8(invocation) + 412: 376(ptr) AccessChain 34(data) 58 68 + 413: 24(i16vec4) Load 412 + 414:385(i16vec3) VectorShuffle 413 413 0 1 2 + 415:385(i16vec3) GroupNonUniformQuadSwap 43 414 38 + 416: 376(ptr) AccessChain 34(data) 411 68 + 417: 24(i16vec4) Load 416 + 418: 24(i16vec4) VectorShuffle 417 415 4 5 6 3 + Store 416 418 + 419: 6(int) Load 8(invocation) + 420: 376(ptr) AccessChain 34(data) 68 68 + 421: 24(i16vec4) Load 420 + 422: 24(i16vec4) GroupNonUniformQuadSwap 43 421 38 + 423: 376(ptr) AccessChain 34(data) 419 68 + Store 423 422 + 424: 6(int) Load 8(invocation) + 425: 369(ptr) AccessChain 34(data) 37 68 38 + 426: 23(int16_t) Load 425 + 427: 23(int16_t) GroupNonUniformQuadSwap 43 426 42 + 428: 369(ptr) AccessChain 34(data) 424 68 38 + Store 428 427 + 429: 6(int) Load 8(invocation) + 430: 376(ptr) AccessChain 34(data) 47 68 + 431: 24(i16vec4) Load 430 + 432:375(i16vec2) VectorShuffle 431 431 0 1 + 433:375(i16vec2) GroupNonUniformQuadSwap 43 432 42 + 434: 376(ptr) AccessChain 34(data) 429 68 + 435: 24(i16vec4) Load 434 + 436: 24(i16vec4) VectorShuffle 435 433 4 5 2 3 + Store 434 436 + 437: 6(int) Load 8(invocation) + 438: 376(ptr) AccessChain 34(data) 58 68 + 439: 24(i16vec4) Load 438 + 440:385(i16vec3) VectorShuffle 439 439 0 1 2 + 441:385(i16vec3) GroupNonUniformQuadSwap 43 440 42 + 442: 376(ptr) AccessChain 34(data) 437 68 + 443: 24(i16vec4) Load 442 + 444: 24(i16vec4) VectorShuffle 443 441 4 5 6 3 + Store 442 444 + 445: 6(int) Load 8(invocation) + 446: 376(ptr) AccessChain 34(data) 68 68 + 447: 24(i16vec4) Load 446 + 448: 24(i16vec4) GroupNonUniformQuadSwap 43 447 42 + 449: 376(ptr) AccessChain 34(data) 445 68 + Store 449 448 + 450: 6(int) Load 8(invocation) + 451: 369(ptr) AccessChain 34(data) 37 68 38 + 452: 23(int16_t) Load 451 + 453: 23(int16_t) GroupNonUniformQuadSwap 43 452 128 + 454: 369(ptr) AccessChain 34(data) 450 68 38 + Store 454 453 + 455: 6(int) Load 8(invocation) + 456: 376(ptr) AccessChain 34(data) 47 68 + 457: 24(i16vec4) Load 456 + 458:375(i16vec2) VectorShuffle 457 457 0 1 + 459:375(i16vec2) GroupNonUniformQuadSwap 43 458 128 + 460: 376(ptr) AccessChain 34(data) 455 68 + 461: 24(i16vec4) Load 460 + 462: 24(i16vec4) VectorShuffle 461 459 4 5 2 3 + Store 460 462 + 463: 6(int) Load 8(invocation) + 464: 376(ptr) AccessChain 34(data) 58 68 + 465: 24(i16vec4) Load 464 + 466:385(i16vec3) VectorShuffle 465 465 0 1 2 + 467:385(i16vec3) GroupNonUniformQuadSwap 43 466 128 + 468: 376(ptr) AccessChain 34(data) 463 68 + 469: 24(i16vec4) Load 468 + 470: 24(i16vec4) VectorShuffle 469 467 4 5 6 3 + Store 468 470 + 471: 6(int) Load 8(invocation) + 472: 376(ptr) AccessChain 34(data) 68 68 + 473: 24(i16vec4) Load 472 + 474: 24(i16vec4) GroupNonUniformQuadSwap 43 473 128 + 475: 376(ptr) AccessChain 34(data) 471 68 + Store 475 474 + 476: 6(int) Load 8(invocation) + 479: 478(ptr) AccessChain 34(data) 37 477 38 + 480: 25(int64_t) Load 479 + 481: 25(int64_t) GroupNonUniformQuadBroadcast 43 480 42 + 482: 478(ptr) AccessChain 34(data) 476 477 38 + Store 482 481 + 483: 6(int) Load 8(invocation) + 486: 485(ptr) AccessChain 34(data) 47 477 + 487: 26(i64vec4) Load 486 + 488:484(i64vec2) VectorShuffle 487 487 0 1 + 489:484(i64vec2) GroupNonUniformQuadBroadcast 43 488 42 + 490: 485(ptr) AccessChain 34(data) 483 477 + 491: 26(i64vec4) Load 490 + 492: 26(i64vec4) VectorShuffle 491 489 4 5 2 3 + Store 490 492 + 493: 6(int) Load 8(invocation) + 495: 485(ptr) AccessChain 34(data) 58 477 + 496: 26(i64vec4) Load 495 + 497:494(i64vec3) VectorShuffle 496 496 0 1 2 + 498:494(i64vec3) GroupNonUniformQuadBroadcast 43 497 42 + 499: 485(ptr) AccessChain 34(data) 493 477 + 500: 26(i64vec4) Load 499 + 501: 26(i64vec4) VectorShuffle 500 498 4 5 6 3 + Store 499 501 + 502: 6(int) Load 8(invocation) + 503: 485(ptr) AccessChain 34(data) 68 477 + 504: 26(i64vec4) Load 503 + 505: 26(i64vec4) GroupNonUniformQuadBroadcast 43 504 42 + 506: 485(ptr) AccessChain 34(data) 502 477 + Store 506 505 + 507: 6(int) Load 8(invocation) + 508: 478(ptr) AccessChain 34(data) 37 477 38 + 509: 25(int64_t) Load 508 + 510: 25(int64_t) GroupNonUniformQuadSwap 43 509 38 + 511: 478(ptr) AccessChain 34(data) 507 477 38 + Store 511 510 + 512: 6(int) Load 8(invocation) + 513: 485(ptr) AccessChain 34(data) 47 477 + 514: 26(i64vec4) Load 513 + 515:484(i64vec2) VectorShuffle 514 514 0 1 + 516:484(i64vec2) GroupNonUniformQuadSwap 43 515 38 + 517: 485(ptr) AccessChain 34(data) 512 477 + 518: 26(i64vec4) Load 517 + 519: 26(i64vec4) VectorShuffle 518 516 4 5 2 3 + Store 517 519 + 520: 6(int) Load 8(invocation) + 521: 485(ptr) AccessChain 34(data) 58 477 + 522: 26(i64vec4) Load 521 + 523:494(i64vec3) VectorShuffle 522 522 0 1 2 + 524:494(i64vec3) GroupNonUniformQuadSwap 43 523 38 + 525: 485(ptr) AccessChain 34(data) 520 477 + 526: 26(i64vec4) Load 525 + 527: 26(i64vec4) VectorShuffle 526 524 4 5 6 3 + Store 525 527 + 528: 6(int) Load 8(invocation) + 529: 485(ptr) AccessChain 34(data) 68 477 + 530: 26(i64vec4) Load 529 + 531: 26(i64vec4) GroupNonUniformQuadSwap 43 530 38 + 532: 485(ptr) AccessChain 34(data) 528 477 + Store 532 531 + 533: 6(int) Load 8(invocation) + 534: 478(ptr) AccessChain 34(data) 37 477 38 + 535: 25(int64_t) Load 534 + 536: 25(int64_t) GroupNonUniformQuadSwap 43 535 42 + 537: 478(ptr) AccessChain 34(data) 533 477 38 + Store 537 536 + 538: 6(int) Load 8(invocation) + 539: 485(ptr) AccessChain 34(data) 47 477 + 540: 26(i64vec4) Load 539 + 541:484(i64vec2) VectorShuffle 540 540 0 1 + 542:484(i64vec2) GroupNonUniformQuadSwap 43 541 42 + 543: 485(ptr) AccessChain 34(data) 538 477 + 544: 26(i64vec4) Load 543 + 545: 26(i64vec4) VectorShuffle 544 542 4 5 2 3 + Store 543 545 + 546: 6(int) Load 8(invocation) + 547: 485(ptr) AccessChain 34(data) 58 477 + 548: 26(i64vec4) Load 547 + 549:494(i64vec3) VectorShuffle 548 548 0 1 2 + 550:494(i64vec3) GroupNonUniformQuadSwap 43 549 42 + 551: 485(ptr) AccessChain 34(data) 546 477 + 552: 26(i64vec4) Load 551 + 553: 26(i64vec4) VectorShuffle 552 550 4 5 6 3 + Store 551 553 + 554: 6(int) Load 8(invocation) + 555: 485(ptr) AccessChain 34(data) 68 477 + 556: 26(i64vec4) Load 555 + 557: 26(i64vec4) GroupNonUniformQuadSwap 43 556 42 + 558: 485(ptr) AccessChain 34(data) 554 477 + Store 558 557 + 559: 6(int) Load 8(invocation) + 560: 478(ptr) AccessChain 34(data) 37 477 38 + 561: 25(int64_t) Load 560 + 562: 25(int64_t) GroupNonUniformQuadSwap 43 561 128 + 563: 478(ptr) AccessChain 34(data) 559 477 38 + Store 563 562 + 564: 6(int) Load 8(invocation) + 565: 485(ptr) AccessChain 34(data) 47 477 + 566: 26(i64vec4) Load 565 + 567:484(i64vec2) VectorShuffle 566 566 0 1 + 568:484(i64vec2) GroupNonUniformQuadSwap 43 567 128 + 569: 485(ptr) AccessChain 34(data) 564 477 + 570: 26(i64vec4) Load 569 + 571: 26(i64vec4) VectorShuffle 570 568 4 5 2 3 + Store 569 571 + 572: 6(int) Load 8(invocation) + 573: 485(ptr) AccessChain 34(data) 58 477 + 574: 26(i64vec4) Load 573 + 575:494(i64vec3) VectorShuffle 574 574 0 1 2 + 576:494(i64vec3) GroupNonUniformQuadSwap 43 575 128 + 577: 485(ptr) AccessChain 34(data) 572 477 + 578: 26(i64vec4) Load 577 + 579: 26(i64vec4) VectorShuffle 578 576 4 5 6 3 + Store 577 579 + 580: 6(int) Load 8(invocation) + 581: 485(ptr) AccessChain 34(data) 68 477 + 582: 26(i64vec4) Load 581 + 583: 26(i64vec4) GroupNonUniformQuadSwap 43 582 128 + 584: 485(ptr) AccessChain 34(data) 580 477 + Store 584 583 + 585: 6(int) Load 8(invocation) + 588: 587(ptr) AccessChain 34(data) 37 586 38 + 589: 27(int64_t) Load 588 + 590: 27(int64_t) GroupNonUniformQuadBroadcast 43 589 42 + 591: 587(ptr) AccessChain 34(data) 585 586 38 + Store 591 590 + 592: 6(int) Load 8(invocation) + 595: 594(ptr) AccessChain 34(data) 47 586 + 596: 28(i64vec4) Load 595 + 597:593(i64vec2) VectorShuffle 596 596 0 1 + 598:593(i64vec2) GroupNonUniformQuadBroadcast 43 597 42 + 599: 594(ptr) AccessChain 34(data) 592 586 + 600: 28(i64vec4) Load 599 + 601: 28(i64vec4) VectorShuffle 600 598 4 5 2 3 + Store 599 601 + 602: 6(int) Load 8(invocation) + 604: 594(ptr) AccessChain 34(data) 58 586 + 605: 28(i64vec4) Load 604 + 606:603(i64vec3) VectorShuffle 605 605 0 1 2 + 607:603(i64vec3) GroupNonUniformQuadBroadcast 43 606 42 + 608: 594(ptr) AccessChain 34(data) 602 586 + 609: 28(i64vec4) Load 608 + 610: 28(i64vec4) VectorShuffle 609 607 4 5 6 3 + Store 608 610 + 611: 6(int) Load 8(invocation) + 612: 594(ptr) AccessChain 34(data) 68 586 + 613: 28(i64vec4) Load 612 + 614: 28(i64vec4) GroupNonUniformQuadBroadcast 43 613 42 + 615: 594(ptr) AccessChain 34(data) 611 586 + Store 615 614 + 616: 6(int) Load 8(invocation) + 617: 587(ptr) AccessChain 34(data) 37 586 38 + 618: 27(int64_t) Load 617 + 619: 27(int64_t) GroupNonUniformQuadSwap 43 618 38 + 620: 587(ptr) AccessChain 34(data) 616 586 38 + Store 620 619 + 621: 6(int) Load 8(invocation) + 622: 594(ptr) AccessChain 34(data) 47 586 + 623: 28(i64vec4) Load 622 + 624:593(i64vec2) VectorShuffle 623 623 0 1 + 625:593(i64vec2) GroupNonUniformQuadSwap 43 624 38 + 626: 594(ptr) AccessChain 34(data) 621 586 + 627: 28(i64vec4) Load 626 + 628: 28(i64vec4) VectorShuffle 627 625 4 5 2 3 + Store 626 628 + 629: 6(int) Load 8(invocation) + 630: 594(ptr) AccessChain 34(data) 58 586 + 631: 28(i64vec4) Load 630 + 632:603(i64vec3) VectorShuffle 631 631 0 1 2 + 633:603(i64vec3) GroupNonUniformQuadSwap 43 632 38 + 634: 594(ptr) AccessChain 34(data) 629 586 + 635: 28(i64vec4) Load 634 + 636: 28(i64vec4) VectorShuffle 635 633 4 5 6 3 + Store 634 636 + 637: 6(int) Load 8(invocation) + 638: 594(ptr) AccessChain 34(data) 68 586 + 639: 28(i64vec4) Load 638 + 640: 28(i64vec4) GroupNonUniformQuadSwap 43 639 38 + 641: 594(ptr) AccessChain 34(data) 637 586 + Store 641 640 + 642: 6(int) Load 8(invocation) + 643: 587(ptr) AccessChain 34(data) 37 586 38 + 644: 27(int64_t) Load 643 + 645: 27(int64_t) GroupNonUniformQuadSwap 43 644 42 + 646: 587(ptr) AccessChain 34(data) 642 586 38 + Store 646 645 + 647: 6(int) Load 8(invocation) + 648: 594(ptr) AccessChain 34(data) 47 586 + 649: 28(i64vec4) Load 648 + 650:593(i64vec2) VectorShuffle 649 649 0 1 + 651:593(i64vec2) GroupNonUniformQuadSwap 43 650 42 + 652: 594(ptr) AccessChain 34(data) 647 586 + 653: 28(i64vec4) Load 652 + 654: 28(i64vec4) VectorShuffle 653 651 4 5 2 3 + Store 652 654 + 655: 6(int) Load 8(invocation) + 656: 594(ptr) AccessChain 34(data) 58 586 + 657: 28(i64vec4) Load 656 + 658:603(i64vec3) VectorShuffle 657 657 0 1 2 + 659:603(i64vec3) GroupNonUniformQuadSwap 43 658 42 + 660: 594(ptr) AccessChain 34(data) 655 586 + 661: 28(i64vec4) Load 660 + 662: 28(i64vec4) VectorShuffle 661 659 4 5 6 3 + Store 660 662 + 663: 6(int) Load 8(invocation) + 664: 594(ptr) AccessChain 34(data) 68 586 + 665: 28(i64vec4) Load 664 + 666: 28(i64vec4) GroupNonUniformQuadSwap 43 665 42 + 667: 594(ptr) AccessChain 34(data) 663 586 + Store 667 666 + 668: 6(int) Load 8(invocation) + 669: 587(ptr) AccessChain 34(data) 37 586 38 + 670: 27(int64_t) Load 669 + 671: 27(int64_t) GroupNonUniformQuadSwap 43 670 128 + 672: 587(ptr) AccessChain 34(data) 668 586 38 + Store 672 671 + 673: 6(int) Load 8(invocation) + 674: 594(ptr) AccessChain 34(data) 47 586 + 675: 28(i64vec4) Load 674 + 676:593(i64vec2) VectorShuffle 675 675 0 1 + 677:593(i64vec2) GroupNonUniformQuadSwap 43 676 128 + 678: 594(ptr) AccessChain 34(data) 673 586 + 679: 28(i64vec4) Load 678 + 680: 28(i64vec4) VectorShuffle 679 677 4 5 2 3 + Store 678 680 + 681: 6(int) Load 8(invocation) + 682: 594(ptr) AccessChain 34(data) 58 586 + 683: 28(i64vec4) Load 682 + 684:603(i64vec3) VectorShuffle 683 683 0 1 2 + 685:603(i64vec3) GroupNonUniformQuadSwap 43 684 128 + 686: 594(ptr) AccessChain 34(data) 681 586 + 687: 28(i64vec4) Load 686 + 688: 28(i64vec4) VectorShuffle 687 685 4 5 6 3 + Store 686 688 + 689: 6(int) Load 8(invocation) + 690: 594(ptr) AccessChain 34(data) 68 586 + 691: 28(i64vec4) Load 690 + 692: 28(i64vec4) GroupNonUniformQuadSwap 43 691 128 + 693: 594(ptr) AccessChain 34(data) 689 586 + Store 693 692 + 694: 6(int) Load 8(invocation) + 697: 696(ptr) AccessChain 34(data) 37 695 38 + 698:29(float16_t) Load 697 + 699:29(float16_t) GroupNonUniformQuadBroadcast 43 698 42 + 700: 696(ptr) AccessChain 34(data) 694 695 38 + Store 700 699 + 701: 6(int) Load 8(invocation) + 704: 703(ptr) AccessChain 34(data) 47 695 + 705: 30(f16vec4) Load 704 + 706:702(f16vec2) VectorShuffle 705 705 0 1 + 707:702(f16vec2) GroupNonUniformQuadBroadcast 43 706 42 + 708: 703(ptr) AccessChain 34(data) 701 695 + 709: 30(f16vec4) Load 708 + 710: 30(f16vec4) VectorShuffle 709 707 4 5 2 3 + Store 708 710 + 711: 6(int) Load 8(invocation) + 713: 703(ptr) AccessChain 34(data) 58 695 + 714: 30(f16vec4) Load 713 + 715:712(f16vec3) VectorShuffle 714 714 0 1 2 + 716:712(f16vec3) GroupNonUniformQuadBroadcast 43 715 42 + 717: 703(ptr) AccessChain 34(data) 711 695 + 718: 30(f16vec4) Load 717 + 719: 30(f16vec4) VectorShuffle 718 716 4 5 6 3 + Store 717 719 + 720: 6(int) Load 8(invocation) + 721: 703(ptr) AccessChain 34(data) 68 695 + 722: 30(f16vec4) Load 721 + 723: 30(f16vec4) GroupNonUniformQuadBroadcast 43 722 42 + 724: 703(ptr) AccessChain 34(data) 720 695 + Store 724 723 + 725: 6(int) Load 8(invocation) + 726: 696(ptr) AccessChain 34(data) 37 695 38 + 727:29(float16_t) Load 726 + 728:29(float16_t) GroupNonUniformQuadSwap 43 727 38 + 729: 696(ptr) AccessChain 34(data) 725 695 38 + Store 729 728 + 730: 6(int) Load 8(invocation) + 731: 703(ptr) AccessChain 34(data) 47 695 + 732: 30(f16vec4) Load 731 + 733:702(f16vec2) VectorShuffle 732 732 0 1 + 734:702(f16vec2) GroupNonUniformQuadSwap 43 733 38 + 735: 703(ptr) AccessChain 34(data) 730 695 + 736: 30(f16vec4) Load 735 + 737: 30(f16vec4) VectorShuffle 736 734 4 5 2 3 + Store 735 737 + 738: 6(int) Load 8(invocation) + 739: 703(ptr) AccessChain 34(data) 58 695 + 740: 30(f16vec4) Load 739 + 741:712(f16vec3) VectorShuffle 740 740 0 1 2 + 742:712(f16vec3) GroupNonUniformQuadSwap 43 741 38 + 743: 703(ptr) AccessChain 34(data) 738 695 + 744: 30(f16vec4) Load 743 + 745: 30(f16vec4) VectorShuffle 744 742 4 5 6 3 + Store 743 745 + 746: 6(int) Load 8(invocation) + 747: 703(ptr) AccessChain 34(data) 68 695 + 748: 30(f16vec4) Load 747 + 749: 30(f16vec4) GroupNonUniformQuadSwap 43 748 38 + 750: 703(ptr) AccessChain 34(data) 746 695 + Store 750 749 + 751: 6(int) Load 8(invocation) + 752: 696(ptr) AccessChain 34(data) 37 695 38 + 753:29(float16_t) Load 752 + 754:29(float16_t) GroupNonUniformQuadSwap 43 753 42 + 755: 696(ptr) AccessChain 34(data) 751 695 38 + Store 755 754 + 756: 6(int) Load 8(invocation) + 757: 703(ptr) AccessChain 34(data) 47 695 + 758: 30(f16vec4) Load 757 + 759:702(f16vec2) VectorShuffle 758 758 0 1 + 760:702(f16vec2) GroupNonUniformQuadSwap 43 759 42 + 761: 703(ptr) AccessChain 34(data) 756 695 + 762: 30(f16vec4) Load 761 + 763: 30(f16vec4) VectorShuffle 762 760 4 5 2 3 + Store 761 763 + 764: 6(int) Load 8(invocation) + 765: 703(ptr) AccessChain 34(data) 58 695 + 766: 30(f16vec4) Load 765 + 767:712(f16vec3) VectorShuffle 766 766 0 1 2 + 768:712(f16vec3) GroupNonUniformQuadSwap 43 767 42 + 769: 703(ptr) AccessChain 34(data) 764 695 + 770: 30(f16vec4) Load 769 + 771: 30(f16vec4) VectorShuffle 770 768 4 5 6 3 + Store 769 771 + 772: 6(int) Load 8(invocation) + 773: 703(ptr) AccessChain 34(data) 68 695 + 774: 30(f16vec4) Load 773 + 775: 30(f16vec4) GroupNonUniformQuadSwap 43 774 42 + 776: 703(ptr) AccessChain 34(data) 772 695 + Store 776 775 + 777: 6(int) Load 8(invocation) + 778: 696(ptr) AccessChain 34(data) 37 695 38 + 779:29(float16_t) Load 778 + 780:29(float16_t) GroupNonUniformQuadSwap 43 779 128 + 781: 696(ptr) AccessChain 34(data) 777 695 38 + Store 781 780 + 782: 6(int) Load 8(invocation) + 783: 703(ptr) AccessChain 34(data) 47 695 + 784: 30(f16vec4) Load 783 + 785:702(f16vec2) VectorShuffle 784 784 0 1 + 786:702(f16vec2) GroupNonUniformQuadSwap 43 785 128 + 787: 703(ptr) AccessChain 34(data) 782 695 + 788: 30(f16vec4) Load 787 + 789: 30(f16vec4) VectorShuffle 788 786 4 5 2 3 + Store 787 789 + 790: 6(int) Load 8(invocation) + 791: 703(ptr) AccessChain 34(data) 58 695 + 792: 30(f16vec4) Load 791 + 793:712(f16vec3) VectorShuffle 792 792 0 1 2 + 794:712(f16vec3) GroupNonUniformQuadSwap 43 793 128 + 795: 703(ptr) AccessChain 34(data) 790 695 + 796: 30(f16vec4) Load 795 + 797: 30(f16vec4) VectorShuffle 796 794 4 5 6 3 + Store 795 797 + 798: 6(int) Load 8(invocation) + 799: 703(ptr) AccessChain 34(data) 68 695 + 800: 30(f16vec4) Load 799 + 801: 30(f16vec4) GroupNonUniformQuadSwap 43 800 128 + 802: 703(ptr) AccessChain 34(data) 798 695 + Store 802 801 + Return + FunctionEnd diff --git a/Test/baseResults/spv.subgroupExtendedTypesQuadNeg.comp.out b/Test/baseResults/spv.subgroupExtendedTypesQuadNeg.comp.out new file mode 100644 index 00000000..73b1597e --- /dev/null +++ b/Test/baseResults/spv.subgroupExtendedTypesQuadNeg.comp.out @@ -0,0 +1,117 @@ +spv.subgroupExtendedTypesQuadNeg.comp +ERROR: 0:26: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:27: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:28: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:29: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:31: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:32: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:33: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:34: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:36: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:37: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:38: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:39: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:41: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:42: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:43: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:44: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:46: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:47: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:48: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:49: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:51: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:52: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:53: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:54: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:56: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:57: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:58: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:59: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:61: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:62: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:63: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:64: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:66: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:67: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:68: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:69: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:71: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:72: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:73: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:74: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:76: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:77: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:78: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:79: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:81: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:82: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:83: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:84: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:86: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:87: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:88: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:89: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:91: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:92: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:93: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:94: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:96: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:97: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:98: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:99: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:101: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:102: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:103: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:104: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:106: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:107: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:108: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:109: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:111: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:112: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:113: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:114: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:116: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:117: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:118: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:119: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:121: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:122: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:123: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:124: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:126: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:127: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:128: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:129: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:131: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:132: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:133: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:134: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:136: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:137: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:138: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:139: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:141: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:142: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:143: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:144: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:146: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:147: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:148: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:149: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:151: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:152: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:153: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:154: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:156: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:157: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:158: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:159: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:161: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:162: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:163: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:164: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 112 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out b/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out new file mode 100644 index 00000000..d647ded5 --- /dev/null +++ b/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out @@ -0,0 +1,616 @@ +spv.subgroupExtendedTypesShuffle.comp +// Module Version 10300 +// Generated by (magic number): 80007 +// Id's are bound by 497 + + Capability Shader + Capability Float16 + Capability Int64 + Capability Int16 + Capability Int8 + Capability GroupNonUniform + Capability GroupNonUniformShuffle + Capability StorageUniformBufferBlock16 + Capability StorageBuffer8BitAccess + Extension "SPV_KHR_8bit_storage" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" 10 12 + ExecutionMode 4 LocalSize 8 1 1 + Source GLSL 450 + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" + SourceExtension "GL_EXT_shader_subgroup_extended_types_float16" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int16" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int64" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int8" + SourceExtension "GL_KHR_shader_subgroup_basic" + SourceExtension "GL_KHR_shader_subgroup_shuffle" + Name 4 "main" + Name 8 "invocation" + Name 10 "gl_SubgroupInvocationID" + Name 12 "gl_SubgroupSize" + Name 31 "Buffers" + MemberName 31(Buffers) 0 "i8" + MemberName 31(Buffers) 1 "u8" + MemberName 31(Buffers) 2 "i16" + MemberName 31(Buffers) 3 "u16" + MemberName 31(Buffers) 4 "i64" + MemberName 31(Buffers) 5 "u64" + MemberName 31(Buffers) 6 "f16" + Name 34 "data" + Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision + Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId + Decorate 11 RelaxedPrecision + Decorate 12(gl_SubgroupSize) RelaxedPrecision + Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize + Decorate 13 RelaxedPrecision + Decorate 14 RelaxedPrecision + Decorate 16 RelaxedPrecision + MemberDecorate 31(Buffers) 0 Offset 0 + MemberDecorate 31(Buffers) 1 Offset 4 + MemberDecorate 31(Buffers) 2 Offset 8 + MemberDecorate 31(Buffers) 3 Offset 16 + MemberDecorate 31(Buffers) 4 Offset 32 + MemberDecorate 31(Buffers) 5 Offset 64 + MemberDecorate 31(Buffers) 6 Offset 96 + Decorate 31(Buffers) Block + Decorate 34(data) DescriptorSet 0 + Decorate 34(data) Binding 0 + Decorate 496 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 9: TypePointer Input 6(int) +10(gl_SubgroupInvocationID): 9(ptr) Variable Input +12(gl_SubgroupSize): 9(ptr) Variable Input + 15: 6(int) Constant 4 + 17: TypeInt 8 1 + 18: TypeVector 17(int8_t) 4 + 19: TypeInt 8 0 + 20: TypeVector 19(int8_t) 4 + 21: TypeInt 16 1 + 22: TypeVector 21(int16_t) 4 + 23: TypeInt 16 0 + 24: TypeVector 23(int16_t) 4 + 25: TypeInt 64 1 + 26: TypeVector 25(int64_t) 4 + 27: TypeInt 64 0 + 28: TypeVector 27(int64_t) 4 + 29: TypeFloat 16 + 30: TypeVector 29(float16_t) 4 + 31(Buffers): TypeStruct 18(i8vec4) 20(i8vec4) 22(i16vec4) 24(i16vec4) 26(i64vec4) 28(i64vec4) 30(f16vec4) + 32: TypeArray 31(Buffers) 15 + 33: TypePointer StorageBuffer 32 + 34(data): 33(ptr) Variable StorageBuffer + 36: TypeInt 32 1 + 37: 36(int) Constant 0 + 38: 6(int) Constant 0 + 39: TypePointer StorageBuffer 17(int8_t) + 43: 6(int) Constant 3 + 47: 36(int) Constant 1 + 48: TypeVector 17(int8_t) 2 + 49: TypePointer StorageBuffer 18(i8vec4) + 59: 36(int) Constant 2 + 60: TypeVector 17(int8_t) 3 + 70: 36(int) Constant 3 + 107: TypePointer StorageBuffer 19(int8_t) + 114: TypeVector 19(int8_t) 2 + 115: TypePointer StorageBuffer 20(i8vec4) + 125: TypeVector 19(int8_t) 3 + 171: TypePointer StorageBuffer 21(int16_t) + 178: TypeVector 21(int16_t) 2 + 179: TypePointer StorageBuffer 22(i16vec4) + 189: TypeVector 21(int16_t) 3 + 235: TypePointer StorageBuffer 23(int16_t) + 242: TypeVector 23(int16_t) 2 + 243: TypePointer StorageBuffer 24(i16vec4) + 253: TypeVector 23(int16_t) 3 + 299: 36(int) Constant 4 + 300: TypePointer StorageBuffer 25(int64_t) + 307: TypeVector 25(int64_t) 2 + 308: TypePointer StorageBuffer 26(i64vec4) + 318: TypeVector 25(int64_t) 3 + 364: 36(int) Constant 5 + 365: TypePointer StorageBuffer 27(int64_t) + 372: TypeVector 27(int64_t) 2 + 373: TypePointer StorageBuffer 28(i64vec4) + 383: TypeVector 27(int64_t) 3 + 429: 36(int) Constant 6 + 430: TypePointer StorageBuffer 29(float16_t) + 437: TypeVector 29(float16_t) 2 + 438: TypePointer StorageBuffer 30(f16vec4) + 448: TypeVector 29(float16_t) 3 + 493: TypeVector 6(int) 3 + 494: 6(int) Constant 8 + 495: 6(int) Constant 1 + 496: 493(ivec3) ConstantComposite 494 495 495 + 4(main): 2 Function None 3 + 5: Label + 8(invocation): 7(ptr) Variable Function + 11: 6(int) Load 10(gl_SubgroupInvocationID) + 13: 6(int) Load 12(gl_SubgroupSize) + 14: 6(int) IAdd 11 13 + 16: 6(int) UMod 14 15 + Store 8(invocation) 16 + 35: 6(int) Load 8(invocation) + 40: 39(ptr) AccessChain 34(data) 37 37 38 + 41: 17(int8_t) Load 40 + 42: 6(int) Load 8(invocation) + 44: 17(int8_t) GroupNonUniformShuffle 43 41 42 + 45: 39(ptr) AccessChain 34(data) 35 37 38 + Store 45 44 + 46: 6(int) Load 8(invocation) + 50: 49(ptr) AccessChain 34(data) 47 37 + 51: 18(i8vec4) Load 50 + 52: 48(i8vec2) VectorShuffle 51 51 0 1 + 53: 6(int) Load 8(invocation) + 54: 48(i8vec2) GroupNonUniformShuffle 43 52 53 + 55: 49(ptr) AccessChain 34(data) 46 37 + 56: 18(i8vec4) Load 55 + 57: 18(i8vec4) VectorShuffle 56 54 4 5 2 3 + Store 55 57 + 58: 6(int) Load 8(invocation) + 61: 49(ptr) AccessChain 34(data) 59 37 + 62: 18(i8vec4) Load 61 + 63: 60(i8vec3) VectorShuffle 62 62 0 1 2 + 64: 6(int) Load 8(invocation) + 65: 60(i8vec3) GroupNonUniformShuffle 43 63 64 + 66: 49(ptr) AccessChain 34(data) 58 37 + 67: 18(i8vec4) Load 66 + 68: 18(i8vec4) VectorShuffle 67 65 4 5 6 3 + Store 66 68 + 69: 6(int) Load 8(invocation) + 71: 49(ptr) AccessChain 34(data) 70 37 + 72: 18(i8vec4) Load 71 + 73: 6(int) Load 8(invocation) + 74: 18(i8vec4) GroupNonUniformShuffle 43 72 73 + 75: 49(ptr) AccessChain 34(data) 69 37 + Store 75 74 + 76: 6(int) Load 8(invocation) + 77: 39(ptr) AccessChain 34(data) 37 37 38 + 78: 17(int8_t) Load 77 + 79: 6(int) Load 8(invocation) + 80: 17(int8_t) GroupNonUniformShuffleXor 43 78 79 + 81: 39(ptr) AccessChain 34(data) 76 37 38 + Store 81 80 + 82: 6(int) Load 8(invocation) + 83: 49(ptr) AccessChain 34(data) 47 37 + 84: 18(i8vec4) Load 83 + 85: 48(i8vec2) VectorShuffle 84 84 0 1 + 86: 6(int) Load 8(invocation) + 87: 48(i8vec2) GroupNonUniformShuffleXor 43 85 86 + 88: 49(ptr) AccessChain 34(data) 82 37 + 89: 18(i8vec4) Load 88 + 90: 18(i8vec4) VectorShuffle 89 87 4 5 2 3 + Store 88 90 + 91: 6(int) Load 8(invocation) + 92: 49(ptr) AccessChain 34(data) 59 37 + 93: 18(i8vec4) Load 92 + 94: 60(i8vec3) VectorShuffle 93 93 0 1 2 + 95: 6(int) Load 8(invocation) + 96: 60(i8vec3) GroupNonUniformShuffleXor 43 94 95 + 97: 49(ptr) AccessChain 34(data) 91 37 + 98: 18(i8vec4) Load 97 + 99: 18(i8vec4) VectorShuffle 98 96 4 5 6 3 + Store 97 99 + 100: 6(int) Load 8(invocation) + 101: 49(ptr) AccessChain 34(data) 70 37 + 102: 18(i8vec4) Load 101 + 103: 6(int) Load 8(invocation) + 104: 18(i8vec4) GroupNonUniformShuffleXor 43 102 103 + 105: 49(ptr) AccessChain 34(data) 100 37 + Store 105 104 + 106: 6(int) Load 8(invocation) + 108: 107(ptr) AccessChain 34(data) 37 47 38 + 109: 19(int8_t) Load 108 + 110: 6(int) Load 8(invocation) + 111: 19(int8_t) GroupNonUniformShuffle 43 109 110 + 112: 107(ptr) AccessChain 34(data) 106 47 38 + Store 112 111 + 113: 6(int) Load 8(invocation) + 116: 115(ptr) AccessChain 34(data) 47 47 + 117: 20(i8vec4) Load 116 + 118: 114(i8vec2) VectorShuffle 117 117 0 1 + 119: 6(int) Load 8(invocation) + 120: 114(i8vec2) GroupNonUniformShuffle 43 118 119 + 121: 115(ptr) AccessChain 34(data) 113 47 + 122: 20(i8vec4) Load 121 + 123: 20(i8vec4) VectorShuffle 122 120 4 5 2 3 + Store 121 123 + 124: 6(int) Load 8(invocation) + 126: 115(ptr) AccessChain 34(data) 59 47 + 127: 20(i8vec4) Load 126 + 128: 125(i8vec3) VectorShuffle 127 127 0 1 2 + 129: 6(int) Load 8(invocation) + 130: 125(i8vec3) GroupNonUniformShuffle 43 128 129 + 131: 115(ptr) AccessChain 34(data) 124 47 + 132: 20(i8vec4) Load 131 + 133: 20(i8vec4) VectorShuffle 132 130 4 5 6 3 + Store 131 133 + 134: 6(int) Load 8(invocation) + 135: 115(ptr) AccessChain 34(data) 70 47 + 136: 20(i8vec4) Load 135 + 137: 6(int) Load 8(invocation) + 138: 20(i8vec4) GroupNonUniformShuffle 43 136 137 + 139: 115(ptr) AccessChain 34(data) 134 47 + Store 139 138 + 140: 6(int) Load 8(invocation) + 141: 107(ptr) AccessChain 34(data) 37 47 38 + 142: 19(int8_t) Load 141 + 143: 6(int) Load 8(invocation) + 144: 19(int8_t) GroupNonUniformShuffleXor 43 142 143 + 145: 107(ptr) AccessChain 34(data) 140 47 38 + Store 145 144 + 146: 6(int) Load 8(invocation) + 147: 115(ptr) AccessChain 34(data) 47 47 + 148: 20(i8vec4) Load 147 + 149: 114(i8vec2) VectorShuffle 148 148 0 1 + 150: 6(int) Load 8(invocation) + 151: 114(i8vec2) GroupNonUniformShuffleXor 43 149 150 + 152: 115(ptr) AccessChain 34(data) 146 47 + 153: 20(i8vec4) Load 152 + 154: 20(i8vec4) VectorShuffle 153 151 4 5 2 3 + Store 152 154 + 155: 6(int) Load 8(invocation) + 156: 115(ptr) AccessChain 34(data) 59 47 + 157: 20(i8vec4) Load 156 + 158: 125(i8vec3) VectorShuffle 157 157 0 1 2 + 159: 6(int) Load 8(invocation) + 160: 125(i8vec3) GroupNonUniformShuffleXor 43 158 159 + 161: 115(ptr) AccessChain 34(data) 155 47 + 162: 20(i8vec4) Load 161 + 163: 20(i8vec4) VectorShuffle 162 160 4 5 6 3 + Store 161 163 + 164: 6(int) Load 8(invocation) + 165: 115(ptr) AccessChain 34(data) 70 47 + 166: 20(i8vec4) Load 165 + 167: 6(int) Load 8(invocation) + 168: 20(i8vec4) GroupNonUniformShuffleXor 43 166 167 + 169: 115(ptr) AccessChain 34(data) 164 47 + Store 169 168 + 170: 6(int) Load 8(invocation) + 172: 171(ptr) AccessChain 34(data) 37 59 38 + 173: 21(int16_t) Load 172 + 174: 6(int) Load 8(invocation) + 175: 21(int16_t) GroupNonUniformShuffle 43 173 174 + 176: 171(ptr) AccessChain 34(data) 170 59 38 + Store 176 175 + 177: 6(int) Load 8(invocation) + 180: 179(ptr) AccessChain 34(data) 47 59 + 181: 22(i16vec4) Load 180 + 182:178(i16vec2) VectorShuffle 181 181 0 1 + 183: 6(int) Load 8(invocation) + 184:178(i16vec2) GroupNonUniformShuffle 43 182 183 + 185: 179(ptr) AccessChain 34(data) 177 59 + 186: 22(i16vec4) Load 185 + 187: 22(i16vec4) VectorShuffle 186 184 4 5 2 3 + Store 185 187 + 188: 6(int) Load 8(invocation) + 190: 179(ptr) AccessChain 34(data) 59 59 + 191: 22(i16vec4) Load 190 + 192:189(i16vec3) VectorShuffle 191 191 0 1 2 + 193: 6(int) Load 8(invocation) + 194:189(i16vec3) GroupNonUniformShuffle 43 192 193 + 195: 179(ptr) AccessChain 34(data) 188 59 + 196: 22(i16vec4) Load 195 + 197: 22(i16vec4) VectorShuffle 196 194 4 5 6 3 + Store 195 197 + 198: 6(int) Load 8(invocation) + 199: 179(ptr) AccessChain 34(data) 70 59 + 200: 22(i16vec4) Load 199 + 201: 6(int) Load 8(invocation) + 202: 22(i16vec4) GroupNonUniformShuffle 43 200 201 + 203: 179(ptr) AccessChain 34(data) 198 59 + Store 203 202 + 204: 6(int) Load 8(invocation) + 205: 171(ptr) AccessChain 34(data) 37 59 38 + 206: 21(int16_t) Load 205 + 207: 6(int) Load 8(invocation) + 208: 21(int16_t) GroupNonUniformShuffleXor 43 206 207 + 209: 171(ptr) AccessChain 34(data) 204 59 38 + Store 209 208 + 210: 6(int) Load 8(invocation) + 211: 179(ptr) AccessChain 34(data) 47 59 + 212: 22(i16vec4) Load 211 + 213:178(i16vec2) VectorShuffle 212 212 0 1 + 214: 6(int) Load 8(invocation) + 215:178(i16vec2) GroupNonUniformShuffleXor 43 213 214 + 216: 179(ptr) AccessChain 34(data) 210 59 + 217: 22(i16vec4) Load 216 + 218: 22(i16vec4) VectorShuffle 217 215 4 5 2 3 + Store 216 218 + 219: 6(int) Load 8(invocation) + 220: 179(ptr) AccessChain 34(data) 59 59 + 221: 22(i16vec4) Load 220 + 222:189(i16vec3) VectorShuffle 221 221 0 1 2 + 223: 6(int) Load 8(invocation) + 224:189(i16vec3) GroupNonUniformShuffleXor 43 222 223 + 225: 179(ptr) AccessChain 34(data) 219 59 + 226: 22(i16vec4) Load 225 + 227: 22(i16vec4) VectorShuffle 226 224 4 5 6 3 + Store 225 227 + 228: 6(int) Load 8(invocation) + 229: 179(ptr) AccessChain 34(data) 70 59 + 230: 22(i16vec4) Load 229 + 231: 6(int) Load 8(invocation) + 232: 22(i16vec4) GroupNonUniformShuffleXor 43 230 231 + 233: 179(ptr) AccessChain 34(data) 228 59 + Store 233 232 + 234: 6(int) Load 8(invocation) + 236: 235(ptr) AccessChain 34(data) 37 70 38 + 237: 23(int16_t) Load 236 + 238: 6(int) Load 8(invocation) + 239: 23(int16_t) GroupNonUniformShuffle 43 237 238 + 240: 235(ptr) AccessChain 34(data) 234 70 38 + Store 240 239 + 241: 6(int) Load 8(invocation) + 244: 243(ptr) AccessChain 34(data) 47 70 + 245: 24(i16vec4) Load 244 + 246:242(i16vec2) VectorShuffle 245 245 0 1 + 247: 6(int) Load 8(invocation) + 248:242(i16vec2) GroupNonUniformShuffle 43 246 247 + 249: 243(ptr) AccessChain 34(data) 241 70 + 250: 24(i16vec4) Load 249 + 251: 24(i16vec4) VectorShuffle 250 248 4 5 2 3 + Store 249 251 + 252: 6(int) Load 8(invocation) + 254: 243(ptr) AccessChain 34(data) 59 70 + 255: 24(i16vec4) Load 254 + 256:253(i16vec3) VectorShuffle 255 255 0 1 2 + 257: 6(int) Load 8(invocation) + 258:253(i16vec3) GroupNonUniformShuffle 43 256 257 + 259: 243(ptr) AccessChain 34(data) 252 70 + 260: 24(i16vec4) Load 259 + 261: 24(i16vec4) VectorShuffle 260 258 4 5 6 3 + Store 259 261 + 262: 6(int) Load 8(invocation) + 263: 243(ptr) AccessChain 34(data) 70 70 + 264: 24(i16vec4) Load 263 + 265: 6(int) Load 8(invocation) + 266: 24(i16vec4) GroupNonUniformShuffle 43 264 265 + 267: 243(ptr) AccessChain 34(data) 262 70 + Store 267 266 + 268: 6(int) Load 8(invocation) + 269: 235(ptr) AccessChain 34(data) 37 70 38 + 270: 23(int16_t) Load 269 + 271: 6(int) Load 8(invocation) + 272: 23(int16_t) GroupNonUniformShuffleXor 43 270 271 + 273: 235(ptr) AccessChain 34(data) 268 70 38 + Store 273 272 + 274: 6(int) Load 8(invocation) + 275: 243(ptr) AccessChain 34(data) 47 70 + 276: 24(i16vec4) Load 275 + 277:242(i16vec2) VectorShuffle 276 276 0 1 + 278: 6(int) Load 8(invocation) + 279:242(i16vec2) GroupNonUniformShuffleXor 43 277 278 + 280: 243(ptr) AccessChain 34(data) 274 70 + 281: 24(i16vec4) Load 280 + 282: 24(i16vec4) VectorShuffle 281 279 4 5 2 3 + Store 280 282 + 283: 6(int) Load 8(invocation) + 284: 243(ptr) AccessChain 34(data) 59 70 + 285: 24(i16vec4) Load 284 + 286:253(i16vec3) VectorShuffle 285 285 0 1 2 + 287: 6(int) Load 8(invocation) + 288:253(i16vec3) GroupNonUniformShuffleXor 43 286 287 + 289: 243(ptr) AccessChain 34(data) 283 70 + 290: 24(i16vec4) Load 289 + 291: 24(i16vec4) VectorShuffle 290 288 4 5 6 3 + Store 289 291 + 292: 6(int) Load 8(invocation) + 293: 243(ptr) AccessChain 34(data) 70 70 + 294: 24(i16vec4) Load 293 + 295: 6(int) Load 8(invocation) + 296: 24(i16vec4) GroupNonUniformShuffleXor 43 294 295 + 297: 243(ptr) AccessChain 34(data) 292 70 + Store 297 296 + 298: 6(int) Load 8(invocation) + 301: 300(ptr) AccessChain 34(data) 37 299 38 + 302: 25(int64_t) Load 301 + 303: 6(int) Load 8(invocation) + 304: 25(int64_t) GroupNonUniformShuffle 43 302 303 + 305: 300(ptr) AccessChain 34(data) 298 299 38 + Store 305 304 + 306: 6(int) Load 8(invocation) + 309: 308(ptr) AccessChain 34(data) 47 299 + 310: 26(i64vec4) Load 309 + 311:307(i64vec2) VectorShuffle 310 310 0 1 + 312: 6(int) Load 8(invocation) + 313:307(i64vec2) GroupNonUniformShuffle 43 311 312 + 314: 308(ptr) AccessChain 34(data) 306 299 + 315: 26(i64vec4) Load 314 + 316: 26(i64vec4) VectorShuffle 315 313 4 5 2 3 + Store 314 316 + 317: 6(int) Load 8(invocation) + 319: 308(ptr) AccessChain 34(data) 59 299 + 320: 26(i64vec4) Load 319 + 321:318(i64vec3) VectorShuffle 320 320 0 1 2 + 322: 6(int) Load 8(invocation) + 323:318(i64vec3) GroupNonUniformShuffle 43 321 322 + 324: 308(ptr) AccessChain 34(data) 317 299 + 325: 26(i64vec4) Load 324 + 326: 26(i64vec4) VectorShuffle 325 323 4 5 6 3 + Store 324 326 + 327: 6(int) Load 8(invocation) + 328: 308(ptr) AccessChain 34(data) 70 299 + 329: 26(i64vec4) Load 328 + 330: 6(int) Load 8(invocation) + 331: 26(i64vec4) GroupNonUniformShuffle 43 329 330 + 332: 308(ptr) AccessChain 34(data) 327 299 + Store 332 331 + 333: 6(int) Load 8(invocation) + 334: 300(ptr) AccessChain 34(data) 37 299 38 + 335: 25(int64_t) Load 334 + 336: 6(int) Load 8(invocation) + 337: 25(int64_t) GroupNonUniformShuffleXor 43 335 336 + 338: 300(ptr) AccessChain 34(data) 333 299 38 + Store 338 337 + 339: 6(int) Load 8(invocation) + 340: 308(ptr) AccessChain 34(data) 47 299 + 341: 26(i64vec4) Load 340 + 342:307(i64vec2) VectorShuffle 341 341 0 1 + 343: 6(int) Load 8(invocation) + 344:307(i64vec2) GroupNonUniformShuffleXor 43 342 343 + 345: 308(ptr) AccessChain 34(data) 339 299 + 346: 26(i64vec4) Load 345 + 347: 26(i64vec4) VectorShuffle 346 344 4 5 2 3 + Store 345 347 + 348: 6(int) Load 8(invocation) + 349: 308(ptr) AccessChain 34(data) 59 299 + 350: 26(i64vec4) Load 349 + 351:318(i64vec3) VectorShuffle 350 350 0 1 2 + 352: 6(int) Load 8(invocation) + 353:318(i64vec3) GroupNonUniformShuffleXor 43 351 352 + 354: 308(ptr) AccessChain 34(data) 348 299 + 355: 26(i64vec4) Load 354 + 356: 26(i64vec4) VectorShuffle 355 353 4 5 6 3 + Store 354 356 + 357: 6(int) Load 8(invocation) + 358: 308(ptr) AccessChain 34(data) 70 299 + 359: 26(i64vec4) Load 358 + 360: 6(int) Load 8(invocation) + 361: 26(i64vec4) GroupNonUniformShuffleXor 43 359 360 + 362: 308(ptr) AccessChain 34(data) 357 299 + Store 362 361 + 363: 6(int) Load 8(invocation) + 366: 365(ptr) AccessChain 34(data) 37 364 38 + 367: 27(int64_t) Load 366 + 368: 6(int) Load 8(invocation) + 369: 27(int64_t) GroupNonUniformShuffle 43 367 368 + 370: 365(ptr) AccessChain 34(data) 363 364 38 + Store 370 369 + 371: 6(int) Load 8(invocation) + 374: 373(ptr) AccessChain 34(data) 47 364 + 375: 28(i64vec4) Load 374 + 376:372(i64vec2) VectorShuffle 375 375 0 1 + 377: 6(int) Load 8(invocation) + 378:372(i64vec2) GroupNonUniformShuffle 43 376 377 + 379: 373(ptr) AccessChain 34(data) 371 364 + 380: 28(i64vec4) Load 379 + 381: 28(i64vec4) VectorShuffle 380 378 4 5 2 3 + Store 379 381 + 382: 6(int) Load 8(invocation) + 384: 373(ptr) AccessChain 34(data) 59 364 + 385: 28(i64vec4) Load 384 + 386:383(i64vec3) VectorShuffle 385 385 0 1 2 + 387: 6(int) Load 8(invocation) + 388:383(i64vec3) GroupNonUniformShuffle 43 386 387 + 389: 373(ptr) AccessChain 34(data) 382 364 + 390: 28(i64vec4) Load 389 + 391: 28(i64vec4) VectorShuffle 390 388 4 5 6 3 + Store 389 391 + 392: 6(int) Load 8(invocation) + 393: 373(ptr) AccessChain 34(data) 70 364 + 394: 28(i64vec4) Load 393 + 395: 6(int) Load 8(invocation) + 396: 28(i64vec4) GroupNonUniformShuffle 43 394 395 + 397: 373(ptr) AccessChain 34(data) 392 364 + Store 397 396 + 398: 6(int) Load 8(invocation) + 399: 365(ptr) AccessChain 34(data) 37 364 38 + 400: 27(int64_t) Load 399 + 401: 6(int) Load 8(invocation) + 402: 27(int64_t) GroupNonUniformShuffleXor 43 400 401 + 403: 365(ptr) AccessChain 34(data) 398 364 38 + Store 403 402 + 404: 6(int) Load 8(invocation) + 405: 373(ptr) AccessChain 34(data) 47 364 + 406: 28(i64vec4) Load 405 + 407:372(i64vec2) VectorShuffle 406 406 0 1 + 408: 6(int) Load 8(invocation) + 409:372(i64vec2) GroupNonUniformShuffleXor 43 407 408 + 410: 373(ptr) AccessChain 34(data) 404 364 + 411: 28(i64vec4) Load 410 + 412: 28(i64vec4) VectorShuffle 411 409 4 5 2 3 + Store 410 412 + 413: 6(int) Load 8(invocation) + 414: 373(ptr) AccessChain 34(data) 59 364 + 415: 28(i64vec4) Load 414 + 416:383(i64vec3) VectorShuffle 415 415 0 1 2 + 417: 6(int) Load 8(invocation) + 418:383(i64vec3) GroupNonUniformShuffleXor 43 416 417 + 419: 373(ptr) AccessChain 34(data) 413 364 + 420: 28(i64vec4) Load 419 + 421: 28(i64vec4) VectorShuffle 420 418 4 5 6 3 + Store 419 421 + 422: 6(int) Load 8(invocation) + 423: 373(ptr) AccessChain 34(data) 70 364 + 424: 28(i64vec4) Load 423 + 425: 6(int) Load 8(invocation) + 426: 28(i64vec4) GroupNonUniformShuffleXor 43 424 425 + 427: 373(ptr) AccessChain 34(data) 422 364 + Store 427 426 + 428: 6(int) Load 8(invocation) + 431: 430(ptr) AccessChain 34(data) 37 429 38 + 432:29(float16_t) Load 431 + 433: 6(int) Load 8(invocation) + 434:29(float16_t) GroupNonUniformShuffle 43 432 433 + 435: 430(ptr) AccessChain 34(data) 428 429 38 + Store 435 434 + 436: 6(int) Load 8(invocation) + 439: 438(ptr) AccessChain 34(data) 47 429 + 440: 30(f16vec4) Load 439 + 441:437(f16vec2) VectorShuffle 440 440 0 1 + 442: 6(int) Load 8(invocation) + 443:437(f16vec2) GroupNonUniformShuffle 43 441 442 + 444: 438(ptr) AccessChain 34(data) 436 429 + 445: 30(f16vec4) Load 444 + 446: 30(f16vec4) VectorShuffle 445 443 4 5 2 3 + Store 444 446 + 447: 6(int) Load 8(invocation) + 449: 438(ptr) AccessChain 34(data) 59 429 + 450: 30(f16vec4) Load 449 + 451:448(f16vec3) VectorShuffle 450 450 0 1 2 + 452: 6(int) Load 8(invocation) + 453:448(f16vec3) GroupNonUniformShuffle 43 451 452 + 454: 438(ptr) AccessChain 34(data) 447 429 + 455: 30(f16vec4) Load 454 + 456: 30(f16vec4) VectorShuffle 455 453 4 5 6 3 + Store 454 456 + 457: 6(int) Load 8(invocation) + 458: 438(ptr) AccessChain 34(data) 70 429 + 459: 30(f16vec4) Load 458 + 460: 6(int) Load 8(invocation) + 461: 30(f16vec4) GroupNonUniformShuffle 43 459 460 + 462: 438(ptr) AccessChain 34(data) 457 429 + Store 462 461 + 463: 6(int) Load 8(invocation) + 464: 430(ptr) AccessChain 34(data) 37 429 38 + 465:29(float16_t) Load 464 + 466: 6(int) Load 8(invocation) + 467:29(float16_t) GroupNonUniformShuffleXor 43 465 466 + 468: 430(ptr) AccessChain 34(data) 463 429 38 + Store 468 467 + 469: 6(int) Load 8(invocation) + 470: 438(ptr) AccessChain 34(data) 47 429 + 471: 30(f16vec4) Load 470 + 472:437(f16vec2) VectorShuffle 471 471 0 1 + 473: 6(int) Load 8(invocation) + 474:437(f16vec2) GroupNonUniformShuffleXor 43 472 473 + 475: 438(ptr) AccessChain 34(data) 469 429 + 476: 30(f16vec4) Load 475 + 477: 30(f16vec4) VectorShuffle 476 474 4 5 2 3 + Store 475 477 + 478: 6(int) Load 8(invocation) + 479: 438(ptr) AccessChain 34(data) 59 429 + 480: 30(f16vec4) Load 479 + 481:448(f16vec3) VectorShuffle 480 480 0 1 2 + 482: 6(int) Load 8(invocation) + 483:448(f16vec3) GroupNonUniformShuffleXor 43 481 482 + 484: 438(ptr) AccessChain 34(data) 478 429 + 485: 30(f16vec4) Load 484 + 486: 30(f16vec4) VectorShuffle 485 483 4 5 6 3 + Store 484 486 + 487: 6(int) Load 8(invocation) + 488: 438(ptr) AccessChain 34(data) 70 429 + 489: 30(f16vec4) Load 488 + 490: 6(int) Load 8(invocation) + 491: 30(f16vec4) GroupNonUniformShuffleXor 43 489 490 + 492: 438(ptr) AccessChain 34(data) 487 429 + Store 492 491 + Return + FunctionEnd diff --git a/Test/baseResults/spv.subgroupExtendedTypesShuffleNeg.comp.out b/Test/baseResults/spv.subgroupExtendedTypesShuffleNeg.comp.out new file mode 100644 index 00000000..df1234b0 --- /dev/null +++ b/Test/baseResults/spv.subgroupExtendedTypesShuffleNeg.comp.out @@ -0,0 +1,61 @@ +spv.subgroupExtendedTypesShuffleNeg.comp +ERROR: 0:26: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:27: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:28: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:29: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:31: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:32: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:33: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:34: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:36: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:37: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:38: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:39: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:41: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:42: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:43: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:44: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:46: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:47: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:48: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:49: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:51: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:52: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:53: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:54: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:56: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:57: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:58: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:59: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:61: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:62: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:63: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:64: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:66: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:67: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:68: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:69: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:71: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:72: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:73: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:74: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:76: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:77: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:78: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:79: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:81: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:82: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:83: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:84: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:86: ' temp highp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:87: ' temp highp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:88: ' temp highp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:89: 'layout( column_major std430) buffer highp 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:91: ' temp highp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:92: ' temp highp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:93: ' temp highp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:94: 'layout( column_major std430) buffer highp 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 56 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out b/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out new file mode 100644 index 00000000..ef5def56 --- /dev/null +++ b/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out @@ -0,0 +1,616 @@ +spv.subgroupExtendedTypesShuffleRelative.comp +// Module Version 10300 +// Generated by (magic number): 80007 +// Id's are bound by 497 + + Capability Shader + Capability Float16 + Capability Int64 + Capability Int16 + Capability Int8 + Capability GroupNonUniform + Capability GroupNonUniformShuffleRelative + Capability StorageUniformBufferBlock16 + Capability StorageBuffer8BitAccess + Extension "SPV_KHR_8bit_storage" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" 10 12 + ExecutionMode 4 LocalSize 8 1 1 + Source GLSL 450 + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" + SourceExtension "GL_EXT_shader_subgroup_extended_types_float16" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int16" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int64" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int8" + SourceExtension "GL_KHR_shader_subgroup_basic" + SourceExtension "GL_KHR_shader_subgroup_shuffle_relative" + Name 4 "main" + Name 8 "invocation" + Name 10 "gl_SubgroupInvocationID" + Name 12 "gl_SubgroupSize" + Name 31 "Buffers" + MemberName 31(Buffers) 0 "i8" + MemberName 31(Buffers) 1 "u8" + MemberName 31(Buffers) 2 "i16" + MemberName 31(Buffers) 3 "u16" + MemberName 31(Buffers) 4 "i64" + MemberName 31(Buffers) 5 "u64" + MemberName 31(Buffers) 6 "f16" + Name 34 "data" + Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision + Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId + Decorate 11 RelaxedPrecision + Decorate 12(gl_SubgroupSize) RelaxedPrecision + Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize + Decorate 13 RelaxedPrecision + Decorate 14 RelaxedPrecision + Decorate 16 RelaxedPrecision + MemberDecorate 31(Buffers) 0 Offset 0 + MemberDecorate 31(Buffers) 1 Offset 4 + MemberDecorate 31(Buffers) 2 Offset 8 + MemberDecorate 31(Buffers) 3 Offset 16 + MemberDecorate 31(Buffers) 4 Offset 32 + MemberDecorate 31(Buffers) 5 Offset 64 + MemberDecorate 31(Buffers) 6 Offset 96 + Decorate 31(Buffers) Block + Decorate 34(data) DescriptorSet 0 + Decorate 34(data) Binding 0 + Decorate 496 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 9: TypePointer Input 6(int) +10(gl_SubgroupInvocationID): 9(ptr) Variable Input +12(gl_SubgroupSize): 9(ptr) Variable Input + 15: 6(int) Constant 4 + 17: TypeInt 8 1 + 18: TypeVector 17(int8_t) 4 + 19: TypeInt 8 0 + 20: TypeVector 19(int8_t) 4 + 21: TypeInt 16 1 + 22: TypeVector 21(int16_t) 4 + 23: TypeInt 16 0 + 24: TypeVector 23(int16_t) 4 + 25: TypeInt 64 1 + 26: TypeVector 25(int64_t) 4 + 27: TypeInt 64 0 + 28: TypeVector 27(int64_t) 4 + 29: TypeFloat 16 + 30: TypeVector 29(float16_t) 4 + 31(Buffers): TypeStruct 18(i8vec4) 20(i8vec4) 22(i16vec4) 24(i16vec4) 26(i64vec4) 28(i64vec4) 30(f16vec4) + 32: TypeArray 31(Buffers) 15 + 33: TypePointer StorageBuffer 32 + 34(data): 33(ptr) Variable StorageBuffer + 36: TypeInt 32 1 + 37: 36(int) Constant 0 + 38: 6(int) Constant 0 + 39: TypePointer StorageBuffer 17(int8_t) + 43: 6(int) Constant 3 + 47: 36(int) Constant 1 + 48: TypeVector 17(int8_t) 2 + 49: TypePointer StorageBuffer 18(i8vec4) + 59: 36(int) Constant 2 + 60: TypeVector 17(int8_t) 3 + 70: 36(int) Constant 3 + 107: TypePointer StorageBuffer 19(int8_t) + 114: TypeVector 19(int8_t) 2 + 115: TypePointer StorageBuffer 20(i8vec4) + 125: TypeVector 19(int8_t) 3 + 171: TypePointer StorageBuffer 21(int16_t) + 178: TypeVector 21(int16_t) 2 + 179: TypePointer StorageBuffer 22(i16vec4) + 189: TypeVector 21(int16_t) 3 + 235: TypePointer StorageBuffer 23(int16_t) + 242: TypeVector 23(int16_t) 2 + 243: TypePointer StorageBuffer 24(i16vec4) + 253: TypeVector 23(int16_t) 3 + 299: 36(int) Constant 4 + 300: TypePointer StorageBuffer 25(int64_t) + 307: TypeVector 25(int64_t) 2 + 308: TypePointer StorageBuffer 26(i64vec4) + 318: TypeVector 25(int64_t) 3 + 364: 36(int) Constant 5 + 365: TypePointer StorageBuffer 27(int64_t) + 372: TypeVector 27(int64_t) 2 + 373: TypePointer StorageBuffer 28(i64vec4) + 383: TypeVector 27(int64_t) 3 + 429: 36(int) Constant 6 + 430: TypePointer StorageBuffer 29(float16_t) + 437: TypeVector 29(float16_t) 2 + 438: TypePointer StorageBuffer 30(f16vec4) + 448: TypeVector 29(float16_t) 3 + 493: TypeVector 6(int) 3 + 494: 6(int) Constant 8 + 495: 6(int) Constant 1 + 496: 493(ivec3) ConstantComposite 494 495 495 + 4(main): 2 Function None 3 + 5: Label + 8(invocation): 7(ptr) Variable Function + 11: 6(int) Load 10(gl_SubgroupInvocationID) + 13: 6(int) Load 12(gl_SubgroupSize) + 14: 6(int) IAdd 11 13 + 16: 6(int) UMod 14 15 + Store 8(invocation) 16 + 35: 6(int) Load 8(invocation) + 40: 39(ptr) AccessChain 34(data) 37 37 38 + 41: 17(int8_t) Load 40 + 42: 6(int) Load 8(invocation) + 44: 17(int8_t) GroupNonUniformShuffleUp 43 41 42 + 45: 39(ptr) AccessChain 34(data) 35 37 38 + Store 45 44 + 46: 6(int) Load 8(invocation) + 50: 49(ptr) AccessChain 34(data) 47 37 + 51: 18(i8vec4) Load 50 + 52: 48(i8vec2) VectorShuffle 51 51 0 1 + 53: 6(int) Load 8(invocation) + 54: 48(i8vec2) GroupNonUniformShuffleUp 43 52 53 + 55: 49(ptr) AccessChain 34(data) 46 37 + 56: 18(i8vec4) Load 55 + 57: 18(i8vec4) VectorShuffle 56 54 4 5 2 3 + Store 55 57 + 58: 6(int) Load 8(invocation) + 61: 49(ptr) AccessChain 34(data) 59 37 + 62: 18(i8vec4) Load 61 + 63: 60(i8vec3) VectorShuffle 62 62 0 1 2 + 64: 6(int) Load 8(invocation) + 65: 60(i8vec3) GroupNonUniformShuffleUp 43 63 64 + 66: 49(ptr) AccessChain 34(data) 58 37 + 67: 18(i8vec4) Load 66 + 68: 18(i8vec4) VectorShuffle 67 65 4 5 6 3 + Store 66 68 + 69: 6(int) Load 8(invocation) + 71: 49(ptr) AccessChain 34(data) 70 37 + 72: 18(i8vec4) Load 71 + 73: 6(int) Load 8(invocation) + 74: 18(i8vec4) GroupNonUniformShuffleUp 43 72 73 + 75: 49(ptr) AccessChain 34(data) 69 37 + Store 75 74 + 76: 6(int) Load 8(invocation) + 77: 39(ptr) AccessChain 34(data) 37 37 38 + 78: 17(int8_t) Load 77 + 79: 6(int) Load 8(invocation) + 80: 17(int8_t) GroupNonUniformShuffleDown 43 78 79 + 81: 39(ptr) AccessChain 34(data) 76 37 38 + Store 81 80 + 82: 6(int) Load 8(invocation) + 83: 49(ptr) AccessChain 34(data) 47 37 + 84: 18(i8vec4) Load 83 + 85: 48(i8vec2) VectorShuffle 84 84 0 1 + 86: 6(int) Load 8(invocation) + 87: 48(i8vec2) GroupNonUniformShuffleDown 43 85 86 + 88: 49(ptr) AccessChain 34(data) 82 37 + 89: 18(i8vec4) Load 88 + 90: 18(i8vec4) VectorShuffle 89 87 4 5 2 3 + Store 88 90 + 91: 6(int) Load 8(invocation) + 92: 49(ptr) AccessChain 34(data) 59 37 + 93: 18(i8vec4) Load 92 + 94: 60(i8vec3) VectorShuffle 93 93 0 1 2 + 95: 6(int) Load 8(invocation) + 96: 60(i8vec3) GroupNonUniformShuffleDown 43 94 95 + 97: 49(ptr) AccessChain 34(data) 91 37 + 98: 18(i8vec4) Load 97 + 99: 18(i8vec4) VectorShuffle 98 96 4 5 6 3 + Store 97 99 + 100: 6(int) Load 8(invocation) + 101: 49(ptr) AccessChain 34(data) 70 37 + 102: 18(i8vec4) Load 101 + 103: 6(int) Load 8(invocation) + 104: 18(i8vec4) GroupNonUniformShuffleDown 43 102 103 + 105: 49(ptr) AccessChain 34(data) 100 37 + Store 105 104 + 106: 6(int) Load 8(invocation) + 108: 107(ptr) AccessChain 34(data) 37 47 38 + 109: 19(int8_t) Load 108 + 110: 6(int) Load 8(invocation) + 111: 19(int8_t) GroupNonUniformShuffleUp 43 109 110 + 112: 107(ptr) AccessChain 34(data) 106 47 38 + Store 112 111 + 113: 6(int) Load 8(invocation) + 116: 115(ptr) AccessChain 34(data) 47 47 + 117: 20(i8vec4) Load 116 + 118: 114(i8vec2) VectorShuffle 117 117 0 1 + 119: 6(int) Load 8(invocation) + 120: 114(i8vec2) GroupNonUniformShuffleUp 43 118 119 + 121: 115(ptr) AccessChain 34(data) 113 47 + 122: 20(i8vec4) Load 121 + 123: 20(i8vec4) VectorShuffle 122 120 4 5 2 3 + Store 121 123 + 124: 6(int) Load 8(invocation) + 126: 115(ptr) AccessChain 34(data) 59 47 + 127: 20(i8vec4) Load 126 + 128: 125(i8vec3) VectorShuffle 127 127 0 1 2 + 129: 6(int) Load 8(invocation) + 130: 125(i8vec3) GroupNonUniformShuffleUp 43 128 129 + 131: 115(ptr) AccessChain 34(data) 124 47 + 132: 20(i8vec4) Load 131 + 133: 20(i8vec4) VectorShuffle 132 130 4 5 6 3 + Store 131 133 + 134: 6(int) Load 8(invocation) + 135: 115(ptr) AccessChain 34(data) 70 47 + 136: 20(i8vec4) Load 135 + 137: 6(int) Load 8(invocation) + 138: 20(i8vec4) GroupNonUniformShuffleUp 43 136 137 + 139: 115(ptr) AccessChain 34(data) 134 47 + Store 139 138 + 140: 6(int) Load 8(invocation) + 141: 107(ptr) AccessChain 34(data) 37 47 38 + 142: 19(int8_t) Load 141 + 143: 6(int) Load 8(invocation) + 144: 19(int8_t) GroupNonUniformShuffleDown 43 142 143 + 145: 107(ptr) AccessChain 34(data) 140 47 38 + Store 145 144 + 146: 6(int) Load 8(invocation) + 147: 115(ptr) AccessChain 34(data) 47 47 + 148: 20(i8vec4) Load 147 + 149: 114(i8vec2) VectorShuffle 148 148 0 1 + 150: 6(int) Load 8(invocation) + 151: 114(i8vec2) GroupNonUniformShuffleDown 43 149 150 + 152: 115(ptr) AccessChain 34(data) 146 47 + 153: 20(i8vec4) Load 152 + 154: 20(i8vec4) VectorShuffle 153 151 4 5 2 3 + Store 152 154 + 155: 6(int) Load 8(invocation) + 156: 115(ptr) AccessChain 34(data) 59 47 + 157: 20(i8vec4) Load 156 + 158: 125(i8vec3) VectorShuffle 157 157 0 1 2 + 159: 6(int) Load 8(invocation) + 160: 125(i8vec3) GroupNonUniformShuffleDown 43 158 159 + 161: 115(ptr) AccessChain 34(data) 155 47 + 162: 20(i8vec4) Load 161 + 163: 20(i8vec4) VectorShuffle 162 160 4 5 6 3 + Store 161 163 + 164: 6(int) Load 8(invocation) + 165: 115(ptr) AccessChain 34(data) 70 47 + 166: 20(i8vec4) Load 165 + 167: 6(int) Load 8(invocation) + 168: 20(i8vec4) GroupNonUniformShuffleDown 43 166 167 + 169: 115(ptr) AccessChain 34(data) 164 47 + Store 169 168 + 170: 6(int) Load 8(invocation) + 172: 171(ptr) AccessChain 34(data) 37 59 38 + 173: 21(int16_t) Load 172 + 174: 6(int) Load 8(invocation) + 175: 21(int16_t) GroupNonUniformShuffleUp 43 173 174 + 176: 171(ptr) AccessChain 34(data) 170 59 38 + Store 176 175 + 177: 6(int) Load 8(invocation) + 180: 179(ptr) AccessChain 34(data) 47 59 + 181: 22(i16vec4) Load 180 + 182:178(i16vec2) VectorShuffle 181 181 0 1 + 183: 6(int) Load 8(invocation) + 184:178(i16vec2) GroupNonUniformShuffleUp 43 182 183 + 185: 179(ptr) AccessChain 34(data) 177 59 + 186: 22(i16vec4) Load 185 + 187: 22(i16vec4) VectorShuffle 186 184 4 5 2 3 + Store 185 187 + 188: 6(int) Load 8(invocation) + 190: 179(ptr) AccessChain 34(data) 59 59 + 191: 22(i16vec4) Load 190 + 192:189(i16vec3) VectorShuffle 191 191 0 1 2 + 193: 6(int) Load 8(invocation) + 194:189(i16vec3) GroupNonUniformShuffleUp 43 192 193 + 195: 179(ptr) AccessChain 34(data) 188 59 + 196: 22(i16vec4) Load 195 + 197: 22(i16vec4) VectorShuffle 196 194 4 5 6 3 + Store 195 197 + 198: 6(int) Load 8(invocation) + 199: 179(ptr) AccessChain 34(data) 70 59 + 200: 22(i16vec4) Load 199 + 201: 6(int) Load 8(invocation) + 202: 22(i16vec4) GroupNonUniformShuffleUp 43 200 201 + 203: 179(ptr) AccessChain 34(data) 198 59 + Store 203 202 + 204: 6(int) Load 8(invocation) + 205: 171(ptr) AccessChain 34(data) 37 59 38 + 206: 21(int16_t) Load 205 + 207: 6(int) Load 8(invocation) + 208: 21(int16_t) GroupNonUniformShuffleDown 43 206 207 + 209: 171(ptr) AccessChain 34(data) 204 59 38 + Store 209 208 + 210: 6(int) Load 8(invocation) + 211: 179(ptr) AccessChain 34(data) 47 59 + 212: 22(i16vec4) Load 211 + 213:178(i16vec2) VectorShuffle 212 212 0 1 + 214: 6(int) Load 8(invocation) + 215:178(i16vec2) GroupNonUniformShuffleDown 43 213 214 + 216: 179(ptr) AccessChain 34(data) 210 59 + 217: 22(i16vec4) Load 216 + 218: 22(i16vec4) VectorShuffle 217 215 4 5 2 3 + Store 216 218 + 219: 6(int) Load 8(invocation) + 220: 179(ptr) AccessChain 34(data) 59 59 + 221: 22(i16vec4) Load 220 + 222:189(i16vec3) VectorShuffle 221 221 0 1 2 + 223: 6(int) Load 8(invocation) + 224:189(i16vec3) GroupNonUniformShuffleDown 43 222 223 + 225: 179(ptr) AccessChain 34(data) 219 59 + 226: 22(i16vec4) Load 225 + 227: 22(i16vec4) VectorShuffle 226 224 4 5 6 3 + Store 225 227 + 228: 6(int) Load 8(invocation) + 229: 179(ptr) AccessChain 34(data) 70 59 + 230: 22(i16vec4) Load 229 + 231: 6(int) Load 8(invocation) + 232: 22(i16vec4) GroupNonUniformShuffleDown 43 230 231 + 233: 179(ptr) AccessChain 34(data) 228 59 + Store 233 232 + 234: 6(int) Load 8(invocation) + 236: 235(ptr) AccessChain 34(data) 37 70 38 + 237: 23(int16_t) Load 236 + 238: 6(int) Load 8(invocation) + 239: 23(int16_t) GroupNonUniformShuffleUp 43 237 238 + 240: 235(ptr) AccessChain 34(data) 234 70 38 + Store 240 239 + 241: 6(int) Load 8(invocation) + 244: 243(ptr) AccessChain 34(data) 47 70 + 245: 24(i16vec4) Load 244 + 246:242(i16vec2) VectorShuffle 245 245 0 1 + 247: 6(int) Load 8(invocation) + 248:242(i16vec2) GroupNonUniformShuffleUp 43 246 247 + 249: 243(ptr) AccessChain 34(data) 241 70 + 250: 24(i16vec4) Load 249 + 251: 24(i16vec4) VectorShuffle 250 248 4 5 2 3 + Store 249 251 + 252: 6(int) Load 8(invocation) + 254: 243(ptr) AccessChain 34(data) 59 70 + 255: 24(i16vec4) Load 254 + 256:253(i16vec3) VectorShuffle 255 255 0 1 2 + 257: 6(int) Load 8(invocation) + 258:253(i16vec3) GroupNonUniformShuffleUp 43 256 257 + 259: 243(ptr) AccessChain 34(data) 252 70 + 260: 24(i16vec4) Load 259 + 261: 24(i16vec4) VectorShuffle 260 258 4 5 6 3 + Store 259 261 + 262: 6(int) Load 8(invocation) + 263: 243(ptr) AccessChain 34(data) 70 70 + 264: 24(i16vec4) Load 263 + 265: 6(int) Load 8(invocation) + 266: 24(i16vec4) GroupNonUniformShuffleUp 43 264 265 + 267: 243(ptr) AccessChain 34(data) 262 70 + Store 267 266 + 268: 6(int) Load 8(invocation) + 269: 235(ptr) AccessChain 34(data) 37 70 38 + 270: 23(int16_t) Load 269 + 271: 6(int) Load 8(invocation) + 272: 23(int16_t) GroupNonUniformShuffleDown 43 270 271 + 273: 235(ptr) AccessChain 34(data) 268 70 38 + Store 273 272 + 274: 6(int) Load 8(invocation) + 275: 243(ptr) AccessChain 34(data) 47 70 + 276: 24(i16vec4) Load 275 + 277:242(i16vec2) VectorShuffle 276 276 0 1 + 278: 6(int) Load 8(invocation) + 279:242(i16vec2) GroupNonUniformShuffleDown 43 277 278 + 280: 243(ptr) AccessChain 34(data) 274 70 + 281: 24(i16vec4) Load 280 + 282: 24(i16vec4) VectorShuffle 281 279 4 5 2 3 + Store 280 282 + 283: 6(int) Load 8(invocation) + 284: 243(ptr) AccessChain 34(data) 59 70 + 285: 24(i16vec4) Load 284 + 286:253(i16vec3) VectorShuffle 285 285 0 1 2 + 287: 6(int) Load 8(invocation) + 288:253(i16vec3) GroupNonUniformShuffleDown 43 286 287 + 289: 243(ptr) AccessChain 34(data) 283 70 + 290: 24(i16vec4) Load 289 + 291: 24(i16vec4) VectorShuffle 290 288 4 5 6 3 + Store 289 291 + 292: 6(int) Load 8(invocation) + 293: 243(ptr) AccessChain 34(data) 70 70 + 294: 24(i16vec4) Load 293 + 295: 6(int) Load 8(invocation) + 296: 24(i16vec4) GroupNonUniformShuffleDown 43 294 295 + 297: 243(ptr) AccessChain 34(data) 292 70 + Store 297 296 + 298: 6(int) Load 8(invocation) + 301: 300(ptr) AccessChain 34(data) 37 299 38 + 302: 25(int64_t) Load 301 + 303: 6(int) Load 8(invocation) + 304: 25(int64_t) GroupNonUniformShuffleUp 43 302 303 + 305: 300(ptr) AccessChain 34(data) 298 299 38 + Store 305 304 + 306: 6(int) Load 8(invocation) + 309: 308(ptr) AccessChain 34(data) 47 299 + 310: 26(i64vec4) Load 309 + 311:307(i64vec2) VectorShuffle 310 310 0 1 + 312: 6(int) Load 8(invocation) + 313:307(i64vec2) GroupNonUniformShuffleUp 43 311 312 + 314: 308(ptr) AccessChain 34(data) 306 299 + 315: 26(i64vec4) Load 314 + 316: 26(i64vec4) VectorShuffle 315 313 4 5 2 3 + Store 314 316 + 317: 6(int) Load 8(invocation) + 319: 308(ptr) AccessChain 34(data) 59 299 + 320: 26(i64vec4) Load 319 + 321:318(i64vec3) VectorShuffle 320 320 0 1 2 + 322: 6(int) Load 8(invocation) + 323:318(i64vec3) GroupNonUniformShuffleUp 43 321 322 + 324: 308(ptr) AccessChain 34(data) 317 299 + 325: 26(i64vec4) Load 324 + 326: 26(i64vec4) VectorShuffle 325 323 4 5 6 3 + Store 324 326 + 327: 6(int) Load 8(invocation) + 328: 308(ptr) AccessChain 34(data) 70 299 + 329: 26(i64vec4) Load 328 + 330: 6(int) Load 8(invocation) + 331: 26(i64vec4) GroupNonUniformShuffleUp 43 329 330 + 332: 308(ptr) AccessChain 34(data) 327 299 + Store 332 331 + 333: 6(int) Load 8(invocation) + 334: 300(ptr) AccessChain 34(data) 37 299 38 + 335: 25(int64_t) Load 334 + 336: 6(int) Load 8(invocation) + 337: 25(int64_t) GroupNonUniformShuffleDown 43 335 336 + 338: 300(ptr) AccessChain 34(data) 333 299 38 + Store 338 337 + 339: 6(int) Load 8(invocation) + 340: 308(ptr) AccessChain 34(data) 47 299 + 341: 26(i64vec4) Load 340 + 342:307(i64vec2) VectorShuffle 341 341 0 1 + 343: 6(int) Load 8(invocation) + 344:307(i64vec2) GroupNonUniformShuffleDown 43 342 343 + 345: 308(ptr) AccessChain 34(data) 339 299 + 346: 26(i64vec4) Load 345 + 347: 26(i64vec4) VectorShuffle 346 344 4 5 2 3 + Store 345 347 + 348: 6(int) Load 8(invocation) + 349: 308(ptr) AccessChain 34(data) 59 299 + 350: 26(i64vec4) Load 349 + 351:318(i64vec3) VectorShuffle 350 350 0 1 2 + 352: 6(int) Load 8(invocation) + 353:318(i64vec3) GroupNonUniformShuffleDown 43 351 352 + 354: 308(ptr) AccessChain 34(data) 348 299 + 355: 26(i64vec4) Load 354 + 356: 26(i64vec4) VectorShuffle 355 353 4 5 6 3 + Store 354 356 + 357: 6(int) Load 8(invocation) + 358: 308(ptr) AccessChain 34(data) 70 299 + 359: 26(i64vec4) Load 358 + 360: 6(int) Load 8(invocation) + 361: 26(i64vec4) GroupNonUniformShuffleDown 43 359 360 + 362: 308(ptr) AccessChain 34(data) 357 299 + Store 362 361 + 363: 6(int) Load 8(invocation) + 366: 365(ptr) AccessChain 34(data) 37 364 38 + 367: 27(int64_t) Load 366 + 368: 6(int) Load 8(invocation) + 369: 27(int64_t) GroupNonUniformShuffleUp 43 367 368 + 370: 365(ptr) AccessChain 34(data) 363 364 38 + Store 370 369 + 371: 6(int) Load 8(invocation) + 374: 373(ptr) AccessChain 34(data) 47 364 + 375: 28(i64vec4) Load 374 + 376:372(i64vec2) VectorShuffle 375 375 0 1 + 377: 6(int) Load 8(invocation) + 378:372(i64vec2) GroupNonUniformShuffleUp 43 376 377 + 379: 373(ptr) AccessChain 34(data) 371 364 + 380: 28(i64vec4) Load 379 + 381: 28(i64vec4) VectorShuffle 380 378 4 5 2 3 + Store 379 381 + 382: 6(int) Load 8(invocation) + 384: 373(ptr) AccessChain 34(data) 59 364 + 385: 28(i64vec4) Load 384 + 386:383(i64vec3) VectorShuffle 385 385 0 1 2 + 387: 6(int) Load 8(invocation) + 388:383(i64vec3) GroupNonUniformShuffleUp 43 386 387 + 389: 373(ptr) AccessChain 34(data) 382 364 + 390: 28(i64vec4) Load 389 + 391: 28(i64vec4) VectorShuffle 390 388 4 5 6 3 + Store 389 391 + 392: 6(int) Load 8(invocation) + 393: 373(ptr) AccessChain 34(data) 70 364 + 394: 28(i64vec4) Load 393 + 395: 6(int) Load 8(invocation) + 396: 28(i64vec4) GroupNonUniformShuffleUp 43 394 395 + 397: 373(ptr) AccessChain 34(data) 392 364 + Store 397 396 + 398: 6(int) Load 8(invocation) + 399: 365(ptr) AccessChain 34(data) 37 364 38 + 400: 27(int64_t) Load 399 + 401: 6(int) Load 8(invocation) + 402: 27(int64_t) GroupNonUniformShuffleDown 43 400 401 + 403: 365(ptr) AccessChain 34(data) 398 364 38 + Store 403 402 + 404: 6(int) Load 8(invocation) + 405: 373(ptr) AccessChain 34(data) 47 364 + 406: 28(i64vec4) Load 405 + 407:372(i64vec2) VectorShuffle 406 406 0 1 + 408: 6(int) Load 8(invocation) + 409:372(i64vec2) GroupNonUniformShuffleDown 43 407 408 + 410: 373(ptr) AccessChain 34(data) 404 364 + 411: 28(i64vec4) Load 410 + 412: 28(i64vec4) VectorShuffle 411 409 4 5 2 3 + Store 410 412 + 413: 6(int) Load 8(invocation) + 414: 373(ptr) AccessChain 34(data) 59 364 + 415: 28(i64vec4) Load 414 + 416:383(i64vec3) VectorShuffle 415 415 0 1 2 + 417: 6(int) Load 8(invocation) + 418:383(i64vec3) GroupNonUniformShuffleDown 43 416 417 + 419: 373(ptr) AccessChain 34(data) 413 364 + 420: 28(i64vec4) Load 419 + 421: 28(i64vec4) VectorShuffle 420 418 4 5 6 3 + Store 419 421 + 422: 6(int) Load 8(invocation) + 423: 373(ptr) AccessChain 34(data) 70 364 + 424: 28(i64vec4) Load 423 + 425: 6(int) Load 8(invocation) + 426: 28(i64vec4) GroupNonUniformShuffleDown 43 424 425 + 427: 373(ptr) AccessChain 34(data) 422 364 + Store 427 426 + 428: 6(int) Load 8(invocation) + 431: 430(ptr) AccessChain 34(data) 37 429 38 + 432:29(float16_t) Load 431 + 433: 6(int) Load 8(invocation) + 434:29(float16_t) GroupNonUniformShuffleUp 43 432 433 + 435: 430(ptr) AccessChain 34(data) 428 429 38 + Store 435 434 + 436: 6(int) Load 8(invocation) + 439: 438(ptr) AccessChain 34(data) 47 429 + 440: 30(f16vec4) Load 439 + 441:437(f16vec2) VectorShuffle 440 440 0 1 + 442: 6(int) Load 8(invocation) + 443:437(f16vec2) GroupNonUniformShuffleUp 43 441 442 + 444: 438(ptr) AccessChain 34(data) 436 429 + 445: 30(f16vec4) Load 444 + 446: 30(f16vec4) VectorShuffle 445 443 4 5 2 3 + Store 444 446 + 447: 6(int) Load 8(invocation) + 449: 438(ptr) AccessChain 34(data) 59 429 + 450: 30(f16vec4) Load 449 + 451:448(f16vec3) VectorShuffle 450 450 0 1 2 + 452: 6(int) Load 8(invocation) + 453:448(f16vec3) GroupNonUniformShuffleUp 43 451 452 + 454: 438(ptr) AccessChain 34(data) 447 429 + 455: 30(f16vec4) Load 454 + 456: 30(f16vec4) VectorShuffle 455 453 4 5 6 3 + Store 454 456 + 457: 6(int) Load 8(invocation) + 458: 438(ptr) AccessChain 34(data) 70 429 + 459: 30(f16vec4) Load 458 + 460: 6(int) Load 8(invocation) + 461: 30(f16vec4) GroupNonUniformShuffleUp 43 459 460 + 462: 438(ptr) AccessChain 34(data) 457 429 + Store 462 461 + 463: 6(int) Load 8(invocation) + 464: 430(ptr) AccessChain 34(data) 37 429 38 + 465:29(float16_t) Load 464 + 466: 6(int) Load 8(invocation) + 467:29(float16_t) GroupNonUniformShuffleDown 43 465 466 + 468: 430(ptr) AccessChain 34(data) 463 429 38 + Store 468 467 + 469: 6(int) Load 8(invocation) + 470: 438(ptr) AccessChain 34(data) 47 429 + 471: 30(f16vec4) Load 470 + 472:437(f16vec2) VectorShuffle 471 471 0 1 + 473: 6(int) Load 8(invocation) + 474:437(f16vec2) GroupNonUniformShuffleDown 43 472 473 + 475: 438(ptr) AccessChain 34(data) 469 429 + 476: 30(f16vec4) Load 475 + 477: 30(f16vec4) VectorShuffle 476 474 4 5 2 3 + Store 475 477 + 478: 6(int) Load 8(invocation) + 479: 438(ptr) AccessChain 34(data) 59 429 + 480: 30(f16vec4) Load 479 + 481:448(f16vec3) VectorShuffle 480 480 0 1 2 + 482: 6(int) Load 8(invocation) + 483:448(f16vec3) GroupNonUniformShuffleDown 43 481 482 + 484: 438(ptr) AccessChain 34(data) 478 429 + 485: 30(f16vec4) Load 484 + 486: 30(f16vec4) VectorShuffle 485 483 4 5 6 3 + Store 484 486 + 487: 6(int) Load 8(invocation) + 488: 438(ptr) AccessChain 34(data) 70 429 + 489: 30(f16vec4) Load 488 + 490: 6(int) Load 8(invocation) + 491: 30(f16vec4) GroupNonUniformShuffleDown 43 489 490 + 492: 438(ptr) AccessChain 34(data) 487 429 + Store 492 491 + Return + FunctionEnd diff --git a/Test/baseResults/spv.subgroupExtendedTypesShuffleRelativeNeg.comp.out b/Test/baseResults/spv.subgroupExtendedTypesShuffleRelativeNeg.comp.out new file mode 100644 index 00000000..a0437157 --- /dev/null +++ b/Test/baseResults/spv.subgroupExtendedTypesShuffleRelativeNeg.comp.out @@ -0,0 +1,61 @@ +spv.subgroupExtendedTypesShuffleRelativeNeg.comp +ERROR: 0:26: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:27: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:28: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:29: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:31: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:32: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:33: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:34: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:36: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:37: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:38: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:39: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:41: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:42: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:43: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:44: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:46: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:47: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:48: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:49: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:51: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:52: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:53: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:54: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:56: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:57: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:58: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:59: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:61: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:62: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:63: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:64: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:66: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:67: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:68: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:69: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:71: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:72: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:73: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:74: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:76: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:77: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:78: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:79: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:81: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:82: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:83: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:84: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:86: ' temp highp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:87: ' temp highp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:88: ' temp highp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:89: 'layout( column_major std430) buffer highp 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:91: ' temp highp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:92: ' temp highp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:93: ' temp highp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:94: 'layout( column_major std430) buffer highp 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 56 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/spv.subgroupExtendedTypesVote.comp.out b/Test/baseResults/spv.subgroupExtendedTypesVote.comp.out new file mode 100644 index 00000000..a32c25d2 --- /dev/null +++ b/Test/baseResults/spv.subgroupExtendedTypesVote.comp.out @@ -0,0 +1,377 @@ +spv.subgroupExtendedTypesVote.comp +// Module Version 10300 +// Generated by (magic number): 80007 +// Id's are bound by 277 + + Capability Shader + Capability Float16 + Capability Int64 + Capability Int16 + Capability Int8 + Capability GroupNonUniform + Capability GroupNonUniformVote + Capability StorageUniformBufferBlock16 + Capability StorageBuffer8BitAccess + Extension "SPV_KHR_8bit_storage" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" 10 12 + ExecutionMode 4 LocalSize 8 1 1 + Source GLSL 450 + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" + SourceExtension "GL_EXT_shader_subgroup_extended_types_float16" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int16" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int64" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int8" + SourceExtension "GL_KHR_shader_subgroup_basic" + SourceExtension "GL_KHR_shader_subgroup_vote" + Name 4 "main" + Name 8 "invocation" + Name 10 "gl_SubgroupInvocationID" + Name 12 "gl_SubgroupSize" + Name 32 "Buffers" + MemberName 32(Buffers) 0 "i8" + MemberName 32(Buffers) 1 "u8" + MemberName 32(Buffers) 2 "i16" + MemberName 32(Buffers) 3 "u16" + MemberName 32(Buffers) 4 "i64" + MemberName 32(Buffers) 5 "u64" + MemberName 32(Buffers) 6 "f16" + MemberName 32(Buffers) 7 "r" + Name 35 "data" + Decorate 10(gl_SubgroupInvocationID) RelaxedPrecision + Decorate 10(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId + Decorate 11 RelaxedPrecision + Decorate 12(gl_SubgroupSize) RelaxedPrecision + Decorate 12(gl_SubgroupSize) BuiltIn SubgroupSize + Decorate 13 RelaxedPrecision + Decorate 14 RelaxedPrecision + Decorate 16 RelaxedPrecision + MemberDecorate 32(Buffers) 0 Offset 0 + MemberDecorate 32(Buffers) 1 Offset 4 + MemberDecorate 32(Buffers) 2 Offset 8 + MemberDecorate 32(Buffers) 3 Offset 16 + MemberDecorate 32(Buffers) 4 Offset 32 + MemberDecorate 32(Buffers) 5 Offset 64 + MemberDecorate 32(Buffers) 6 Offset 96 + MemberDecorate 32(Buffers) 7 Offset 104 + Decorate 32(Buffers) Block + Decorate 35(data) DescriptorSet 0 + Decorate 35(data) Binding 0 + Decorate 276 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 9: TypePointer Input 6(int) +10(gl_SubgroupInvocationID): 9(ptr) Variable Input +12(gl_SubgroupSize): 9(ptr) Variable Input + 15: 6(int) Constant 4 + 17: TypeInt 8 1 + 18: TypeVector 17(int8_t) 4 + 19: TypeInt 8 0 + 20: TypeVector 19(int8_t) 4 + 21: TypeInt 16 1 + 22: TypeVector 21(int16_t) 4 + 23: TypeInt 16 0 + 24: TypeVector 23(int16_t) 4 + 25: TypeInt 64 1 + 26: TypeVector 25(int64_t) 4 + 27: TypeInt 64 0 + 28: TypeVector 27(int64_t) 4 + 29: TypeFloat 16 + 30: TypeVector 29(float16_t) 4 + 31: TypeInt 32 1 + 32(Buffers): TypeStruct 18(i8vec4) 20(i8vec4) 22(i16vec4) 24(i16vec4) 26(i64vec4) 28(i64vec4) 30(f16vec4) 31(int) + 33: TypeArray 32(Buffers) 15 + 34: TypePointer StorageBuffer 33 + 35(data): 34(ptr) Variable StorageBuffer + 37: 31(int) Constant 7 + 38: TypePointer StorageBuffer 31(int) + 41: 31(int) Constant 0 + 42: TypeBool + 44: 6(int) Constant 3 + 49: 6(int) Constant 0 + 50: TypePointer StorageBuffer 17(int8_t) + 54: 31(int) Constant 1 + 58: TypeVector 17(int8_t) 2 + 59: TypePointer StorageBuffer 18(i8vec4) + 67: 31(int) Constant 2 + 68: TypeVector 17(int8_t) 3 + 76: 31(int) Constant 3 + 83: TypePointer StorageBuffer 19(int8_t) + 90: TypeVector 19(int8_t) 2 + 91: TypePointer StorageBuffer 20(i8vec4) + 99: TypeVector 19(int8_t) 3 + 113: TypePointer StorageBuffer 21(int16_t) + 120: TypeVector 21(int16_t) 2 + 121: TypePointer StorageBuffer 22(i16vec4) + 129: TypeVector 21(int16_t) 3 + 143: TypePointer StorageBuffer 23(int16_t) + 150: TypeVector 23(int16_t) 2 + 151: TypePointer StorageBuffer 24(i16vec4) + 159: TypeVector 23(int16_t) 3 + 181: 31(int) Constant 4 + 182: TypePointer StorageBuffer 25(int64_t) + 189: TypeVector 25(int64_t) 2 + 190: TypePointer StorageBuffer 26(i64vec4) + 198: TypeVector 25(int64_t) 3 + 212: 31(int) Constant 5 + 213: TypePointer StorageBuffer 27(int64_t) + 220: TypeVector 27(int64_t) 2 + 221: TypePointer StorageBuffer 28(i64vec4) + 229: TypeVector 27(int64_t) 3 + 243: 31(int) Constant 6 + 244: TypePointer StorageBuffer 29(float16_t) + 251: TypeVector 29(float16_t) 2 + 252: TypePointer StorageBuffer 30(f16vec4) + 260: TypeVector 29(float16_t) 3 + 273: TypeVector 6(int) 3 + 274: 6(int) Constant 8 + 275: 6(int) Constant 1 + 276: 273(ivec3) ConstantComposite 274 275 275 + 4(main): 2 Function None 3 + 5: Label + 8(invocation): 7(ptr) Variable Function + 11: 6(int) Load 10(gl_SubgroupInvocationID) + 13: 6(int) Load 12(gl_SubgroupSize) + 14: 6(int) IAdd 11 13 + 16: 6(int) UMod 14 15 + Store 8(invocation) 16 + 36: 6(int) Load 8(invocation) + 39: 38(ptr) AccessChain 35(data) 36 37 + 40: 31(int) Load 39 + 43: 42(bool) SLessThan 40 41 + 45: 42(bool) GroupNonUniformAll 44 43 + SelectionMerge 47 None + BranchConditional 45 46 172 + 46: Label + 48: 6(int) Load 8(invocation) + 51: 50(ptr) AccessChain 35(data) 41 41 49 + 52: 17(int8_t) Load 51 + 53: 42(bool) GroupNonUniformAllEqual 44 52 + 55: 31(int) Select 53 54 41 + 56: 38(ptr) AccessChain 35(data) 48 37 + Store 56 55 + 57: 6(int) Load 8(invocation) + 60: 59(ptr) AccessChain 35(data) 54 41 + 61: 18(i8vec4) Load 60 + 62: 58(i8vec2) VectorShuffle 61 61 0 1 + 63: 42(bool) GroupNonUniformAllEqual 44 62 + 64: 31(int) Select 63 54 41 + 65: 38(ptr) AccessChain 35(data) 57 37 + Store 65 64 + 66: 6(int) Load 8(invocation) + 69: 59(ptr) AccessChain 35(data) 67 41 + 70: 18(i8vec4) Load 69 + 71: 68(i8vec3) VectorShuffle 70 70 0 1 2 + 72: 42(bool) GroupNonUniformAllEqual 44 71 + 73: 31(int) Select 72 54 41 + 74: 38(ptr) AccessChain 35(data) 66 37 + Store 74 73 + 75: 6(int) Load 8(invocation) + 77: 59(ptr) AccessChain 35(data) 76 41 + 78: 18(i8vec4) Load 77 + 79: 42(bool) GroupNonUniformAllEqual 44 78 + 80: 31(int) Select 79 54 41 + 81: 38(ptr) AccessChain 35(data) 75 37 + Store 81 80 + 82: 6(int) Load 8(invocation) + 84: 83(ptr) AccessChain 35(data) 41 54 49 + 85: 19(int8_t) Load 84 + 86: 42(bool) GroupNonUniformAllEqual 44 85 + 87: 31(int) Select 86 54 41 + 88: 38(ptr) AccessChain 35(data) 82 37 + Store 88 87 + 89: 6(int) Load 8(invocation) + 92: 91(ptr) AccessChain 35(data) 54 54 + 93: 20(i8vec4) Load 92 + 94: 90(i8vec2) VectorShuffle 93 93 0 1 + 95: 42(bool) GroupNonUniformAllEqual 44 94 + 96: 31(int) Select 95 54 41 + 97: 38(ptr) AccessChain 35(data) 89 37 + Store 97 96 + 98: 6(int) Load 8(invocation) + 100: 91(ptr) AccessChain 35(data) 67 54 + 101: 20(i8vec4) Load 100 + 102: 99(i8vec3) VectorShuffle 101 101 0 1 2 + 103: 42(bool) GroupNonUniformAllEqual 44 102 + 104: 31(int) Select 103 54 41 + 105: 38(ptr) AccessChain 35(data) 98 37 + Store 105 104 + 106: 6(int) Load 8(invocation) + 107: 91(ptr) AccessChain 35(data) 76 54 + 108: 20(i8vec4) Load 107 + 109: 42(bool) GroupNonUniformAllEqual 44 108 + 110: 31(int) Select 109 54 41 + 111: 38(ptr) AccessChain 35(data) 106 37 + Store 111 110 + 112: 6(int) Load 8(invocation) + 114: 113(ptr) AccessChain 35(data) 41 67 49 + 115: 21(int16_t) Load 114 + 116: 42(bool) GroupNonUniformAllEqual 44 115 + 117: 31(int) Select 116 54 41 + 118: 38(ptr) AccessChain 35(data) 112 37 + Store 118 117 + 119: 6(int) Load 8(invocation) + 122: 121(ptr) AccessChain 35(data) 54 67 + 123: 22(i16vec4) Load 122 + 124:120(i16vec2) VectorShuffle 123 123 0 1 + 125: 42(bool) GroupNonUniformAllEqual 44 124 + 126: 31(int) Select 125 54 41 + 127: 38(ptr) AccessChain 35(data) 119 37 + Store 127 126 + 128: 6(int) Load 8(invocation) + 130: 121(ptr) AccessChain 35(data) 67 67 + 131: 22(i16vec4) Load 130 + 132:129(i16vec3) VectorShuffle 131 131 0 1 2 + 133: 42(bool) GroupNonUniformAllEqual 44 132 + 134: 31(int) Select 133 54 41 + 135: 38(ptr) AccessChain 35(data) 128 37 + Store 135 134 + 136: 6(int) Load 8(invocation) + 137: 121(ptr) AccessChain 35(data) 76 67 + 138: 22(i16vec4) Load 137 + 139: 42(bool) GroupNonUniformAllEqual 44 138 + 140: 31(int) Select 139 54 41 + 141: 38(ptr) AccessChain 35(data) 136 37 + Store 141 140 + 142: 6(int) Load 8(invocation) + 144: 143(ptr) AccessChain 35(data) 41 76 49 + 145: 23(int16_t) Load 144 + 146: 42(bool) GroupNonUniformAllEqual 44 145 + 147: 31(int) Select 146 54 41 + 148: 38(ptr) AccessChain 35(data) 142 37 + Store 148 147 + 149: 6(int) Load 8(invocation) + 152: 151(ptr) AccessChain 35(data) 54 76 + 153: 24(i16vec4) Load 152 + 154:150(i16vec2) VectorShuffle 153 153 0 1 + 155: 42(bool) GroupNonUniformAllEqual 44 154 + 156: 31(int) Select 155 54 41 + 157: 38(ptr) AccessChain 35(data) 149 37 + Store 157 156 + 158: 6(int) Load 8(invocation) + 160: 151(ptr) AccessChain 35(data) 67 76 + 161: 24(i16vec4) Load 160 + 162:159(i16vec3) VectorShuffle 161 161 0 1 2 + 163: 42(bool) GroupNonUniformAllEqual 44 162 + 164: 31(int) Select 163 54 41 + 165: 38(ptr) AccessChain 35(data) 158 37 + Store 165 164 + 166: 6(int) Load 8(invocation) + 167: 151(ptr) AccessChain 35(data) 76 76 + 168: 24(i16vec4) Load 167 + 169: 42(bool) GroupNonUniformAllEqual 44 168 + 170: 31(int) Select 169 54 41 + 171: 38(ptr) AccessChain 35(data) 166 37 + Store 171 170 + Branch 47 + 172: Label + 173: 6(int) Load 8(invocation) + 174: 38(ptr) AccessChain 35(data) 173 37 + 175: 31(int) Load 174 + 176: 42(bool) SLessThan 175 41 + 177: 42(bool) GroupNonUniformAny 44 176 + SelectionMerge 179 None + BranchConditional 177 178 179 + 178: Label + 180: 6(int) Load 8(invocation) + 183: 182(ptr) AccessChain 35(data) 41 181 49 + 184: 25(int64_t) Load 183 + 185: 42(bool) GroupNonUniformAllEqual 44 184 + 186: 31(int) Select 185 54 41 + 187: 38(ptr) AccessChain 35(data) 180 37 + Store 187 186 + 188: 6(int) Load 8(invocation) + 191: 190(ptr) AccessChain 35(data) 54 181 + 192: 26(i64vec4) Load 191 + 193:189(i64vec2) VectorShuffle 192 192 0 1 + 194: 42(bool) GroupNonUniformAllEqual 44 193 + 195: 31(int) Select 194 54 41 + 196: 38(ptr) AccessChain 35(data) 188 37 + Store 196 195 + 197: 6(int) Load 8(invocation) + 199: 190(ptr) AccessChain 35(data) 67 181 + 200: 26(i64vec4) Load 199 + 201:198(i64vec3) VectorShuffle 200 200 0 1 2 + 202: 42(bool) GroupNonUniformAllEqual 44 201 + 203: 31(int) Select 202 54 41 + 204: 38(ptr) AccessChain 35(data) 197 37 + Store 204 203 + 205: 6(int) Load 8(invocation) + 206: 190(ptr) AccessChain 35(data) 76 181 + 207: 26(i64vec4) Load 206 + 208: 42(bool) GroupNonUniformAllEqual 44 207 + 209: 31(int) Select 208 54 41 + 210: 38(ptr) AccessChain 35(data) 205 37 + Store 210 209 + 211: 6(int) Load 8(invocation) + 214: 213(ptr) AccessChain 35(data) 41 212 49 + 215: 27(int64_t) Load 214 + 216: 42(bool) GroupNonUniformAllEqual 44 215 + 217: 31(int) Select 216 54 41 + 218: 38(ptr) AccessChain 35(data) 211 37 + Store 218 217 + 219: 6(int) Load 8(invocation) + 222: 221(ptr) AccessChain 35(data) 54 212 + 223: 28(i64vec4) Load 222 + 224:220(i64vec2) VectorShuffle 223 223 0 1 + 225: 42(bool) GroupNonUniformAllEqual 44 224 + 226: 31(int) Select 225 54 41 + 227: 38(ptr) AccessChain 35(data) 219 37 + Store 227 226 + 228: 6(int) Load 8(invocation) + 230: 221(ptr) AccessChain 35(data) 67 212 + 231: 28(i64vec4) Load 230 + 232:229(i64vec3) VectorShuffle 231 231 0 1 2 + 233: 42(bool) GroupNonUniformAllEqual 44 232 + 234: 31(int) Select 233 54 41 + 235: 38(ptr) AccessChain 35(data) 228 37 + Store 235 234 + 236: 6(int) Load 8(invocation) + 237: 221(ptr) AccessChain 35(data) 76 212 + 238: 28(i64vec4) Load 237 + 239: 42(bool) GroupNonUniformAllEqual 44 238 + 240: 31(int) Select 239 54 41 + 241: 38(ptr) AccessChain 35(data) 236 37 + Store 241 240 + 242: 6(int) Load 8(invocation) + 245: 244(ptr) AccessChain 35(data) 41 243 49 + 246:29(float16_t) Load 245 + 247: 42(bool) GroupNonUniformAllEqual 44 246 + 248: 31(int) Select 247 54 41 + 249: 38(ptr) AccessChain 35(data) 242 37 + Store 249 248 + 250: 6(int) Load 8(invocation) + 253: 252(ptr) AccessChain 35(data) 54 243 + 254: 30(f16vec4) Load 253 + 255:251(f16vec2) VectorShuffle 254 254 0 1 + 256: 42(bool) GroupNonUniformAllEqual 44 255 + 257: 31(int) Select 256 54 41 + 258: 38(ptr) AccessChain 35(data) 250 37 + Store 258 257 + 259: 6(int) Load 8(invocation) + 261: 252(ptr) AccessChain 35(data) 67 243 + 262: 30(f16vec4) Load 261 + 263:260(f16vec3) VectorShuffle 262 262 0 1 2 + 264: 42(bool) GroupNonUniformAllEqual 44 263 + 265: 31(int) Select 264 54 41 + 266: 38(ptr) AccessChain 35(data) 259 37 + Store 266 265 + 267: 6(int) Load 8(invocation) + 268: 252(ptr) AccessChain 35(data) 76 243 + 269: 30(f16vec4) Load 268 + 270: 42(bool) GroupNonUniformAllEqual 44 269 + 271: 31(int) Select 270 54 41 + 272: 38(ptr) AccessChain 35(data) 267 37 + Store 272 271 + Branch 179 + 179: Label + Branch 47 + 47: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.subgroupExtendedTypesVoteNeg.comp.out b/Test/baseResults/spv.subgroupExtendedTypesVoteNeg.comp.out new file mode 100644 index 00000000..2197d417 --- /dev/null +++ b/Test/baseResults/spv.subgroupExtendedTypesVoteNeg.comp.out @@ -0,0 +1,33 @@ +spv.subgroupExtendedTypesVoteNeg.comp +ERROR: 0:29: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:30: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:31: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:32: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:34: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:35: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:36: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:37: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:39: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:40: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:41: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:42: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:44: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:45: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:46: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:47: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:51: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:52: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:53: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:54: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:56: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:57: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:58: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:59: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:61: ' temp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:62: ' temp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:63: ' temp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:64: 'layout( column_major std430) buffer 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 28 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/spv.subgroupExtendedTypesArithmetic.comp b/Test/spv.subgroupExtendedTypesArithmetic.comp new file mode 100644 index 00000000..f58268f5 --- /dev/null +++ b/Test/spv.subgroupExtendedTypesArithmetic.comp @@ -0,0 +1,715 @@ +#version 450 + +#extension GL_KHR_shader_subgroup_arithmetic: enable +#extension GL_EXT_shader_subgroup_extended_types_int8: enable +#extension GL_EXT_shader_subgroup_extended_types_int16: enable +#extension GL_EXT_shader_subgroup_extended_types_int64: enable +#extension GL_EXT_shader_subgroup_extended_types_float16: enable + +layout (local_size_x = 8) in; + +layout(binding = 0) buffer Buffers +{ + i8vec4 i8; + u8vec4 u8; + i16vec4 i16; + u16vec4 u16; + i64vec4 i64; + u64vec4 u64; + f16vec4 f16; +} data[4]; + +void main() +{ + uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; + + data[invocation].i8.x = subgroupAdd(data[0].i8.x); + data[invocation].i8.xy = subgroupAdd(data[1].i8.xy); + data[invocation].i8.xyz = subgroupAdd(data[2].i8.xyz); + data[invocation].i8 = subgroupAdd(data[3].i8); + + data[invocation].i8.x = subgroupMul(data[0].i8.x); + data[invocation].i8.xy = subgroupMul(data[1].i8.xy); + data[invocation].i8.xyz = subgroupMul(data[2].i8.xyz); + data[invocation].i8 = subgroupMul(data[3].i8); + + data[invocation].i8.x = subgroupMin(data[0].i8.x); + data[invocation].i8.xy = subgroupMin(data[1].i8.xy); + data[invocation].i8.xyz = subgroupMin(data[2].i8.xyz); + data[invocation].i8 = subgroupMin(data[3].i8); + + data[invocation].i8.x = subgroupMax(data[0].i8.x); + data[invocation].i8.xy = subgroupMax(data[1].i8.xy); + data[invocation].i8.xyz = subgroupMax(data[2].i8.xyz); + data[invocation].i8 = subgroupMax(data[3].i8); + + data[invocation].i8.x = subgroupAnd(data[0].i8.x); + data[invocation].i8.xy = subgroupAnd(data[1].i8.xy); + data[invocation].i8.xyz = subgroupAnd(data[2].i8.xyz); + data[invocation].i8 = subgroupAnd(data[3].i8); + + data[invocation].i8.x = subgroupOr(data[0].i8.x); + data[invocation].i8.xy = subgroupOr(data[1].i8.xy); + data[invocation].i8.xyz = subgroupOr(data[2].i8.xyz); + data[invocation].i8 = subgroupOr(data[3].i8); + + data[invocation].i8.x = subgroupXor(data[0].i8.x); + data[invocation].i8.xy = subgroupXor(data[1].i8.xy); + data[invocation].i8.xyz = subgroupXor(data[2].i8.xyz); + data[invocation].i8 = subgroupXor(data[3].i8); + + data[invocation].i8.x = subgroupInclusiveAdd(data[0].i8.x); + data[invocation].i8.xy = subgroupInclusiveAdd(data[1].i8.xy); + data[invocation].i8.xyz = subgroupInclusiveAdd(data[2].i8.xyz); + data[invocation].i8 = subgroupInclusiveAdd(data[3].i8); + + data[invocation].i8.x = subgroupInclusiveMul(data[0].i8.x); + data[invocation].i8.xy = subgroupInclusiveMul(data[1].i8.xy); + data[invocation].i8.xyz = subgroupInclusiveMul(data[2].i8.xyz); + data[invocation].i8 = subgroupInclusiveMul(data[3].i8); + + data[invocation].i8.x = subgroupInclusiveMin(data[0].i8.x); + data[invocation].i8.xy = subgroupInclusiveMin(data[1].i8.xy); + data[invocation].i8.xyz = subgroupInclusiveMin(data[2].i8.xyz); + data[invocation].i8 = subgroupInclusiveMin(data[3].i8); + + data[invocation].i8.x = subgroupInclusiveMax(data[0].i8.x); + data[invocation].i8.xy = subgroupInclusiveMax(data[1].i8.xy); + data[invocation].i8.xyz = subgroupInclusiveMax(data[2].i8.xyz); + data[invocation].i8 = subgroupInclusiveMax(data[3].i8); + + data[invocation].i8.x = subgroupInclusiveAnd(data[0].i8.x); + data[invocation].i8.xy = subgroupInclusiveAnd(data[1].i8.xy); + data[invocation].i8.xyz = subgroupInclusiveAnd(data[2].i8.xyz); + data[invocation].i8 = subgroupInclusiveAnd(data[3].i8); + + data[invocation].i8.x = subgroupInclusiveOr(data[0].i8.x); + data[invocation].i8.xy = subgroupInclusiveOr(data[1].i8.xy); + data[invocation].i8.xyz = subgroupInclusiveOr(data[2].i8.xyz); + data[invocation].i8 = subgroupInclusiveOr(data[3].i8); + + data[invocation].i8.x = subgroupInclusiveXor(data[0].i8.x); + data[invocation].i8.xy = subgroupInclusiveXor(data[1].i8.xy); + data[invocation].i8.xyz = subgroupInclusiveXor(data[2].i8.xyz); + data[invocation].i8 = subgroupInclusiveXor(data[3].i8); + + data[invocation].i8.x = subgroupExclusiveAdd(data[0].i8.x); + data[invocation].i8.xy = subgroupExclusiveAdd(data[1].i8.xy); + data[invocation].i8.xyz = subgroupExclusiveAdd(data[2].i8.xyz); + data[invocation].i8 = subgroupExclusiveAdd(data[3].i8); + + data[invocation].i8.x = subgroupExclusiveMul(data[0].i8.x); + data[invocation].i8.xy = subgroupExclusiveMul(data[1].i8.xy); + data[invocation].i8.xyz = subgroupExclusiveMul(data[2].i8.xyz); + data[invocation].i8 = subgroupExclusiveMul(data[3].i8); + + data[invocation].i8.x = subgroupExclusiveMin(data[0].i8.x); + data[invocation].i8.xy = subgroupExclusiveMin(data[1].i8.xy); + data[invocation].i8.xyz = subgroupExclusiveMin(data[2].i8.xyz); + data[invocation].i8 = subgroupExclusiveMin(data[3].i8); + + data[invocation].i8.x = subgroupExclusiveMax(data[0].i8.x); + data[invocation].i8.xy = subgroupExclusiveMax(data[1].i8.xy); + data[invocation].i8.xyz = subgroupExclusiveMax(data[2].i8.xyz); + data[invocation].i8 = subgroupExclusiveMax(data[3].i8); + + data[invocation].i8.x = subgroupExclusiveAnd(data[0].i8.x); + data[invocation].i8.xy = subgroupExclusiveAnd(data[1].i8.xy); + data[invocation].i8.xyz = subgroupExclusiveAnd(data[2].i8.xyz); + data[invocation].i8 = subgroupExclusiveAnd(data[3].i8); + + data[invocation].i8.x = subgroupExclusiveOr(data[0].i8.x); + data[invocation].i8.xy = subgroupExclusiveOr(data[1].i8.xy); + data[invocation].i8.xyz = subgroupExclusiveOr(data[2].i8.xyz); + data[invocation].i8 = subgroupExclusiveOr(data[3].i8); + + data[invocation].i8.x = subgroupExclusiveXor(data[0].i8.x); + data[invocation].i8.xy = subgroupExclusiveXor(data[1].i8.xy); + data[invocation].i8.xyz = subgroupExclusiveXor(data[2].i8.xyz); + data[invocation].i8 = subgroupExclusiveXor(data[3].i8); + + data[invocation].u8.x = subgroupAdd(data[0].u8.x); + data[invocation].u8.xy = subgroupAdd(data[1].u8.xy); + data[invocation].u8.xyz = subgroupAdd(data[2].u8.xyz); + data[invocation].u8 = subgroupAdd(data[3].u8); + + data[invocation].u8.x = subgroupMul(data[0].u8.x); + data[invocation].u8.xy = subgroupMul(data[1].u8.xy); + data[invocation].u8.xyz = subgroupMul(data[2].u8.xyz); + data[invocation].u8 = subgroupMul(data[3].u8); + + data[invocation].u8.x = subgroupMin(data[0].u8.x); + data[invocation].u8.xy = subgroupMin(data[1].u8.xy); + data[invocation].u8.xyz = subgroupMin(data[2].u8.xyz); + data[invocation].u8 = subgroupMin(data[3].u8); + + data[invocation].u8.x = subgroupMax(data[0].u8.x); + data[invocation].u8.xy = subgroupMax(data[1].u8.xy); + data[invocation].u8.xyz = subgroupMax(data[2].u8.xyz); + data[invocation].u8 = subgroupMax(data[3].u8); + + data[invocation].u8.x = subgroupAnd(data[0].u8.x); + data[invocation].u8.xy = subgroupAnd(data[1].u8.xy); + data[invocation].u8.xyz = subgroupAnd(data[2].u8.xyz); + data[invocation].u8 = subgroupAnd(data[3].u8); + + data[invocation].u8.x = subgroupOr(data[0].u8.x); + data[invocation].u8.xy = subgroupOr(data[1].u8.xy); + data[invocation].u8.xyz = subgroupOr(data[2].u8.xyz); + data[invocation].u8 = subgroupOr(data[3].u8); + + data[invocation].u8.x = subgroupXor(data[0].u8.x); + data[invocation].u8.xy = subgroupXor(data[1].u8.xy); + data[invocation].u8.xyz = subgroupXor(data[2].u8.xyz); + data[invocation].u8 = subgroupXor(data[3].u8); + + data[invocation].u8.x = subgroupInclusiveAdd(data[0].u8.x); + data[invocation].u8.xy = subgroupInclusiveAdd(data[1].u8.xy); + data[invocation].u8.xyz = subgroupInclusiveAdd(data[2].u8.xyz); + data[invocation].u8 = subgroupInclusiveAdd(data[3].u8); + + data[invocation].u8.x = subgroupInclusiveMul(data[0].u8.x); + data[invocation].u8.xy = subgroupInclusiveMul(data[1].u8.xy); + data[invocation].u8.xyz = subgroupInclusiveMul(data[2].u8.xyz); + data[invocation].u8 = subgroupInclusiveMul(data[3].u8); + + data[invocation].u8.x = subgroupInclusiveMin(data[0].u8.x); + data[invocation].u8.xy = subgroupInclusiveMin(data[1].u8.xy); + data[invocation].u8.xyz = subgroupInclusiveMin(data[2].u8.xyz); + data[invocation].u8 = subgroupInclusiveMin(data[3].u8); + + data[invocation].u8.x = subgroupInclusiveMax(data[0].u8.x); + data[invocation].u8.xy = subgroupInclusiveMax(data[1].u8.xy); + data[invocation].u8.xyz = subgroupInclusiveMax(data[2].u8.xyz); + data[invocation].u8 = subgroupInclusiveMax(data[3].u8); + + data[invocation].u8.x = subgroupInclusiveAnd(data[0].u8.x); + data[invocation].u8.xy = subgroupInclusiveAnd(data[1].u8.xy); + data[invocation].u8.xyz = subgroupInclusiveAnd(data[2].u8.xyz); + data[invocation].u8 = subgroupInclusiveAnd(data[3].u8); + + data[invocation].u8.x = subgroupInclusiveOr(data[0].u8.x); + data[invocation].u8.xy = subgroupInclusiveOr(data[1].u8.xy); + data[invocation].u8.xyz = subgroupInclusiveOr(data[2].u8.xyz); + data[invocation].u8 = subgroupInclusiveOr(data[3].u8); + + data[invocation].u8.x = subgroupInclusiveXor(data[0].u8.x); + data[invocation].u8.xy = subgroupInclusiveXor(data[1].u8.xy); + data[invocation].u8.xyz = subgroupInclusiveXor(data[2].u8.xyz); + data[invocation].u8 = subgroupInclusiveXor(data[3].u8); + + data[invocation].u8.x = subgroupExclusiveAdd(data[0].u8.x); + data[invocation].u8.xy = subgroupExclusiveAdd(data[1].u8.xy); + data[invocation].u8.xyz = subgroupExclusiveAdd(data[2].u8.xyz); + data[invocation].u8 = subgroupExclusiveAdd(data[3].u8); + + data[invocation].u8.x = subgroupExclusiveMul(data[0].u8.x); + data[invocation].u8.xy = subgroupExclusiveMul(data[1].u8.xy); + data[invocation].u8.xyz = subgroupExclusiveMul(data[2].u8.xyz); + data[invocation].u8 = subgroupExclusiveMul(data[3].u8); + + data[invocation].u8.x = subgroupExclusiveMin(data[0].u8.x); + data[invocation].u8.xy = subgroupExclusiveMin(data[1].u8.xy); + data[invocation].u8.xyz = subgroupExclusiveMin(data[2].u8.xyz); + data[invocation].u8 = subgroupExclusiveMin(data[3].u8); + + data[invocation].u8.x = subgroupExclusiveMax(data[0].u8.x); + data[invocation].u8.xy = subgroupExclusiveMax(data[1].u8.xy); + data[invocation].u8.xyz = subgroupExclusiveMax(data[2].u8.xyz); + data[invocation].u8 = subgroupExclusiveMax(data[3].u8); + + data[invocation].u8.x = subgroupExclusiveAnd(data[0].u8.x); + data[invocation].u8.xy = subgroupExclusiveAnd(data[1].u8.xy); + data[invocation].u8.xyz = subgroupExclusiveAnd(data[2].u8.xyz); + data[invocation].u8 = subgroupExclusiveAnd(data[3].u8); + + data[invocation].u8.x = subgroupExclusiveOr(data[0].u8.x); + data[invocation].u8.xy = subgroupExclusiveOr(data[1].u8.xy); + data[invocation].u8.xyz = subgroupExclusiveOr(data[2].u8.xyz); + data[invocation].u8 = subgroupExclusiveOr(data[3].u8); + + data[invocation].u8.x = subgroupExclusiveXor(data[0].u8.x); + data[invocation].u8.xy = subgroupExclusiveXor(data[1].u8.xy); + data[invocation].u8.xyz = subgroupExclusiveXor(data[2].u8.xyz); + data[invocation].u8 = subgroupExclusiveXor(data[3].u8); + + data[invocation].i16.x = subgroupAdd(data[0].i16.x); + data[invocation].i16.xy = subgroupAdd(data[1].i16.xy); + data[invocation].i16.xyz = subgroupAdd(data[2].i16.xyz); + data[invocation].i16 = subgroupAdd(data[3].i16); + + data[invocation].i16.x = subgroupMul(data[0].i16.x); + data[invocation].i16.xy = subgroupMul(data[1].i16.xy); + data[invocation].i16.xyz = subgroupMul(data[2].i16.xyz); + data[invocation].i16 = subgroupMul(data[3].i16); + + data[invocation].i16.x = subgroupMin(data[0].i16.x); + data[invocation].i16.xy = subgroupMin(data[1].i16.xy); + data[invocation].i16.xyz = subgroupMin(data[2].i16.xyz); + data[invocation].i16 = subgroupMin(data[3].i16); + + data[invocation].i16.x = subgroupMax(data[0].i16.x); + data[invocation].i16.xy = subgroupMax(data[1].i16.xy); + data[invocation].i16.xyz = subgroupMax(data[2].i16.xyz); + data[invocation].i16 = subgroupMax(data[3].i16); + + data[invocation].i16.x = subgroupAnd(data[0].i16.x); + data[invocation].i16.xy = subgroupAnd(data[1].i16.xy); + data[invocation].i16.xyz = subgroupAnd(data[2].i16.xyz); + data[invocation].i16 = subgroupAnd(data[3].i16); + + data[invocation].i16.x = subgroupOr(data[0].i16.x); + data[invocation].i16.xy = subgroupOr(data[1].i16.xy); + data[invocation].i16.xyz = subgroupOr(data[2].i16.xyz); + data[invocation].i16 = subgroupOr(data[3].i16); + + data[invocation].i16.x = subgroupXor(data[0].i16.x); + data[invocation].i16.xy = subgroupXor(data[1].i16.xy); + data[invocation].i16.xyz = subgroupXor(data[2].i16.xyz); + data[invocation].i16 = subgroupXor(data[3].i16); + + data[invocation].i16.x = subgroupInclusiveAdd(data[0].i16.x); + data[invocation].i16.xy = subgroupInclusiveAdd(data[1].i16.xy); + data[invocation].i16.xyz = subgroupInclusiveAdd(data[2].i16.xyz); + data[invocation].i16 = subgroupInclusiveAdd(data[3].i16); + + data[invocation].i16.x = subgroupInclusiveMul(data[0].i16.x); + data[invocation].i16.xy = subgroupInclusiveMul(data[1].i16.xy); + data[invocation].i16.xyz = subgroupInclusiveMul(data[2].i16.xyz); + data[invocation].i16 = subgroupInclusiveMul(data[3].i16); + + data[invocation].i16.x = subgroupInclusiveMin(data[0].i16.x); + data[invocation].i16.xy = subgroupInclusiveMin(data[1].i16.xy); + data[invocation].i16.xyz = subgroupInclusiveMin(data[2].i16.xyz); + data[invocation].i16 = subgroupInclusiveMin(data[3].i16); + + data[invocation].i16.x = subgroupInclusiveMax(data[0].i16.x); + data[invocation].i16.xy = subgroupInclusiveMax(data[1].i16.xy); + data[invocation].i16.xyz = subgroupInclusiveMax(data[2].i16.xyz); + data[invocation].i16 = subgroupInclusiveMax(data[3].i16); + + data[invocation].i16.x = subgroupInclusiveAnd(data[0].i16.x); + data[invocation].i16.xy = subgroupInclusiveAnd(data[1].i16.xy); + data[invocation].i16.xyz = subgroupInclusiveAnd(data[2].i16.xyz); + data[invocation].i16 = subgroupInclusiveAnd(data[3].i16); + + data[invocation].i16.x = subgroupInclusiveOr(data[0].i16.x); + data[invocation].i16.xy = subgroupInclusiveOr(data[1].i16.xy); + data[invocation].i16.xyz = subgroupInclusiveOr(data[2].i16.xyz); + data[invocation].i16 = subgroupInclusiveOr(data[3].i16); + + data[invocation].i16.x = subgroupInclusiveXor(data[0].i16.x); + data[invocation].i16.xy = subgroupInclusiveXor(data[1].i16.xy); + data[invocation].i16.xyz = subgroupInclusiveXor(data[2].i16.xyz); + data[invocation].i16 = subgroupInclusiveXor(data[3].i16); + + data[invocation].i16.x = subgroupExclusiveAdd(data[0].i16.x); + data[invocation].i16.xy = subgroupExclusiveAdd(data[1].i16.xy); + data[invocation].i16.xyz = subgroupExclusiveAdd(data[2].i16.xyz); + data[invocation].i16 = subgroupExclusiveAdd(data[3].i16); + + data[invocation].i16.x = subgroupExclusiveMul(data[0].i16.x); + data[invocation].i16.xy = subgroupExclusiveMul(data[1].i16.xy); + data[invocation].i16.xyz = subgroupExclusiveMul(data[2].i16.xyz); + data[invocation].i16 = subgroupExclusiveMul(data[3].i16); + + data[invocation].i16.x = subgroupExclusiveMin(data[0].i16.x); + data[invocation].i16.xy = subgroupExclusiveMin(data[1].i16.xy); + data[invocation].i16.xyz = subgroupExclusiveMin(data[2].i16.xyz); + data[invocation].i16 = subgroupExclusiveMin(data[3].i16); + + data[invocation].i16.x = subgroupExclusiveMax(data[0].i16.x); + data[invocation].i16.xy = subgroupExclusiveMax(data[1].i16.xy); + data[invocation].i16.xyz = subgroupExclusiveMax(data[2].i16.xyz); + data[invocation].i16 = subgroupExclusiveMax(data[3].i16); + + data[invocation].i16.x = subgroupExclusiveAnd(data[0].i16.x); + data[invocation].i16.xy = subgroupExclusiveAnd(data[1].i16.xy); + data[invocation].i16.xyz = subgroupExclusiveAnd(data[2].i16.xyz); + data[invocation].i16 = subgroupExclusiveAnd(data[3].i16); + + data[invocation].i16.x = subgroupExclusiveOr(data[0].i16.x); + data[invocation].i16.xy = subgroupExclusiveOr(data[1].i16.xy); + data[invocation].i16.xyz = subgroupExclusiveOr(data[2].i16.xyz); + data[invocation].i16 = subgroupExclusiveOr(data[3].i16); + + data[invocation].i16.x = subgroupExclusiveXor(data[0].i16.x); + data[invocation].i16.xy = subgroupExclusiveXor(data[1].i16.xy); + data[invocation].i16.xyz = subgroupExclusiveXor(data[2].i16.xyz); + data[invocation].i16 = subgroupExclusiveXor(data[3].i16); + + data[invocation].u16.x = subgroupAdd(data[0].u16.x); + data[invocation].u16.xy = subgroupAdd(data[1].u16.xy); + data[invocation].u16.xyz = subgroupAdd(data[2].u16.xyz); + data[invocation].u16 = subgroupAdd(data[3].u16); + + data[invocation].u16.x = subgroupMul(data[0].u16.x); + data[invocation].u16.xy = subgroupMul(data[1].u16.xy); + data[invocation].u16.xyz = subgroupMul(data[2].u16.xyz); + data[invocation].u16 = subgroupMul(data[3].u16); + + data[invocation].u16.x = subgroupMin(data[0].u16.x); + data[invocation].u16.xy = subgroupMin(data[1].u16.xy); + data[invocation].u16.xyz = subgroupMin(data[2].u16.xyz); + data[invocation].u16 = subgroupMin(data[3].u16); + + data[invocation].u16.x = subgroupMax(data[0].u16.x); + data[invocation].u16.xy = subgroupMax(data[1].u16.xy); + data[invocation].u16.xyz = subgroupMax(data[2].u16.xyz); + data[invocation].u16 = subgroupMax(data[3].u16); + + data[invocation].u16.x = subgroupAnd(data[0].u16.x); + data[invocation].u16.xy = subgroupAnd(data[1].u16.xy); + data[invocation].u16.xyz = subgroupAnd(data[2].u16.xyz); + data[invocation].u16 = subgroupAnd(data[3].u16); + + data[invocation].u16.x = subgroupOr(data[0].u16.x); + data[invocation].u16.xy = subgroupOr(data[1].u16.xy); + data[invocation].u16.xyz = subgroupOr(data[2].u16.xyz); + data[invocation].u16 = subgroupOr(data[3].u16); + + data[invocation].u16.x = subgroupXor(data[0].u16.x); + data[invocation].u16.xy = subgroupXor(data[1].u16.xy); + data[invocation].u16.xyz = subgroupXor(data[2].u16.xyz); + data[invocation].u16 = subgroupXor(data[3].u16); + + data[invocation].u16.x = subgroupInclusiveAdd(data[0].u16.x); + data[invocation].u16.xy = subgroupInclusiveAdd(data[1].u16.xy); + data[invocation].u16.xyz = subgroupInclusiveAdd(data[2].u16.xyz); + data[invocation].u16 = subgroupInclusiveAdd(data[3].u16); + + data[invocation].u16.x = subgroupInclusiveMul(data[0].u16.x); + data[invocation].u16.xy = subgroupInclusiveMul(data[1].u16.xy); + data[invocation].u16.xyz = subgroupInclusiveMul(data[2].u16.xyz); + data[invocation].u16 = subgroupInclusiveMul(data[3].u16); + + data[invocation].u16.x = subgroupInclusiveMin(data[0].u16.x); + data[invocation].u16.xy = subgroupInclusiveMin(data[1].u16.xy); + data[invocation].u16.xyz = subgroupInclusiveMin(data[2].u16.xyz); + data[invocation].u16 = subgroupInclusiveMin(data[3].u16); + + data[invocation].u16.x = subgroupInclusiveMax(data[0].u16.x); + data[invocation].u16.xy = subgroupInclusiveMax(data[1].u16.xy); + data[invocation].u16.xyz = subgroupInclusiveMax(data[2].u16.xyz); + data[invocation].u16 = subgroupInclusiveMax(data[3].u16); + + data[invocation].u16.x = subgroupInclusiveAnd(data[0].u16.x); + data[invocation].u16.xy = subgroupInclusiveAnd(data[1].u16.xy); + data[invocation].u16.xyz = subgroupInclusiveAnd(data[2].u16.xyz); + data[invocation].u16 = subgroupInclusiveAnd(data[3].u16); + + data[invocation].u16.x = subgroupInclusiveOr(data[0].u16.x); + data[invocation].u16.xy = subgroupInclusiveOr(data[1].u16.xy); + data[invocation].u16.xyz = subgroupInclusiveOr(data[2].u16.xyz); + data[invocation].u16 = subgroupInclusiveOr(data[3].u16); + + data[invocation].u16.x = subgroupInclusiveXor(data[0].u16.x); + data[invocation].u16.xy = subgroupInclusiveXor(data[1].u16.xy); + data[invocation].u16.xyz = subgroupInclusiveXor(data[2].u16.xyz); + data[invocation].u16 = subgroupInclusiveXor(data[3].u16); + + data[invocation].u16.x = subgroupExclusiveAdd(data[0].u16.x); + data[invocation].u16.xy = subgroupExclusiveAdd(data[1].u16.xy); + data[invocation].u16.xyz = subgroupExclusiveAdd(data[2].u16.xyz); + data[invocation].u16 = subgroupExclusiveAdd(data[3].u16); + + data[invocation].u16.x = subgroupExclusiveMul(data[0].u16.x); + data[invocation].u16.xy = subgroupExclusiveMul(data[1].u16.xy); + data[invocation].u16.xyz = subgroupExclusiveMul(data[2].u16.xyz); + data[invocation].u16 = subgroupExclusiveMul(data[3].u16); + + data[invocation].u16.x = subgroupExclusiveMin(data[0].u16.x); + data[invocation].u16.xy = subgroupExclusiveMin(data[1].u16.xy); + data[invocation].u16.xyz = subgroupExclusiveMin(data[2].u16.xyz); + data[invocation].u16 = subgroupExclusiveMin(data[3].u16); + + data[invocation].u16.x = subgroupExclusiveMax(data[0].u16.x); + data[invocation].u16.xy = subgroupExclusiveMax(data[1].u16.xy); + data[invocation].u16.xyz = subgroupExclusiveMax(data[2].u16.xyz); + data[invocation].u16 = subgroupExclusiveMax(data[3].u16); + + data[invocation].u16.x = subgroupExclusiveAnd(data[0].u16.x); + data[invocation].u16.xy = subgroupExclusiveAnd(data[1].u16.xy); + data[invocation].u16.xyz = subgroupExclusiveAnd(data[2].u16.xyz); + data[invocation].u16 = subgroupExclusiveAnd(data[3].u16); + + data[invocation].u16.x = subgroupExclusiveOr(data[0].u16.x); + data[invocation].u16.xy = subgroupExclusiveOr(data[1].u16.xy); + data[invocation].u16.xyz = subgroupExclusiveOr(data[2].u16.xyz); + data[invocation].u16 = subgroupExclusiveOr(data[3].u16); + + data[invocation].u16.x = subgroupExclusiveXor(data[0].u16.x); + data[invocation].u16.xy = subgroupExclusiveXor(data[1].u16.xy); + data[invocation].u16.xyz = subgroupExclusiveXor(data[2].u16.xyz); + data[invocation].u16 = subgroupExclusiveXor(data[3].u16); + + data[invocation].i64.x = subgroupAdd(data[0].i64.x); + data[invocation].i64.xy = subgroupAdd(data[1].i64.xy); + data[invocation].i64.xyz = subgroupAdd(data[2].i64.xyz); + data[invocation].i64 = subgroupAdd(data[3].i64); + + data[invocation].i64.x = subgroupMul(data[0].i64.x); + data[invocation].i64.xy = subgroupMul(data[1].i64.xy); + data[invocation].i64.xyz = subgroupMul(data[2].i64.xyz); + data[invocation].i64 = subgroupMul(data[3].i64); + + data[invocation].i64.x = subgroupMin(data[0].i64.x); + data[invocation].i64.xy = subgroupMin(data[1].i64.xy); + data[invocation].i64.xyz = subgroupMin(data[2].i64.xyz); + data[invocation].i64 = subgroupMin(data[3].i64); + + data[invocation].i64.x = subgroupMax(data[0].i64.x); + data[invocation].i64.xy = subgroupMax(data[1].i64.xy); + data[invocation].i64.xyz = subgroupMax(data[2].i64.xyz); + data[invocation].i64 = subgroupMax(data[3].i64); + + data[invocation].i64.x = subgroupAnd(data[0].i64.x); + data[invocation].i64.xy = subgroupAnd(data[1].i64.xy); + data[invocation].i64.xyz = subgroupAnd(data[2].i64.xyz); + data[invocation].i64 = subgroupAnd(data[3].i64); + + data[invocation].i64.x = subgroupOr(data[0].i64.x); + data[invocation].i64.xy = subgroupOr(data[1].i64.xy); + data[invocation].i64.xyz = subgroupOr(data[2].i64.xyz); + data[invocation].i64 = subgroupOr(data[3].i64); + + data[invocation].i64.x = subgroupXor(data[0].i64.x); + data[invocation].i64.xy = subgroupXor(data[1].i64.xy); + data[invocation].i64.xyz = subgroupXor(data[2].i64.xyz); + data[invocation].i64 = subgroupXor(data[3].i64); + + data[invocation].i64.x = subgroupInclusiveAdd(data[0].i64.x); + data[invocation].i64.xy = subgroupInclusiveAdd(data[1].i64.xy); + data[invocation].i64.xyz = subgroupInclusiveAdd(data[2].i64.xyz); + data[invocation].i64 = subgroupInclusiveAdd(data[3].i64); + + data[invocation].i64.x = subgroupInclusiveMul(data[0].i64.x); + data[invocation].i64.xy = subgroupInclusiveMul(data[1].i64.xy); + data[invocation].i64.xyz = subgroupInclusiveMul(data[2].i64.xyz); + data[invocation].i64 = subgroupInclusiveMul(data[3].i64); + + data[invocation].i64.x = subgroupInclusiveMin(data[0].i64.x); + data[invocation].i64.xy = subgroupInclusiveMin(data[1].i64.xy); + data[invocation].i64.xyz = subgroupInclusiveMin(data[2].i64.xyz); + data[invocation].i64 = subgroupInclusiveMin(data[3].i64); + + data[invocation].i64.x = subgroupInclusiveMax(data[0].i64.x); + data[invocation].i64.xy = subgroupInclusiveMax(data[1].i64.xy); + data[invocation].i64.xyz = subgroupInclusiveMax(data[2].i64.xyz); + data[invocation].i64 = subgroupInclusiveMax(data[3].i64); + + data[invocation].i64.x = subgroupInclusiveAnd(data[0].i64.x); + data[invocation].i64.xy = subgroupInclusiveAnd(data[1].i64.xy); + data[invocation].i64.xyz = subgroupInclusiveAnd(data[2].i64.xyz); + data[invocation].i64 = subgroupInclusiveAnd(data[3].i64); + + data[invocation].i64.x = subgroupInclusiveOr(data[0].i64.x); + data[invocation].i64.xy = subgroupInclusiveOr(data[1].i64.xy); + data[invocation].i64.xyz = subgroupInclusiveOr(data[2].i64.xyz); + data[invocation].i64 = subgroupInclusiveOr(data[3].i64); + + data[invocation].i64.x = subgroupInclusiveXor(data[0].i64.x); + data[invocation].i64.xy = subgroupInclusiveXor(data[1].i64.xy); + data[invocation].i64.xyz = subgroupInclusiveXor(data[2].i64.xyz); + data[invocation].i64 = subgroupInclusiveXor(data[3].i64); + + data[invocation].i64.x = subgroupExclusiveAdd(data[0].i64.x); + data[invocation].i64.xy = subgroupExclusiveAdd(data[1].i64.xy); + data[invocation].i64.xyz = subgroupExclusiveAdd(data[2].i64.xyz); + data[invocation].i64 = subgroupExclusiveAdd(data[3].i64); + + data[invocation].i64.x = subgroupExclusiveMul(data[0].i64.x); + data[invocation].i64.xy = subgroupExclusiveMul(data[1].i64.xy); + data[invocation].i64.xyz = subgroupExclusiveMul(data[2].i64.xyz); + data[invocation].i64 = subgroupExclusiveMul(data[3].i64); + + data[invocation].i64.x = subgroupExclusiveMin(data[0].i64.x); + data[invocation].i64.xy = subgroupExclusiveMin(data[1].i64.xy); + data[invocation].i64.xyz = subgroupExclusiveMin(data[2].i64.xyz); + data[invocation].i64 = subgroupExclusiveMin(data[3].i64); + + data[invocation].i64.x = subgroupExclusiveMax(data[0].i64.x); + data[invocation].i64.xy = subgroupExclusiveMax(data[1].i64.xy); + data[invocation].i64.xyz = subgroupExclusiveMax(data[2].i64.xyz); + data[invocation].i64 = subgroupExclusiveMax(data[3].i64); + + data[invocation].i64.x = subgroupExclusiveAnd(data[0].i64.x); + data[invocation].i64.xy = subgroupExclusiveAnd(data[1].i64.xy); + data[invocation].i64.xyz = subgroupExclusiveAnd(data[2].i64.xyz); + data[invocation].i64 = subgroupExclusiveAnd(data[3].i64); + + data[invocation].i64.x = subgroupExclusiveOr(data[0].i64.x); + data[invocation].i64.xy = subgroupExclusiveOr(data[1].i64.xy); + data[invocation].i64.xyz = subgroupExclusiveOr(data[2].i64.xyz); + data[invocation].i64 = subgroupExclusiveOr(data[3].i64); + + data[invocation].i64.x = subgroupExclusiveXor(data[0].i64.x); + data[invocation].i64.xy = subgroupExclusiveXor(data[1].i64.xy); + data[invocation].i64.xyz = subgroupExclusiveXor(data[2].i64.xyz); + data[invocation].i64 = subgroupExclusiveXor(data[3].i64); + + data[invocation].u64.x = subgroupAdd(data[0].u64.x); + data[invocation].u64.xy = subgroupAdd(data[1].u64.xy); + data[invocation].u64.xyz = subgroupAdd(data[2].u64.xyz); + data[invocation].u64 = subgroupAdd(data[3].u64); + + data[invocation].u64.x = subgroupMul(data[0].u64.x); + data[invocation].u64.xy = subgroupMul(data[1].u64.xy); + data[invocation].u64.xyz = subgroupMul(data[2].u64.xyz); + data[invocation].u64 = subgroupMul(data[3].u64); + + data[invocation].u64.x = subgroupMin(data[0].u64.x); + data[invocation].u64.xy = subgroupMin(data[1].u64.xy); + data[invocation].u64.xyz = subgroupMin(data[2].u64.xyz); + data[invocation].u64 = subgroupMin(data[3].u64); + + data[invocation].u64.x = subgroupMax(data[0].u64.x); + data[invocation].u64.xy = subgroupMax(data[1].u64.xy); + data[invocation].u64.xyz = subgroupMax(data[2].u64.xyz); + data[invocation].u64 = subgroupMax(data[3].u64); + + data[invocation].u64.x = subgroupAnd(data[0].u64.x); + data[invocation].u64.xy = subgroupAnd(data[1].u64.xy); + data[invocation].u64.xyz = subgroupAnd(data[2].u64.xyz); + data[invocation].u64 = subgroupAnd(data[3].u64); + + data[invocation].u64.x = subgroupOr(data[0].u64.x); + data[invocation].u64.xy = subgroupOr(data[1].u64.xy); + data[invocation].u64.xyz = subgroupOr(data[2].u64.xyz); + data[invocation].u64 = subgroupOr(data[3].u64); + + data[invocation].u64.x = subgroupXor(data[0].u64.x); + data[invocation].u64.xy = subgroupXor(data[1].u64.xy); + data[invocation].u64.xyz = subgroupXor(data[2].u64.xyz); + data[invocation].u64 = subgroupXor(data[3].u64); + + data[invocation].u64.x = subgroupInclusiveAdd(data[0].u64.x); + data[invocation].u64.xy = subgroupInclusiveAdd(data[1].u64.xy); + data[invocation].u64.xyz = subgroupInclusiveAdd(data[2].u64.xyz); + data[invocation].u64 = subgroupInclusiveAdd(data[3].u64); + + data[invocation].u64.x = subgroupInclusiveMul(data[0].u64.x); + data[invocation].u64.xy = subgroupInclusiveMul(data[1].u64.xy); + data[invocation].u64.xyz = subgroupInclusiveMul(data[2].u64.xyz); + data[invocation].u64 = subgroupInclusiveMul(data[3].u64); + + data[invocation].u64.x = subgroupInclusiveMin(data[0].u64.x); + data[invocation].u64.xy = subgroupInclusiveMin(data[1].u64.xy); + data[invocation].u64.xyz = subgroupInclusiveMin(data[2].u64.xyz); + data[invocation].u64 = subgroupInclusiveMin(data[3].u64); + + data[invocation].u64.x = subgroupInclusiveMax(data[0].u64.x); + data[invocation].u64.xy = subgroupInclusiveMax(data[1].u64.xy); + data[invocation].u64.xyz = subgroupInclusiveMax(data[2].u64.xyz); + data[invocation].u64 = subgroupInclusiveMax(data[3].u64); + + data[invocation].u64.x = subgroupInclusiveAnd(data[0].u64.x); + data[invocation].u64.xy = subgroupInclusiveAnd(data[1].u64.xy); + data[invocation].u64.xyz = subgroupInclusiveAnd(data[2].u64.xyz); + data[invocation].u64 = subgroupInclusiveAnd(data[3].u64); + + data[invocation].u64.x = subgroupInclusiveOr(data[0].u64.x); + data[invocation].u64.xy = subgroupInclusiveOr(data[1].u64.xy); + data[invocation].u64.xyz = subgroupInclusiveOr(data[2].u64.xyz); + data[invocation].u64 = subgroupInclusiveOr(data[3].u64); + + data[invocation].u64.x = subgroupInclusiveXor(data[0].u64.x); + data[invocation].u64.xy = subgroupInclusiveXor(data[1].u64.xy); + data[invocation].u64.xyz = subgroupInclusiveXor(data[2].u64.xyz); + data[invocation].u64 = subgroupInclusiveXor(data[3].u64); + + data[invocation].u64.x = subgroupExclusiveAdd(data[0].u64.x); + data[invocation].u64.xy = subgroupExclusiveAdd(data[1].u64.xy); + data[invocation].u64.xyz = subgroupExclusiveAdd(data[2].u64.xyz); + data[invocation].u64 = subgroupExclusiveAdd(data[3].u64); + + data[invocation].u64.x = subgroupExclusiveMul(data[0].u64.x); + data[invocation].u64.xy = subgroupExclusiveMul(data[1].u64.xy); + data[invocation].u64.xyz = subgroupExclusiveMul(data[2].u64.xyz); + data[invocation].u64 = subgroupExclusiveMul(data[3].u64); + + data[invocation].u64.x = subgroupExclusiveMin(data[0].u64.x); + data[invocation].u64.xy = subgroupExclusiveMin(data[1].u64.xy); + data[invocation].u64.xyz = subgroupExclusiveMin(data[2].u64.xyz); + data[invocation].u64 = subgroupExclusiveMin(data[3].u64); + + data[invocation].u64.x = subgroupExclusiveMax(data[0].u64.x); + data[invocation].u64.xy = subgroupExclusiveMax(data[1].u64.xy); + data[invocation].u64.xyz = subgroupExclusiveMax(data[2].u64.xyz); + data[invocation].u64 = subgroupExclusiveMax(data[3].u64); + + data[invocation].u64.x = subgroupExclusiveAnd(data[0].u64.x); + data[invocation].u64.xy = subgroupExclusiveAnd(data[1].u64.xy); + data[invocation].u64.xyz = subgroupExclusiveAnd(data[2].u64.xyz); + data[invocation].u64 = subgroupExclusiveAnd(data[3].u64); + + data[invocation].u64.x = subgroupExclusiveOr(data[0].u64.x); + data[invocation].u64.xy = subgroupExclusiveOr(data[1].u64.xy); + data[invocation].u64.xyz = subgroupExclusiveOr(data[2].u64.xyz); + data[invocation].u64 = subgroupExclusiveOr(data[3].u64); + + data[invocation].u64.x = subgroupExclusiveXor(data[0].u64.x); + data[invocation].u64.xy = subgroupExclusiveXor(data[1].u64.xy); + data[invocation].u64.xyz = subgroupExclusiveXor(data[2].u64.xyz); + data[invocation].u64 = subgroupExclusiveXor(data[3].u64); + + data[invocation].f16.x = subgroupAdd(data[0].f16.x); + data[invocation].f16.xy = subgroupAdd(data[1].f16.xy); + data[invocation].f16.xyz = subgroupAdd(data[2].f16.xyz); + data[invocation].f16 = subgroupAdd(data[3].f16); + + data[invocation].f16.x = subgroupMul(data[0].f16.x); + data[invocation].f16.xy = subgroupMul(data[1].f16.xy); + data[invocation].f16.xyz = subgroupMul(data[2].f16.xyz); + data[invocation].f16 = subgroupMul(data[3].f16); + + data[invocation].f16.x = subgroupMin(data[0].f16.x); + data[invocation].f16.xy = subgroupMin(data[1].f16.xy); + data[invocation].f16.xyz = subgroupMin(data[2].f16.xyz); + data[invocation].f16 = subgroupMin(data[3].f16); + + data[invocation].f16.x = subgroupMax(data[0].f16.x); + data[invocation].f16.xy = subgroupMax(data[1].f16.xy); + data[invocation].f16.xyz = subgroupMax(data[2].f16.xyz); + data[invocation].f16 = subgroupMax(data[3].f16); + + data[invocation].f16.x = subgroupInclusiveAdd(data[0].f16.x); + data[invocation].f16.xy = subgroupInclusiveAdd(data[1].f16.xy); + data[invocation].f16.xyz = subgroupInclusiveAdd(data[2].f16.xyz); + data[invocation].f16 = subgroupInclusiveAdd(data[3].f16); + + data[invocation].f16.x = subgroupInclusiveMul(data[0].f16.x); + data[invocation].f16.xy = subgroupInclusiveMul(data[1].f16.xy); + data[invocation].f16.xyz = subgroupInclusiveMul(data[2].f16.xyz); + data[invocation].f16 = subgroupInclusiveMul(data[3].f16); + + data[invocation].f16.x = subgroupInclusiveMin(data[0].f16.x); + data[invocation].f16.xy = subgroupInclusiveMin(data[1].f16.xy); + data[invocation].f16.xyz = subgroupInclusiveMin(data[2].f16.xyz); + data[invocation].f16 = subgroupInclusiveMin(data[3].f16); + + data[invocation].f16.x = subgroupInclusiveMax(data[0].f16.x); + data[invocation].f16.xy = subgroupInclusiveMax(data[1].f16.xy); + data[invocation].f16.xyz = subgroupInclusiveMax(data[2].f16.xyz); + data[invocation].f16 = subgroupInclusiveMax(data[3].f16); + + data[invocation].f16.x = subgroupExclusiveAdd(data[0].f16.x); + data[invocation].f16.xy = subgroupExclusiveAdd(data[1].f16.xy); + data[invocation].f16.xyz = subgroupExclusiveAdd(data[2].f16.xyz); + data[invocation].f16 = subgroupExclusiveAdd(data[3].f16); + + data[invocation].f16.x = subgroupExclusiveMul(data[0].f16.x); + data[invocation].f16.xy = subgroupExclusiveMul(data[1].f16.xy); + data[invocation].f16.xyz = subgroupExclusiveMul(data[2].f16.xyz); + data[invocation].f16 = subgroupExclusiveMul(data[3].f16); + + data[invocation].f16.x = subgroupExclusiveMin(data[0].f16.x); + data[invocation].f16.xy = subgroupExclusiveMin(data[1].f16.xy); + data[invocation].f16.xyz = subgroupExclusiveMin(data[2].f16.xyz); + data[invocation].f16 = subgroupExclusiveMin(data[3].f16); + + data[invocation].f16.x = subgroupExclusiveMax(data[0].f16.x); + data[invocation].f16.xy = subgroupExclusiveMax(data[1].f16.xy); + data[invocation].f16.xyz = subgroupExclusiveMax(data[2].f16.xyz); + data[invocation].f16 = subgroupExclusiveMax(data[3].f16); +} diff --git a/Test/spv.subgroupExtendedTypesArithmeticNeg.comp b/Test/spv.subgroupExtendedTypesArithmeticNeg.comp new file mode 100644 index 00000000..eb22cabf --- /dev/null +++ b/Test/spv.subgroupExtendedTypesArithmeticNeg.comp @@ -0,0 +1,715 @@ +#version 450 + +#extension GL_KHR_shader_subgroup_arithmetic: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int8: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int16: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int64: enable +#extension GL_EXT_shader_explicit_arithmetic_types_float16: enable + +layout (local_size_x = 8) in; + +layout(binding = 0) buffer Buffers +{ + i8vec4 i8; + u8vec4 u8; + i16vec4 i16; + u16vec4 u16; + i64vec4 i64; + u64vec4 u64; + f16vec4 f16; +} data[4]; + +void main() +{ + uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; + + data[invocation].i8.x = subgroupAdd(data[0].i8.x); + data[invocation].i8.xy = subgroupAdd(data[1].i8.xy); + data[invocation].i8.xyz = subgroupAdd(data[2].i8.xyz); + data[invocation].i8 = subgroupAdd(data[3].i8); + + data[invocation].i8.x = subgroupMul(data[0].i8.x); + data[invocation].i8.xy = subgroupMul(data[1].i8.xy); + data[invocation].i8.xyz = subgroupMul(data[2].i8.xyz); + data[invocation].i8 = subgroupMul(data[3].i8); + + data[invocation].i8.x = subgroupMin(data[0].i8.x); + data[invocation].i8.xy = subgroupMin(data[1].i8.xy); + data[invocation].i8.xyz = subgroupMin(data[2].i8.xyz); + data[invocation].i8 = subgroupMin(data[3].i8); + + data[invocation].i8.x = subgroupMax(data[0].i8.x); + data[invocation].i8.xy = subgroupMax(data[1].i8.xy); + data[invocation].i8.xyz = subgroupMax(data[2].i8.xyz); + data[invocation].i8 = subgroupMax(data[3].i8); + + data[invocation].i8.x = subgroupAnd(data[0].i8.x); + data[invocation].i8.xy = subgroupAnd(data[1].i8.xy); + data[invocation].i8.xyz = subgroupAnd(data[2].i8.xyz); + data[invocation].i8 = subgroupAnd(data[3].i8); + + data[invocation].i8.x = subgroupOr(data[0].i8.x); + data[invocation].i8.xy = subgroupOr(data[1].i8.xy); + data[invocation].i8.xyz = subgroupOr(data[2].i8.xyz); + data[invocation].i8 = subgroupOr(data[3].i8); + + data[invocation].i8.x = subgroupXor(data[0].i8.x); + data[invocation].i8.xy = subgroupXor(data[1].i8.xy); + data[invocation].i8.xyz = subgroupXor(data[2].i8.xyz); + data[invocation].i8 = subgroupXor(data[3].i8); + + data[invocation].i8.x = subgroupInclusiveAdd(data[0].i8.x); + data[invocation].i8.xy = subgroupInclusiveAdd(data[1].i8.xy); + data[invocation].i8.xyz = subgroupInclusiveAdd(data[2].i8.xyz); + data[invocation].i8 = subgroupInclusiveAdd(data[3].i8); + + data[invocation].i8.x = subgroupInclusiveMul(data[0].i8.x); + data[invocation].i8.xy = subgroupInclusiveMul(data[1].i8.xy); + data[invocation].i8.xyz = subgroupInclusiveMul(data[2].i8.xyz); + data[invocation].i8 = subgroupInclusiveMul(data[3].i8); + + data[invocation].i8.x = subgroupInclusiveMin(data[0].i8.x); + data[invocation].i8.xy = subgroupInclusiveMin(data[1].i8.xy); + data[invocation].i8.xyz = subgroupInclusiveMin(data[2].i8.xyz); + data[invocation].i8 = subgroupInclusiveMin(data[3].i8); + + data[invocation].i8.x = subgroupInclusiveMax(data[0].i8.x); + data[invocation].i8.xy = subgroupInclusiveMax(data[1].i8.xy); + data[invocation].i8.xyz = subgroupInclusiveMax(data[2].i8.xyz); + data[invocation].i8 = subgroupInclusiveMax(data[3].i8); + + data[invocation].i8.x = subgroupInclusiveAnd(data[0].i8.x); + data[invocation].i8.xy = subgroupInclusiveAnd(data[1].i8.xy); + data[invocation].i8.xyz = subgroupInclusiveAnd(data[2].i8.xyz); + data[invocation].i8 = subgroupInclusiveAnd(data[3].i8); + + data[invocation].i8.x = subgroupInclusiveOr(data[0].i8.x); + data[invocation].i8.xy = subgroupInclusiveOr(data[1].i8.xy); + data[invocation].i8.xyz = subgroupInclusiveOr(data[2].i8.xyz); + data[invocation].i8 = subgroupInclusiveOr(data[3].i8); + + data[invocation].i8.x = subgroupInclusiveXor(data[0].i8.x); + data[invocation].i8.xy = subgroupInclusiveXor(data[1].i8.xy); + data[invocation].i8.xyz = subgroupInclusiveXor(data[2].i8.xyz); + data[invocation].i8 = subgroupInclusiveXor(data[3].i8); + + data[invocation].i8.x = subgroupExclusiveAdd(data[0].i8.x); + data[invocation].i8.xy = subgroupExclusiveAdd(data[1].i8.xy); + data[invocation].i8.xyz = subgroupExclusiveAdd(data[2].i8.xyz); + data[invocation].i8 = subgroupExclusiveAdd(data[3].i8); + + data[invocation].i8.x = subgroupExclusiveMul(data[0].i8.x); + data[invocation].i8.xy = subgroupExclusiveMul(data[1].i8.xy); + data[invocation].i8.xyz = subgroupExclusiveMul(data[2].i8.xyz); + data[invocation].i8 = subgroupExclusiveMul(data[3].i8); + + data[invocation].i8.x = subgroupExclusiveMin(data[0].i8.x); + data[invocation].i8.xy = subgroupExclusiveMin(data[1].i8.xy); + data[invocation].i8.xyz = subgroupExclusiveMin(data[2].i8.xyz); + data[invocation].i8 = subgroupExclusiveMin(data[3].i8); + + data[invocation].i8.x = subgroupExclusiveMax(data[0].i8.x); + data[invocation].i8.xy = subgroupExclusiveMax(data[1].i8.xy); + data[invocation].i8.xyz = subgroupExclusiveMax(data[2].i8.xyz); + data[invocation].i8 = subgroupExclusiveMax(data[3].i8); + + data[invocation].i8.x = subgroupExclusiveAnd(data[0].i8.x); + data[invocation].i8.xy = subgroupExclusiveAnd(data[1].i8.xy); + data[invocation].i8.xyz = subgroupExclusiveAnd(data[2].i8.xyz); + data[invocation].i8 = subgroupExclusiveAnd(data[3].i8); + + data[invocation].i8.x = subgroupExclusiveOr(data[0].i8.x); + data[invocation].i8.xy = subgroupExclusiveOr(data[1].i8.xy); + data[invocation].i8.xyz = subgroupExclusiveOr(data[2].i8.xyz); + data[invocation].i8 = subgroupExclusiveOr(data[3].i8); + + data[invocation].i8.x = subgroupExclusiveXor(data[0].i8.x); + data[invocation].i8.xy = subgroupExclusiveXor(data[1].i8.xy); + data[invocation].i8.xyz = subgroupExclusiveXor(data[2].i8.xyz); + data[invocation].i8 = subgroupExclusiveXor(data[3].i8); + + data[invocation].u8.x = subgroupAdd(data[0].u8.x); + data[invocation].u8.xy = subgroupAdd(data[1].u8.xy); + data[invocation].u8.xyz = subgroupAdd(data[2].u8.xyz); + data[invocation].u8 = subgroupAdd(data[3].u8); + + data[invocation].u8.x = subgroupMul(data[0].u8.x); + data[invocation].u8.xy = subgroupMul(data[1].u8.xy); + data[invocation].u8.xyz = subgroupMul(data[2].u8.xyz); + data[invocation].u8 = subgroupMul(data[3].u8); + + data[invocation].u8.x = subgroupMin(data[0].u8.x); + data[invocation].u8.xy = subgroupMin(data[1].u8.xy); + data[invocation].u8.xyz = subgroupMin(data[2].u8.xyz); + data[invocation].u8 = subgroupMin(data[3].u8); + + data[invocation].u8.x = subgroupMax(data[0].u8.x); + data[invocation].u8.xy = subgroupMax(data[1].u8.xy); + data[invocation].u8.xyz = subgroupMax(data[2].u8.xyz); + data[invocation].u8 = subgroupMax(data[3].u8); + + data[invocation].u8.x = subgroupAnd(data[0].u8.x); + data[invocation].u8.xy = subgroupAnd(data[1].u8.xy); + data[invocation].u8.xyz = subgroupAnd(data[2].u8.xyz); + data[invocation].u8 = subgroupAnd(data[3].u8); + + data[invocation].u8.x = subgroupOr(data[0].u8.x); + data[invocation].u8.xy = subgroupOr(data[1].u8.xy); + data[invocation].u8.xyz = subgroupOr(data[2].u8.xyz); + data[invocation].u8 = subgroupOr(data[3].u8); + + data[invocation].u8.x = subgroupXor(data[0].u8.x); + data[invocation].u8.xy = subgroupXor(data[1].u8.xy); + data[invocation].u8.xyz = subgroupXor(data[2].u8.xyz); + data[invocation].u8 = subgroupXor(data[3].u8); + + data[invocation].u8.x = subgroupInclusiveAdd(data[0].u8.x); + data[invocation].u8.xy = subgroupInclusiveAdd(data[1].u8.xy); + data[invocation].u8.xyz = subgroupInclusiveAdd(data[2].u8.xyz); + data[invocation].u8 = subgroupInclusiveAdd(data[3].u8); + + data[invocation].u8.x = subgroupInclusiveMul(data[0].u8.x); + data[invocation].u8.xy = subgroupInclusiveMul(data[1].u8.xy); + data[invocation].u8.xyz = subgroupInclusiveMul(data[2].u8.xyz); + data[invocation].u8 = subgroupInclusiveMul(data[3].u8); + + data[invocation].u8.x = subgroupInclusiveMin(data[0].u8.x); + data[invocation].u8.xy = subgroupInclusiveMin(data[1].u8.xy); + data[invocation].u8.xyz = subgroupInclusiveMin(data[2].u8.xyz); + data[invocation].u8 = subgroupInclusiveMin(data[3].u8); + + data[invocation].u8.x = subgroupInclusiveMax(data[0].u8.x); + data[invocation].u8.xy = subgroupInclusiveMax(data[1].u8.xy); + data[invocation].u8.xyz = subgroupInclusiveMax(data[2].u8.xyz); + data[invocation].u8 = subgroupInclusiveMax(data[3].u8); + + data[invocation].u8.x = subgroupInclusiveAnd(data[0].u8.x); + data[invocation].u8.xy = subgroupInclusiveAnd(data[1].u8.xy); + data[invocation].u8.xyz = subgroupInclusiveAnd(data[2].u8.xyz); + data[invocation].u8 = subgroupInclusiveAnd(data[3].u8); + + data[invocation].u8.x = subgroupInclusiveOr(data[0].u8.x); + data[invocation].u8.xy = subgroupInclusiveOr(data[1].u8.xy); + data[invocation].u8.xyz = subgroupInclusiveOr(data[2].u8.xyz); + data[invocation].u8 = subgroupInclusiveOr(data[3].u8); + + data[invocation].u8.x = subgroupInclusiveXor(data[0].u8.x); + data[invocation].u8.xy = subgroupInclusiveXor(data[1].u8.xy); + data[invocation].u8.xyz = subgroupInclusiveXor(data[2].u8.xyz); + data[invocation].u8 = subgroupInclusiveXor(data[3].u8); + + data[invocation].u8.x = subgroupExclusiveAdd(data[0].u8.x); + data[invocation].u8.xy = subgroupExclusiveAdd(data[1].u8.xy); + data[invocation].u8.xyz = subgroupExclusiveAdd(data[2].u8.xyz); + data[invocation].u8 = subgroupExclusiveAdd(data[3].u8); + + data[invocation].u8.x = subgroupExclusiveMul(data[0].u8.x); + data[invocation].u8.xy = subgroupExclusiveMul(data[1].u8.xy); + data[invocation].u8.xyz = subgroupExclusiveMul(data[2].u8.xyz); + data[invocation].u8 = subgroupExclusiveMul(data[3].u8); + + data[invocation].u8.x = subgroupExclusiveMin(data[0].u8.x); + data[invocation].u8.xy = subgroupExclusiveMin(data[1].u8.xy); + data[invocation].u8.xyz = subgroupExclusiveMin(data[2].u8.xyz); + data[invocation].u8 = subgroupExclusiveMin(data[3].u8); + + data[invocation].u8.x = subgroupExclusiveMax(data[0].u8.x); + data[invocation].u8.xy = subgroupExclusiveMax(data[1].u8.xy); + data[invocation].u8.xyz = subgroupExclusiveMax(data[2].u8.xyz); + data[invocation].u8 = subgroupExclusiveMax(data[3].u8); + + data[invocation].u8.x = subgroupExclusiveAnd(data[0].u8.x); + data[invocation].u8.xy = subgroupExclusiveAnd(data[1].u8.xy); + data[invocation].u8.xyz = subgroupExclusiveAnd(data[2].u8.xyz); + data[invocation].u8 = subgroupExclusiveAnd(data[3].u8); + + data[invocation].u8.x = subgroupExclusiveOr(data[0].u8.x); + data[invocation].u8.xy = subgroupExclusiveOr(data[1].u8.xy); + data[invocation].u8.xyz = subgroupExclusiveOr(data[2].u8.xyz); + data[invocation].u8 = subgroupExclusiveOr(data[3].u8); + + data[invocation].u8.x = subgroupExclusiveXor(data[0].u8.x); + data[invocation].u8.xy = subgroupExclusiveXor(data[1].u8.xy); + data[invocation].u8.xyz = subgroupExclusiveXor(data[2].u8.xyz); + data[invocation].u8 = subgroupExclusiveXor(data[3].u8); + + data[invocation].i16.x = subgroupAdd(data[0].i16.x); + data[invocation].i16.xy = subgroupAdd(data[1].i16.xy); + data[invocation].i16.xyz = subgroupAdd(data[2].i16.xyz); + data[invocation].i16 = subgroupAdd(data[3].i16); + + data[invocation].i16.x = subgroupMul(data[0].i16.x); + data[invocation].i16.xy = subgroupMul(data[1].i16.xy); + data[invocation].i16.xyz = subgroupMul(data[2].i16.xyz); + data[invocation].i16 = subgroupMul(data[3].i16); + + data[invocation].i16.x = subgroupMin(data[0].i16.x); + data[invocation].i16.xy = subgroupMin(data[1].i16.xy); + data[invocation].i16.xyz = subgroupMin(data[2].i16.xyz); + data[invocation].i16 = subgroupMin(data[3].i16); + + data[invocation].i16.x = subgroupMax(data[0].i16.x); + data[invocation].i16.xy = subgroupMax(data[1].i16.xy); + data[invocation].i16.xyz = subgroupMax(data[2].i16.xyz); + data[invocation].i16 = subgroupMax(data[3].i16); + + data[invocation].i16.x = subgroupAnd(data[0].i16.x); + data[invocation].i16.xy = subgroupAnd(data[1].i16.xy); + data[invocation].i16.xyz = subgroupAnd(data[2].i16.xyz); + data[invocation].i16 = subgroupAnd(data[3].i16); + + data[invocation].i16.x = subgroupOr(data[0].i16.x); + data[invocation].i16.xy = subgroupOr(data[1].i16.xy); + data[invocation].i16.xyz = subgroupOr(data[2].i16.xyz); + data[invocation].i16 = subgroupOr(data[3].i16); + + data[invocation].i16.x = subgroupXor(data[0].i16.x); + data[invocation].i16.xy = subgroupXor(data[1].i16.xy); + data[invocation].i16.xyz = subgroupXor(data[2].i16.xyz); + data[invocation].i16 = subgroupXor(data[3].i16); + + data[invocation].i16.x = subgroupInclusiveAdd(data[0].i16.x); + data[invocation].i16.xy = subgroupInclusiveAdd(data[1].i16.xy); + data[invocation].i16.xyz = subgroupInclusiveAdd(data[2].i16.xyz); + data[invocation].i16 = subgroupInclusiveAdd(data[3].i16); + + data[invocation].i16.x = subgroupInclusiveMul(data[0].i16.x); + data[invocation].i16.xy = subgroupInclusiveMul(data[1].i16.xy); + data[invocation].i16.xyz = subgroupInclusiveMul(data[2].i16.xyz); + data[invocation].i16 = subgroupInclusiveMul(data[3].i16); + + data[invocation].i16.x = subgroupInclusiveMin(data[0].i16.x); + data[invocation].i16.xy = subgroupInclusiveMin(data[1].i16.xy); + data[invocation].i16.xyz = subgroupInclusiveMin(data[2].i16.xyz); + data[invocation].i16 = subgroupInclusiveMin(data[3].i16); + + data[invocation].i16.x = subgroupInclusiveMax(data[0].i16.x); + data[invocation].i16.xy = subgroupInclusiveMax(data[1].i16.xy); + data[invocation].i16.xyz = subgroupInclusiveMax(data[2].i16.xyz); + data[invocation].i16 = subgroupInclusiveMax(data[3].i16); + + data[invocation].i16.x = subgroupInclusiveAnd(data[0].i16.x); + data[invocation].i16.xy = subgroupInclusiveAnd(data[1].i16.xy); + data[invocation].i16.xyz = subgroupInclusiveAnd(data[2].i16.xyz); + data[invocation].i16 = subgroupInclusiveAnd(data[3].i16); + + data[invocation].i16.x = subgroupInclusiveOr(data[0].i16.x); + data[invocation].i16.xy = subgroupInclusiveOr(data[1].i16.xy); + data[invocation].i16.xyz = subgroupInclusiveOr(data[2].i16.xyz); + data[invocation].i16 = subgroupInclusiveOr(data[3].i16); + + data[invocation].i16.x = subgroupInclusiveXor(data[0].i16.x); + data[invocation].i16.xy = subgroupInclusiveXor(data[1].i16.xy); + data[invocation].i16.xyz = subgroupInclusiveXor(data[2].i16.xyz); + data[invocation].i16 = subgroupInclusiveXor(data[3].i16); + + data[invocation].i16.x = subgroupExclusiveAdd(data[0].i16.x); + data[invocation].i16.xy = subgroupExclusiveAdd(data[1].i16.xy); + data[invocation].i16.xyz = subgroupExclusiveAdd(data[2].i16.xyz); + data[invocation].i16 = subgroupExclusiveAdd(data[3].i16); + + data[invocation].i16.x = subgroupExclusiveMul(data[0].i16.x); + data[invocation].i16.xy = subgroupExclusiveMul(data[1].i16.xy); + data[invocation].i16.xyz = subgroupExclusiveMul(data[2].i16.xyz); + data[invocation].i16 = subgroupExclusiveMul(data[3].i16); + + data[invocation].i16.x = subgroupExclusiveMin(data[0].i16.x); + data[invocation].i16.xy = subgroupExclusiveMin(data[1].i16.xy); + data[invocation].i16.xyz = subgroupExclusiveMin(data[2].i16.xyz); + data[invocation].i16 = subgroupExclusiveMin(data[3].i16); + + data[invocation].i16.x = subgroupExclusiveMax(data[0].i16.x); + data[invocation].i16.xy = subgroupExclusiveMax(data[1].i16.xy); + data[invocation].i16.xyz = subgroupExclusiveMax(data[2].i16.xyz); + data[invocation].i16 = subgroupExclusiveMax(data[3].i16); + + data[invocation].i16.x = subgroupExclusiveAnd(data[0].i16.x); + data[invocation].i16.xy = subgroupExclusiveAnd(data[1].i16.xy); + data[invocation].i16.xyz = subgroupExclusiveAnd(data[2].i16.xyz); + data[invocation].i16 = subgroupExclusiveAnd(data[3].i16); + + data[invocation].i16.x = subgroupExclusiveOr(data[0].i16.x); + data[invocation].i16.xy = subgroupExclusiveOr(data[1].i16.xy); + data[invocation].i16.xyz = subgroupExclusiveOr(data[2].i16.xyz); + data[invocation].i16 = subgroupExclusiveOr(data[3].i16); + + data[invocation].i16.x = subgroupExclusiveXor(data[0].i16.x); + data[invocation].i16.xy = subgroupExclusiveXor(data[1].i16.xy); + data[invocation].i16.xyz = subgroupExclusiveXor(data[2].i16.xyz); + data[invocation].i16 = subgroupExclusiveXor(data[3].i16); + + data[invocation].u16.x = subgroupAdd(data[0].u16.x); + data[invocation].u16.xy = subgroupAdd(data[1].u16.xy); + data[invocation].u16.xyz = subgroupAdd(data[2].u16.xyz); + data[invocation].u16 = subgroupAdd(data[3].u16); + + data[invocation].u16.x = subgroupMul(data[0].u16.x); + data[invocation].u16.xy = subgroupMul(data[1].u16.xy); + data[invocation].u16.xyz = subgroupMul(data[2].u16.xyz); + data[invocation].u16 = subgroupMul(data[3].u16); + + data[invocation].u16.x = subgroupMin(data[0].u16.x); + data[invocation].u16.xy = subgroupMin(data[1].u16.xy); + data[invocation].u16.xyz = subgroupMin(data[2].u16.xyz); + data[invocation].u16 = subgroupMin(data[3].u16); + + data[invocation].u16.x = subgroupMax(data[0].u16.x); + data[invocation].u16.xy = subgroupMax(data[1].u16.xy); + data[invocation].u16.xyz = subgroupMax(data[2].u16.xyz); + data[invocation].u16 = subgroupMax(data[3].u16); + + data[invocation].u16.x = subgroupAnd(data[0].u16.x); + data[invocation].u16.xy = subgroupAnd(data[1].u16.xy); + data[invocation].u16.xyz = subgroupAnd(data[2].u16.xyz); + data[invocation].u16 = subgroupAnd(data[3].u16); + + data[invocation].u16.x = subgroupOr(data[0].u16.x); + data[invocation].u16.xy = subgroupOr(data[1].u16.xy); + data[invocation].u16.xyz = subgroupOr(data[2].u16.xyz); + data[invocation].u16 = subgroupOr(data[3].u16); + + data[invocation].u16.x = subgroupXor(data[0].u16.x); + data[invocation].u16.xy = subgroupXor(data[1].u16.xy); + data[invocation].u16.xyz = subgroupXor(data[2].u16.xyz); + data[invocation].u16 = subgroupXor(data[3].u16); + + data[invocation].u16.x = subgroupInclusiveAdd(data[0].u16.x); + data[invocation].u16.xy = subgroupInclusiveAdd(data[1].u16.xy); + data[invocation].u16.xyz = subgroupInclusiveAdd(data[2].u16.xyz); + data[invocation].u16 = subgroupInclusiveAdd(data[3].u16); + + data[invocation].u16.x = subgroupInclusiveMul(data[0].u16.x); + data[invocation].u16.xy = subgroupInclusiveMul(data[1].u16.xy); + data[invocation].u16.xyz = subgroupInclusiveMul(data[2].u16.xyz); + data[invocation].u16 = subgroupInclusiveMul(data[3].u16); + + data[invocation].u16.x = subgroupInclusiveMin(data[0].u16.x); + data[invocation].u16.xy = subgroupInclusiveMin(data[1].u16.xy); + data[invocation].u16.xyz = subgroupInclusiveMin(data[2].u16.xyz); + data[invocation].u16 = subgroupInclusiveMin(data[3].u16); + + data[invocation].u16.x = subgroupInclusiveMax(data[0].u16.x); + data[invocation].u16.xy = subgroupInclusiveMax(data[1].u16.xy); + data[invocation].u16.xyz = subgroupInclusiveMax(data[2].u16.xyz); + data[invocation].u16 = subgroupInclusiveMax(data[3].u16); + + data[invocation].u16.x = subgroupInclusiveAnd(data[0].u16.x); + data[invocation].u16.xy = subgroupInclusiveAnd(data[1].u16.xy); + data[invocation].u16.xyz = subgroupInclusiveAnd(data[2].u16.xyz); + data[invocation].u16 = subgroupInclusiveAnd(data[3].u16); + + data[invocation].u16.x = subgroupInclusiveOr(data[0].u16.x); + data[invocation].u16.xy = subgroupInclusiveOr(data[1].u16.xy); + data[invocation].u16.xyz = subgroupInclusiveOr(data[2].u16.xyz); + data[invocation].u16 = subgroupInclusiveOr(data[3].u16); + + data[invocation].u16.x = subgroupInclusiveXor(data[0].u16.x); + data[invocation].u16.xy = subgroupInclusiveXor(data[1].u16.xy); + data[invocation].u16.xyz = subgroupInclusiveXor(data[2].u16.xyz); + data[invocation].u16 = subgroupInclusiveXor(data[3].u16); + + data[invocation].u16.x = subgroupExclusiveAdd(data[0].u16.x); + data[invocation].u16.xy = subgroupExclusiveAdd(data[1].u16.xy); + data[invocation].u16.xyz = subgroupExclusiveAdd(data[2].u16.xyz); + data[invocation].u16 = subgroupExclusiveAdd(data[3].u16); + + data[invocation].u16.x = subgroupExclusiveMul(data[0].u16.x); + data[invocation].u16.xy = subgroupExclusiveMul(data[1].u16.xy); + data[invocation].u16.xyz = subgroupExclusiveMul(data[2].u16.xyz); + data[invocation].u16 = subgroupExclusiveMul(data[3].u16); + + data[invocation].u16.x = subgroupExclusiveMin(data[0].u16.x); + data[invocation].u16.xy = subgroupExclusiveMin(data[1].u16.xy); + data[invocation].u16.xyz = subgroupExclusiveMin(data[2].u16.xyz); + data[invocation].u16 = subgroupExclusiveMin(data[3].u16); + + data[invocation].u16.x = subgroupExclusiveMax(data[0].u16.x); + data[invocation].u16.xy = subgroupExclusiveMax(data[1].u16.xy); + data[invocation].u16.xyz = subgroupExclusiveMax(data[2].u16.xyz); + data[invocation].u16 = subgroupExclusiveMax(data[3].u16); + + data[invocation].u16.x = subgroupExclusiveAnd(data[0].u16.x); + data[invocation].u16.xy = subgroupExclusiveAnd(data[1].u16.xy); + data[invocation].u16.xyz = subgroupExclusiveAnd(data[2].u16.xyz); + data[invocation].u16 = subgroupExclusiveAnd(data[3].u16); + + data[invocation].u16.x = subgroupExclusiveOr(data[0].u16.x); + data[invocation].u16.xy = subgroupExclusiveOr(data[1].u16.xy); + data[invocation].u16.xyz = subgroupExclusiveOr(data[2].u16.xyz); + data[invocation].u16 = subgroupExclusiveOr(data[3].u16); + + data[invocation].u16.x = subgroupExclusiveXor(data[0].u16.x); + data[invocation].u16.xy = subgroupExclusiveXor(data[1].u16.xy); + data[invocation].u16.xyz = subgroupExclusiveXor(data[2].u16.xyz); + data[invocation].u16 = subgroupExclusiveXor(data[3].u16); + + data[invocation].i64.x = subgroupAdd(data[0].i64.x); + data[invocation].i64.xy = subgroupAdd(data[1].i64.xy); + data[invocation].i64.xyz = subgroupAdd(data[2].i64.xyz); + data[invocation].i64 = subgroupAdd(data[3].i64); + + data[invocation].i64.x = subgroupMul(data[0].i64.x); + data[invocation].i64.xy = subgroupMul(data[1].i64.xy); + data[invocation].i64.xyz = subgroupMul(data[2].i64.xyz); + data[invocation].i64 = subgroupMul(data[3].i64); + + data[invocation].i64.x = subgroupMin(data[0].i64.x); + data[invocation].i64.xy = subgroupMin(data[1].i64.xy); + data[invocation].i64.xyz = subgroupMin(data[2].i64.xyz); + data[invocation].i64 = subgroupMin(data[3].i64); + + data[invocation].i64.x = subgroupMax(data[0].i64.x); + data[invocation].i64.xy = subgroupMax(data[1].i64.xy); + data[invocation].i64.xyz = subgroupMax(data[2].i64.xyz); + data[invocation].i64 = subgroupMax(data[3].i64); + + data[invocation].i64.x = subgroupAnd(data[0].i64.x); + data[invocation].i64.xy = subgroupAnd(data[1].i64.xy); + data[invocation].i64.xyz = subgroupAnd(data[2].i64.xyz); + data[invocation].i64 = subgroupAnd(data[3].i64); + + data[invocation].i64.x = subgroupOr(data[0].i64.x); + data[invocation].i64.xy = subgroupOr(data[1].i64.xy); + data[invocation].i64.xyz = subgroupOr(data[2].i64.xyz); + data[invocation].i64 = subgroupOr(data[3].i64); + + data[invocation].i64.x = subgroupXor(data[0].i64.x); + data[invocation].i64.xy = subgroupXor(data[1].i64.xy); + data[invocation].i64.xyz = subgroupXor(data[2].i64.xyz); + data[invocation].i64 = subgroupXor(data[3].i64); + + data[invocation].i64.x = subgroupInclusiveAdd(data[0].i64.x); + data[invocation].i64.xy = subgroupInclusiveAdd(data[1].i64.xy); + data[invocation].i64.xyz = subgroupInclusiveAdd(data[2].i64.xyz); + data[invocation].i64 = subgroupInclusiveAdd(data[3].i64); + + data[invocation].i64.x = subgroupInclusiveMul(data[0].i64.x); + data[invocation].i64.xy = subgroupInclusiveMul(data[1].i64.xy); + data[invocation].i64.xyz = subgroupInclusiveMul(data[2].i64.xyz); + data[invocation].i64 = subgroupInclusiveMul(data[3].i64); + + data[invocation].i64.x = subgroupInclusiveMin(data[0].i64.x); + data[invocation].i64.xy = subgroupInclusiveMin(data[1].i64.xy); + data[invocation].i64.xyz = subgroupInclusiveMin(data[2].i64.xyz); + data[invocation].i64 = subgroupInclusiveMin(data[3].i64); + + data[invocation].i64.x = subgroupInclusiveMax(data[0].i64.x); + data[invocation].i64.xy = subgroupInclusiveMax(data[1].i64.xy); + data[invocation].i64.xyz = subgroupInclusiveMax(data[2].i64.xyz); + data[invocation].i64 = subgroupInclusiveMax(data[3].i64); + + data[invocation].i64.x = subgroupInclusiveAnd(data[0].i64.x); + data[invocation].i64.xy = subgroupInclusiveAnd(data[1].i64.xy); + data[invocation].i64.xyz = subgroupInclusiveAnd(data[2].i64.xyz); + data[invocation].i64 = subgroupInclusiveAnd(data[3].i64); + + data[invocation].i64.x = subgroupInclusiveOr(data[0].i64.x); + data[invocation].i64.xy = subgroupInclusiveOr(data[1].i64.xy); + data[invocation].i64.xyz = subgroupInclusiveOr(data[2].i64.xyz); + data[invocation].i64 = subgroupInclusiveOr(data[3].i64); + + data[invocation].i64.x = subgroupInclusiveXor(data[0].i64.x); + data[invocation].i64.xy = subgroupInclusiveXor(data[1].i64.xy); + data[invocation].i64.xyz = subgroupInclusiveXor(data[2].i64.xyz); + data[invocation].i64 = subgroupInclusiveXor(data[3].i64); + + data[invocation].i64.x = subgroupExclusiveAdd(data[0].i64.x); + data[invocation].i64.xy = subgroupExclusiveAdd(data[1].i64.xy); + data[invocation].i64.xyz = subgroupExclusiveAdd(data[2].i64.xyz); + data[invocation].i64 = subgroupExclusiveAdd(data[3].i64); + + data[invocation].i64.x = subgroupExclusiveMul(data[0].i64.x); + data[invocation].i64.xy = subgroupExclusiveMul(data[1].i64.xy); + data[invocation].i64.xyz = subgroupExclusiveMul(data[2].i64.xyz); + data[invocation].i64 = subgroupExclusiveMul(data[3].i64); + + data[invocation].i64.x = subgroupExclusiveMin(data[0].i64.x); + data[invocation].i64.xy = subgroupExclusiveMin(data[1].i64.xy); + data[invocation].i64.xyz = subgroupExclusiveMin(data[2].i64.xyz); + data[invocation].i64 = subgroupExclusiveMin(data[3].i64); + + data[invocation].i64.x = subgroupExclusiveMax(data[0].i64.x); + data[invocation].i64.xy = subgroupExclusiveMax(data[1].i64.xy); + data[invocation].i64.xyz = subgroupExclusiveMax(data[2].i64.xyz); + data[invocation].i64 = subgroupExclusiveMax(data[3].i64); + + data[invocation].i64.x = subgroupExclusiveAnd(data[0].i64.x); + data[invocation].i64.xy = subgroupExclusiveAnd(data[1].i64.xy); + data[invocation].i64.xyz = subgroupExclusiveAnd(data[2].i64.xyz); + data[invocation].i64 = subgroupExclusiveAnd(data[3].i64); + + data[invocation].i64.x = subgroupExclusiveOr(data[0].i64.x); + data[invocation].i64.xy = subgroupExclusiveOr(data[1].i64.xy); + data[invocation].i64.xyz = subgroupExclusiveOr(data[2].i64.xyz); + data[invocation].i64 = subgroupExclusiveOr(data[3].i64); + + data[invocation].i64.x = subgroupExclusiveXor(data[0].i64.x); + data[invocation].i64.xy = subgroupExclusiveXor(data[1].i64.xy); + data[invocation].i64.xyz = subgroupExclusiveXor(data[2].i64.xyz); + data[invocation].i64 = subgroupExclusiveXor(data[3].i64); + + data[invocation].u64.x = subgroupAdd(data[0].u64.x); + data[invocation].u64.xy = subgroupAdd(data[1].u64.xy); + data[invocation].u64.xyz = subgroupAdd(data[2].u64.xyz); + data[invocation].u64 = subgroupAdd(data[3].u64); + + data[invocation].u64.x = subgroupMul(data[0].u64.x); + data[invocation].u64.xy = subgroupMul(data[1].u64.xy); + data[invocation].u64.xyz = subgroupMul(data[2].u64.xyz); + data[invocation].u64 = subgroupMul(data[3].u64); + + data[invocation].u64.x = subgroupMin(data[0].u64.x); + data[invocation].u64.xy = subgroupMin(data[1].u64.xy); + data[invocation].u64.xyz = subgroupMin(data[2].u64.xyz); + data[invocation].u64 = subgroupMin(data[3].u64); + + data[invocation].u64.x = subgroupMax(data[0].u64.x); + data[invocation].u64.xy = subgroupMax(data[1].u64.xy); + data[invocation].u64.xyz = subgroupMax(data[2].u64.xyz); + data[invocation].u64 = subgroupMax(data[3].u64); + + data[invocation].u64.x = subgroupAnd(data[0].u64.x); + data[invocation].u64.xy = subgroupAnd(data[1].u64.xy); + data[invocation].u64.xyz = subgroupAnd(data[2].u64.xyz); + data[invocation].u64 = subgroupAnd(data[3].u64); + + data[invocation].u64.x = subgroupOr(data[0].u64.x); + data[invocation].u64.xy = subgroupOr(data[1].u64.xy); + data[invocation].u64.xyz = subgroupOr(data[2].u64.xyz); + data[invocation].u64 = subgroupOr(data[3].u64); + + data[invocation].u64.x = subgroupXor(data[0].u64.x); + data[invocation].u64.xy = subgroupXor(data[1].u64.xy); + data[invocation].u64.xyz = subgroupXor(data[2].u64.xyz); + data[invocation].u64 = subgroupXor(data[3].u64); + + data[invocation].u64.x = subgroupInclusiveAdd(data[0].u64.x); + data[invocation].u64.xy = subgroupInclusiveAdd(data[1].u64.xy); + data[invocation].u64.xyz = subgroupInclusiveAdd(data[2].u64.xyz); + data[invocation].u64 = subgroupInclusiveAdd(data[3].u64); + + data[invocation].u64.x = subgroupInclusiveMul(data[0].u64.x); + data[invocation].u64.xy = subgroupInclusiveMul(data[1].u64.xy); + data[invocation].u64.xyz = subgroupInclusiveMul(data[2].u64.xyz); + data[invocation].u64 = subgroupInclusiveMul(data[3].u64); + + data[invocation].u64.x = subgroupInclusiveMin(data[0].u64.x); + data[invocation].u64.xy = subgroupInclusiveMin(data[1].u64.xy); + data[invocation].u64.xyz = subgroupInclusiveMin(data[2].u64.xyz); + data[invocation].u64 = subgroupInclusiveMin(data[3].u64); + + data[invocation].u64.x = subgroupInclusiveMax(data[0].u64.x); + data[invocation].u64.xy = subgroupInclusiveMax(data[1].u64.xy); + data[invocation].u64.xyz = subgroupInclusiveMax(data[2].u64.xyz); + data[invocation].u64 = subgroupInclusiveMax(data[3].u64); + + data[invocation].u64.x = subgroupInclusiveAnd(data[0].u64.x); + data[invocation].u64.xy = subgroupInclusiveAnd(data[1].u64.xy); + data[invocation].u64.xyz = subgroupInclusiveAnd(data[2].u64.xyz); + data[invocation].u64 = subgroupInclusiveAnd(data[3].u64); + + data[invocation].u64.x = subgroupInclusiveOr(data[0].u64.x); + data[invocation].u64.xy = subgroupInclusiveOr(data[1].u64.xy); + data[invocation].u64.xyz = subgroupInclusiveOr(data[2].u64.xyz); + data[invocation].u64 = subgroupInclusiveOr(data[3].u64); + + data[invocation].u64.x = subgroupInclusiveXor(data[0].u64.x); + data[invocation].u64.xy = subgroupInclusiveXor(data[1].u64.xy); + data[invocation].u64.xyz = subgroupInclusiveXor(data[2].u64.xyz); + data[invocation].u64 = subgroupInclusiveXor(data[3].u64); + + data[invocation].u64.x = subgroupExclusiveAdd(data[0].u64.x); + data[invocation].u64.xy = subgroupExclusiveAdd(data[1].u64.xy); + data[invocation].u64.xyz = subgroupExclusiveAdd(data[2].u64.xyz); + data[invocation].u64 = subgroupExclusiveAdd(data[3].u64); + + data[invocation].u64.x = subgroupExclusiveMul(data[0].u64.x); + data[invocation].u64.xy = subgroupExclusiveMul(data[1].u64.xy); + data[invocation].u64.xyz = subgroupExclusiveMul(data[2].u64.xyz); + data[invocation].u64 = subgroupExclusiveMul(data[3].u64); + + data[invocation].u64.x = subgroupExclusiveMin(data[0].u64.x); + data[invocation].u64.xy = subgroupExclusiveMin(data[1].u64.xy); + data[invocation].u64.xyz = subgroupExclusiveMin(data[2].u64.xyz); + data[invocation].u64 = subgroupExclusiveMin(data[3].u64); + + data[invocation].u64.x = subgroupExclusiveMax(data[0].u64.x); + data[invocation].u64.xy = subgroupExclusiveMax(data[1].u64.xy); + data[invocation].u64.xyz = subgroupExclusiveMax(data[2].u64.xyz); + data[invocation].u64 = subgroupExclusiveMax(data[3].u64); + + data[invocation].u64.x = subgroupExclusiveAnd(data[0].u64.x); + data[invocation].u64.xy = subgroupExclusiveAnd(data[1].u64.xy); + data[invocation].u64.xyz = subgroupExclusiveAnd(data[2].u64.xyz); + data[invocation].u64 = subgroupExclusiveAnd(data[3].u64); + + data[invocation].u64.x = subgroupExclusiveOr(data[0].u64.x); + data[invocation].u64.xy = subgroupExclusiveOr(data[1].u64.xy); + data[invocation].u64.xyz = subgroupExclusiveOr(data[2].u64.xyz); + data[invocation].u64 = subgroupExclusiveOr(data[3].u64); + + data[invocation].u64.x = subgroupExclusiveXor(data[0].u64.x); + data[invocation].u64.xy = subgroupExclusiveXor(data[1].u64.xy); + data[invocation].u64.xyz = subgroupExclusiveXor(data[2].u64.xyz); + data[invocation].u64 = subgroupExclusiveXor(data[3].u64); + + data[invocation].f16.x = subgroupAdd(data[0].f16.x); + data[invocation].f16.xy = subgroupAdd(data[1].f16.xy); + data[invocation].f16.xyz = subgroupAdd(data[2].f16.xyz); + data[invocation].f16 = subgroupAdd(data[3].f16); + + data[invocation].f16.x = subgroupMul(data[0].f16.x); + data[invocation].f16.xy = subgroupMul(data[1].f16.xy); + data[invocation].f16.xyz = subgroupMul(data[2].f16.xyz); + data[invocation].f16 = subgroupMul(data[3].f16); + + data[invocation].f16.x = subgroupMin(data[0].f16.x); + data[invocation].f16.xy = subgroupMin(data[1].f16.xy); + data[invocation].f16.xyz = subgroupMin(data[2].f16.xyz); + data[invocation].f16 = subgroupMin(data[3].f16); + + data[invocation].f16.x = subgroupMax(data[0].f16.x); + data[invocation].f16.xy = subgroupMax(data[1].f16.xy); + data[invocation].f16.xyz = subgroupMax(data[2].f16.xyz); + data[invocation].f16 = subgroupMax(data[3].f16); + + data[invocation].f16.x = subgroupInclusiveAdd(data[0].f16.x); + data[invocation].f16.xy = subgroupInclusiveAdd(data[1].f16.xy); + data[invocation].f16.xyz = subgroupInclusiveAdd(data[2].f16.xyz); + data[invocation].f16 = subgroupInclusiveAdd(data[3].f16); + + data[invocation].f16.x = subgroupInclusiveMul(data[0].f16.x); + data[invocation].f16.xy = subgroupInclusiveMul(data[1].f16.xy); + data[invocation].f16.xyz = subgroupInclusiveMul(data[2].f16.xyz); + data[invocation].f16 = subgroupInclusiveMul(data[3].f16); + + data[invocation].f16.x = subgroupInclusiveMin(data[0].f16.x); + data[invocation].f16.xy = subgroupInclusiveMin(data[1].f16.xy); + data[invocation].f16.xyz = subgroupInclusiveMin(data[2].f16.xyz); + data[invocation].f16 = subgroupInclusiveMin(data[3].f16); + + data[invocation].f16.x = subgroupInclusiveMax(data[0].f16.x); + data[invocation].f16.xy = subgroupInclusiveMax(data[1].f16.xy); + data[invocation].f16.xyz = subgroupInclusiveMax(data[2].f16.xyz); + data[invocation].f16 = subgroupInclusiveMax(data[3].f16); + + data[invocation].f16.x = subgroupExclusiveAdd(data[0].f16.x); + data[invocation].f16.xy = subgroupExclusiveAdd(data[1].f16.xy); + data[invocation].f16.xyz = subgroupExclusiveAdd(data[2].f16.xyz); + data[invocation].f16 = subgroupExclusiveAdd(data[3].f16); + + data[invocation].f16.x = subgroupExclusiveMul(data[0].f16.x); + data[invocation].f16.xy = subgroupExclusiveMul(data[1].f16.xy); + data[invocation].f16.xyz = subgroupExclusiveMul(data[2].f16.xyz); + data[invocation].f16 = subgroupExclusiveMul(data[3].f16); + + data[invocation].f16.x = subgroupExclusiveMin(data[0].f16.x); + data[invocation].f16.xy = subgroupExclusiveMin(data[1].f16.xy); + data[invocation].f16.xyz = subgroupExclusiveMin(data[2].f16.xyz); + data[invocation].f16 = subgroupExclusiveMin(data[3].f16); + + data[invocation].f16.x = subgroupExclusiveMax(data[0].f16.x); + data[invocation].f16.xy = subgroupExclusiveMax(data[1].f16.xy); + data[invocation].f16.xyz = subgroupExclusiveMax(data[2].f16.xyz); + data[invocation].f16 = subgroupExclusiveMax(data[3].f16); +} diff --git a/Test/spv.subgroupExtendedTypesBallot.comp b/Test/spv.subgroupExtendedTypesBallot.comp new file mode 100644 index 00000000..22d29cb7 --- /dev/null +++ b/Test/spv.subgroupExtendedTypesBallot.comp @@ -0,0 +1,88 @@ +#version 450 + +#extension GL_KHR_shader_subgroup_ballot: enable +#extension GL_EXT_shader_subgroup_extended_types_int8: enable +#extension GL_EXT_shader_subgroup_extended_types_int16: enable +#extension GL_EXT_shader_subgroup_extended_types_int64: enable +#extension GL_EXT_shader_subgroup_extended_types_float16: enable + +layout (local_size_x = 8) in; + +layout(binding = 0) buffer Buffers +{ + i8vec4 i8; + u8vec4 u8; + i16vec4 i16; + u16vec4 u16; + i64vec4 i64; + u64vec4 u64; + f16vec4 f16; +} data[4]; + +void main() +{ + uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; + + data[invocation].i8.x = subgroupBroadcast(data[0].i8.x, 3); + data[invocation].i8.xy = subgroupBroadcast(data[1].i8.xy, 3); + data[invocation].i8.xyz = subgroupBroadcast(data[2].i8.xyz, 3); + data[invocation].i8 = subgroupBroadcast(data[3].i8, 3); + data[invocation].i8.x = subgroupBroadcastFirst(data[0].i8.x); + data[invocation].i8.xy = subgroupBroadcastFirst(data[1].i8.xy); + data[invocation].i8.xyz = subgroupBroadcastFirst(data[2].i8.xyz); + data[invocation].i8 = subgroupBroadcastFirst(data[3].i8); + + data[invocation].u8.x = subgroupBroadcast(data[0].u8.x, 3); + data[invocation].u8.xy = subgroupBroadcast(data[1].u8.xy, 3); + data[invocation].u8.xyz = subgroupBroadcast(data[2].u8.xyz, 3); + data[invocation].u8 = subgroupBroadcast(data[3].u8, 3); + data[invocation].u8.x = subgroupBroadcastFirst(data[0].u8.x); + data[invocation].u8.xy = subgroupBroadcastFirst(data[1].u8.xy); + data[invocation].u8.xyz = subgroupBroadcastFirst(data[2].u8.xyz); + data[invocation].u8 = subgroupBroadcastFirst(data[3].u8); + + data[invocation].i16.x = subgroupBroadcast(data[0].i16.x, 3); + data[invocation].i16.xy = subgroupBroadcast(data[1].i16.xy, 3); + data[invocation].i16.xyz = subgroupBroadcast(data[2].i16.xyz, 3); + data[invocation].i16 = subgroupBroadcast(data[3].i16, 3); + data[invocation].i16.x = subgroupBroadcastFirst(data[0].i16.x); + data[invocation].i16.xy = subgroupBroadcastFirst(data[1].i16.xy); + data[invocation].i16.xyz = subgroupBroadcastFirst(data[2].i16.xyz); + data[invocation].i16 = subgroupBroadcastFirst(data[3].i16); + + data[invocation].u16.x = subgroupBroadcast(data[0].u16.x, 3); + data[invocation].u16.xy = subgroupBroadcast(data[1].u16.xy, 3); + data[invocation].u16.xyz = subgroupBroadcast(data[2].u16.xyz, 3); + data[invocation].u16 = subgroupBroadcast(data[3].u16, 3); + data[invocation].u16.x = subgroupBroadcastFirst(data[0].u16.x); + data[invocation].u16.xy = subgroupBroadcastFirst(data[1].u16.xy); + data[invocation].u16.xyz = subgroupBroadcastFirst(data[2].u16.xyz); + data[invocation].u16 = subgroupBroadcastFirst(data[3].u16); + + data[invocation].i64.x = subgroupBroadcast(data[0].i64.x, 3); + data[invocation].i64.xy = subgroupBroadcast(data[1].i64.xy, 3); + data[invocation].i64.xyz = subgroupBroadcast(data[2].i64.xyz, 3); + data[invocation].i64 = subgroupBroadcast(data[3].i64, 3); + data[invocation].i64.x = subgroupBroadcastFirst(data[0].i64.x); + data[invocation].i64.xy = subgroupBroadcastFirst(data[1].i64.xy); + data[invocation].i64.xyz = subgroupBroadcastFirst(data[2].i64.xyz); + data[invocation].i64 = subgroupBroadcastFirst(data[3].i64); + + data[invocation].u64.x = subgroupBroadcast(data[0].u64.x, 3); + data[invocation].u64.xy = subgroupBroadcast(data[1].u64.xy, 3); + data[invocation].u64.xyz = subgroupBroadcast(data[2].u64.xyz, 3); + data[invocation].u64 = subgroupBroadcast(data[3].u64, 3); + data[invocation].u64.x = subgroupBroadcastFirst(data[0].u64.x); + data[invocation].u64.xy = subgroupBroadcastFirst(data[1].u64.xy); + data[invocation].u64.xyz = subgroupBroadcastFirst(data[2].u64.xyz); + data[invocation].u64 = subgroupBroadcastFirst(data[3].u64); + + data[invocation].f16.x = subgroupBroadcast(data[0].f16.x, 3); + data[invocation].f16.xy = subgroupBroadcast(data[1].f16.xy, 3); + data[invocation].f16.xyz = subgroupBroadcast(data[2].f16.xyz, 3); + data[invocation].f16 = subgroupBroadcast(data[3].f16, 3); + data[invocation].f16.x = subgroupBroadcastFirst(data[0].f16.x); + data[invocation].f16.xy = subgroupBroadcastFirst(data[1].f16.xy); + data[invocation].f16.xyz = subgroupBroadcastFirst(data[2].f16.xyz); + data[invocation].f16 = subgroupBroadcastFirst(data[3].f16); +} diff --git a/Test/spv.subgroupExtendedTypesBallotNeg.comp b/Test/spv.subgroupExtendedTypesBallotNeg.comp new file mode 100644 index 00000000..240ab593 --- /dev/null +++ b/Test/spv.subgroupExtendedTypesBallotNeg.comp @@ -0,0 +1,88 @@ +#version 450 + +#extension GL_KHR_shader_subgroup_ballot: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int8: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int16: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int64: enable +#extension GL_EXT_shader_explicit_arithmetic_types_float16: enable + +layout (local_size_x = 8) in; + +layout(binding = 0) buffer Buffers +{ + i8vec4 i8; + u8vec4 u8; + i16vec4 i16; + u16vec4 u16; + i64vec4 i64; + u64vec4 u64; + f16vec4 f16; +} data[4]; + +void main() +{ + uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; + + data[invocation].i8.x = subgroupBroadcast(data[0].i8.x, 3); + data[invocation].i8.xy = subgroupBroadcast(data[1].i8.xy, 3); + data[invocation].i8.xyz = subgroupBroadcast(data[2].i8.xyz, 3); + data[invocation].i8 = subgroupBroadcast(data[3].i8, 3); + data[invocation].i8.x = subgroupBroadcastFirst(data[0].i8.x); + data[invocation].i8.xy = subgroupBroadcastFirst(data[1].i8.xy); + data[invocation].i8.xyz = subgroupBroadcastFirst(data[2].i8.xyz); + data[invocation].i8 = subgroupBroadcastFirst(data[3].i8); + + data[invocation].u8.x = subgroupBroadcast(data[0].u8.x, 3); + data[invocation].u8.xy = subgroupBroadcast(data[1].u8.xy, 3); + data[invocation].u8.xyz = subgroupBroadcast(data[2].u8.xyz, 3); + data[invocation].u8 = subgroupBroadcast(data[3].u8, 3); + data[invocation].u8.x = subgroupBroadcastFirst(data[0].u8.x); + data[invocation].u8.xy = subgroupBroadcastFirst(data[1].u8.xy); + data[invocation].u8.xyz = subgroupBroadcastFirst(data[2].u8.xyz); + data[invocation].u8 = subgroupBroadcastFirst(data[3].u8); + + data[invocation].i16.x = subgroupBroadcast(data[0].i16.x, 3); + data[invocation].i16.xy = subgroupBroadcast(data[1].i16.xy, 3); + data[invocation].i16.xyz = subgroupBroadcast(data[2].i16.xyz, 3); + data[invocation].i16 = subgroupBroadcast(data[3].i16, 3); + data[invocation].i16.x = subgroupBroadcastFirst(data[0].i16.x); + data[invocation].i16.xy = subgroupBroadcastFirst(data[1].i16.xy); + data[invocation].i16.xyz = subgroupBroadcastFirst(data[2].i16.xyz); + data[invocation].i16 = subgroupBroadcastFirst(data[3].i16); + + data[invocation].u16.x = subgroupBroadcast(data[0].u16.x, 3); + data[invocation].u16.xy = subgroupBroadcast(data[1].u16.xy, 3); + data[invocation].u16.xyz = subgroupBroadcast(data[2].u16.xyz, 3); + data[invocation].u16 = subgroupBroadcast(data[3].u16, 3); + data[invocation].u16.x = subgroupBroadcastFirst(data[0].u16.x); + data[invocation].u16.xy = subgroupBroadcastFirst(data[1].u16.xy); + data[invocation].u16.xyz = subgroupBroadcastFirst(data[2].u16.xyz); + data[invocation].u16 = subgroupBroadcastFirst(data[3].u16); + + data[invocation].i64.x = subgroupBroadcast(data[0].i64.x, 3); + data[invocation].i64.xy = subgroupBroadcast(data[1].i64.xy, 3); + data[invocation].i64.xyz = subgroupBroadcast(data[2].i64.xyz, 3); + data[invocation].i64 = subgroupBroadcast(data[3].i64, 3); + data[invocation].i64.x = subgroupBroadcastFirst(data[0].i64.x); + data[invocation].i64.xy = subgroupBroadcastFirst(data[1].i64.xy); + data[invocation].i64.xyz = subgroupBroadcastFirst(data[2].i64.xyz); + data[invocation].i64 = subgroupBroadcastFirst(data[3].i64); + + data[invocation].u64.x = subgroupBroadcast(data[0].u64.x, 3); + data[invocation].u64.xy = subgroupBroadcast(data[1].u64.xy, 3); + data[invocation].u64.xyz = subgroupBroadcast(data[2].u64.xyz, 3); + data[invocation].u64 = subgroupBroadcast(data[3].u64, 3); + data[invocation].u64.x = subgroupBroadcastFirst(data[0].u64.x); + data[invocation].u64.xy = subgroupBroadcastFirst(data[1].u64.xy); + data[invocation].u64.xyz = subgroupBroadcastFirst(data[2].u64.xyz); + data[invocation].u64 = subgroupBroadcastFirst(data[3].u64); + + data[invocation].f16.x = subgroupBroadcast(data[0].f16.x, 3); + data[invocation].f16.xy = subgroupBroadcast(data[1].f16.xy, 3); + data[invocation].f16.xyz = subgroupBroadcast(data[2].f16.xyz, 3); + data[invocation].f16 = subgroupBroadcast(data[3].f16, 3); + data[invocation].f16.x = subgroupBroadcastFirst(data[0].f16.x); + data[invocation].f16.xy = subgroupBroadcastFirst(data[1].f16.xy); + data[invocation].f16.xyz = subgroupBroadcastFirst(data[2].f16.xyz); + data[invocation].f16 = subgroupBroadcastFirst(data[3].f16); +} diff --git a/Test/spv.subgroupExtendedTypesClustered.comp b/Test/spv.subgroupExtendedTypesClustered.comp new file mode 100644 index 00000000..a215cbf0 --- /dev/null +++ b/Test/spv.subgroupExtendedTypesClustered.comp @@ -0,0 +1,255 @@ +#version 450 + +#extension GL_KHR_shader_subgroup_clustered: enable +#extension GL_EXT_shader_subgroup_extended_types_int8: enable +#extension GL_EXT_shader_subgroup_extended_types_int16: enable +#extension GL_EXT_shader_subgroup_extended_types_int64: enable +#extension GL_EXT_shader_subgroup_extended_types_float16: enable + +layout (local_size_x = 8) in; + +layout(binding = 0) buffer Buffers +{ + i8vec4 i8; + u8vec4 u8; + i16vec4 i16; + u16vec4 u16; + i64vec4 i64; + u64vec4 u64; + f16vec4 f16; +} data[4]; + +void main() +{ + uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; + + data[invocation].i8.x = subgroupClusteredAdd(data[0].i8.x, 1); + data[invocation].i8.xy = subgroupClusteredAdd(data[1].i8.xy, 1); + data[invocation].i8.xyz = subgroupClusteredAdd(data[2].i8.xyz, 1); + data[invocation].i8 = subgroupClusteredAdd(data[3].i8, 1); + + data[invocation].i8.x = subgroupClusteredMul(data[0].i8.x, 1); + data[invocation].i8.xy = subgroupClusteredMul(data[1].i8.xy, 1); + data[invocation].i8.xyz = subgroupClusteredMul(data[2].i8.xyz, 1); + data[invocation].i8 = subgroupClusteredMul(data[3].i8, 1); + + data[invocation].i8.x = subgroupClusteredMin(data[0].i8.x, 1); + data[invocation].i8.xy = subgroupClusteredMin(data[1].i8.xy, 1); + data[invocation].i8.xyz = subgroupClusteredMin(data[2].i8.xyz, 1); + data[invocation].i8 = subgroupClusteredMin(data[3].i8, 1); + + data[invocation].i8.x = subgroupClusteredMax(data[0].i8.x, 1); + data[invocation].i8.xy = subgroupClusteredMax(data[1].i8.xy, 1); + data[invocation].i8.xyz = subgroupClusteredMax(data[2].i8.xyz, 1); + data[invocation].i8 = subgroupClusteredMax(data[3].i8, 1); + + data[invocation].i8.x = subgroupClusteredAnd(data[0].i8.x, 1); + data[invocation].i8.xy = subgroupClusteredAnd(data[1].i8.xy, 1); + data[invocation].i8.xyz = subgroupClusteredAnd(data[2].i8.xyz, 1); + data[invocation].i8 = subgroupClusteredAnd(data[3].i8, 1); + + data[invocation].i8.x = subgroupClusteredOr(data[0].i8.x, 1); + data[invocation].i8.xy = subgroupClusteredOr(data[1].i8.xy, 1); + data[invocation].i8.xyz = subgroupClusteredOr(data[2].i8.xyz, 1); + data[invocation].i8 = subgroupClusteredOr(data[3].i8, 1); + + data[invocation].i8.x = subgroupClusteredXor(data[0].i8.x, 1); + data[invocation].i8.xy = subgroupClusteredXor(data[1].i8.xy, 1); + data[invocation].i8.xyz = subgroupClusteredXor(data[2].i8.xyz, 1); + data[invocation].i8 = subgroupClusteredXor(data[3].i8, 1); + + data[invocation].u8.x = subgroupClusteredAdd(data[0].u8.x, 1); + data[invocation].u8.xy = subgroupClusteredAdd(data[1].u8.xy, 1); + data[invocation].u8.xyz = subgroupClusteredAdd(data[2].u8.xyz, 1); + data[invocation].u8 = subgroupClusteredAdd(data[3].u8, 1); + + data[invocation].u8.x = subgroupClusteredMul(data[0].u8.x, 1); + data[invocation].u8.xy = subgroupClusteredMul(data[1].u8.xy, 1); + data[invocation].u8.xyz = subgroupClusteredMul(data[2].u8.xyz, 1); + data[invocation].u8 = subgroupClusteredMul(data[3].u8, 1); + + data[invocation].u8.x = subgroupClusteredMin(data[0].u8.x, 1); + data[invocation].u8.xy = subgroupClusteredMin(data[1].u8.xy, 1); + data[invocation].u8.xyz = subgroupClusteredMin(data[2].u8.xyz, 1); + data[invocation].u8 = subgroupClusteredMin(data[3].u8, 1); + + data[invocation].u8.x = subgroupClusteredMax(data[0].u8.x, 1); + data[invocation].u8.xy = subgroupClusteredMax(data[1].u8.xy, 1); + data[invocation].u8.xyz = subgroupClusteredMax(data[2].u8.xyz, 1); + data[invocation].u8 = subgroupClusteredMax(data[3].u8, 1); + + data[invocation].u8.x = subgroupClusteredAnd(data[0].u8.x, 1); + data[invocation].u8.xy = subgroupClusteredAnd(data[1].u8.xy, 1); + data[invocation].u8.xyz = subgroupClusteredAnd(data[2].u8.xyz, 1); + data[invocation].u8 = subgroupClusteredAnd(data[3].u8, 1); + + data[invocation].u8.x = subgroupClusteredOr(data[0].u8.x, 1); + data[invocation].u8.xy = subgroupClusteredOr(data[1].u8.xy, 1); + data[invocation].u8.xyz = subgroupClusteredOr(data[2].u8.xyz, 1); + data[invocation].u8 = subgroupClusteredOr(data[3].u8, 1); + + data[invocation].u8.x = subgroupClusteredXor(data[0].u8.x, 1); + data[invocation].u8.xy = subgroupClusteredXor(data[1].u8.xy, 1); + data[invocation].u8.xyz = subgroupClusteredXor(data[2].u8.xyz, 1); + data[invocation].u8 = subgroupClusteredXor(data[3].u8, 1); + + data[invocation].i16.x = subgroupClusteredAdd(data[0].i16.x, 1); + data[invocation].i16.xy = subgroupClusteredAdd(data[1].i16.xy, 1); + data[invocation].i16.xyz = subgroupClusteredAdd(data[2].i16.xyz, 1); + data[invocation].i16 = subgroupClusteredAdd(data[3].i16, 1); + + data[invocation].i16.x = subgroupClusteredMul(data[0].i16.x, 1); + data[invocation].i16.xy = subgroupClusteredMul(data[1].i16.xy, 1); + data[invocation].i16.xyz = subgroupClusteredMul(data[2].i16.xyz, 1); + data[invocation].i16 = subgroupClusteredMul(data[3].i16, 1); + + data[invocation].i16.x = subgroupClusteredMin(data[0].i16.x, 1); + data[invocation].i16.xy = subgroupClusteredMin(data[1].i16.xy, 1); + data[invocation].i16.xyz = subgroupClusteredMin(data[2].i16.xyz, 1); + data[invocation].i16 = subgroupClusteredMin(data[3].i16, 1); + + data[invocation].i16.x = subgroupClusteredMax(data[0].i16.x, 1); + data[invocation].i16.xy = subgroupClusteredMax(data[1].i16.xy, 1); + data[invocation].i16.xyz = subgroupClusteredMax(data[2].i16.xyz, 1); + data[invocation].i16 = subgroupClusteredMax(data[3].i16, 1); + + data[invocation].i16.x = subgroupClusteredAnd(data[0].i16.x, 1); + data[invocation].i16.xy = subgroupClusteredAnd(data[1].i16.xy, 1); + data[invocation].i16.xyz = subgroupClusteredAnd(data[2].i16.xyz, 1); + data[invocation].i16 = subgroupClusteredAnd(data[3].i16, 1); + + data[invocation].i16.x = subgroupClusteredOr(data[0].i16.x, 1); + data[invocation].i16.xy = subgroupClusteredOr(data[1].i16.xy, 1); + data[invocation].i16.xyz = subgroupClusteredOr(data[2].i16.xyz, 1); + data[invocation].i16 = subgroupClusteredOr(data[3].i16, 1); + + data[invocation].i16.x = subgroupClusteredXor(data[0].i16.x, 1); + data[invocation].i16.xy = subgroupClusteredXor(data[1].i16.xy, 1); + data[invocation].i16.xyz = subgroupClusteredXor(data[2].i16.xyz, 1); + data[invocation].i16 = subgroupClusteredXor(data[3].i16, 1); + + data[invocation].u16.x = subgroupClusteredAdd(data[0].u16.x, 1); + data[invocation].u16.xy = subgroupClusteredAdd(data[1].u16.xy, 1); + data[invocation].u16.xyz = subgroupClusteredAdd(data[2].u16.xyz, 1); + data[invocation].u16 = subgroupClusteredAdd(data[3].u16, 1); + + data[invocation].u16.x = subgroupClusteredMul(data[0].u16.x, 1); + data[invocation].u16.xy = subgroupClusteredMul(data[1].u16.xy, 1); + data[invocation].u16.xyz = subgroupClusteredMul(data[2].u16.xyz, 1); + data[invocation].u16 = subgroupClusteredMul(data[3].u16, 1); + + data[invocation].u16.x = subgroupClusteredMin(data[0].u16.x, 1); + data[invocation].u16.xy = subgroupClusteredMin(data[1].u16.xy, 1); + data[invocation].u16.xyz = subgroupClusteredMin(data[2].u16.xyz, 1); + data[invocation].u16 = subgroupClusteredMin(data[3].u16, 1); + + data[invocation].u16.x = subgroupClusteredMax(data[0].u16.x, 1); + data[invocation].u16.xy = subgroupClusteredMax(data[1].u16.xy, 1); + data[invocation].u16.xyz = subgroupClusteredMax(data[2].u16.xyz, 1); + data[invocation].u16 = subgroupClusteredMax(data[3].u16, 1); + + data[invocation].u16.x = subgroupClusteredAnd(data[0].u16.x, 1); + data[invocation].u16.xy = subgroupClusteredAnd(data[1].u16.xy, 1); + data[invocation].u16.xyz = subgroupClusteredAnd(data[2].u16.xyz, 1); + data[invocation].u16 = subgroupClusteredAnd(data[3].u16, 1); + + data[invocation].u16.x = subgroupClusteredOr(data[0].u16.x, 1); + data[invocation].u16.xy = subgroupClusteredOr(data[1].u16.xy, 1); + data[invocation].u16.xyz = subgroupClusteredOr(data[2].u16.xyz, 1); + data[invocation].u16 = subgroupClusteredOr(data[3].u16, 1); + + data[invocation].u16.x = subgroupClusteredXor(data[0].u16.x, 1); + data[invocation].u16.xy = subgroupClusteredXor(data[1].u16.xy, 1); + data[invocation].u16.xyz = subgroupClusteredXor(data[2].u16.xyz, 1); + data[invocation].u16 = subgroupClusteredXor(data[3].u16, 1); + + data[invocation].i64.x = subgroupClusteredAdd(data[0].i64.x, 1); + data[invocation].i64.xy = subgroupClusteredAdd(data[1].i64.xy, 1); + data[invocation].i64.xyz = subgroupClusteredAdd(data[2].i64.xyz, 1); + data[invocation].i64 = subgroupClusteredAdd(data[3].i64, 1); + + data[invocation].i64.x = subgroupClusteredMul(data[0].i64.x, 1); + data[invocation].i64.xy = subgroupClusteredMul(data[1].i64.xy, 1); + data[invocation].i64.xyz = subgroupClusteredMul(data[2].i64.xyz, 1); + data[invocation].i64 = subgroupClusteredMul(data[3].i64, 1); + + data[invocation].i64.x = subgroupClusteredMin(data[0].i64.x, 1); + data[invocation].i64.xy = subgroupClusteredMin(data[1].i64.xy, 1); + data[invocation].i64.xyz = subgroupClusteredMin(data[2].i64.xyz, 1); + data[invocation].i64 = subgroupClusteredMin(data[3].i64, 1); + + data[invocation].i64.x = subgroupClusteredMax(data[0].i64.x, 1); + data[invocation].i64.xy = subgroupClusteredMax(data[1].i64.xy, 1); + data[invocation].i64.xyz = subgroupClusteredMax(data[2].i64.xyz, 1); + data[invocation].i64 = subgroupClusteredMax(data[3].i64, 1); + + data[invocation].i64.x = subgroupClusteredAnd(data[0].i64.x, 1); + data[invocation].i64.xy = subgroupClusteredAnd(data[1].i64.xy, 1); + data[invocation].i64.xyz = subgroupClusteredAnd(data[2].i64.xyz, 1); + data[invocation].i64 = subgroupClusteredAnd(data[3].i64, 1); + + data[invocation].i64.x = subgroupClusteredOr(data[0].i64.x, 1); + data[invocation].i64.xy = subgroupClusteredOr(data[1].i64.xy, 1); + data[invocation].i64.xyz = subgroupClusteredOr(data[2].i64.xyz, 1); + data[invocation].i64 = subgroupClusteredOr(data[3].i64, 1); + + data[invocation].i64.x = subgroupClusteredXor(data[0].i64.x, 1); + data[invocation].i64.xy = subgroupClusteredXor(data[1].i64.xy, 1); + data[invocation].i64.xyz = subgroupClusteredXor(data[2].i64.xyz, 1); + data[invocation].i64 = subgroupClusteredXor(data[3].i64, 1); + + data[invocation].u64.x = subgroupClusteredAdd(data[0].u64.x, 1); + data[invocation].u64.xy = subgroupClusteredAdd(data[1].u64.xy, 1); + data[invocation].u64.xyz = subgroupClusteredAdd(data[2].u64.xyz, 1); + data[invocation].u64 = subgroupClusteredAdd(data[3].u64, 1); + + data[invocation].u64.x = subgroupClusteredMul(data[0].u64.x, 1); + data[invocation].u64.xy = subgroupClusteredMul(data[1].u64.xy, 1); + data[invocation].u64.xyz = subgroupClusteredMul(data[2].u64.xyz, 1); + data[invocation].u64 = subgroupClusteredMul(data[3].u64, 1); + + data[invocation].u64.x = subgroupClusteredMin(data[0].u64.x, 1); + data[invocation].u64.xy = subgroupClusteredMin(data[1].u64.xy, 1); + data[invocation].u64.xyz = subgroupClusteredMin(data[2].u64.xyz, 1); + data[invocation].u64 = subgroupClusteredMin(data[3].u64, 1); + + data[invocation].u64.x = subgroupClusteredMax(data[0].u64.x, 1); + data[invocation].u64.xy = subgroupClusteredMax(data[1].u64.xy, 1); + data[invocation].u64.xyz = subgroupClusteredMax(data[2].u64.xyz, 1); + data[invocation].u64 = subgroupClusteredMax(data[3].u64, 1); + + data[invocation].u64.x = subgroupClusteredAnd(data[0].u64.x, 1); + data[invocation].u64.xy = subgroupClusteredAnd(data[1].u64.xy, 1); + data[invocation].u64.xyz = subgroupClusteredAnd(data[2].u64.xyz, 1); + data[invocation].u64 = subgroupClusteredAnd(data[3].u64, 1); + + data[invocation].u64.x = subgroupClusteredOr(data[0].u64.x, 1); + data[invocation].u64.xy = subgroupClusteredOr(data[1].u64.xy, 1); + data[invocation].u64.xyz = subgroupClusteredOr(data[2].u64.xyz, 1); + data[invocation].u64 = subgroupClusteredOr(data[3].u64, 1); + + data[invocation].u64.x = subgroupClusteredXor(data[0].u64.x, 1); + data[invocation].u64.xy = subgroupClusteredXor(data[1].u64.xy, 1); + data[invocation].u64.xyz = subgroupClusteredXor(data[2].u64.xyz, 1); + data[invocation].u64 = subgroupClusteredXor(data[3].u64, 1); + + data[invocation].f16.x = subgroupClusteredAdd(data[0].f16.x, 1); + data[invocation].f16.xy = subgroupClusteredAdd(data[1].f16.xy, 1); + data[invocation].f16.xyz = subgroupClusteredAdd(data[2].f16.xyz, 1); + data[invocation].f16 = subgroupClusteredAdd(data[3].f16, 1); + + data[invocation].f16.x = subgroupClusteredMul(data[0].f16.x, 1); + data[invocation].f16.xy = subgroupClusteredMul(data[1].f16.xy, 1); + data[invocation].f16.xyz = subgroupClusteredMul(data[2].f16.xyz, 1); + data[invocation].f16 = subgroupClusteredMul(data[3].f16, 1); + + data[invocation].f16.x = subgroupClusteredMin(data[0].f16.x, 1); + data[invocation].f16.xy = subgroupClusteredMin(data[1].f16.xy, 1); + data[invocation].f16.xyz = subgroupClusteredMin(data[2].f16.xyz, 1); + data[invocation].f16 = subgroupClusteredMin(data[3].f16, 1); + + data[invocation].f16.x = subgroupClusteredMax(data[0].f16.x, 1); + data[invocation].f16.xy = subgroupClusteredMax(data[1].f16.xy, 1); + data[invocation].f16.xyz = subgroupClusteredMax(data[2].f16.xyz, 1); + data[invocation].f16 = subgroupClusteredMax(data[3].f16, 1); +} diff --git a/Test/spv.subgroupExtendedTypesClusteredNeg.comp b/Test/spv.subgroupExtendedTypesClusteredNeg.comp new file mode 100644 index 00000000..d5215115 --- /dev/null +++ b/Test/spv.subgroupExtendedTypesClusteredNeg.comp @@ -0,0 +1,255 @@ +#version 450 + +#extension GL_KHR_shader_subgroup_clustered: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int8: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int16: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int64: enable +#extension GL_EXT_shader_explicit_arithmetic_types_float16: enable + +layout (local_size_x = 8) in; + +layout(binding = 0) buffer Buffers +{ + i8vec4 i8; + u8vec4 u8; + i16vec4 i16; + u16vec4 u16; + i64vec4 i64; + u64vec4 u64; + f16vec4 f16; +} data[4]; + +void main() +{ + uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; + + data[invocation].i8.x = subgroupClusteredAdd(data[0].i8.x, 1); + data[invocation].i8.xy = subgroupClusteredAdd(data[1].i8.xy, 1); + data[invocation].i8.xyz = subgroupClusteredAdd(data[2].i8.xyz, 1); + data[invocation].i8 = subgroupClusteredAdd(data[3].i8, 1); + + data[invocation].i8.x = subgroupClusteredMul(data[0].i8.x, 1); + data[invocation].i8.xy = subgroupClusteredMul(data[1].i8.xy, 1); + data[invocation].i8.xyz = subgroupClusteredMul(data[2].i8.xyz, 1); + data[invocation].i8 = subgroupClusteredMul(data[3].i8, 1); + + data[invocation].i8.x = subgroupClusteredMin(data[0].i8.x, 1); + data[invocation].i8.xy = subgroupClusteredMin(data[1].i8.xy, 1); + data[invocation].i8.xyz = subgroupClusteredMin(data[2].i8.xyz, 1); + data[invocation].i8 = subgroupClusteredMin(data[3].i8, 1); + + data[invocation].i8.x = subgroupClusteredMax(data[0].i8.x, 1); + data[invocation].i8.xy = subgroupClusteredMax(data[1].i8.xy, 1); + data[invocation].i8.xyz = subgroupClusteredMax(data[2].i8.xyz, 1); + data[invocation].i8 = subgroupClusteredMax(data[3].i8, 1); + + data[invocation].i8.x = subgroupClusteredAnd(data[0].i8.x, 1); + data[invocation].i8.xy = subgroupClusteredAnd(data[1].i8.xy, 1); + data[invocation].i8.xyz = subgroupClusteredAnd(data[2].i8.xyz, 1); + data[invocation].i8 = subgroupClusteredAnd(data[3].i8, 1); + + data[invocation].i8.x = subgroupClusteredOr(data[0].i8.x, 1); + data[invocation].i8.xy = subgroupClusteredOr(data[1].i8.xy, 1); + data[invocation].i8.xyz = subgroupClusteredOr(data[2].i8.xyz, 1); + data[invocation].i8 = subgroupClusteredOr(data[3].i8, 1); + + data[invocation].i8.x = subgroupClusteredXor(data[0].i8.x, 1); + data[invocation].i8.xy = subgroupClusteredXor(data[1].i8.xy, 1); + data[invocation].i8.xyz = subgroupClusteredXor(data[2].i8.xyz, 1); + data[invocation].i8 = subgroupClusteredXor(data[3].i8, 1); + + data[invocation].u8.x = subgroupClusteredAdd(data[0].u8.x, 1); + data[invocation].u8.xy = subgroupClusteredAdd(data[1].u8.xy, 1); + data[invocation].u8.xyz = subgroupClusteredAdd(data[2].u8.xyz, 1); + data[invocation].u8 = subgroupClusteredAdd(data[3].u8, 1); + + data[invocation].u8.x = subgroupClusteredMul(data[0].u8.x, 1); + data[invocation].u8.xy = subgroupClusteredMul(data[1].u8.xy, 1); + data[invocation].u8.xyz = subgroupClusteredMul(data[2].u8.xyz, 1); + data[invocation].u8 = subgroupClusteredMul(data[3].u8, 1); + + data[invocation].u8.x = subgroupClusteredMin(data[0].u8.x, 1); + data[invocation].u8.xy = subgroupClusteredMin(data[1].u8.xy, 1); + data[invocation].u8.xyz = subgroupClusteredMin(data[2].u8.xyz, 1); + data[invocation].u8 = subgroupClusteredMin(data[3].u8, 1); + + data[invocation].u8.x = subgroupClusteredMax(data[0].u8.x, 1); + data[invocation].u8.xy = subgroupClusteredMax(data[1].u8.xy, 1); + data[invocation].u8.xyz = subgroupClusteredMax(data[2].u8.xyz, 1); + data[invocation].u8 = subgroupClusteredMax(data[3].u8, 1); + + data[invocation].u8.x = subgroupClusteredAnd(data[0].u8.x, 1); + data[invocation].u8.xy = subgroupClusteredAnd(data[1].u8.xy, 1); + data[invocation].u8.xyz = subgroupClusteredAnd(data[2].u8.xyz, 1); + data[invocation].u8 = subgroupClusteredAnd(data[3].u8, 1); + + data[invocation].u8.x = subgroupClusteredOr(data[0].u8.x, 1); + data[invocation].u8.xy = subgroupClusteredOr(data[1].u8.xy, 1); + data[invocation].u8.xyz = subgroupClusteredOr(data[2].u8.xyz, 1); + data[invocation].u8 = subgroupClusteredOr(data[3].u8, 1); + + data[invocation].u8.x = subgroupClusteredXor(data[0].u8.x, 1); + data[invocation].u8.xy = subgroupClusteredXor(data[1].u8.xy, 1); + data[invocation].u8.xyz = subgroupClusteredXor(data[2].u8.xyz, 1); + data[invocation].u8 = subgroupClusteredXor(data[3].u8, 1); + + data[invocation].i16.x = subgroupClusteredAdd(data[0].i16.x, 1); + data[invocation].i16.xy = subgroupClusteredAdd(data[1].i16.xy, 1); + data[invocation].i16.xyz = subgroupClusteredAdd(data[2].i16.xyz, 1); + data[invocation].i16 = subgroupClusteredAdd(data[3].i16, 1); + + data[invocation].i16.x = subgroupClusteredMul(data[0].i16.x, 1); + data[invocation].i16.xy = subgroupClusteredMul(data[1].i16.xy, 1); + data[invocation].i16.xyz = subgroupClusteredMul(data[2].i16.xyz, 1); + data[invocation].i16 = subgroupClusteredMul(data[3].i16, 1); + + data[invocation].i16.x = subgroupClusteredMin(data[0].i16.x, 1); + data[invocation].i16.xy = subgroupClusteredMin(data[1].i16.xy, 1); + data[invocation].i16.xyz = subgroupClusteredMin(data[2].i16.xyz, 1); + data[invocation].i16 = subgroupClusteredMin(data[3].i16, 1); + + data[invocation].i16.x = subgroupClusteredMax(data[0].i16.x, 1); + data[invocation].i16.xy = subgroupClusteredMax(data[1].i16.xy, 1); + data[invocation].i16.xyz = subgroupClusteredMax(data[2].i16.xyz, 1); + data[invocation].i16 = subgroupClusteredMax(data[3].i16, 1); + + data[invocation].i16.x = subgroupClusteredAnd(data[0].i16.x, 1); + data[invocation].i16.xy = subgroupClusteredAnd(data[1].i16.xy, 1); + data[invocation].i16.xyz = subgroupClusteredAnd(data[2].i16.xyz, 1); + data[invocation].i16 = subgroupClusteredAnd(data[3].i16, 1); + + data[invocation].i16.x = subgroupClusteredOr(data[0].i16.x, 1); + data[invocation].i16.xy = subgroupClusteredOr(data[1].i16.xy, 1); + data[invocation].i16.xyz = subgroupClusteredOr(data[2].i16.xyz, 1); + data[invocation].i16 = subgroupClusteredOr(data[3].i16, 1); + + data[invocation].i16.x = subgroupClusteredXor(data[0].i16.x, 1); + data[invocation].i16.xy = subgroupClusteredXor(data[1].i16.xy, 1); + data[invocation].i16.xyz = subgroupClusteredXor(data[2].i16.xyz, 1); + data[invocation].i16 = subgroupClusteredXor(data[3].i16, 1); + + data[invocation].u16.x = subgroupClusteredAdd(data[0].u16.x, 1); + data[invocation].u16.xy = subgroupClusteredAdd(data[1].u16.xy, 1); + data[invocation].u16.xyz = subgroupClusteredAdd(data[2].u16.xyz, 1); + data[invocation].u16 = subgroupClusteredAdd(data[3].u16, 1); + + data[invocation].u16.x = subgroupClusteredMul(data[0].u16.x, 1); + data[invocation].u16.xy = subgroupClusteredMul(data[1].u16.xy, 1); + data[invocation].u16.xyz = subgroupClusteredMul(data[2].u16.xyz, 1); + data[invocation].u16 = subgroupClusteredMul(data[3].u16, 1); + + data[invocation].u16.x = subgroupClusteredMin(data[0].u16.x, 1); + data[invocation].u16.xy = subgroupClusteredMin(data[1].u16.xy, 1); + data[invocation].u16.xyz = subgroupClusteredMin(data[2].u16.xyz, 1); + data[invocation].u16 = subgroupClusteredMin(data[3].u16, 1); + + data[invocation].u16.x = subgroupClusteredMax(data[0].u16.x, 1); + data[invocation].u16.xy = subgroupClusteredMax(data[1].u16.xy, 1); + data[invocation].u16.xyz = subgroupClusteredMax(data[2].u16.xyz, 1); + data[invocation].u16 = subgroupClusteredMax(data[3].u16, 1); + + data[invocation].u16.x = subgroupClusteredAnd(data[0].u16.x, 1); + data[invocation].u16.xy = subgroupClusteredAnd(data[1].u16.xy, 1); + data[invocation].u16.xyz = subgroupClusteredAnd(data[2].u16.xyz, 1); + data[invocation].u16 = subgroupClusteredAnd(data[3].u16, 1); + + data[invocation].u16.x = subgroupClusteredOr(data[0].u16.x, 1); + data[invocation].u16.xy = subgroupClusteredOr(data[1].u16.xy, 1); + data[invocation].u16.xyz = subgroupClusteredOr(data[2].u16.xyz, 1); + data[invocation].u16 = subgroupClusteredOr(data[3].u16, 1); + + data[invocation].u16.x = subgroupClusteredXor(data[0].u16.x, 1); + data[invocation].u16.xy = subgroupClusteredXor(data[1].u16.xy, 1); + data[invocation].u16.xyz = subgroupClusteredXor(data[2].u16.xyz, 1); + data[invocation].u16 = subgroupClusteredXor(data[3].u16, 1); + + data[invocation].i64.x = subgroupClusteredAdd(data[0].i64.x, 1); + data[invocation].i64.xy = subgroupClusteredAdd(data[1].i64.xy, 1); + data[invocation].i64.xyz = subgroupClusteredAdd(data[2].i64.xyz, 1); + data[invocation].i64 = subgroupClusteredAdd(data[3].i64, 1); + + data[invocation].i64.x = subgroupClusteredMul(data[0].i64.x, 1); + data[invocation].i64.xy = subgroupClusteredMul(data[1].i64.xy, 1); + data[invocation].i64.xyz = subgroupClusteredMul(data[2].i64.xyz, 1); + data[invocation].i64 = subgroupClusteredMul(data[3].i64, 1); + + data[invocation].i64.x = subgroupClusteredMin(data[0].i64.x, 1); + data[invocation].i64.xy = subgroupClusteredMin(data[1].i64.xy, 1); + data[invocation].i64.xyz = subgroupClusteredMin(data[2].i64.xyz, 1); + data[invocation].i64 = subgroupClusteredMin(data[3].i64, 1); + + data[invocation].i64.x = subgroupClusteredMax(data[0].i64.x, 1); + data[invocation].i64.xy = subgroupClusteredMax(data[1].i64.xy, 1); + data[invocation].i64.xyz = subgroupClusteredMax(data[2].i64.xyz, 1); + data[invocation].i64 = subgroupClusteredMax(data[3].i64, 1); + + data[invocation].i64.x = subgroupClusteredAnd(data[0].i64.x, 1); + data[invocation].i64.xy = subgroupClusteredAnd(data[1].i64.xy, 1); + data[invocation].i64.xyz = subgroupClusteredAnd(data[2].i64.xyz, 1); + data[invocation].i64 = subgroupClusteredAnd(data[3].i64, 1); + + data[invocation].i64.x = subgroupClusteredOr(data[0].i64.x, 1); + data[invocation].i64.xy = subgroupClusteredOr(data[1].i64.xy, 1); + data[invocation].i64.xyz = subgroupClusteredOr(data[2].i64.xyz, 1); + data[invocation].i64 = subgroupClusteredOr(data[3].i64, 1); + + data[invocation].i64.x = subgroupClusteredXor(data[0].i64.x, 1); + data[invocation].i64.xy = subgroupClusteredXor(data[1].i64.xy, 1); + data[invocation].i64.xyz = subgroupClusteredXor(data[2].i64.xyz, 1); + data[invocation].i64 = subgroupClusteredXor(data[3].i64, 1); + + data[invocation].u64.x = subgroupClusteredAdd(data[0].u64.x, 1); + data[invocation].u64.xy = subgroupClusteredAdd(data[1].u64.xy, 1); + data[invocation].u64.xyz = subgroupClusteredAdd(data[2].u64.xyz, 1); + data[invocation].u64 = subgroupClusteredAdd(data[3].u64, 1); + + data[invocation].u64.x = subgroupClusteredMul(data[0].u64.x, 1); + data[invocation].u64.xy = subgroupClusteredMul(data[1].u64.xy, 1); + data[invocation].u64.xyz = subgroupClusteredMul(data[2].u64.xyz, 1); + data[invocation].u64 = subgroupClusteredMul(data[3].u64, 1); + + data[invocation].u64.x = subgroupClusteredMin(data[0].u64.x, 1); + data[invocation].u64.xy = subgroupClusteredMin(data[1].u64.xy, 1); + data[invocation].u64.xyz = subgroupClusteredMin(data[2].u64.xyz, 1); + data[invocation].u64 = subgroupClusteredMin(data[3].u64, 1); + + data[invocation].u64.x = subgroupClusteredMax(data[0].u64.x, 1); + data[invocation].u64.xy = subgroupClusteredMax(data[1].u64.xy, 1); + data[invocation].u64.xyz = subgroupClusteredMax(data[2].u64.xyz, 1); + data[invocation].u64 = subgroupClusteredMax(data[3].u64, 1); + + data[invocation].u64.x = subgroupClusteredAnd(data[0].u64.x, 1); + data[invocation].u64.xy = subgroupClusteredAnd(data[1].u64.xy, 1); + data[invocation].u64.xyz = subgroupClusteredAnd(data[2].u64.xyz, 1); + data[invocation].u64 = subgroupClusteredAnd(data[3].u64, 1); + + data[invocation].u64.x = subgroupClusteredOr(data[0].u64.x, 1); + data[invocation].u64.xy = subgroupClusteredOr(data[1].u64.xy, 1); + data[invocation].u64.xyz = subgroupClusteredOr(data[2].u64.xyz, 1); + data[invocation].u64 = subgroupClusteredOr(data[3].u64, 1); + + data[invocation].u64.x = subgroupClusteredXor(data[0].u64.x, 1); + data[invocation].u64.xy = subgroupClusteredXor(data[1].u64.xy, 1); + data[invocation].u64.xyz = subgroupClusteredXor(data[2].u64.xyz, 1); + data[invocation].u64 = subgroupClusteredXor(data[3].u64, 1); + + data[invocation].f16.x = subgroupClusteredAdd(data[0].f16.x, 1); + data[invocation].f16.xy = subgroupClusteredAdd(data[1].f16.xy, 1); + data[invocation].f16.xyz = subgroupClusteredAdd(data[2].f16.xyz, 1); + data[invocation].f16 = subgroupClusteredAdd(data[3].f16, 1); + + data[invocation].f16.x = subgroupClusteredMul(data[0].f16.x, 1); + data[invocation].f16.xy = subgroupClusteredMul(data[1].f16.xy, 1); + data[invocation].f16.xyz = subgroupClusteredMul(data[2].f16.xyz, 1); + data[invocation].f16 = subgroupClusteredMul(data[3].f16, 1); + + data[invocation].f16.x = subgroupClusteredMin(data[0].f16.x, 1); + data[invocation].f16.xy = subgroupClusteredMin(data[1].f16.xy, 1); + data[invocation].f16.xyz = subgroupClusteredMin(data[2].f16.xyz, 1); + data[invocation].f16 = subgroupClusteredMin(data[3].f16, 1); + + data[invocation].f16.x = subgroupClusteredMax(data[0].f16.x, 1); + data[invocation].f16.xy = subgroupClusteredMax(data[1].f16.xy, 1); + data[invocation].f16.xyz = subgroupClusteredMax(data[2].f16.xyz, 1); + data[invocation].f16 = subgroupClusteredMax(data[3].f16, 1); +} diff --git a/Test/spv.subgroupExtendedTypesPartitioned.comp b/Test/spv.subgroupExtendedTypesPartitioned.comp new file mode 100644 index 00000000..382a5b36 --- /dev/null +++ b/Test/spv.subgroupExtendedTypesPartitioned.comp @@ -0,0 +1,291 @@ +#version 450 + +#extension GL_NV_shader_subgroup_partitioned: enable +#extension GL_EXT_shader_subgroup_extended_types_int8: enable +#extension GL_EXT_shader_subgroup_extended_types_int16: enable +#extension GL_EXT_shader_subgroup_extended_types_int64: enable +#extension GL_EXT_shader_subgroup_extended_types_float16: enable + +layout (local_size_x = 8) in; + +layout(binding = 0) buffer Buffers +{ + i8vec4 i8; + u8vec4 u8; + i16vec4 i16; + u16vec4 u16; + i64vec4 i64; + u64vec4 u64; + f16vec4 f16; +} data[4]; + +void main() +{ + uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; + + uvec4 ballot; + ballot = subgroupPartitionNV(data[0].i8.x); + ballot = subgroupPartitionNV(data[1].i8.xy); + ballot = subgroupPartitionNV(data[2].i8.xyz); + ballot = subgroupPartitionNV(data[3].i8); + + ballot = subgroupPartitionNV(data[0].u8.x); + ballot = subgroupPartitionNV(data[1].u8.xy); + ballot = subgroupPartitionNV(data[2].u8.xyz); + ballot = subgroupPartitionNV(data[3].u8); + + ballot = subgroupPartitionNV(data[0].i16.x); + ballot = subgroupPartitionNV(data[1].i16.xy); + ballot = subgroupPartitionNV(data[2].i16.xyz); + ballot = subgroupPartitionNV(data[3].i16); + + ballot = subgroupPartitionNV(data[0].u16.x); + ballot = subgroupPartitionNV(data[1].u16.xy); + ballot = subgroupPartitionNV(data[2].u16.xyz); + ballot = subgroupPartitionNV(data[3].u16); + + ballot = subgroupPartitionNV(data[0].i64.x); + ballot = subgroupPartitionNV(data[1].i64.xy); + ballot = subgroupPartitionNV(data[2].i64.xyz); + ballot = subgroupPartitionNV(data[3].i64); + + ballot = subgroupPartitionNV(data[0].u64.x); + ballot = subgroupPartitionNV(data[1].u64.xy); + ballot = subgroupPartitionNV(data[2].u64.xyz); + ballot = subgroupPartitionNV(data[3].u64); + + ballot = subgroupPartitionNV(data[0].f16.x); + ballot = subgroupPartitionNV(data[1].f16.xy); + ballot = subgroupPartitionNV(data[2].f16.xyz); + ballot = subgroupPartitionNV(data[3].f16); + + data[invocation].i8.x = subgroupPartitionedAddNV(data[0].i8.x, ballot); + data[invocation].i8.xy = subgroupPartitionedAddNV(data[1].i8.xy, ballot); + data[invocation].i8.xyz = subgroupPartitionedAddNV(data[2].i8.xyz, ballot); + data[invocation].i8 = subgroupPartitionedAddNV(data[3].i8, ballot); + + data[invocation].i8.x = subgroupPartitionedMulNV(data[0].i8.x, ballot); + data[invocation].i8.xy = subgroupPartitionedMulNV(data[1].i8.xy, ballot); + data[invocation].i8.xyz = subgroupPartitionedMulNV(data[2].i8.xyz, ballot); + data[invocation].i8 = subgroupPartitionedMulNV(data[3].i8, ballot); + + data[invocation].i8.x = subgroupPartitionedMinNV(data[0].i8.x, ballot); + data[invocation].i8.xy = subgroupPartitionedMinNV(data[1].i8.xy, ballot); + data[invocation].i8.xyz = subgroupPartitionedMinNV(data[2].i8.xyz, ballot); + data[invocation].i8 = subgroupPartitionedMinNV(data[3].i8, ballot); + + data[invocation].i8.x = subgroupPartitionedMaxNV(data[0].i8.x, ballot); + data[invocation].i8.xy = subgroupPartitionedMaxNV(data[1].i8.xy, ballot); + data[invocation].i8.xyz = subgroupPartitionedMaxNV(data[2].i8.xyz, ballot); + data[invocation].i8 = subgroupPartitionedMaxNV(data[3].i8, ballot); + + data[invocation].i8.x = subgroupPartitionedAndNV(data[0].i8.x, ballot); + data[invocation].i8.xy = subgroupPartitionedAndNV(data[1].i8.xy, ballot); + data[invocation].i8.xyz = subgroupPartitionedAndNV(data[2].i8.xyz, ballot); + data[invocation].i8 = subgroupPartitionedAndNV(data[3].i8, ballot); + + data[invocation].i8.x = subgroupPartitionedOrNV(data[0].i8.x, ballot); + data[invocation].i8.xy = subgroupPartitionedOrNV(data[1].i8.xy, ballot); + data[invocation].i8.xyz = subgroupPartitionedOrNV(data[2].i8.xyz, ballot); + data[invocation].i8 = subgroupPartitionedOrNV(data[3].i8, ballot); + + data[invocation].i8.x = subgroupPartitionedXorNV(data[0].i8.x, ballot); + data[invocation].i8.xy = subgroupPartitionedXorNV(data[1].i8.xy, ballot); + data[invocation].i8.xyz = subgroupPartitionedXorNV(data[2].i8.xyz, ballot); + data[invocation].i8 = subgroupPartitionedXorNV(data[3].i8, ballot); + + data[invocation].u8.x = subgroupPartitionedAddNV(data[0].u8.x, ballot); + data[invocation].u8.xy = subgroupPartitionedAddNV(data[1].u8.xy, ballot); + data[invocation].u8.xyz = subgroupPartitionedAddNV(data[2].u8.xyz, ballot); + data[invocation].u8 = subgroupPartitionedAddNV(data[3].u8, ballot); + + data[invocation].u8.x = subgroupPartitionedMulNV(data[0].u8.x, ballot); + data[invocation].u8.xy = subgroupPartitionedMulNV(data[1].u8.xy, ballot); + data[invocation].u8.xyz = subgroupPartitionedMulNV(data[2].u8.xyz, ballot); + data[invocation].u8 = subgroupPartitionedMulNV(data[3].u8, ballot); + + data[invocation].u8.x = subgroupPartitionedMinNV(data[0].u8.x, ballot); + data[invocation].u8.xy = subgroupPartitionedMinNV(data[1].u8.xy, ballot); + data[invocation].u8.xyz = subgroupPartitionedMinNV(data[2].u8.xyz, ballot); + data[invocation].u8 = subgroupPartitionedMinNV(data[3].u8, ballot); + + data[invocation].u8.x = subgroupPartitionedMaxNV(data[0].u8.x, ballot); + data[invocation].u8.xy = subgroupPartitionedMaxNV(data[1].u8.xy, ballot); + data[invocation].u8.xyz = subgroupPartitionedMaxNV(data[2].u8.xyz, ballot); + data[invocation].u8 = subgroupPartitionedMaxNV(data[3].u8, ballot); + + data[invocation].u8.x = subgroupPartitionedAndNV(data[0].u8.x, ballot); + data[invocation].u8.xy = subgroupPartitionedAndNV(data[1].u8.xy, ballot); + data[invocation].u8.xyz = subgroupPartitionedAndNV(data[2].u8.xyz, ballot); + data[invocation].u8 = subgroupPartitionedAndNV(data[3].u8, ballot); + + data[invocation].u8.x = subgroupPartitionedOrNV(data[0].u8.x, ballot); + data[invocation].u8.xy = subgroupPartitionedOrNV(data[1].u8.xy, ballot); + data[invocation].u8.xyz = subgroupPartitionedOrNV(data[2].u8.xyz, ballot); + data[invocation].u8 = subgroupPartitionedOrNV(data[3].u8, ballot); + + data[invocation].u8.x = subgroupPartitionedXorNV(data[0].u8.x, ballot); + data[invocation].u8.xy = subgroupPartitionedXorNV(data[1].u8.xy, ballot); + data[invocation].u8.xyz = subgroupPartitionedXorNV(data[2].u8.xyz, ballot); + data[invocation].u8 = subgroupPartitionedXorNV(data[3].u8, ballot); + + data[invocation].i16.x = subgroupPartitionedAddNV(data[0].i16.x, ballot); + data[invocation].i16.xy = subgroupPartitionedAddNV(data[1].i16.xy, ballot); + data[invocation].i16.xyz = subgroupPartitionedAddNV(data[2].i16.xyz, ballot); + data[invocation].i16 = subgroupPartitionedAddNV(data[3].i16, ballot); + + data[invocation].i16.x = subgroupPartitionedMulNV(data[0].i16.x, ballot); + data[invocation].i16.xy = subgroupPartitionedMulNV(data[1].i16.xy, ballot); + data[invocation].i16.xyz = subgroupPartitionedMulNV(data[2].i16.xyz, ballot); + data[invocation].i16 = subgroupPartitionedMulNV(data[3].i16, ballot); + + data[invocation].i16.x = subgroupPartitionedMinNV(data[0].i16.x, ballot); + data[invocation].i16.xy = subgroupPartitionedMinNV(data[1].i16.xy, ballot); + data[invocation].i16.xyz = subgroupPartitionedMinNV(data[2].i16.xyz, ballot); + data[invocation].i16 = subgroupPartitionedMinNV(data[3].i16, ballot); + + data[invocation].i16.x = subgroupPartitionedMaxNV(data[0].i16.x, ballot); + data[invocation].i16.xy = subgroupPartitionedMaxNV(data[1].i16.xy, ballot); + data[invocation].i16.xyz = subgroupPartitionedMaxNV(data[2].i16.xyz, ballot); + data[invocation].i16 = subgroupPartitionedMaxNV(data[3].i16, ballot); + + data[invocation].i16.x = subgroupPartitionedAndNV(data[0].i16.x, ballot); + data[invocation].i16.xy = subgroupPartitionedAndNV(data[1].i16.xy, ballot); + data[invocation].i16.xyz = subgroupPartitionedAndNV(data[2].i16.xyz, ballot); + data[invocation].i16 = subgroupPartitionedAndNV(data[3].i16, ballot); + + data[invocation].i16.x = subgroupPartitionedOrNV(data[0].i16.x, ballot); + data[invocation].i16.xy = subgroupPartitionedOrNV(data[1].i16.xy, ballot); + data[invocation].i16.xyz = subgroupPartitionedOrNV(data[2].i16.xyz, ballot); + data[invocation].i16 = subgroupPartitionedOrNV(data[3].i16, ballot); + + data[invocation].i16.x = subgroupPartitionedXorNV(data[0].i16.x, ballot); + data[invocation].i16.xy = subgroupPartitionedXorNV(data[1].i16.xy, ballot); + data[invocation].i16.xyz = subgroupPartitionedXorNV(data[2].i16.xyz, ballot); + data[invocation].i16 = subgroupPartitionedXorNV(data[3].i16, ballot); + + data[invocation].u16.x = subgroupPartitionedAddNV(data[0].u16.x, ballot); + data[invocation].u16.xy = subgroupPartitionedAddNV(data[1].u16.xy, ballot); + data[invocation].u16.xyz = subgroupPartitionedAddNV(data[2].u16.xyz, ballot); + data[invocation].u16 = subgroupPartitionedAddNV(data[3].u16, ballot); + + data[invocation].u16.x = subgroupPartitionedMulNV(data[0].u16.x, ballot); + data[invocation].u16.xy = subgroupPartitionedMulNV(data[1].u16.xy, ballot); + data[invocation].u16.xyz = subgroupPartitionedMulNV(data[2].u16.xyz, ballot); + data[invocation].u16 = subgroupPartitionedMulNV(data[3].u16, ballot); + + data[invocation].u16.x = subgroupPartitionedMinNV(data[0].u16.x, ballot); + data[invocation].u16.xy = subgroupPartitionedMinNV(data[1].u16.xy, ballot); + data[invocation].u16.xyz = subgroupPartitionedMinNV(data[2].u16.xyz, ballot); + data[invocation].u16 = subgroupPartitionedMinNV(data[3].u16, ballot); + + data[invocation].u16.x = subgroupPartitionedMaxNV(data[0].u16.x, ballot); + data[invocation].u16.xy = subgroupPartitionedMaxNV(data[1].u16.xy, ballot); + data[invocation].u16.xyz = subgroupPartitionedMaxNV(data[2].u16.xyz, ballot); + data[invocation].u16 = subgroupPartitionedMaxNV(data[3].u16, ballot); + + data[invocation].u16.x = subgroupPartitionedAndNV(data[0].u16.x, ballot); + data[invocation].u16.xy = subgroupPartitionedAndNV(data[1].u16.xy, ballot); + data[invocation].u16.xyz = subgroupPartitionedAndNV(data[2].u16.xyz, ballot); + data[invocation].u16 = subgroupPartitionedAndNV(data[3].u16, ballot); + + data[invocation].u16.x = subgroupPartitionedOrNV(data[0].u16.x, ballot); + data[invocation].u16.xy = subgroupPartitionedOrNV(data[1].u16.xy, ballot); + data[invocation].u16.xyz = subgroupPartitionedOrNV(data[2].u16.xyz, ballot); + data[invocation].u16 = subgroupPartitionedOrNV(data[3].u16, ballot); + + data[invocation].u16.x = subgroupPartitionedXorNV(data[0].u16.x, ballot); + data[invocation].u16.xy = subgroupPartitionedXorNV(data[1].u16.xy, ballot); + data[invocation].u16.xyz = subgroupPartitionedXorNV(data[2].u16.xyz, ballot); + data[invocation].u16 = subgroupPartitionedXorNV(data[3].u16, ballot); + + data[invocation].i64.x = subgroupPartitionedAddNV(data[0].i64.x, ballot); + data[invocation].i64.xy = subgroupPartitionedAddNV(data[1].i64.xy, ballot); + data[invocation].i64.xyz = subgroupPartitionedAddNV(data[2].i64.xyz, ballot); + data[invocation].i64 = subgroupPartitionedAddNV(data[3].i64, ballot); + + data[invocation].i64.x = subgroupPartitionedMulNV(data[0].i64.x, ballot); + data[invocation].i64.xy = subgroupPartitionedMulNV(data[1].i64.xy, ballot); + data[invocation].i64.xyz = subgroupPartitionedMulNV(data[2].i64.xyz, ballot); + data[invocation].i64 = subgroupPartitionedMulNV(data[3].i64, ballot); + + data[invocation].i64.x = subgroupPartitionedMinNV(data[0].i64.x, ballot); + data[invocation].i64.xy = subgroupPartitionedMinNV(data[1].i64.xy, ballot); + data[invocation].i64.xyz = subgroupPartitionedMinNV(data[2].i64.xyz, ballot); + data[invocation].i64 = subgroupPartitionedMinNV(data[3].i64, ballot); + + data[invocation].i64.x = subgroupPartitionedMaxNV(data[0].i64.x, ballot); + data[invocation].i64.xy = subgroupPartitionedMaxNV(data[1].i64.xy, ballot); + data[invocation].i64.xyz = subgroupPartitionedMaxNV(data[2].i64.xyz, ballot); + data[invocation].i64 = subgroupPartitionedMaxNV(data[3].i64, ballot); + + data[invocation].i64.x = subgroupPartitionedAndNV(data[0].i64.x, ballot); + data[invocation].i64.xy = subgroupPartitionedAndNV(data[1].i64.xy, ballot); + data[invocation].i64.xyz = subgroupPartitionedAndNV(data[2].i64.xyz, ballot); + data[invocation].i64 = subgroupPartitionedAndNV(data[3].i64, ballot); + + data[invocation].i64.x = subgroupPartitionedOrNV(data[0].i64.x, ballot); + data[invocation].i64.xy = subgroupPartitionedOrNV(data[1].i64.xy, ballot); + data[invocation].i64.xyz = subgroupPartitionedOrNV(data[2].i64.xyz, ballot); + data[invocation].i64 = subgroupPartitionedOrNV(data[3].i64, ballot); + + data[invocation].i64.x = subgroupPartitionedXorNV(data[0].i64.x, ballot); + data[invocation].i64.xy = subgroupPartitionedXorNV(data[1].i64.xy, ballot); + data[invocation].i64.xyz = subgroupPartitionedXorNV(data[2].i64.xyz, ballot); + data[invocation].i64 = subgroupPartitionedXorNV(data[3].i64, ballot); + + data[invocation].u64.x = subgroupPartitionedAddNV(data[0].u64.x, ballot); + data[invocation].u64.xy = subgroupPartitionedAddNV(data[1].u64.xy, ballot); + data[invocation].u64.xyz = subgroupPartitionedAddNV(data[2].u64.xyz, ballot); + data[invocation].u64 = subgroupPartitionedAddNV(data[3].u64, ballot); + + data[invocation].u64.x = subgroupPartitionedMulNV(data[0].u64.x, ballot); + data[invocation].u64.xy = subgroupPartitionedMulNV(data[1].u64.xy, ballot); + data[invocation].u64.xyz = subgroupPartitionedMulNV(data[2].u64.xyz, ballot); + data[invocation].u64 = subgroupPartitionedMulNV(data[3].u64, ballot); + + data[invocation].u64.x = subgroupPartitionedMinNV(data[0].u64.x, ballot); + data[invocation].u64.xy = subgroupPartitionedMinNV(data[1].u64.xy, ballot); + data[invocation].u64.xyz = subgroupPartitionedMinNV(data[2].u64.xyz, ballot); + data[invocation].u64 = subgroupPartitionedMinNV(data[3].u64, ballot); + + data[invocation].u64.x = subgroupPartitionedMaxNV(data[0].u64.x, ballot); + data[invocation].u64.xy = subgroupPartitionedMaxNV(data[1].u64.xy, ballot); + data[invocation].u64.xyz = subgroupPartitionedMaxNV(data[2].u64.xyz, ballot); + data[invocation].u64 = subgroupPartitionedMaxNV(data[3].u64, ballot); + + data[invocation].u64.x = subgroupPartitionedAndNV(data[0].u64.x, ballot); + data[invocation].u64.xy = subgroupPartitionedAndNV(data[1].u64.xy, ballot); + data[invocation].u64.xyz = subgroupPartitionedAndNV(data[2].u64.xyz, ballot); + data[invocation].u64 = subgroupPartitionedAndNV(data[3].u64, ballot); + + data[invocation].u64.x = subgroupPartitionedOrNV(data[0].u64.x, ballot); + data[invocation].u64.xy = subgroupPartitionedOrNV(data[1].u64.xy, ballot); + data[invocation].u64.xyz = subgroupPartitionedOrNV(data[2].u64.xyz, ballot); + data[invocation].u64 = subgroupPartitionedOrNV(data[3].u64, ballot); + + data[invocation].u64.x = subgroupPartitionedXorNV(data[0].u64.x, ballot); + data[invocation].u64.xy = subgroupPartitionedXorNV(data[1].u64.xy, ballot); + data[invocation].u64.xyz = subgroupPartitionedXorNV(data[2].u64.xyz, ballot); + data[invocation].u64 = subgroupPartitionedXorNV(data[3].u64, ballot); + + data[invocation].f16.x = subgroupPartitionedAddNV(data[0].f16.x, ballot); + data[invocation].f16.xy = subgroupPartitionedAddNV(data[1].f16.xy, ballot); + data[invocation].f16.xyz = subgroupPartitionedAddNV(data[2].f16.xyz, ballot); + data[invocation].f16 = subgroupPartitionedAddNV(data[3].f16, ballot); + + data[invocation].f16.x = subgroupPartitionedMulNV(data[0].f16.x, ballot); + data[invocation].f16.xy = subgroupPartitionedMulNV(data[1].f16.xy, ballot); + data[invocation].f16.xyz = subgroupPartitionedMulNV(data[2].f16.xyz, ballot); + data[invocation].f16 = subgroupPartitionedMulNV(data[3].f16, ballot); + + data[invocation].f16.x = subgroupPartitionedMinNV(data[0].f16.x, ballot); + data[invocation].f16.xy = subgroupPartitionedMinNV(data[1].f16.xy, ballot); + data[invocation].f16.xyz = subgroupPartitionedMinNV(data[2].f16.xyz, ballot); + data[invocation].f16 = subgroupPartitionedMinNV(data[3].f16, ballot); + + data[invocation].f16.x = subgroupPartitionedMaxNV(data[0].f16.x, ballot); + data[invocation].f16.xy = subgroupPartitionedMaxNV(data[1].f16.xy, ballot); + data[invocation].f16.xyz = subgroupPartitionedMaxNV(data[2].f16.xyz, ballot); + data[invocation].f16 = subgroupPartitionedMaxNV(data[3].f16, ballot); +} diff --git a/Test/spv.subgroupExtendedTypesPartitionedNeg.comp b/Test/spv.subgroupExtendedTypesPartitionedNeg.comp new file mode 100644 index 00000000..ad94e35d --- /dev/null +++ b/Test/spv.subgroupExtendedTypesPartitionedNeg.comp @@ -0,0 +1,291 @@ +#version 450 + +#extension GL_NV_shader_subgroup_partitioned: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int8: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int16: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int64: enable +#extension GL_EXT_shader_explicit_arithmetic_types_float16: enable + +layout (local_size_x = 8) in; + +layout(binding = 0) buffer Buffers +{ + i8vec4 i8; + u8vec4 u8; + i16vec4 i16; + u16vec4 u16; + i64vec4 i64; + u64vec4 u64; + f16vec4 f16; +} data[4]; + +void main() +{ + uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; + + uvec4 ballot; + ballot = subgroupPartitionNV(data[0].i8.x); + ballot = subgroupPartitionNV(data[1].i8.xy); + ballot = subgroupPartitionNV(data[2].i8.xyz); + ballot = subgroupPartitionNV(data[3].i8); + + ballot = subgroupPartitionNV(data[0].u8.x); + ballot = subgroupPartitionNV(data[1].u8.xy); + ballot = subgroupPartitionNV(data[2].u8.xyz); + ballot = subgroupPartitionNV(data[3].u8); + + ballot = subgroupPartitionNV(data[0].i16.x); + ballot = subgroupPartitionNV(data[1].i16.xy); + ballot = subgroupPartitionNV(data[2].i16.xyz); + ballot = subgroupPartitionNV(data[3].i16); + + ballot = subgroupPartitionNV(data[0].u16.x); + ballot = subgroupPartitionNV(data[1].u16.xy); + ballot = subgroupPartitionNV(data[2].u16.xyz); + ballot = subgroupPartitionNV(data[3].u16); + + ballot = subgroupPartitionNV(data[0].i64.x); + ballot = subgroupPartitionNV(data[1].i64.xy); + ballot = subgroupPartitionNV(data[2].i64.xyz); + ballot = subgroupPartitionNV(data[3].i64); + + ballot = subgroupPartitionNV(data[0].u64.x); + ballot = subgroupPartitionNV(data[1].u64.xy); + ballot = subgroupPartitionNV(data[2].u64.xyz); + ballot = subgroupPartitionNV(data[3].u64); + + ballot = subgroupPartitionNV(data[0].f16.x); + ballot = subgroupPartitionNV(data[1].f16.xy); + ballot = subgroupPartitionNV(data[2].f16.xyz); + ballot = subgroupPartitionNV(data[3].f16); + + data[invocation].i8.x = subgroupPartitionedAddNV(data[0].i8.x, ballot); + data[invocation].i8.xy = subgroupPartitionedAddNV(data[1].i8.xy, ballot); + data[invocation].i8.xyz = subgroupPartitionedAddNV(data[2].i8.xyz, ballot); + data[invocation].i8 = subgroupPartitionedAddNV(data[3].i8, ballot); + + data[invocation].i8.x = subgroupPartitionedMulNV(data[0].i8.x, ballot); + data[invocation].i8.xy = subgroupPartitionedMulNV(data[1].i8.xy, ballot); + data[invocation].i8.xyz = subgroupPartitionedMulNV(data[2].i8.xyz, ballot); + data[invocation].i8 = subgroupPartitionedMulNV(data[3].i8, ballot); + + data[invocation].i8.x = subgroupPartitionedMinNV(data[0].i8.x, ballot); + data[invocation].i8.xy = subgroupPartitionedMinNV(data[1].i8.xy, ballot); + data[invocation].i8.xyz = subgroupPartitionedMinNV(data[2].i8.xyz, ballot); + data[invocation].i8 = subgroupPartitionedMinNV(data[3].i8, ballot); + + data[invocation].i8.x = subgroupPartitionedMaxNV(data[0].i8.x, ballot); + data[invocation].i8.xy = subgroupPartitionedMaxNV(data[1].i8.xy, ballot); + data[invocation].i8.xyz = subgroupPartitionedMaxNV(data[2].i8.xyz, ballot); + data[invocation].i8 = subgroupPartitionedMaxNV(data[3].i8, ballot); + + data[invocation].i8.x = subgroupPartitionedAndNV(data[0].i8.x, ballot); + data[invocation].i8.xy = subgroupPartitionedAndNV(data[1].i8.xy, ballot); + data[invocation].i8.xyz = subgroupPartitionedAndNV(data[2].i8.xyz, ballot); + data[invocation].i8 = subgroupPartitionedAndNV(data[3].i8, ballot); + + data[invocation].i8.x = subgroupPartitionedOrNV(data[0].i8.x, ballot); + data[invocation].i8.xy = subgroupPartitionedOrNV(data[1].i8.xy, ballot); + data[invocation].i8.xyz = subgroupPartitionedOrNV(data[2].i8.xyz, ballot); + data[invocation].i8 = subgroupPartitionedOrNV(data[3].i8, ballot); + + data[invocation].i8.x = subgroupPartitionedXorNV(data[0].i8.x, ballot); + data[invocation].i8.xy = subgroupPartitionedXorNV(data[1].i8.xy, ballot); + data[invocation].i8.xyz = subgroupPartitionedXorNV(data[2].i8.xyz, ballot); + data[invocation].i8 = subgroupPartitionedXorNV(data[3].i8, ballot); + + data[invocation].u8.x = subgroupPartitionedAddNV(data[0].u8.x, ballot); + data[invocation].u8.xy = subgroupPartitionedAddNV(data[1].u8.xy, ballot); + data[invocation].u8.xyz = subgroupPartitionedAddNV(data[2].u8.xyz, ballot); + data[invocation].u8 = subgroupPartitionedAddNV(data[3].u8, ballot); + + data[invocation].u8.x = subgroupPartitionedMulNV(data[0].u8.x, ballot); + data[invocation].u8.xy = subgroupPartitionedMulNV(data[1].u8.xy, ballot); + data[invocation].u8.xyz = subgroupPartitionedMulNV(data[2].u8.xyz, ballot); + data[invocation].u8 = subgroupPartitionedMulNV(data[3].u8, ballot); + + data[invocation].u8.x = subgroupPartitionedMinNV(data[0].u8.x, ballot); + data[invocation].u8.xy = subgroupPartitionedMinNV(data[1].u8.xy, ballot); + data[invocation].u8.xyz = subgroupPartitionedMinNV(data[2].u8.xyz, ballot); + data[invocation].u8 = subgroupPartitionedMinNV(data[3].u8, ballot); + + data[invocation].u8.x = subgroupPartitionedMaxNV(data[0].u8.x, ballot); + data[invocation].u8.xy = subgroupPartitionedMaxNV(data[1].u8.xy, ballot); + data[invocation].u8.xyz = subgroupPartitionedMaxNV(data[2].u8.xyz, ballot); + data[invocation].u8 = subgroupPartitionedMaxNV(data[3].u8, ballot); + + data[invocation].u8.x = subgroupPartitionedAndNV(data[0].u8.x, ballot); + data[invocation].u8.xy = subgroupPartitionedAndNV(data[1].u8.xy, ballot); + data[invocation].u8.xyz = subgroupPartitionedAndNV(data[2].u8.xyz, ballot); + data[invocation].u8 = subgroupPartitionedAndNV(data[3].u8, ballot); + + data[invocation].u8.x = subgroupPartitionedOrNV(data[0].u8.x, ballot); + data[invocation].u8.xy = subgroupPartitionedOrNV(data[1].u8.xy, ballot); + data[invocation].u8.xyz = subgroupPartitionedOrNV(data[2].u8.xyz, ballot); + data[invocation].u8 = subgroupPartitionedOrNV(data[3].u8, ballot); + + data[invocation].u8.x = subgroupPartitionedXorNV(data[0].u8.x, ballot); + data[invocation].u8.xy = subgroupPartitionedXorNV(data[1].u8.xy, ballot); + data[invocation].u8.xyz = subgroupPartitionedXorNV(data[2].u8.xyz, ballot); + data[invocation].u8 = subgroupPartitionedXorNV(data[3].u8, ballot); + + data[invocation].i16.x = subgroupPartitionedAddNV(data[0].i16.x, ballot); + data[invocation].i16.xy = subgroupPartitionedAddNV(data[1].i16.xy, ballot); + data[invocation].i16.xyz = subgroupPartitionedAddNV(data[2].i16.xyz, ballot); + data[invocation].i16 = subgroupPartitionedAddNV(data[3].i16, ballot); + + data[invocation].i16.x = subgroupPartitionedMulNV(data[0].i16.x, ballot); + data[invocation].i16.xy = subgroupPartitionedMulNV(data[1].i16.xy, ballot); + data[invocation].i16.xyz = subgroupPartitionedMulNV(data[2].i16.xyz, ballot); + data[invocation].i16 = subgroupPartitionedMulNV(data[3].i16, ballot); + + data[invocation].i16.x = subgroupPartitionedMinNV(data[0].i16.x, ballot); + data[invocation].i16.xy = subgroupPartitionedMinNV(data[1].i16.xy, ballot); + data[invocation].i16.xyz = subgroupPartitionedMinNV(data[2].i16.xyz, ballot); + data[invocation].i16 = subgroupPartitionedMinNV(data[3].i16, ballot); + + data[invocation].i16.x = subgroupPartitionedMaxNV(data[0].i16.x, ballot); + data[invocation].i16.xy = subgroupPartitionedMaxNV(data[1].i16.xy, ballot); + data[invocation].i16.xyz = subgroupPartitionedMaxNV(data[2].i16.xyz, ballot); + data[invocation].i16 = subgroupPartitionedMaxNV(data[3].i16, ballot); + + data[invocation].i16.x = subgroupPartitionedAndNV(data[0].i16.x, ballot); + data[invocation].i16.xy = subgroupPartitionedAndNV(data[1].i16.xy, ballot); + data[invocation].i16.xyz = subgroupPartitionedAndNV(data[2].i16.xyz, ballot); + data[invocation].i16 = subgroupPartitionedAndNV(data[3].i16, ballot); + + data[invocation].i16.x = subgroupPartitionedOrNV(data[0].i16.x, ballot); + data[invocation].i16.xy = subgroupPartitionedOrNV(data[1].i16.xy, ballot); + data[invocation].i16.xyz = subgroupPartitionedOrNV(data[2].i16.xyz, ballot); + data[invocation].i16 = subgroupPartitionedOrNV(data[3].i16, ballot); + + data[invocation].i16.x = subgroupPartitionedXorNV(data[0].i16.x, ballot); + data[invocation].i16.xy = subgroupPartitionedXorNV(data[1].i16.xy, ballot); + data[invocation].i16.xyz = subgroupPartitionedXorNV(data[2].i16.xyz, ballot); + data[invocation].i16 = subgroupPartitionedXorNV(data[3].i16, ballot); + + data[invocation].u16.x = subgroupPartitionedAddNV(data[0].u16.x, ballot); + data[invocation].u16.xy = subgroupPartitionedAddNV(data[1].u16.xy, ballot); + data[invocation].u16.xyz = subgroupPartitionedAddNV(data[2].u16.xyz, ballot); + data[invocation].u16 = subgroupPartitionedAddNV(data[3].u16, ballot); + + data[invocation].u16.x = subgroupPartitionedMulNV(data[0].u16.x, ballot); + data[invocation].u16.xy = subgroupPartitionedMulNV(data[1].u16.xy, ballot); + data[invocation].u16.xyz = subgroupPartitionedMulNV(data[2].u16.xyz, ballot); + data[invocation].u16 = subgroupPartitionedMulNV(data[3].u16, ballot); + + data[invocation].u16.x = subgroupPartitionedMinNV(data[0].u16.x, ballot); + data[invocation].u16.xy = subgroupPartitionedMinNV(data[1].u16.xy, ballot); + data[invocation].u16.xyz = subgroupPartitionedMinNV(data[2].u16.xyz, ballot); + data[invocation].u16 = subgroupPartitionedMinNV(data[3].u16, ballot); + + data[invocation].u16.x = subgroupPartitionedMaxNV(data[0].u16.x, ballot); + data[invocation].u16.xy = subgroupPartitionedMaxNV(data[1].u16.xy, ballot); + data[invocation].u16.xyz = subgroupPartitionedMaxNV(data[2].u16.xyz, ballot); + data[invocation].u16 = subgroupPartitionedMaxNV(data[3].u16, ballot); + + data[invocation].u16.x = subgroupPartitionedAndNV(data[0].u16.x, ballot); + data[invocation].u16.xy = subgroupPartitionedAndNV(data[1].u16.xy, ballot); + data[invocation].u16.xyz = subgroupPartitionedAndNV(data[2].u16.xyz, ballot); + data[invocation].u16 = subgroupPartitionedAndNV(data[3].u16, ballot); + + data[invocation].u16.x = subgroupPartitionedOrNV(data[0].u16.x, ballot); + data[invocation].u16.xy = subgroupPartitionedOrNV(data[1].u16.xy, ballot); + data[invocation].u16.xyz = subgroupPartitionedOrNV(data[2].u16.xyz, ballot); + data[invocation].u16 = subgroupPartitionedOrNV(data[3].u16, ballot); + + data[invocation].u16.x = subgroupPartitionedXorNV(data[0].u16.x, ballot); + data[invocation].u16.xy = subgroupPartitionedXorNV(data[1].u16.xy, ballot); + data[invocation].u16.xyz = subgroupPartitionedXorNV(data[2].u16.xyz, ballot); + data[invocation].u16 = subgroupPartitionedXorNV(data[3].u16, ballot); + + data[invocation].i64.x = subgroupPartitionedAddNV(data[0].i64.x, ballot); + data[invocation].i64.xy = subgroupPartitionedAddNV(data[1].i64.xy, ballot); + data[invocation].i64.xyz = subgroupPartitionedAddNV(data[2].i64.xyz, ballot); + data[invocation].i64 = subgroupPartitionedAddNV(data[3].i64, ballot); + + data[invocation].i64.x = subgroupPartitionedMulNV(data[0].i64.x, ballot); + data[invocation].i64.xy = subgroupPartitionedMulNV(data[1].i64.xy, ballot); + data[invocation].i64.xyz = subgroupPartitionedMulNV(data[2].i64.xyz, ballot); + data[invocation].i64 = subgroupPartitionedMulNV(data[3].i64, ballot); + + data[invocation].i64.x = subgroupPartitionedMinNV(data[0].i64.x, ballot); + data[invocation].i64.xy = subgroupPartitionedMinNV(data[1].i64.xy, ballot); + data[invocation].i64.xyz = subgroupPartitionedMinNV(data[2].i64.xyz, ballot); + data[invocation].i64 = subgroupPartitionedMinNV(data[3].i64, ballot); + + data[invocation].i64.x = subgroupPartitionedMaxNV(data[0].i64.x, ballot); + data[invocation].i64.xy = subgroupPartitionedMaxNV(data[1].i64.xy, ballot); + data[invocation].i64.xyz = subgroupPartitionedMaxNV(data[2].i64.xyz, ballot); + data[invocation].i64 = subgroupPartitionedMaxNV(data[3].i64, ballot); + + data[invocation].i64.x = subgroupPartitionedAndNV(data[0].i64.x, ballot); + data[invocation].i64.xy = subgroupPartitionedAndNV(data[1].i64.xy, ballot); + data[invocation].i64.xyz = subgroupPartitionedAndNV(data[2].i64.xyz, ballot); + data[invocation].i64 = subgroupPartitionedAndNV(data[3].i64, ballot); + + data[invocation].i64.x = subgroupPartitionedOrNV(data[0].i64.x, ballot); + data[invocation].i64.xy = subgroupPartitionedOrNV(data[1].i64.xy, ballot); + data[invocation].i64.xyz = subgroupPartitionedOrNV(data[2].i64.xyz, ballot); + data[invocation].i64 = subgroupPartitionedOrNV(data[3].i64, ballot); + + data[invocation].i64.x = subgroupPartitionedXorNV(data[0].i64.x, ballot); + data[invocation].i64.xy = subgroupPartitionedXorNV(data[1].i64.xy, ballot); + data[invocation].i64.xyz = subgroupPartitionedXorNV(data[2].i64.xyz, ballot); + data[invocation].i64 = subgroupPartitionedXorNV(data[3].i64, ballot); + + data[invocation].u64.x = subgroupPartitionedAddNV(data[0].u64.x, ballot); + data[invocation].u64.xy = subgroupPartitionedAddNV(data[1].u64.xy, ballot); + data[invocation].u64.xyz = subgroupPartitionedAddNV(data[2].u64.xyz, ballot); + data[invocation].u64 = subgroupPartitionedAddNV(data[3].u64, ballot); + + data[invocation].u64.x = subgroupPartitionedMulNV(data[0].u64.x, ballot); + data[invocation].u64.xy = subgroupPartitionedMulNV(data[1].u64.xy, ballot); + data[invocation].u64.xyz = subgroupPartitionedMulNV(data[2].u64.xyz, ballot); + data[invocation].u64 = subgroupPartitionedMulNV(data[3].u64, ballot); + + data[invocation].u64.x = subgroupPartitionedMinNV(data[0].u64.x, ballot); + data[invocation].u64.xy = subgroupPartitionedMinNV(data[1].u64.xy, ballot); + data[invocation].u64.xyz = subgroupPartitionedMinNV(data[2].u64.xyz, ballot); + data[invocation].u64 = subgroupPartitionedMinNV(data[3].u64, ballot); + + data[invocation].u64.x = subgroupPartitionedMaxNV(data[0].u64.x, ballot); + data[invocation].u64.xy = subgroupPartitionedMaxNV(data[1].u64.xy, ballot); + data[invocation].u64.xyz = subgroupPartitionedMaxNV(data[2].u64.xyz, ballot); + data[invocation].u64 = subgroupPartitionedMaxNV(data[3].u64, ballot); + + data[invocation].u64.x = subgroupPartitionedAndNV(data[0].u64.x, ballot); + data[invocation].u64.xy = subgroupPartitionedAndNV(data[1].u64.xy, ballot); + data[invocation].u64.xyz = subgroupPartitionedAndNV(data[2].u64.xyz, ballot); + data[invocation].u64 = subgroupPartitionedAndNV(data[3].u64, ballot); + + data[invocation].u64.x = subgroupPartitionedOrNV(data[0].u64.x, ballot); + data[invocation].u64.xy = subgroupPartitionedOrNV(data[1].u64.xy, ballot); + data[invocation].u64.xyz = subgroupPartitionedOrNV(data[2].u64.xyz, ballot); + data[invocation].u64 = subgroupPartitionedOrNV(data[3].u64, ballot); + + data[invocation].u64.x = subgroupPartitionedXorNV(data[0].u64.x, ballot); + data[invocation].u64.xy = subgroupPartitionedXorNV(data[1].u64.xy, ballot); + data[invocation].u64.xyz = subgroupPartitionedXorNV(data[2].u64.xyz, ballot); + data[invocation].u64 = subgroupPartitionedXorNV(data[3].u64, ballot); + + data[invocation].f16.x = subgroupPartitionedAddNV(data[0].f16.x, ballot); + data[invocation].f16.xy = subgroupPartitionedAddNV(data[1].f16.xy, ballot); + data[invocation].f16.xyz = subgroupPartitionedAddNV(data[2].f16.xyz, ballot); + data[invocation].f16 = subgroupPartitionedAddNV(data[3].f16, ballot); + + data[invocation].f16.x = subgroupPartitionedMulNV(data[0].f16.x, ballot); + data[invocation].f16.xy = subgroupPartitionedMulNV(data[1].f16.xy, ballot); + data[invocation].f16.xyz = subgroupPartitionedMulNV(data[2].f16.xyz, ballot); + data[invocation].f16 = subgroupPartitionedMulNV(data[3].f16, ballot); + + data[invocation].f16.x = subgroupPartitionedMinNV(data[0].f16.x, ballot); + data[invocation].f16.xy = subgroupPartitionedMinNV(data[1].f16.xy, ballot); + data[invocation].f16.xyz = subgroupPartitionedMinNV(data[2].f16.xyz, ballot); + data[invocation].f16 = subgroupPartitionedMinNV(data[3].f16, ballot); + + data[invocation].f16.x = subgroupPartitionedMaxNV(data[0].f16.x, ballot); + data[invocation].f16.xy = subgroupPartitionedMaxNV(data[1].f16.xy, ballot); + data[invocation].f16.xyz = subgroupPartitionedMaxNV(data[2].f16.xyz, ballot); + data[invocation].f16 = subgroupPartitionedMaxNV(data[3].f16, ballot); +} diff --git a/Test/spv.subgroupExtendedTypesQuad.comp b/Test/spv.subgroupExtendedTypesQuad.comp new file mode 100644 index 00000000..1ef2ecf9 --- /dev/null +++ b/Test/spv.subgroupExtendedTypesQuad.comp @@ -0,0 +1,165 @@ +#version 450 + +#extension GL_KHR_shader_subgroup_quad: enable +#extension GL_EXT_shader_subgroup_extended_types_int8: enable +#extension GL_EXT_shader_subgroup_extended_types_int16: enable +#extension GL_EXT_shader_subgroup_extended_types_int64: enable +#extension GL_EXT_shader_subgroup_extended_types_float16: enable + +layout (local_size_x = 8) in; + +layout(binding = 0) buffer Buffers +{ + i8vec4 i8; + u8vec4 u8; + i16vec4 i16; + u16vec4 u16; + i64vec4 i64; + u64vec4 u64; + f16vec4 f16; +} data[4]; + +void main() +{ + uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; + + data[invocation].i8.x = subgroupQuadBroadcast(data[0].i8.x, 1); + data[invocation].i8.xy = subgroupQuadBroadcast(data[1].i8.xy, 1); + data[invocation].i8.xyz = subgroupQuadBroadcast(data[2].i8.xyz, 1); + data[invocation].i8 = subgroupQuadBroadcast(data[3].i8, 1); + + data[invocation].i8.x = subgroupQuadSwapHorizontal(data[0].i8.x); + data[invocation].i8.xy = subgroupQuadSwapHorizontal(data[1].i8.xy); + data[invocation].i8.xyz = subgroupQuadSwapHorizontal(data[2].i8.xyz); + data[invocation].i8 = subgroupQuadSwapHorizontal(data[3].i8); + + data[invocation].i8.x = subgroupQuadSwapVertical(data[0].i8.x); + data[invocation].i8.xy = subgroupQuadSwapVertical(data[1].i8.xy); + data[invocation].i8.xyz = subgroupQuadSwapVertical(data[2].i8.xyz); + data[invocation].i8 = subgroupQuadSwapVertical(data[3].i8); + + data[invocation].i8.x = subgroupQuadSwapDiagonal(data[0].i8.x); + data[invocation].i8.xy = subgroupQuadSwapDiagonal(data[1].i8.xy); + data[invocation].i8.xyz = subgroupQuadSwapDiagonal(data[2].i8.xyz); + data[invocation].i8 = subgroupQuadSwapDiagonal(data[3].i8); + + data[invocation].u8.x = subgroupQuadBroadcast(data[0].u8.x, 1); + data[invocation].u8.xy = subgroupQuadBroadcast(data[1].u8.xy, 1); + data[invocation].u8.xyz = subgroupQuadBroadcast(data[2].u8.xyz, 1); + data[invocation].u8 = subgroupQuadBroadcast(data[3].u8, 1); + + data[invocation].u8.x = subgroupQuadSwapHorizontal(data[0].u8.x); + data[invocation].u8.xy = subgroupQuadSwapHorizontal(data[1].u8.xy); + data[invocation].u8.xyz = subgroupQuadSwapHorizontal(data[2].u8.xyz); + data[invocation].u8 = subgroupQuadSwapHorizontal(data[3].u8); + + data[invocation].u8.x = subgroupQuadSwapVertical(data[0].u8.x); + data[invocation].u8.xy = subgroupQuadSwapVertical(data[1].u8.xy); + data[invocation].u8.xyz = subgroupQuadSwapVertical(data[2].u8.xyz); + data[invocation].u8 = subgroupQuadSwapVertical(data[3].u8); + + data[invocation].u8.x = subgroupQuadSwapDiagonal(data[0].u8.x); + data[invocation].u8.xy = subgroupQuadSwapDiagonal(data[1].u8.xy); + data[invocation].u8.xyz = subgroupQuadSwapDiagonal(data[2].u8.xyz); + data[invocation].u8 = subgroupQuadSwapDiagonal(data[3].u8); + + data[invocation].i16.x = subgroupQuadBroadcast(data[0].i16.x, 1); + data[invocation].i16.xy = subgroupQuadBroadcast(data[1].i16.xy, 1); + data[invocation].i16.xyz = subgroupQuadBroadcast(data[2].i16.xyz, 1); + data[invocation].i16 = subgroupQuadBroadcast(data[3].i16, 1); + + data[invocation].i16.x = subgroupQuadSwapHorizontal(data[0].i16.x); + data[invocation].i16.xy = subgroupQuadSwapHorizontal(data[1].i16.xy); + data[invocation].i16.xyz = subgroupQuadSwapHorizontal(data[2].i16.xyz); + data[invocation].i16 = subgroupQuadSwapHorizontal(data[3].i16); + + data[invocation].i16.x = subgroupQuadSwapVertical(data[0].i16.x); + data[invocation].i16.xy = subgroupQuadSwapVertical(data[1].i16.xy); + data[invocation].i16.xyz = subgroupQuadSwapVertical(data[2].i16.xyz); + data[invocation].i16 = subgroupQuadSwapVertical(data[3].i16); + + data[invocation].i16.x = subgroupQuadSwapDiagonal(data[0].i16.x); + data[invocation].i16.xy = subgroupQuadSwapDiagonal(data[1].i16.xy); + data[invocation].i16.xyz = subgroupQuadSwapDiagonal(data[2].i16.xyz); + data[invocation].i16 = subgroupQuadSwapDiagonal(data[3].i16); + + data[invocation].u16.x = subgroupQuadBroadcast(data[0].u16.x, 1); + data[invocation].u16.xy = subgroupQuadBroadcast(data[1].u16.xy, 1); + data[invocation].u16.xyz = subgroupQuadBroadcast(data[2].u16.xyz, 1); + data[invocation].u16 = subgroupQuadBroadcast(data[3].u16, 1); + + data[invocation].u16.x = subgroupQuadSwapHorizontal(data[0].u16.x); + data[invocation].u16.xy = subgroupQuadSwapHorizontal(data[1].u16.xy); + data[invocation].u16.xyz = subgroupQuadSwapHorizontal(data[2].u16.xyz); + data[invocation].u16 = subgroupQuadSwapHorizontal(data[3].u16); + + data[invocation].u16.x = subgroupQuadSwapVertical(data[0].u16.x); + data[invocation].u16.xy = subgroupQuadSwapVertical(data[1].u16.xy); + data[invocation].u16.xyz = subgroupQuadSwapVertical(data[2].u16.xyz); + data[invocation].u16 = subgroupQuadSwapVertical(data[3].u16); + + data[invocation].u16.x = subgroupQuadSwapDiagonal(data[0].u16.x); + data[invocation].u16.xy = subgroupQuadSwapDiagonal(data[1].u16.xy); + data[invocation].u16.xyz = subgroupQuadSwapDiagonal(data[2].u16.xyz); + data[invocation].u16 = subgroupQuadSwapDiagonal(data[3].u16); + + data[invocation].i64.x = subgroupQuadBroadcast(data[0].i64.x, 1); + data[invocation].i64.xy = subgroupQuadBroadcast(data[1].i64.xy, 1); + data[invocation].i64.xyz = subgroupQuadBroadcast(data[2].i64.xyz, 1); + data[invocation].i64 = subgroupQuadBroadcast(data[3].i64, 1); + + data[invocation].i64.x = subgroupQuadSwapHorizontal(data[0].i64.x); + data[invocation].i64.xy = subgroupQuadSwapHorizontal(data[1].i64.xy); + data[invocation].i64.xyz = subgroupQuadSwapHorizontal(data[2].i64.xyz); + data[invocation].i64 = subgroupQuadSwapHorizontal(data[3].i64); + + data[invocation].i64.x = subgroupQuadSwapVertical(data[0].i64.x); + data[invocation].i64.xy = subgroupQuadSwapVertical(data[1].i64.xy); + data[invocation].i64.xyz = subgroupQuadSwapVertical(data[2].i64.xyz); + data[invocation].i64 = subgroupQuadSwapVertical(data[3].i64); + + data[invocation].i64.x = subgroupQuadSwapDiagonal(data[0].i64.x); + data[invocation].i64.xy = subgroupQuadSwapDiagonal(data[1].i64.xy); + data[invocation].i64.xyz = subgroupQuadSwapDiagonal(data[2].i64.xyz); + data[invocation].i64 = subgroupQuadSwapDiagonal(data[3].i64); + + data[invocation].u64.x = subgroupQuadBroadcast(data[0].u64.x, 1); + data[invocation].u64.xy = subgroupQuadBroadcast(data[1].u64.xy, 1); + data[invocation].u64.xyz = subgroupQuadBroadcast(data[2].u64.xyz, 1); + data[invocation].u64 = subgroupQuadBroadcast(data[3].u64, 1); + + data[invocation].u64.x = subgroupQuadSwapHorizontal(data[0].u64.x); + data[invocation].u64.xy = subgroupQuadSwapHorizontal(data[1].u64.xy); + data[invocation].u64.xyz = subgroupQuadSwapHorizontal(data[2].u64.xyz); + data[invocation].u64 = subgroupQuadSwapHorizontal(data[3].u64); + + data[invocation].u64.x = subgroupQuadSwapVertical(data[0].u64.x); + data[invocation].u64.xy = subgroupQuadSwapVertical(data[1].u64.xy); + data[invocation].u64.xyz = subgroupQuadSwapVertical(data[2].u64.xyz); + data[invocation].u64 = subgroupQuadSwapVertical(data[3].u64); + + data[invocation].u64.x = subgroupQuadSwapDiagonal(data[0].u64.x); + data[invocation].u64.xy = subgroupQuadSwapDiagonal(data[1].u64.xy); + data[invocation].u64.xyz = subgroupQuadSwapDiagonal(data[2].u64.xyz); + data[invocation].u64 = subgroupQuadSwapDiagonal(data[3].u64); + + data[invocation].f16.x = subgroupQuadBroadcast(data[0].f16.x, 1); + data[invocation].f16.xy = subgroupQuadBroadcast(data[1].f16.xy, 1); + data[invocation].f16.xyz = subgroupQuadBroadcast(data[2].f16.xyz, 1); + data[invocation].f16 = subgroupQuadBroadcast(data[3].f16, 1); + + data[invocation].f16.x = subgroupQuadSwapHorizontal(data[0].f16.x); + data[invocation].f16.xy = subgroupQuadSwapHorizontal(data[1].f16.xy); + data[invocation].f16.xyz = subgroupQuadSwapHorizontal(data[2].f16.xyz); + data[invocation].f16 = subgroupQuadSwapHorizontal(data[3].f16); + + data[invocation].f16.x = subgroupQuadSwapVertical(data[0].f16.x); + data[invocation].f16.xy = subgroupQuadSwapVertical(data[1].f16.xy); + data[invocation].f16.xyz = subgroupQuadSwapVertical(data[2].f16.xyz); + data[invocation].f16 = subgroupQuadSwapVertical(data[3].f16); + + data[invocation].f16.x = subgroupQuadSwapDiagonal(data[0].f16.x); + data[invocation].f16.xy = subgroupQuadSwapDiagonal(data[1].f16.xy); + data[invocation].f16.xyz = subgroupQuadSwapDiagonal(data[2].f16.xyz); + data[invocation].f16 = subgroupQuadSwapDiagonal(data[3].f16); +} diff --git a/Test/spv.subgroupExtendedTypesQuadNeg.comp b/Test/spv.subgroupExtendedTypesQuadNeg.comp new file mode 100644 index 00000000..07247767 --- /dev/null +++ b/Test/spv.subgroupExtendedTypesQuadNeg.comp @@ -0,0 +1,165 @@ +#version 450 + +#extension GL_KHR_shader_subgroup_quad: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int8: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int16: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int64: enable +#extension GL_EXT_shader_explicit_arithmetic_types_float16: enable + +layout (local_size_x = 8) in; + +layout(binding = 0) buffer Buffers +{ + i8vec4 i8; + u8vec4 u8; + i16vec4 i16; + u16vec4 u16; + i64vec4 i64; + u64vec4 u64; + f16vec4 f16; +} data[4]; + +void main() +{ + uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; + + data[invocation].i8.x = subgroupQuadBroadcast(data[0].i8.x, 1); + data[invocation].i8.xy = subgroupQuadBroadcast(data[1].i8.xy, 1); + data[invocation].i8.xyz = subgroupQuadBroadcast(data[2].i8.xyz, 1); + data[invocation].i8 = subgroupQuadBroadcast(data[3].i8, 1); + + data[invocation].i8.x = subgroupQuadSwapHorizontal(data[0].i8.x); + data[invocation].i8.xy = subgroupQuadSwapHorizontal(data[1].i8.xy); + data[invocation].i8.xyz = subgroupQuadSwapHorizontal(data[2].i8.xyz); + data[invocation].i8 = subgroupQuadSwapHorizontal(data[3].i8); + + data[invocation].i8.x = subgroupQuadSwapVertical(data[0].i8.x); + data[invocation].i8.xy = subgroupQuadSwapVertical(data[1].i8.xy); + data[invocation].i8.xyz = subgroupQuadSwapVertical(data[2].i8.xyz); + data[invocation].i8 = subgroupQuadSwapVertical(data[3].i8); + + data[invocation].i8.x = subgroupQuadSwapDiagonal(data[0].i8.x); + data[invocation].i8.xy = subgroupQuadSwapDiagonal(data[1].i8.xy); + data[invocation].i8.xyz = subgroupQuadSwapDiagonal(data[2].i8.xyz); + data[invocation].i8 = subgroupQuadSwapDiagonal(data[3].i8); + + data[invocation].u8.x = subgroupQuadBroadcast(data[0].u8.x, 1); + data[invocation].u8.xy = subgroupQuadBroadcast(data[1].u8.xy, 1); + data[invocation].u8.xyz = subgroupQuadBroadcast(data[2].u8.xyz, 1); + data[invocation].u8 = subgroupQuadBroadcast(data[3].u8, 1); + + data[invocation].u8.x = subgroupQuadSwapHorizontal(data[0].u8.x); + data[invocation].u8.xy = subgroupQuadSwapHorizontal(data[1].u8.xy); + data[invocation].u8.xyz = subgroupQuadSwapHorizontal(data[2].u8.xyz); + data[invocation].u8 = subgroupQuadSwapHorizontal(data[3].u8); + + data[invocation].u8.x = subgroupQuadSwapVertical(data[0].u8.x); + data[invocation].u8.xy = subgroupQuadSwapVertical(data[1].u8.xy); + data[invocation].u8.xyz = subgroupQuadSwapVertical(data[2].u8.xyz); + data[invocation].u8 = subgroupQuadSwapVertical(data[3].u8); + + data[invocation].u8.x = subgroupQuadSwapDiagonal(data[0].u8.x); + data[invocation].u8.xy = subgroupQuadSwapDiagonal(data[1].u8.xy); + data[invocation].u8.xyz = subgroupQuadSwapDiagonal(data[2].u8.xyz); + data[invocation].u8 = subgroupQuadSwapDiagonal(data[3].u8); + + data[invocation].i16.x = subgroupQuadBroadcast(data[0].i16.x, 1); + data[invocation].i16.xy = subgroupQuadBroadcast(data[1].i16.xy, 1); + data[invocation].i16.xyz = subgroupQuadBroadcast(data[2].i16.xyz, 1); + data[invocation].i16 = subgroupQuadBroadcast(data[3].i16, 1); + + data[invocation].i16.x = subgroupQuadSwapHorizontal(data[0].i16.x); + data[invocation].i16.xy = subgroupQuadSwapHorizontal(data[1].i16.xy); + data[invocation].i16.xyz = subgroupQuadSwapHorizontal(data[2].i16.xyz); + data[invocation].i16 = subgroupQuadSwapHorizontal(data[3].i16); + + data[invocation].i16.x = subgroupQuadSwapVertical(data[0].i16.x); + data[invocation].i16.xy = subgroupQuadSwapVertical(data[1].i16.xy); + data[invocation].i16.xyz = subgroupQuadSwapVertical(data[2].i16.xyz); + data[invocation].i16 = subgroupQuadSwapVertical(data[3].i16); + + data[invocation].i16.x = subgroupQuadSwapDiagonal(data[0].i16.x); + data[invocation].i16.xy = subgroupQuadSwapDiagonal(data[1].i16.xy); + data[invocation].i16.xyz = subgroupQuadSwapDiagonal(data[2].i16.xyz); + data[invocation].i16 = subgroupQuadSwapDiagonal(data[3].i16); + + data[invocation].u16.x = subgroupQuadBroadcast(data[0].u16.x, 1); + data[invocation].u16.xy = subgroupQuadBroadcast(data[1].u16.xy, 1); + data[invocation].u16.xyz = subgroupQuadBroadcast(data[2].u16.xyz, 1); + data[invocation].u16 = subgroupQuadBroadcast(data[3].u16, 1); + + data[invocation].u16.x = subgroupQuadSwapHorizontal(data[0].u16.x); + data[invocation].u16.xy = subgroupQuadSwapHorizontal(data[1].u16.xy); + data[invocation].u16.xyz = subgroupQuadSwapHorizontal(data[2].u16.xyz); + data[invocation].u16 = subgroupQuadSwapHorizontal(data[3].u16); + + data[invocation].u16.x = subgroupQuadSwapVertical(data[0].u16.x); + data[invocation].u16.xy = subgroupQuadSwapVertical(data[1].u16.xy); + data[invocation].u16.xyz = subgroupQuadSwapVertical(data[2].u16.xyz); + data[invocation].u16 = subgroupQuadSwapVertical(data[3].u16); + + data[invocation].u16.x = subgroupQuadSwapDiagonal(data[0].u16.x); + data[invocation].u16.xy = subgroupQuadSwapDiagonal(data[1].u16.xy); + data[invocation].u16.xyz = subgroupQuadSwapDiagonal(data[2].u16.xyz); + data[invocation].u16 = subgroupQuadSwapDiagonal(data[3].u16); + + data[invocation].i64.x = subgroupQuadBroadcast(data[0].i64.x, 1); + data[invocation].i64.xy = subgroupQuadBroadcast(data[1].i64.xy, 1); + data[invocation].i64.xyz = subgroupQuadBroadcast(data[2].i64.xyz, 1); + data[invocation].i64 = subgroupQuadBroadcast(data[3].i64, 1); + + data[invocation].i64.x = subgroupQuadSwapHorizontal(data[0].i64.x); + data[invocation].i64.xy = subgroupQuadSwapHorizontal(data[1].i64.xy); + data[invocation].i64.xyz = subgroupQuadSwapHorizontal(data[2].i64.xyz); + data[invocation].i64 = subgroupQuadSwapHorizontal(data[3].i64); + + data[invocation].i64.x = subgroupQuadSwapVertical(data[0].i64.x); + data[invocation].i64.xy = subgroupQuadSwapVertical(data[1].i64.xy); + data[invocation].i64.xyz = subgroupQuadSwapVertical(data[2].i64.xyz); + data[invocation].i64 = subgroupQuadSwapVertical(data[3].i64); + + data[invocation].i64.x = subgroupQuadSwapDiagonal(data[0].i64.x); + data[invocation].i64.xy = subgroupQuadSwapDiagonal(data[1].i64.xy); + data[invocation].i64.xyz = subgroupQuadSwapDiagonal(data[2].i64.xyz); + data[invocation].i64 = subgroupQuadSwapDiagonal(data[3].i64); + + data[invocation].u64.x = subgroupQuadBroadcast(data[0].u64.x, 1); + data[invocation].u64.xy = subgroupQuadBroadcast(data[1].u64.xy, 1); + data[invocation].u64.xyz = subgroupQuadBroadcast(data[2].u64.xyz, 1); + data[invocation].u64 = subgroupQuadBroadcast(data[3].u64, 1); + + data[invocation].u64.x = subgroupQuadSwapHorizontal(data[0].u64.x); + data[invocation].u64.xy = subgroupQuadSwapHorizontal(data[1].u64.xy); + data[invocation].u64.xyz = subgroupQuadSwapHorizontal(data[2].u64.xyz); + data[invocation].u64 = subgroupQuadSwapHorizontal(data[3].u64); + + data[invocation].u64.x = subgroupQuadSwapVertical(data[0].u64.x); + data[invocation].u64.xy = subgroupQuadSwapVertical(data[1].u64.xy); + data[invocation].u64.xyz = subgroupQuadSwapVertical(data[2].u64.xyz); + data[invocation].u64 = subgroupQuadSwapVertical(data[3].u64); + + data[invocation].u64.x = subgroupQuadSwapDiagonal(data[0].u64.x); + data[invocation].u64.xy = subgroupQuadSwapDiagonal(data[1].u64.xy); + data[invocation].u64.xyz = subgroupQuadSwapDiagonal(data[2].u64.xyz); + data[invocation].u64 = subgroupQuadSwapDiagonal(data[3].u64); + + data[invocation].f16.x = subgroupQuadBroadcast(data[0].f16.x, 1); + data[invocation].f16.xy = subgroupQuadBroadcast(data[1].f16.xy, 1); + data[invocation].f16.xyz = subgroupQuadBroadcast(data[2].f16.xyz, 1); + data[invocation].f16 = subgroupQuadBroadcast(data[3].f16, 1); + + data[invocation].f16.x = subgroupQuadSwapHorizontal(data[0].f16.x); + data[invocation].f16.xy = subgroupQuadSwapHorizontal(data[1].f16.xy); + data[invocation].f16.xyz = subgroupQuadSwapHorizontal(data[2].f16.xyz); + data[invocation].f16 = subgroupQuadSwapHorizontal(data[3].f16); + + data[invocation].f16.x = subgroupQuadSwapVertical(data[0].f16.x); + data[invocation].f16.xy = subgroupQuadSwapVertical(data[1].f16.xy); + data[invocation].f16.xyz = subgroupQuadSwapVertical(data[2].f16.xyz); + data[invocation].f16 = subgroupQuadSwapVertical(data[3].f16); + + data[invocation].f16.x = subgroupQuadSwapDiagonal(data[0].f16.x); + data[invocation].f16.xy = subgroupQuadSwapDiagonal(data[1].f16.xy); + data[invocation].f16.xyz = subgroupQuadSwapDiagonal(data[2].f16.xyz); + data[invocation].f16 = subgroupQuadSwapDiagonal(data[3].f16); +} diff --git a/Test/spv.subgroupExtendedTypesShuffle.comp b/Test/spv.subgroupExtendedTypesShuffle.comp new file mode 100644 index 00000000..de733e6c --- /dev/null +++ b/Test/spv.subgroupExtendedTypesShuffle.comp @@ -0,0 +1,95 @@ +#version 450 + +#extension GL_KHR_shader_subgroup_shuffle: enable +#extension GL_EXT_shader_subgroup_extended_types_int8: enable +#extension GL_EXT_shader_subgroup_extended_types_int16: enable +#extension GL_EXT_shader_subgroup_extended_types_int64: enable +#extension GL_EXT_shader_subgroup_extended_types_float16: enable + +layout (local_size_x = 8) in; + +layout(binding = 0) buffer Buffers +{ + i8vec4 i8; + u8vec4 u8; + i16vec4 i16; + u16vec4 u16; + i64vec4 i64; + u64vec4 u64; + f16vec4 f16; +} data[4]; + +void main() +{ + uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; + + data[invocation].i8.x = subgroupShuffle(data[0].i8.x, invocation); + data[invocation].i8.xy = subgroupShuffle(data[1].i8.xy, invocation); + data[invocation].i8.xyz = subgroupShuffle(data[2].i8.xyz, invocation); + data[invocation].i8 = subgroupShuffle(data[3].i8, invocation); + + data[invocation].i8.x = subgroupShuffleXor(data[0].i8.x, invocation); + data[invocation].i8.xy = subgroupShuffleXor(data[1].i8.xy, invocation); + data[invocation].i8.xyz = subgroupShuffleXor(data[2].i8.xyz, invocation); + data[invocation].i8 = subgroupShuffleXor(data[3].i8, invocation); + + data[invocation].u8.x = subgroupShuffle(data[0].u8.x, invocation); + data[invocation].u8.xy = subgroupShuffle(data[1].u8.xy, invocation); + data[invocation].u8.xyz = subgroupShuffle(data[2].u8.xyz, invocation); + data[invocation].u8 = subgroupShuffle(data[3].u8, invocation); + + data[invocation].u8.x = subgroupShuffleXor(data[0].u8.x, invocation); + data[invocation].u8.xy = subgroupShuffleXor(data[1].u8.xy, invocation); + data[invocation].u8.xyz = subgroupShuffleXor(data[2].u8.xyz, invocation); + data[invocation].u8 = subgroupShuffleXor(data[3].u8, invocation); + + data[invocation].i16.x = subgroupShuffle(data[0].i16.x, invocation); + data[invocation].i16.xy = subgroupShuffle(data[1].i16.xy, invocation); + data[invocation].i16.xyz = subgroupShuffle(data[2].i16.xyz, invocation); + data[invocation].i16 = subgroupShuffle(data[3].i16, invocation); + + data[invocation].i16.x = subgroupShuffleXor(data[0].i16.x, invocation); + data[invocation].i16.xy = subgroupShuffleXor(data[1].i16.xy, invocation); + data[invocation].i16.xyz = subgroupShuffleXor(data[2].i16.xyz, invocation); + data[invocation].i16 = subgroupShuffleXor(data[3].i16, invocation); + + data[invocation].u16.x = subgroupShuffle(data[0].u16.x, invocation); + data[invocation].u16.xy = subgroupShuffle(data[1].u16.xy, invocation); + data[invocation].u16.xyz = subgroupShuffle(data[2].u16.xyz, invocation); + data[invocation].u16 = subgroupShuffle(data[3].u16, invocation); + + data[invocation].u16.x = subgroupShuffleXor(data[0].u16.x, invocation); + data[invocation].u16.xy = subgroupShuffleXor(data[1].u16.xy, invocation); + data[invocation].u16.xyz = subgroupShuffleXor(data[2].u16.xyz, invocation); + data[invocation].u16 = subgroupShuffleXor(data[3].u16, invocation); + + data[invocation].i64.x = subgroupShuffle(data[0].i64.x, invocation); + data[invocation].i64.xy = subgroupShuffle(data[1].i64.xy, invocation); + data[invocation].i64.xyz = subgroupShuffle(data[2].i64.xyz, invocation); + data[invocation].i64 = subgroupShuffle(data[3].i64, invocation); + + data[invocation].i64.x = subgroupShuffleXor(data[0].i64.x, invocation); + data[invocation].i64.xy = subgroupShuffleXor(data[1].i64.xy, invocation); + data[invocation].i64.xyz = subgroupShuffleXor(data[2].i64.xyz, invocation); + data[invocation].i64 = subgroupShuffleXor(data[3].i64, invocation); + + data[invocation].u64.x = subgroupShuffle(data[0].u64.x, invocation); + data[invocation].u64.xy = subgroupShuffle(data[1].u64.xy, invocation); + data[invocation].u64.xyz = subgroupShuffle(data[2].u64.xyz, invocation); + data[invocation].u64 = subgroupShuffle(data[3].u64, invocation); + + data[invocation].u64.x = subgroupShuffleXor(data[0].u64.x, invocation); + data[invocation].u64.xy = subgroupShuffleXor(data[1].u64.xy, invocation); + data[invocation].u64.xyz = subgroupShuffleXor(data[2].u64.xyz, invocation); + data[invocation].u64 = subgroupShuffleXor(data[3].u64, invocation); + + data[invocation].f16.x = subgroupShuffle(data[0].f16.x, invocation); + data[invocation].f16.xy = subgroupShuffle(data[1].f16.xy, invocation); + data[invocation].f16.xyz = subgroupShuffle(data[2].f16.xyz, invocation); + data[invocation].f16 = subgroupShuffle(data[3].f16, invocation); + + data[invocation].f16.x = subgroupShuffleXor(data[0].f16.x, invocation); + data[invocation].f16.xy = subgroupShuffleXor(data[1].f16.xy, invocation); + data[invocation].f16.xyz = subgroupShuffleXor(data[2].f16.xyz, invocation); + data[invocation].f16 = subgroupShuffleXor(data[3].f16, invocation); +} diff --git a/Test/spv.subgroupExtendedTypesShuffleNeg.comp b/Test/spv.subgroupExtendedTypesShuffleNeg.comp new file mode 100644 index 00000000..af73b54c --- /dev/null +++ b/Test/spv.subgroupExtendedTypesShuffleNeg.comp @@ -0,0 +1,95 @@ +#version 450 + +#extension GL_KHR_shader_subgroup_shuffle: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int8: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int16: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int64: enable +#extension GL_EXT_shader_explicit_arithmetic_types_float16: enable + +layout (local_size_x = 8) in; + +layout(binding = 0) buffer Buffers +{ + i8vec4 i8; + u8vec4 u8; + i16vec4 i16; + u16vec4 u16; + i64vec4 i64; + u64vec4 u64; + f16vec4 f16; +} data[4]; + +void main() +{ + uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; + + data[invocation].i8.x = subgroupShuffle(data[0].i8.x, invocation); + data[invocation].i8.xy = subgroupShuffle(data[1].i8.xy, invocation); + data[invocation].i8.xyz = subgroupShuffle(data[2].i8.xyz, invocation); + data[invocation].i8 = subgroupShuffle(data[3].i8, invocation); + + data[invocation].i8.x = subgroupShuffleXor(data[0].i8.x, invocation); + data[invocation].i8.xy = subgroupShuffleXor(data[1].i8.xy, invocation); + data[invocation].i8.xyz = subgroupShuffleXor(data[2].i8.xyz, invocation); + data[invocation].i8 = subgroupShuffleXor(data[3].i8, invocation); + + data[invocation].u8.x = subgroupShuffle(data[0].u8.x, invocation); + data[invocation].u8.xy = subgroupShuffle(data[1].u8.xy, invocation); + data[invocation].u8.xyz = subgroupShuffle(data[2].u8.xyz, invocation); + data[invocation].u8 = subgroupShuffle(data[3].u8, invocation); + + data[invocation].u8.x = subgroupShuffleXor(data[0].u8.x, invocation); + data[invocation].u8.xy = subgroupShuffleXor(data[1].u8.xy, invocation); + data[invocation].u8.xyz = subgroupShuffleXor(data[2].u8.xyz, invocation); + data[invocation].u8 = subgroupShuffleXor(data[3].u8, invocation); + + data[invocation].i16.x = subgroupShuffle(data[0].i16.x, invocation); + data[invocation].i16.xy = subgroupShuffle(data[1].i16.xy, invocation); + data[invocation].i16.xyz = subgroupShuffle(data[2].i16.xyz, invocation); + data[invocation].i16 = subgroupShuffle(data[3].i16, invocation); + + data[invocation].i16.x = subgroupShuffleXor(data[0].i16.x, invocation); + data[invocation].i16.xy = subgroupShuffleXor(data[1].i16.xy, invocation); + data[invocation].i16.xyz = subgroupShuffleXor(data[2].i16.xyz, invocation); + data[invocation].i16 = subgroupShuffleXor(data[3].i16, invocation); + + data[invocation].u16.x = subgroupShuffle(data[0].u16.x, invocation); + data[invocation].u16.xy = subgroupShuffle(data[1].u16.xy, invocation); + data[invocation].u16.xyz = subgroupShuffle(data[2].u16.xyz, invocation); + data[invocation].u16 = subgroupShuffle(data[3].u16, invocation); + + data[invocation].u16.x = subgroupShuffleXor(data[0].u16.x, invocation); + data[invocation].u16.xy = subgroupShuffleXor(data[1].u16.xy, invocation); + data[invocation].u16.xyz = subgroupShuffleXor(data[2].u16.xyz, invocation); + data[invocation].u16 = subgroupShuffleXor(data[3].u16, invocation); + + data[invocation].i64.x = subgroupShuffle(data[0].i64.x, invocation); + data[invocation].i64.xy = subgroupShuffle(data[1].i64.xy, invocation); + data[invocation].i64.xyz = subgroupShuffle(data[2].i64.xyz, invocation); + data[invocation].i64 = subgroupShuffle(data[3].i64, invocation); + + data[invocation].i64.x = subgroupShuffleXor(data[0].i64.x, invocation); + data[invocation].i64.xy = subgroupShuffleXor(data[1].i64.xy, invocation); + data[invocation].i64.xyz = subgroupShuffleXor(data[2].i64.xyz, invocation); + data[invocation].i64 = subgroupShuffleXor(data[3].i64, invocation); + + data[invocation].u64.x = subgroupShuffle(data[0].u64.x, invocation); + data[invocation].u64.xy = subgroupShuffle(data[1].u64.xy, invocation); + data[invocation].u64.xyz = subgroupShuffle(data[2].u64.xyz, invocation); + data[invocation].u64 = subgroupShuffle(data[3].u64, invocation); + + data[invocation].u64.x = subgroupShuffleXor(data[0].u64.x, invocation); + data[invocation].u64.xy = subgroupShuffleXor(data[1].u64.xy, invocation); + data[invocation].u64.xyz = subgroupShuffleXor(data[2].u64.xyz, invocation); + data[invocation].u64 = subgroupShuffleXor(data[3].u64, invocation); + + data[invocation].f16.x = subgroupShuffle(data[0].f16.x, invocation); + data[invocation].f16.xy = subgroupShuffle(data[1].f16.xy, invocation); + data[invocation].f16.xyz = subgroupShuffle(data[2].f16.xyz, invocation); + data[invocation].f16 = subgroupShuffle(data[3].f16, invocation); + + data[invocation].f16.x = subgroupShuffleXor(data[0].f16.x, invocation); + data[invocation].f16.xy = subgroupShuffleXor(data[1].f16.xy, invocation); + data[invocation].f16.xyz = subgroupShuffleXor(data[2].f16.xyz, invocation); + data[invocation].f16 = subgroupShuffleXor(data[3].f16, invocation); +} diff --git a/Test/spv.subgroupExtendedTypesShuffleRelative.comp b/Test/spv.subgroupExtendedTypesShuffleRelative.comp new file mode 100644 index 00000000..73f5970c --- /dev/null +++ b/Test/spv.subgroupExtendedTypesShuffleRelative.comp @@ -0,0 +1,95 @@ +#version 450 + +#extension GL_KHR_shader_subgroup_shuffle_relative: enable +#extension GL_EXT_shader_subgroup_extended_types_int8: enable +#extension GL_EXT_shader_subgroup_extended_types_int16: enable +#extension GL_EXT_shader_subgroup_extended_types_int64: enable +#extension GL_EXT_shader_subgroup_extended_types_float16: enable + +layout (local_size_x = 8) in; + +layout(binding = 0) buffer Buffers +{ + i8vec4 i8; + u8vec4 u8; + i16vec4 i16; + u16vec4 u16; + i64vec4 i64; + u64vec4 u64; + f16vec4 f16; +} data[4]; + +void main() +{ + uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; + + data[invocation].i8.x = subgroupShuffleUp(data[0].i8.x, invocation); + data[invocation].i8.xy = subgroupShuffleUp(data[1].i8.xy, invocation); + data[invocation].i8.xyz = subgroupShuffleUp(data[2].i8.xyz, invocation); + data[invocation].i8 = subgroupShuffleUp(data[3].i8, invocation); + + data[invocation].i8.x = subgroupShuffleDown(data[0].i8.x, invocation); + data[invocation].i8.xy = subgroupShuffleDown(data[1].i8.xy, invocation); + data[invocation].i8.xyz = subgroupShuffleDown(data[2].i8.xyz, invocation); + data[invocation].i8 = subgroupShuffleDown(data[3].i8, invocation); + + data[invocation].u8.x = subgroupShuffleUp(data[0].u8.x, invocation); + data[invocation].u8.xy = subgroupShuffleUp(data[1].u8.xy, invocation); + data[invocation].u8.xyz = subgroupShuffleUp(data[2].u8.xyz, invocation); + data[invocation].u8 = subgroupShuffleUp(data[3].u8, invocation); + + data[invocation].u8.x = subgroupShuffleDown(data[0].u8.x, invocation); + data[invocation].u8.xy = subgroupShuffleDown(data[1].u8.xy, invocation); + data[invocation].u8.xyz = subgroupShuffleDown(data[2].u8.xyz, invocation); + data[invocation].u8 = subgroupShuffleDown(data[3].u8, invocation); + + data[invocation].i16.x = subgroupShuffleUp(data[0].i16.x, invocation); + data[invocation].i16.xy = subgroupShuffleUp(data[1].i16.xy, invocation); + data[invocation].i16.xyz = subgroupShuffleUp(data[2].i16.xyz, invocation); + data[invocation].i16 = subgroupShuffleUp(data[3].i16, invocation); + + data[invocation].i16.x = subgroupShuffleDown(data[0].i16.x, invocation); + data[invocation].i16.xy = subgroupShuffleDown(data[1].i16.xy, invocation); + data[invocation].i16.xyz = subgroupShuffleDown(data[2].i16.xyz, invocation); + data[invocation].i16 = subgroupShuffleDown(data[3].i16, invocation); + + data[invocation].u16.x = subgroupShuffleUp(data[0].u16.x, invocation); + data[invocation].u16.xy = subgroupShuffleUp(data[1].u16.xy, invocation); + data[invocation].u16.xyz = subgroupShuffleUp(data[2].u16.xyz, invocation); + data[invocation].u16 = subgroupShuffleUp(data[3].u16, invocation); + + data[invocation].u16.x = subgroupShuffleDown(data[0].u16.x, invocation); + data[invocation].u16.xy = subgroupShuffleDown(data[1].u16.xy, invocation); + data[invocation].u16.xyz = subgroupShuffleDown(data[2].u16.xyz, invocation); + data[invocation].u16 = subgroupShuffleDown(data[3].u16, invocation); + + data[invocation].i64.x = subgroupShuffleUp(data[0].i64.x, invocation); + data[invocation].i64.xy = subgroupShuffleUp(data[1].i64.xy, invocation); + data[invocation].i64.xyz = subgroupShuffleUp(data[2].i64.xyz, invocation); + data[invocation].i64 = subgroupShuffleUp(data[3].i64, invocation); + + data[invocation].i64.x = subgroupShuffleDown(data[0].i64.x, invocation); + data[invocation].i64.xy = subgroupShuffleDown(data[1].i64.xy, invocation); + data[invocation].i64.xyz = subgroupShuffleDown(data[2].i64.xyz, invocation); + data[invocation].i64 = subgroupShuffleDown(data[3].i64, invocation); + + data[invocation].u64.x = subgroupShuffleUp(data[0].u64.x, invocation); + data[invocation].u64.xy = subgroupShuffleUp(data[1].u64.xy, invocation); + data[invocation].u64.xyz = subgroupShuffleUp(data[2].u64.xyz, invocation); + data[invocation].u64 = subgroupShuffleUp(data[3].u64, invocation); + + data[invocation].u64.x = subgroupShuffleDown(data[0].u64.x, invocation); + data[invocation].u64.xy = subgroupShuffleDown(data[1].u64.xy, invocation); + data[invocation].u64.xyz = subgroupShuffleDown(data[2].u64.xyz, invocation); + data[invocation].u64 = subgroupShuffleDown(data[3].u64, invocation); + + data[invocation].f16.x = subgroupShuffleUp(data[0].f16.x, invocation); + data[invocation].f16.xy = subgroupShuffleUp(data[1].f16.xy, invocation); + data[invocation].f16.xyz = subgroupShuffleUp(data[2].f16.xyz, invocation); + data[invocation].f16 = subgroupShuffleUp(data[3].f16, invocation); + + data[invocation].f16.x = subgroupShuffleDown(data[0].f16.x, invocation); + data[invocation].f16.xy = subgroupShuffleDown(data[1].f16.xy, invocation); + data[invocation].f16.xyz = subgroupShuffleDown(data[2].f16.xyz, invocation); + data[invocation].f16 = subgroupShuffleDown(data[3].f16, invocation); +} diff --git a/Test/spv.subgroupExtendedTypesShuffleRelativeNeg.comp b/Test/spv.subgroupExtendedTypesShuffleRelativeNeg.comp new file mode 100644 index 00000000..9857444a --- /dev/null +++ b/Test/spv.subgroupExtendedTypesShuffleRelativeNeg.comp @@ -0,0 +1,95 @@ +#version 450 + +#extension GL_KHR_shader_subgroup_shuffle_relative: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int8: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int16: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int64: enable +#extension GL_EXT_shader_explicit_arithmetic_types_float16: enable + +layout (local_size_x = 8) in; + +layout(binding = 0) buffer Buffers +{ + i8vec4 i8; + u8vec4 u8; + i16vec4 i16; + u16vec4 u16; + i64vec4 i64; + u64vec4 u64; + f16vec4 f16; +} data[4]; + +void main() +{ + uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; + + data[invocation].i8.x = subgroupShuffleUp(data[0].i8.x, invocation); + data[invocation].i8.xy = subgroupShuffleUp(data[1].i8.xy, invocation); + data[invocation].i8.xyz = subgroupShuffleUp(data[2].i8.xyz, invocation); + data[invocation].i8 = subgroupShuffleUp(data[3].i8, invocation); + + data[invocation].i8.x = subgroupShuffleDown(data[0].i8.x, invocation); + data[invocation].i8.xy = subgroupShuffleDown(data[1].i8.xy, invocation); + data[invocation].i8.xyz = subgroupShuffleDown(data[2].i8.xyz, invocation); + data[invocation].i8 = subgroupShuffleDown(data[3].i8, invocation); + + data[invocation].u8.x = subgroupShuffleUp(data[0].u8.x, invocation); + data[invocation].u8.xy = subgroupShuffleUp(data[1].u8.xy, invocation); + data[invocation].u8.xyz = subgroupShuffleUp(data[2].u8.xyz, invocation); + data[invocation].u8 = subgroupShuffleUp(data[3].u8, invocation); + + data[invocation].u8.x = subgroupShuffleDown(data[0].u8.x, invocation); + data[invocation].u8.xy = subgroupShuffleDown(data[1].u8.xy, invocation); + data[invocation].u8.xyz = subgroupShuffleDown(data[2].u8.xyz, invocation); + data[invocation].u8 = subgroupShuffleDown(data[3].u8, invocation); + + data[invocation].i16.x = subgroupShuffleUp(data[0].i16.x, invocation); + data[invocation].i16.xy = subgroupShuffleUp(data[1].i16.xy, invocation); + data[invocation].i16.xyz = subgroupShuffleUp(data[2].i16.xyz, invocation); + data[invocation].i16 = subgroupShuffleUp(data[3].i16, invocation); + + data[invocation].i16.x = subgroupShuffleDown(data[0].i16.x, invocation); + data[invocation].i16.xy = subgroupShuffleDown(data[1].i16.xy, invocation); + data[invocation].i16.xyz = subgroupShuffleDown(data[2].i16.xyz, invocation); + data[invocation].i16 = subgroupShuffleDown(data[3].i16, invocation); + + data[invocation].u16.x = subgroupShuffleUp(data[0].u16.x, invocation); + data[invocation].u16.xy = subgroupShuffleUp(data[1].u16.xy, invocation); + data[invocation].u16.xyz = subgroupShuffleUp(data[2].u16.xyz, invocation); + data[invocation].u16 = subgroupShuffleUp(data[3].u16, invocation); + + data[invocation].u16.x = subgroupShuffleDown(data[0].u16.x, invocation); + data[invocation].u16.xy = subgroupShuffleDown(data[1].u16.xy, invocation); + data[invocation].u16.xyz = subgroupShuffleDown(data[2].u16.xyz, invocation); + data[invocation].u16 = subgroupShuffleDown(data[3].u16, invocation); + + data[invocation].i64.x = subgroupShuffleUp(data[0].i64.x, invocation); + data[invocation].i64.xy = subgroupShuffleUp(data[1].i64.xy, invocation); + data[invocation].i64.xyz = subgroupShuffleUp(data[2].i64.xyz, invocation); + data[invocation].i64 = subgroupShuffleUp(data[3].i64, invocation); + + data[invocation].i64.x = subgroupShuffleDown(data[0].i64.x, invocation); + data[invocation].i64.xy = subgroupShuffleDown(data[1].i64.xy, invocation); + data[invocation].i64.xyz = subgroupShuffleDown(data[2].i64.xyz, invocation); + data[invocation].i64 = subgroupShuffleDown(data[3].i64, invocation); + + data[invocation].u64.x = subgroupShuffleUp(data[0].u64.x, invocation); + data[invocation].u64.xy = subgroupShuffleUp(data[1].u64.xy, invocation); + data[invocation].u64.xyz = subgroupShuffleUp(data[2].u64.xyz, invocation); + data[invocation].u64 = subgroupShuffleUp(data[3].u64, invocation); + + data[invocation].u64.x = subgroupShuffleDown(data[0].u64.x, invocation); + data[invocation].u64.xy = subgroupShuffleDown(data[1].u64.xy, invocation); + data[invocation].u64.xyz = subgroupShuffleDown(data[2].u64.xyz, invocation); + data[invocation].u64 = subgroupShuffleDown(data[3].u64, invocation); + + data[invocation].f16.x = subgroupShuffleUp(data[0].f16.x, invocation); + data[invocation].f16.xy = subgroupShuffleUp(data[1].f16.xy, invocation); + data[invocation].f16.xyz = subgroupShuffleUp(data[2].f16.xyz, invocation); + data[invocation].f16 = subgroupShuffleUp(data[3].f16, invocation); + + data[invocation].f16.x = subgroupShuffleDown(data[0].f16.x, invocation); + data[invocation].f16.xy = subgroupShuffleDown(data[1].f16.xy, invocation); + data[invocation].f16.xyz = subgroupShuffleDown(data[2].f16.xyz, invocation); + data[invocation].f16 = subgroupShuffleDown(data[3].f16, invocation); +} diff --git a/Test/spv.subgroupExtendedTypesVote.comp b/Test/spv.subgroupExtendedTypesVote.comp new file mode 100644 index 00000000..960156a6 --- /dev/null +++ b/Test/spv.subgroupExtendedTypesVote.comp @@ -0,0 +1,66 @@ +#version 450 + +#extension GL_KHR_shader_subgroup_vote: enable +#extension GL_EXT_shader_subgroup_extended_types_int8: enable +#extension GL_EXT_shader_subgroup_extended_types_int16: enable +#extension GL_EXT_shader_subgroup_extended_types_int64: enable +#extension GL_EXT_shader_subgroup_extended_types_float16: enable + +layout (local_size_x = 8) in; + +layout(binding = 0) buffer Buffers +{ + i8vec4 i8; + u8vec4 u8; + i16vec4 i16; + u16vec4 u16; + i64vec4 i64; + u64vec4 u64; + f16vec4 f16; + int r; +} data[4]; + +void main() +{ + uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; + + if (subgroupAll(data[invocation].r < 0)) + { + data[invocation].r = int(subgroupAllEqual(data[0].i8.x)); + data[invocation].r = int(subgroupAllEqual(data[1].i8.xy)); + data[invocation].r = int(subgroupAllEqual(data[2].i8.xyz)); + data[invocation].r = int(subgroupAllEqual(data[3].i8)); + + data[invocation].r = int(subgroupAllEqual(data[0].u8.x)); + data[invocation].r = int(subgroupAllEqual(data[1].u8.xy)); + data[invocation].r = int(subgroupAllEqual(data[2].u8.xyz)); + data[invocation].r = int(subgroupAllEqual(data[3].u8)); + + data[invocation].r = int(subgroupAllEqual(data[0].i16.x)); + data[invocation].r = int(subgroupAllEqual(data[1].i16.xy)); + data[invocation].r = int(subgroupAllEqual(data[2].i16.xyz)); + data[invocation].r = int(subgroupAllEqual(data[3].i16)); + + data[invocation].r = int(subgroupAllEqual(data[0].u16.x)); + data[invocation].r = int(subgroupAllEqual(data[1].u16.xy)); + data[invocation].r = int(subgroupAllEqual(data[2].u16.xyz)); + data[invocation].r = int(subgroupAllEqual(data[3].u16)); + } + else if (subgroupAny(data[invocation].r < 0)) + { + data[invocation].r = int(subgroupAllEqual(data[0].i64.x)); + data[invocation].r = int(subgroupAllEqual(data[1].i64.xy)); + data[invocation].r = int(subgroupAllEqual(data[2].i64.xyz)); + data[invocation].r = int(subgroupAllEqual(data[3].i64)); + + data[invocation].r = int(subgroupAllEqual(data[0].u64.x)); + data[invocation].r = int(subgroupAllEqual(data[1].u64.xy)); + data[invocation].r = int(subgroupAllEqual(data[2].u64.xyz)); + data[invocation].r = int(subgroupAllEqual(data[3].u64)); + + data[invocation].r = int(subgroupAllEqual(data[0].f16.x)); + data[invocation].r = int(subgroupAllEqual(data[1].f16.xy)); + data[invocation].r = int(subgroupAllEqual(data[2].f16.xyz)); + data[invocation].r = int(subgroupAllEqual(data[3].f16)); + } +} diff --git a/Test/spv.subgroupExtendedTypesVoteNeg.comp b/Test/spv.subgroupExtendedTypesVoteNeg.comp new file mode 100644 index 00000000..be8d1bb1 --- /dev/null +++ b/Test/spv.subgroupExtendedTypesVoteNeg.comp @@ -0,0 +1,66 @@ +#version 450 + +#extension GL_KHR_shader_subgroup_vote: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int8: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int16: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int64: enable +#extension GL_EXT_shader_explicit_arithmetic_types_float16: enable + +layout (local_size_x = 8) in; + +layout(binding = 0) buffer Buffers +{ + i8vec4 i8; + u8vec4 u8; + i16vec4 i16; + u16vec4 u16; + i64vec4 i64; + u64vec4 u64; + f16vec4 f16; + int r; +} data[4]; + +void main() +{ + uint invocation = (gl_SubgroupInvocationID + gl_SubgroupSize) % 4; + + if (subgroupAll(data[invocation].r < 0)) + { + data[invocation].r = int(subgroupAllEqual(data[0].i8.x)); + data[invocation].r = int(subgroupAllEqual(data[1].i8.xy)); + data[invocation].r = int(subgroupAllEqual(data[2].i8.xyz)); + data[invocation].r = int(subgroupAllEqual(data[3].i8)); + + data[invocation].r = int(subgroupAllEqual(data[0].u8.x)); + data[invocation].r = int(subgroupAllEqual(data[1].u8.xy)); + data[invocation].r = int(subgroupAllEqual(data[2].u8.xyz)); + data[invocation].r = int(subgroupAllEqual(data[3].u8)); + + data[invocation].r = int(subgroupAllEqual(data[0].i16.x)); + data[invocation].r = int(subgroupAllEqual(data[1].i16.xy)); + data[invocation].r = int(subgroupAllEqual(data[2].i16.xyz)); + data[invocation].r = int(subgroupAllEqual(data[3].i16)); + + data[invocation].r = int(subgroupAllEqual(data[0].u16.x)); + data[invocation].r = int(subgroupAllEqual(data[1].u16.xy)); + data[invocation].r = int(subgroupAllEqual(data[2].u16.xyz)); + data[invocation].r = int(subgroupAllEqual(data[3].u16)); + } + else if (subgroupAny(data[invocation].r < 0)) + { + data[invocation].r = int(subgroupAllEqual(data[0].i64.x)); + data[invocation].r = int(subgroupAllEqual(data[1].i64.xy)); + data[invocation].r = int(subgroupAllEqual(data[2].i64.xyz)); + data[invocation].r = int(subgroupAllEqual(data[3].i64)); + + data[invocation].r = int(subgroupAllEqual(data[0].u64.x)); + data[invocation].r = int(subgroupAllEqual(data[1].u64.xy)); + data[invocation].r = int(subgroupAllEqual(data[2].u64.xyz)); + data[invocation].r = int(subgroupAllEqual(data[3].u64)); + + data[invocation].r = int(subgroupAllEqual(data[0].f16.x)); + data[invocation].r = int(subgroupAllEqual(data[1].f16.xy)); + data[invocation].r = int(subgroupAllEqual(data[2].f16.xyz)); + data[invocation].r = int(subgroupAllEqual(data[3].f16)); + } +} diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 48e983aa..2344d36c 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -1743,58 +1743,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "bool subgroupAll(bool);\n" "bool subgroupAny(bool);\n" - - "bool subgroupAllEqual(float);\n" - "bool subgroupAllEqual(vec2);\n" - "bool subgroupAllEqual(vec3);\n" - "bool subgroupAllEqual(vec4);\n" - "bool subgroupAllEqual(int);\n" - "bool subgroupAllEqual(ivec2);\n" - "bool subgroupAllEqual(ivec3);\n" - "bool subgroupAllEqual(ivec4);\n" - "bool subgroupAllEqual(uint);\n" - "bool subgroupAllEqual(uvec2);\n" - "bool subgroupAllEqual(uvec3);\n" - "bool subgroupAllEqual(uvec4);\n" - "bool subgroupAllEqual(bool);\n" - "bool subgroupAllEqual(bvec2);\n" - "bool subgroupAllEqual(bvec3);\n" - "bool subgroupAllEqual(bvec4);\n" - - "float subgroupBroadcast(float, uint);\n" - "vec2 subgroupBroadcast(vec2, uint);\n" - "vec3 subgroupBroadcast(vec3, uint);\n" - "vec4 subgroupBroadcast(vec4, uint);\n" - "int subgroupBroadcast(int, uint);\n" - "ivec2 subgroupBroadcast(ivec2, uint);\n" - "ivec3 subgroupBroadcast(ivec3, uint);\n" - "ivec4 subgroupBroadcast(ivec4, uint);\n" - "uint subgroupBroadcast(uint, uint);\n" - "uvec2 subgroupBroadcast(uvec2, uint);\n" - "uvec3 subgroupBroadcast(uvec3, uint);\n" - "uvec4 subgroupBroadcast(uvec4, uint);\n" - "bool subgroupBroadcast(bool, uint);\n" - "bvec2 subgroupBroadcast(bvec2, uint);\n" - "bvec3 subgroupBroadcast(bvec3, uint);\n" - "bvec4 subgroupBroadcast(bvec4, uint);\n" - - "float subgroupBroadcastFirst(float);\n" - "vec2 subgroupBroadcastFirst(vec2);\n" - "vec3 subgroupBroadcastFirst(vec3);\n" - "vec4 subgroupBroadcastFirst(vec4);\n" - "int subgroupBroadcastFirst(int);\n" - "ivec2 subgroupBroadcastFirst(ivec2);\n" - "ivec3 subgroupBroadcastFirst(ivec3);\n" - "ivec4 subgroupBroadcastFirst(ivec4);\n" - "uint subgroupBroadcastFirst(uint);\n" - "uvec2 subgroupBroadcastFirst(uvec2);\n" - "uvec3 subgroupBroadcastFirst(uvec3);\n" - "uvec4 subgroupBroadcastFirst(uvec4);\n" - "bool subgroupBroadcastFirst(bool);\n" - "bvec2 subgroupBroadcastFirst(bvec2);\n" - "bvec3 subgroupBroadcastFirst(bvec3);\n" - "bvec4 subgroupBroadcastFirst(bvec4);\n" - "uvec4 subgroupBallot(bool);\n" "bool subgroupInverseBallot(uvec4);\n" "bool subgroupBallotBitExtract(uvec4, uint);\n" @@ -1803,1002 +1751,130 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "uint subgroupBallotExclusiveBitCount(uvec4);\n" "uint subgroupBallotFindLSB(uvec4);\n" "uint subgroupBallotFindMSB(uvec4);\n" - - "float subgroupShuffle(float, uint);\n" - "vec2 subgroupShuffle(vec2, uint);\n" - "vec3 subgroupShuffle(vec3, uint);\n" - "vec4 subgroupShuffle(vec4, uint);\n" - "int subgroupShuffle(int, uint);\n" - "ivec2 subgroupShuffle(ivec2, uint);\n" - "ivec3 subgroupShuffle(ivec3, uint);\n" - "ivec4 subgroupShuffle(ivec4, uint);\n" - "uint subgroupShuffle(uint, uint);\n" - "uvec2 subgroupShuffle(uvec2, uint);\n" - "uvec3 subgroupShuffle(uvec3, uint);\n" - "uvec4 subgroupShuffle(uvec4, uint);\n" - "bool subgroupShuffle(bool, uint);\n" - "bvec2 subgroupShuffle(bvec2, uint);\n" - "bvec3 subgroupShuffle(bvec3, uint);\n" - "bvec4 subgroupShuffle(bvec4, uint);\n" - - "float subgroupShuffleXor(float, uint);\n" - "vec2 subgroupShuffleXor(vec2, uint);\n" - "vec3 subgroupShuffleXor(vec3, uint);\n" - "vec4 subgroupShuffleXor(vec4, uint);\n" - "int subgroupShuffleXor(int, uint);\n" - "ivec2 subgroupShuffleXor(ivec2, uint);\n" - "ivec3 subgroupShuffleXor(ivec3, uint);\n" - "ivec4 subgroupShuffleXor(ivec4, uint);\n" - "uint subgroupShuffleXor(uint, uint);\n" - "uvec2 subgroupShuffleXor(uvec2, uint);\n" - "uvec3 subgroupShuffleXor(uvec3, uint);\n" - "uvec4 subgroupShuffleXor(uvec4, uint);\n" - "bool subgroupShuffleXor(bool, uint);\n" - "bvec2 subgroupShuffleXor(bvec2, uint);\n" - "bvec3 subgroupShuffleXor(bvec3, uint);\n" - "bvec4 subgroupShuffleXor(bvec4, uint);\n" - - "float subgroupShuffleUp(float, uint delta);\n" - "vec2 subgroupShuffleUp(vec2, uint delta);\n" - "vec3 subgroupShuffleUp(vec3, uint delta);\n" - "vec4 subgroupShuffleUp(vec4, uint delta);\n" - "int subgroupShuffleUp(int, uint delta);\n" - "ivec2 subgroupShuffleUp(ivec2, uint delta);\n" - "ivec3 subgroupShuffleUp(ivec3, uint delta);\n" - "ivec4 subgroupShuffleUp(ivec4, uint delta);\n" - "uint subgroupShuffleUp(uint, uint delta);\n" - "uvec2 subgroupShuffleUp(uvec2, uint delta);\n" - "uvec3 subgroupShuffleUp(uvec3, uint delta);\n" - "uvec4 subgroupShuffleUp(uvec4, uint delta);\n" - "bool subgroupShuffleUp(bool, uint delta);\n" - "bvec2 subgroupShuffleUp(bvec2, uint delta);\n" - "bvec3 subgroupShuffleUp(bvec3, uint delta);\n" - "bvec4 subgroupShuffleUp(bvec4, uint delta);\n" - - "float subgroupShuffleDown(float, uint delta);\n" - "vec2 subgroupShuffleDown(vec2, uint delta);\n" - "vec3 subgroupShuffleDown(vec3, uint delta);\n" - "vec4 subgroupShuffleDown(vec4, uint delta);\n" - "int subgroupShuffleDown(int, uint delta);\n" - "ivec2 subgroupShuffleDown(ivec2, uint delta);\n" - "ivec3 subgroupShuffleDown(ivec3, uint delta);\n" - "ivec4 subgroupShuffleDown(ivec4, uint delta);\n" - "uint subgroupShuffleDown(uint, uint delta);\n" - "uvec2 subgroupShuffleDown(uvec2, uint delta);\n" - "uvec3 subgroupShuffleDown(uvec3, uint delta);\n" - "uvec4 subgroupShuffleDown(uvec4, uint delta);\n" - "bool subgroupShuffleDown(bool, uint delta);\n" - "bvec2 subgroupShuffleDown(bvec2, uint delta);\n" - "bvec3 subgroupShuffleDown(bvec3, uint delta);\n" - "bvec4 subgroupShuffleDown(bvec4, uint delta);\n" - - "float subgroupAdd(float);\n" - "vec2 subgroupAdd(vec2);\n" - "vec3 subgroupAdd(vec3);\n" - "vec4 subgroupAdd(vec4);\n" - "int subgroupAdd(int);\n" - "ivec2 subgroupAdd(ivec2);\n" - "ivec3 subgroupAdd(ivec3);\n" - "ivec4 subgroupAdd(ivec4);\n" - "uint subgroupAdd(uint);\n" - "uvec2 subgroupAdd(uvec2);\n" - "uvec3 subgroupAdd(uvec3);\n" - "uvec4 subgroupAdd(uvec4);\n" - - "float subgroupMul(float);\n" - "vec2 subgroupMul(vec2);\n" - "vec3 subgroupMul(vec3);\n" - "vec4 subgroupMul(vec4);\n" - "int subgroupMul(int);\n" - "ivec2 subgroupMul(ivec2);\n" - "ivec3 subgroupMul(ivec3);\n" - "ivec4 subgroupMul(ivec4);\n" - "uint subgroupMul(uint);\n" - "uvec2 subgroupMul(uvec2);\n" - "uvec3 subgroupMul(uvec3);\n" - "uvec4 subgroupMul(uvec4);\n" - - "float subgroupMin(float);\n" - "vec2 subgroupMin(vec2);\n" - "vec3 subgroupMin(vec3);\n" - "vec4 subgroupMin(vec4);\n" - "int subgroupMin(int);\n" - "ivec2 subgroupMin(ivec2);\n" - "ivec3 subgroupMin(ivec3);\n" - "ivec4 subgroupMin(ivec4);\n" - "uint subgroupMin(uint);\n" - "uvec2 subgroupMin(uvec2);\n" - "uvec3 subgroupMin(uvec3);\n" - "uvec4 subgroupMin(uvec4);\n" - - "float subgroupMax(float);\n" - "vec2 subgroupMax(vec2);\n" - "vec3 subgroupMax(vec3);\n" - "vec4 subgroupMax(vec4);\n" - "int subgroupMax(int);\n" - "ivec2 subgroupMax(ivec2);\n" - "ivec3 subgroupMax(ivec3);\n" - "ivec4 subgroupMax(ivec4);\n" - "uint subgroupMax(uint);\n" - "uvec2 subgroupMax(uvec2);\n" - "uvec3 subgroupMax(uvec3);\n" - "uvec4 subgroupMax(uvec4);\n" - - "int subgroupAnd(int);\n" - "ivec2 subgroupAnd(ivec2);\n" - "ivec3 subgroupAnd(ivec3);\n" - "ivec4 subgroupAnd(ivec4);\n" - "uint subgroupAnd(uint);\n" - "uvec2 subgroupAnd(uvec2);\n" - "uvec3 subgroupAnd(uvec3);\n" - "uvec4 subgroupAnd(uvec4);\n" - "bool subgroupAnd(bool);\n" - "bvec2 subgroupAnd(bvec2);\n" - "bvec3 subgroupAnd(bvec3);\n" - "bvec4 subgroupAnd(bvec4);\n" - - "int subgroupOr(int);\n" - "ivec2 subgroupOr(ivec2);\n" - "ivec3 subgroupOr(ivec3);\n" - "ivec4 subgroupOr(ivec4);\n" - "uint subgroupOr(uint);\n" - "uvec2 subgroupOr(uvec2);\n" - "uvec3 subgroupOr(uvec3);\n" - "uvec4 subgroupOr(uvec4);\n" - "bool subgroupOr(bool);\n" - "bvec2 subgroupOr(bvec2);\n" - "bvec3 subgroupOr(bvec3);\n" - "bvec4 subgroupOr(bvec4);\n" - - "int subgroupXor(int);\n" - "ivec2 subgroupXor(ivec2);\n" - "ivec3 subgroupXor(ivec3);\n" - "ivec4 subgroupXor(ivec4);\n" - "uint subgroupXor(uint);\n" - "uvec2 subgroupXor(uvec2);\n" - "uvec3 subgroupXor(uvec3);\n" - "uvec4 subgroupXor(uvec4);\n" - "bool subgroupXor(bool);\n" - "bvec2 subgroupXor(bvec2);\n" - "bvec3 subgroupXor(bvec3);\n" - "bvec4 subgroupXor(bvec4);\n" - - "float subgroupInclusiveAdd(float);\n" - "vec2 subgroupInclusiveAdd(vec2);\n" - "vec3 subgroupInclusiveAdd(vec3);\n" - "vec4 subgroupInclusiveAdd(vec4);\n" - "int subgroupInclusiveAdd(int);\n" - "ivec2 subgroupInclusiveAdd(ivec2);\n" - "ivec3 subgroupInclusiveAdd(ivec3);\n" - "ivec4 subgroupInclusiveAdd(ivec4);\n" - "uint subgroupInclusiveAdd(uint);\n" - "uvec2 subgroupInclusiveAdd(uvec2);\n" - "uvec3 subgroupInclusiveAdd(uvec3);\n" - "uvec4 subgroupInclusiveAdd(uvec4);\n" - - "float subgroupInclusiveMul(float);\n" - "vec2 subgroupInclusiveMul(vec2);\n" - "vec3 subgroupInclusiveMul(vec3);\n" - "vec4 subgroupInclusiveMul(vec4);\n" - "int subgroupInclusiveMul(int);\n" - "ivec2 subgroupInclusiveMul(ivec2);\n" - "ivec3 subgroupInclusiveMul(ivec3);\n" - "ivec4 subgroupInclusiveMul(ivec4);\n" - "uint subgroupInclusiveMul(uint);\n" - "uvec2 subgroupInclusiveMul(uvec2);\n" - "uvec3 subgroupInclusiveMul(uvec3);\n" - "uvec4 subgroupInclusiveMul(uvec4);\n" - - "float subgroupInclusiveMin(float);\n" - "vec2 subgroupInclusiveMin(vec2);\n" - "vec3 subgroupInclusiveMin(vec3);\n" - "vec4 subgroupInclusiveMin(vec4);\n" - "int subgroupInclusiveMin(int);\n" - "ivec2 subgroupInclusiveMin(ivec2);\n" - "ivec3 subgroupInclusiveMin(ivec3);\n" - "ivec4 subgroupInclusiveMin(ivec4);\n" - "uint subgroupInclusiveMin(uint);\n" - "uvec2 subgroupInclusiveMin(uvec2);\n" - "uvec3 subgroupInclusiveMin(uvec3);\n" - "uvec4 subgroupInclusiveMin(uvec4);\n" - - "float subgroupInclusiveMax(float);\n" - "vec2 subgroupInclusiveMax(vec2);\n" - "vec3 subgroupInclusiveMax(vec3);\n" - "vec4 subgroupInclusiveMax(vec4);\n" - "int subgroupInclusiveMax(int);\n" - "ivec2 subgroupInclusiveMax(ivec2);\n" - "ivec3 subgroupInclusiveMax(ivec3);\n" - "ivec4 subgroupInclusiveMax(ivec4);\n" - "uint subgroupInclusiveMax(uint);\n" - "uvec2 subgroupInclusiveMax(uvec2);\n" - "uvec3 subgroupInclusiveMax(uvec3);\n" - "uvec4 subgroupInclusiveMax(uvec4);\n" - - "int subgroupInclusiveAnd(int);\n" - "ivec2 subgroupInclusiveAnd(ivec2);\n" - "ivec3 subgroupInclusiveAnd(ivec3);\n" - "ivec4 subgroupInclusiveAnd(ivec4);\n" - "uint subgroupInclusiveAnd(uint);\n" - "uvec2 subgroupInclusiveAnd(uvec2);\n" - "uvec3 subgroupInclusiveAnd(uvec3);\n" - "uvec4 subgroupInclusiveAnd(uvec4);\n" - "bool subgroupInclusiveAnd(bool);\n" - "bvec2 subgroupInclusiveAnd(bvec2);\n" - "bvec3 subgroupInclusiveAnd(bvec3);\n" - "bvec4 subgroupInclusiveAnd(bvec4);\n" - - "int subgroupInclusiveOr(int);\n" - "ivec2 subgroupInclusiveOr(ivec2);\n" - "ivec3 subgroupInclusiveOr(ivec3);\n" - "ivec4 subgroupInclusiveOr(ivec4);\n" - "uint subgroupInclusiveOr(uint);\n" - "uvec2 subgroupInclusiveOr(uvec2);\n" - "uvec3 subgroupInclusiveOr(uvec3);\n" - "uvec4 subgroupInclusiveOr(uvec4);\n" - "bool subgroupInclusiveOr(bool);\n" - "bvec2 subgroupInclusiveOr(bvec2);\n" - "bvec3 subgroupInclusiveOr(bvec3);\n" - "bvec4 subgroupInclusiveOr(bvec4);\n" - - "int subgroupInclusiveXor(int);\n" - "ivec2 subgroupInclusiveXor(ivec2);\n" - "ivec3 subgroupInclusiveXor(ivec3);\n" - "ivec4 subgroupInclusiveXor(ivec4);\n" - "uint subgroupInclusiveXor(uint);\n" - "uvec2 subgroupInclusiveXor(uvec2);\n" - "uvec3 subgroupInclusiveXor(uvec3);\n" - "uvec4 subgroupInclusiveXor(uvec4);\n" - "bool subgroupInclusiveXor(bool);\n" - "bvec2 subgroupInclusiveXor(bvec2);\n" - "bvec3 subgroupInclusiveXor(bvec3);\n" - "bvec4 subgroupInclusiveXor(bvec4);\n" - - "float subgroupExclusiveAdd(float);\n" - "vec2 subgroupExclusiveAdd(vec2);\n" - "vec3 subgroupExclusiveAdd(vec3);\n" - "vec4 subgroupExclusiveAdd(vec4);\n" - "int subgroupExclusiveAdd(int);\n" - "ivec2 subgroupExclusiveAdd(ivec2);\n" - "ivec3 subgroupExclusiveAdd(ivec3);\n" - "ivec4 subgroupExclusiveAdd(ivec4);\n" - "uint subgroupExclusiveAdd(uint);\n" - "uvec2 subgroupExclusiveAdd(uvec2);\n" - "uvec3 subgroupExclusiveAdd(uvec3);\n" - "uvec4 subgroupExclusiveAdd(uvec4);\n" - - "float subgroupExclusiveMul(float);\n" - "vec2 subgroupExclusiveMul(vec2);\n" - "vec3 subgroupExclusiveMul(vec3);\n" - "vec4 subgroupExclusiveMul(vec4);\n" - "int subgroupExclusiveMul(int);\n" - "ivec2 subgroupExclusiveMul(ivec2);\n" - "ivec3 subgroupExclusiveMul(ivec3);\n" - "ivec4 subgroupExclusiveMul(ivec4);\n" - "uint subgroupExclusiveMul(uint);\n" - "uvec2 subgroupExclusiveMul(uvec2);\n" - "uvec3 subgroupExclusiveMul(uvec3);\n" - "uvec4 subgroupExclusiveMul(uvec4);\n" - - "float subgroupExclusiveMin(float);\n" - "vec2 subgroupExclusiveMin(vec2);\n" - "vec3 subgroupExclusiveMin(vec3);\n" - "vec4 subgroupExclusiveMin(vec4);\n" - "int subgroupExclusiveMin(int);\n" - "ivec2 subgroupExclusiveMin(ivec2);\n" - "ivec3 subgroupExclusiveMin(ivec3);\n" - "ivec4 subgroupExclusiveMin(ivec4);\n" - "uint subgroupExclusiveMin(uint);\n" - "uvec2 subgroupExclusiveMin(uvec2);\n" - "uvec3 subgroupExclusiveMin(uvec3);\n" - "uvec4 subgroupExclusiveMin(uvec4);\n" - - "float subgroupExclusiveMax(float);\n" - "vec2 subgroupExclusiveMax(vec2);\n" - "vec3 subgroupExclusiveMax(vec3);\n" - "vec4 subgroupExclusiveMax(vec4);\n" - "int subgroupExclusiveMax(int);\n" - "ivec2 subgroupExclusiveMax(ivec2);\n" - "ivec3 subgroupExclusiveMax(ivec3);\n" - "ivec4 subgroupExclusiveMax(ivec4);\n" - "uint subgroupExclusiveMax(uint);\n" - "uvec2 subgroupExclusiveMax(uvec2);\n" - "uvec3 subgroupExclusiveMax(uvec3);\n" - "uvec4 subgroupExclusiveMax(uvec4);\n" - - "int subgroupExclusiveAnd(int);\n" - "ivec2 subgroupExclusiveAnd(ivec2);\n" - "ivec3 subgroupExclusiveAnd(ivec3);\n" - "ivec4 subgroupExclusiveAnd(ivec4);\n" - "uint subgroupExclusiveAnd(uint);\n" - "uvec2 subgroupExclusiveAnd(uvec2);\n" - "uvec3 subgroupExclusiveAnd(uvec3);\n" - "uvec4 subgroupExclusiveAnd(uvec4);\n" - "bool subgroupExclusiveAnd(bool);\n" - "bvec2 subgroupExclusiveAnd(bvec2);\n" - "bvec3 subgroupExclusiveAnd(bvec3);\n" - "bvec4 subgroupExclusiveAnd(bvec4);\n" - - "int subgroupExclusiveOr(int);\n" - "ivec2 subgroupExclusiveOr(ivec2);\n" - "ivec3 subgroupExclusiveOr(ivec3);\n" - "ivec4 subgroupExclusiveOr(ivec4);\n" - "uint subgroupExclusiveOr(uint);\n" - "uvec2 subgroupExclusiveOr(uvec2);\n" - "uvec3 subgroupExclusiveOr(uvec3);\n" - "uvec4 subgroupExclusiveOr(uvec4);\n" - "bool subgroupExclusiveOr(bool);\n" - "bvec2 subgroupExclusiveOr(bvec2);\n" - "bvec3 subgroupExclusiveOr(bvec3);\n" - "bvec4 subgroupExclusiveOr(bvec4);\n" - - "int subgroupExclusiveXor(int);\n" - "ivec2 subgroupExclusiveXor(ivec2);\n" - "ivec3 subgroupExclusiveXor(ivec3);\n" - "ivec4 subgroupExclusiveXor(ivec4);\n" - "uint subgroupExclusiveXor(uint);\n" - "uvec2 subgroupExclusiveXor(uvec2);\n" - "uvec3 subgroupExclusiveXor(uvec3);\n" - "uvec4 subgroupExclusiveXor(uvec4);\n" - "bool subgroupExclusiveXor(bool);\n" - "bvec2 subgroupExclusiveXor(bvec2);\n" - "bvec3 subgroupExclusiveXor(bvec3);\n" - "bvec4 subgroupExclusiveXor(bvec4);\n" - - "float subgroupClusteredAdd(float, uint);\n" - "vec2 subgroupClusteredAdd(vec2, uint);\n" - "vec3 subgroupClusteredAdd(vec3, uint);\n" - "vec4 subgroupClusteredAdd(vec4, uint);\n" - "int subgroupClusteredAdd(int, uint);\n" - "ivec2 subgroupClusteredAdd(ivec2, uint);\n" - "ivec3 subgroupClusteredAdd(ivec3, uint);\n" - "ivec4 subgroupClusteredAdd(ivec4, uint);\n" - "uint subgroupClusteredAdd(uint, uint);\n" - "uvec2 subgroupClusteredAdd(uvec2, uint);\n" - "uvec3 subgroupClusteredAdd(uvec3, uint);\n" - "uvec4 subgroupClusteredAdd(uvec4, uint);\n" - - "float subgroupClusteredMul(float, uint);\n" - "vec2 subgroupClusteredMul(vec2, uint);\n" - "vec3 subgroupClusteredMul(vec3, uint);\n" - "vec4 subgroupClusteredMul(vec4, uint);\n" - "int subgroupClusteredMul(int, uint);\n" - "ivec2 subgroupClusteredMul(ivec2, uint);\n" - "ivec3 subgroupClusteredMul(ivec3, uint);\n" - "ivec4 subgroupClusteredMul(ivec4, uint);\n" - "uint subgroupClusteredMul(uint, uint);\n" - "uvec2 subgroupClusteredMul(uvec2, uint);\n" - "uvec3 subgroupClusteredMul(uvec3, uint);\n" - "uvec4 subgroupClusteredMul(uvec4, uint);\n" - - "float subgroupClusteredMin(float, uint);\n" - "vec2 subgroupClusteredMin(vec2, uint);\n" - "vec3 subgroupClusteredMin(vec3, uint);\n" - "vec4 subgroupClusteredMin(vec4, uint);\n" - "int subgroupClusteredMin(int, uint);\n" - "ivec2 subgroupClusteredMin(ivec2, uint);\n" - "ivec3 subgroupClusteredMin(ivec3, uint);\n" - "ivec4 subgroupClusteredMin(ivec4, uint);\n" - "uint subgroupClusteredMin(uint, uint);\n" - "uvec2 subgroupClusteredMin(uvec2, uint);\n" - "uvec3 subgroupClusteredMin(uvec3, uint);\n" - "uvec4 subgroupClusteredMin(uvec4, uint);\n" - - "float subgroupClusteredMax(float, uint);\n" - "vec2 subgroupClusteredMax(vec2, uint);\n" - "vec3 subgroupClusteredMax(vec3, uint);\n" - "vec4 subgroupClusteredMax(vec4, uint);\n" - "int subgroupClusteredMax(int, uint);\n" - "ivec2 subgroupClusteredMax(ivec2, uint);\n" - "ivec3 subgroupClusteredMax(ivec3, uint);\n" - "ivec4 subgroupClusteredMax(ivec4, uint);\n" - "uint subgroupClusteredMax(uint, uint);\n" - "uvec2 subgroupClusteredMax(uvec2, uint);\n" - "uvec3 subgroupClusteredMax(uvec3, uint);\n" - "uvec4 subgroupClusteredMax(uvec4, uint);\n" - - "int subgroupClusteredAnd(int, uint);\n" - "ivec2 subgroupClusteredAnd(ivec2, uint);\n" - "ivec3 subgroupClusteredAnd(ivec3, uint);\n" - "ivec4 subgroupClusteredAnd(ivec4, uint);\n" - "uint subgroupClusteredAnd(uint, uint);\n" - "uvec2 subgroupClusteredAnd(uvec2, uint);\n" - "uvec3 subgroupClusteredAnd(uvec3, uint);\n" - "uvec4 subgroupClusteredAnd(uvec4, uint);\n" - "bool subgroupClusteredAnd(bool, uint);\n" - "bvec2 subgroupClusteredAnd(bvec2, uint);\n" - "bvec3 subgroupClusteredAnd(bvec3, uint);\n" - "bvec4 subgroupClusteredAnd(bvec4, uint);\n" - - "int subgroupClusteredOr(int, uint);\n" - "ivec2 subgroupClusteredOr(ivec2, uint);\n" - "ivec3 subgroupClusteredOr(ivec3, uint);\n" - "ivec4 subgroupClusteredOr(ivec4, uint);\n" - "uint subgroupClusteredOr(uint, uint);\n" - "uvec2 subgroupClusteredOr(uvec2, uint);\n" - "uvec3 subgroupClusteredOr(uvec3, uint);\n" - "uvec4 subgroupClusteredOr(uvec4, uint);\n" - "bool subgroupClusteredOr(bool, uint);\n" - "bvec2 subgroupClusteredOr(bvec2, uint);\n" - "bvec3 subgroupClusteredOr(bvec3, uint);\n" - "bvec4 subgroupClusteredOr(bvec4, uint);\n" - - "int subgroupClusteredXor(int, uint);\n" - "ivec2 subgroupClusteredXor(ivec2, uint);\n" - "ivec3 subgroupClusteredXor(ivec3, uint);\n" - "ivec4 subgroupClusteredXor(ivec4, uint);\n" - "uint subgroupClusteredXor(uint, uint);\n" - "uvec2 subgroupClusteredXor(uvec2, uint);\n" - "uvec3 subgroupClusteredXor(uvec3, uint);\n" - "uvec4 subgroupClusteredXor(uvec4, uint);\n" - "bool subgroupClusteredXor(bool, uint);\n" - "bvec2 subgroupClusteredXor(bvec2, uint);\n" - "bvec3 subgroupClusteredXor(bvec3, uint);\n" - "bvec4 subgroupClusteredXor(bvec4, uint);\n" - - "float subgroupQuadBroadcast(float, uint);\n" - "vec2 subgroupQuadBroadcast(vec2, uint);\n" - "vec3 subgroupQuadBroadcast(vec3, uint);\n" - "vec4 subgroupQuadBroadcast(vec4, uint);\n" - "int subgroupQuadBroadcast(int, uint);\n" - "ivec2 subgroupQuadBroadcast(ivec2, uint);\n" - "ivec3 subgroupQuadBroadcast(ivec3, uint);\n" - "ivec4 subgroupQuadBroadcast(ivec4, uint);\n" - "uint subgroupQuadBroadcast(uint, uint);\n" - "uvec2 subgroupQuadBroadcast(uvec2, uint);\n" - "uvec3 subgroupQuadBroadcast(uvec3, uint);\n" - "uvec4 subgroupQuadBroadcast(uvec4, uint);\n" - "bool subgroupQuadBroadcast(bool, uint);\n" - "bvec2 subgroupQuadBroadcast(bvec2, uint);\n" - "bvec3 subgroupQuadBroadcast(bvec3, uint);\n" - "bvec4 subgroupQuadBroadcast(bvec4, uint);\n" - - "float subgroupQuadSwapHorizontal(float);\n" - "vec2 subgroupQuadSwapHorizontal(vec2);\n" - "vec3 subgroupQuadSwapHorizontal(vec3);\n" - "vec4 subgroupQuadSwapHorizontal(vec4);\n" - "int subgroupQuadSwapHorizontal(int);\n" - "ivec2 subgroupQuadSwapHorizontal(ivec2);\n" - "ivec3 subgroupQuadSwapHorizontal(ivec3);\n" - "ivec4 subgroupQuadSwapHorizontal(ivec4);\n" - "uint subgroupQuadSwapHorizontal(uint);\n" - "uvec2 subgroupQuadSwapHorizontal(uvec2);\n" - "uvec3 subgroupQuadSwapHorizontal(uvec3);\n" - "uvec4 subgroupQuadSwapHorizontal(uvec4);\n" - "bool subgroupQuadSwapHorizontal(bool);\n" - "bvec2 subgroupQuadSwapHorizontal(bvec2);\n" - "bvec3 subgroupQuadSwapHorizontal(bvec3);\n" - "bvec4 subgroupQuadSwapHorizontal(bvec4);\n" - - "float subgroupQuadSwapVertical(float);\n" - "vec2 subgroupQuadSwapVertical(vec2);\n" - "vec3 subgroupQuadSwapVertical(vec3);\n" - "vec4 subgroupQuadSwapVertical(vec4);\n" - "int subgroupQuadSwapVertical(int);\n" - "ivec2 subgroupQuadSwapVertical(ivec2);\n" - "ivec3 subgroupQuadSwapVertical(ivec3);\n" - "ivec4 subgroupQuadSwapVertical(ivec4);\n" - "uint subgroupQuadSwapVertical(uint);\n" - "uvec2 subgroupQuadSwapVertical(uvec2);\n" - "uvec3 subgroupQuadSwapVertical(uvec3);\n" - "uvec4 subgroupQuadSwapVertical(uvec4);\n" - "bool subgroupQuadSwapVertical(bool);\n" - "bvec2 subgroupQuadSwapVertical(bvec2);\n" - "bvec3 subgroupQuadSwapVertical(bvec3);\n" - "bvec4 subgroupQuadSwapVertical(bvec4);\n" - - "float subgroupQuadSwapDiagonal(float);\n" - "vec2 subgroupQuadSwapDiagonal(vec2);\n" - "vec3 subgroupQuadSwapDiagonal(vec3);\n" - "vec4 subgroupQuadSwapDiagonal(vec4);\n" - "int subgroupQuadSwapDiagonal(int);\n" - "ivec2 subgroupQuadSwapDiagonal(ivec2);\n" - "ivec3 subgroupQuadSwapDiagonal(ivec3);\n" - "ivec4 subgroupQuadSwapDiagonal(ivec4);\n" - "uint subgroupQuadSwapDiagonal(uint);\n" - "uvec2 subgroupQuadSwapDiagonal(uvec2);\n" - "uvec3 subgroupQuadSwapDiagonal(uvec3);\n" - "uvec4 subgroupQuadSwapDiagonal(uvec4);\n" - "bool subgroupQuadSwapDiagonal(bool);\n" - "bvec2 subgroupQuadSwapDiagonal(bvec2);\n" - "bvec3 subgroupQuadSwapDiagonal(bvec3);\n" - "bvec4 subgroupQuadSwapDiagonal(bvec4);\n" - - "uvec4 subgroupPartitionNV(float);\n" - "uvec4 subgroupPartitionNV(vec2);\n" - "uvec4 subgroupPartitionNV(vec3);\n" - "uvec4 subgroupPartitionNV(vec4);\n" - "uvec4 subgroupPartitionNV(int);\n" - "uvec4 subgroupPartitionNV(ivec2);\n" - "uvec4 subgroupPartitionNV(ivec3);\n" - "uvec4 subgroupPartitionNV(ivec4);\n" - "uvec4 subgroupPartitionNV(uint);\n" - "uvec4 subgroupPartitionNV(uvec2);\n" - "uvec4 subgroupPartitionNV(uvec3);\n" - "uvec4 subgroupPartitionNV(uvec4);\n" - "uvec4 subgroupPartitionNV(bool);\n" - "uvec4 subgroupPartitionNV(bvec2);\n" - "uvec4 subgroupPartitionNV(bvec3);\n" - "uvec4 subgroupPartitionNV(bvec4);\n" - - "float subgroupPartitionedAddNV(float, uvec4 ballot);\n" - "vec2 subgroupPartitionedAddNV(vec2, uvec4 ballot);\n" - "vec3 subgroupPartitionedAddNV(vec3, uvec4 ballot);\n" - "vec4 subgroupPartitionedAddNV(vec4, uvec4 ballot);\n" - "int subgroupPartitionedAddNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedAddNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedAddNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedAddNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedAddNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedAddNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedAddNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedAddNV(uvec4, uvec4 ballot);\n" - - "float subgroupPartitionedMulNV(float, uvec4 ballot);\n" - "vec2 subgroupPartitionedMulNV(vec2, uvec4 ballot);\n" - "vec3 subgroupPartitionedMulNV(vec3, uvec4 ballot);\n" - "vec4 subgroupPartitionedMulNV(vec4, uvec4 ballot);\n" - "int subgroupPartitionedMulNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedMulNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedMulNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedMulNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedMulNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedMulNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedMulNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedMulNV(uvec4, uvec4 ballot);\n" - - "float subgroupPartitionedMinNV(float, uvec4 ballot);\n" - "vec2 subgroupPartitionedMinNV(vec2, uvec4 ballot);\n" - "vec3 subgroupPartitionedMinNV(vec3, uvec4 ballot);\n" - "vec4 subgroupPartitionedMinNV(vec4, uvec4 ballot);\n" - "int subgroupPartitionedMinNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedMinNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedMinNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedMinNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedMinNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedMinNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedMinNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedMinNV(uvec4, uvec4 ballot);\n" - - "float subgroupPartitionedMaxNV(float, uvec4 ballot);\n" - "vec2 subgroupPartitionedMaxNV(vec2, uvec4 ballot);\n" - "vec3 subgroupPartitionedMaxNV(vec3, uvec4 ballot);\n" - "vec4 subgroupPartitionedMaxNV(vec4, uvec4 ballot);\n" - "int subgroupPartitionedMaxNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedMaxNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedMaxNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedMaxNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedMaxNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedMaxNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedMaxNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedMaxNV(uvec4, uvec4 ballot);\n" - - "int subgroupPartitionedAndNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedAndNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedAndNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedAndNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedAndNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedAndNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedAndNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedAndNV(uvec4, uvec4 ballot);\n" - "bool subgroupPartitionedAndNV(bool, uvec4 ballot);\n" - "bvec2 subgroupPartitionedAndNV(bvec2, uvec4 ballot);\n" - "bvec3 subgroupPartitionedAndNV(bvec3, uvec4 ballot);\n" - "bvec4 subgroupPartitionedAndNV(bvec4, uvec4 ballot);\n" - - "int subgroupPartitionedOrNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedOrNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedOrNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedOrNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedOrNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedOrNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedOrNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedOrNV(uvec4, uvec4 ballot);\n" - "bool subgroupPartitionedOrNV(bool, uvec4 ballot);\n" - "bvec2 subgroupPartitionedOrNV(bvec2, uvec4 ballot);\n" - "bvec3 subgroupPartitionedOrNV(bvec3, uvec4 ballot);\n" - "bvec4 subgroupPartitionedOrNV(bvec4, uvec4 ballot);\n" - - "int subgroupPartitionedXorNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedXorNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedXorNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedXorNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedXorNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedXorNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedXorNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedXorNV(uvec4, uvec4 ballot);\n" - "bool subgroupPartitionedXorNV(bool, uvec4 ballot);\n" - "bvec2 subgroupPartitionedXorNV(bvec2, uvec4 ballot);\n" - "bvec3 subgroupPartitionedXorNV(bvec3, uvec4 ballot);\n" - "bvec4 subgroupPartitionedXorNV(bvec4, uvec4 ballot);\n" - - "float subgroupPartitionedInclusiveAddNV(float, uvec4 ballot);\n" - "vec2 subgroupPartitionedInclusiveAddNV(vec2, uvec4 ballot);\n" - "vec3 subgroupPartitionedInclusiveAddNV(vec3, uvec4 ballot);\n" - "vec4 subgroupPartitionedInclusiveAddNV(vec4, uvec4 ballot);\n" - "int subgroupPartitionedInclusiveAddNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedInclusiveAddNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedInclusiveAddNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedInclusiveAddNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedInclusiveAddNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedInclusiveAddNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedInclusiveAddNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedInclusiveAddNV(uvec4, uvec4 ballot);\n" - - "float subgroupPartitionedInclusiveMulNV(float, uvec4 ballot);\n" - "vec2 subgroupPartitionedInclusiveMulNV(vec2, uvec4 ballot);\n" - "vec3 subgroupPartitionedInclusiveMulNV(vec3, uvec4 ballot);\n" - "vec4 subgroupPartitionedInclusiveMulNV(vec4, uvec4 ballot);\n" - "int subgroupPartitionedInclusiveMulNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedInclusiveMulNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedInclusiveMulNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedInclusiveMulNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedInclusiveMulNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedInclusiveMulNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedInclusiveMulNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedInclusiveMulNV(uvec4, uvec4 ballot);\n" - - "float subgroupPartitionedInclusiveMinNV(float, uvec4 ballot);\n" - "vec2 subgroupPartitionedInclusiveMinNV(vec2, uvec4 ballot);\n" - "vec3 subgroupPartitionedInclusiveMinNV(vec3, uvec4 ballot);\n" - "vec4 subgroupPartitionedInclusiveMinNV(vec4, uvec4 ballot);\n" - "int subgroupPartitionedInclusiveMinNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedInclusiveMinNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedInclusiveMinNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedInclusiveMinNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedInclusiveMinNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedInclusiveMinNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedInclusiveMinNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedInclusiveMinNV(uvec4, uvec4 ballot);\n" - - "float subgroupPartitionedInclusiveMaxNV(float, uvec4 ballot);\n" - "vec2 subgroupPartitionedInclusiveMaxNV(vec2, uvec4 ballot);\n" - "vec3 subgroupPartitionedInclusiveMaxNV(vec3, uvec4 ballot);\n" - "vec4 subgroupPartitionedInclusiveMaxNV(vec4, uvec4 ballot);\n" - "int subgroupPartitionedInclusiveMaxNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedInclusiveMaxNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedInclusiveMaxNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedInclusiveMaxNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedInclusiveMaxNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedInclusiveMaxNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedInclusiveMaxNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedInclusiveMaxNV(uvec4, uvec4 ballot);\n" - - "int subgroupPartitionedInclusiveAndNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedInclusiveAndNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedInclusiveAndNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedInclusiveAndNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedInclusiveAndNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedInclusiveAndNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedInclusiveAndNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedInclusiveAndNV(uvec4, uvec4 ballot);\n" - "bool subgroupPartitionedInclusiveAndNV(bool, uvec4 ballot);\n" - "bvec2 subgroupPartitionedInclusiveAndNV(bvec2, uvec4 ballot);\n" - "bvec3 subgroupPartitionedInclusiveAndNV(bvec3, uvec4 ballot);\n" - "bvec4 subgroupPartitionedInclusiveAndNV(bvec4, uvec4 ballot);\n" - - "int subgroupPartitionedInclusiveOrNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedInclusiveOrNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedInclusiveOrNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedInclusiveOrNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedInclusiveOrNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedInclusiveOrNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedInclusiveOrNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedInclusiveOrNV(uvec4, uvec4 ballot);\n" - "bool subgroupPartitionedInclusiveOrNV(bool, uvec4 ballot);\n" - "bvec2 subgroupPartitionedInclusiveOrNV(bvec2, uvec4 ballot);\n" - "bvec3 subgroupPartitionedInclusiveOrNV(bvec3, uvec4 ballot);\n" - "bvec4 subgroupPartitionedInclusiveOrNV(bvec4, uvec4 ballot);\n" - - "int subgroupPartitionedInclusiveXorNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedInclusiveXorNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedInclusiveXorNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedInclusiveXorNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedInclusiveXorNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedInclusiveXorNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedInclusiveXorNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedInclusiveXorNV(uvec4, uvec4 ballot);\n" - "bool subgroupPartitionedInclusiveXorNV(bool, uvec4 ballot);\n" - "bvec2 subgroupPartitionedInclusiveXorNV(bvec2, uvec4 ballot);\n" - "bvec3 subgroupPartitionedInclusiveXorNV(bvec3, uvec4 ballot);\n" - "bvec4 subgroupPartitionedInclusiveXorNV(bvec4, uvec4 ballot);\n" - - "float subgroupPartitionedExclusiveAddNV(float, uvec4 ballot);\n" - "vec2 subgroupPartitionedExclusiveAddNV(vec2, uvec4 ballot);\n" - "vec3 subgroupPartitionedExclusiveAddNV(vec3, uvec4 ballot);\n" - "vec4 subgroupPartitionedExclusiveAddNV(vec4, uvec4 ballot);\n" - "int subgroupPartitionedExclusiveAddNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedExclusiveAddNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedExclusiveAddNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedExclusiveAddNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedExclusiveAddNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedExclusiveAddNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedExclusiveAddNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedExclusiveAddNV(uvec4, uvec4 ballot);\n" - - "float subgroupPartitionedExclusiveMulNV(float, uvec4 ballot);\n" - "vec2 subgroupPartitionedExclusiveMulNV(vec2, uvec4 ballot);\n" - "vec3 subgroupPartitionedExclusiveMulNV(vec3, uvec4 ballot);\n" - "vec4 subgroupPartitionedExclusiveMulNV(vec4, uvec4 ballot);\n" - "int subgroupPartitionedExclusiveMulNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedExclusiveMulNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedExclusiveMulNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedExclusiveMulNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedExclusiveMulNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedExclusiveMulNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedExclusiveMulNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedExclusiveMulNV(uvec4, uvec4 ballot);\n" - - "float subgroupPartitionedExclusiveMinNV(float, uvec4 ballot);\n" - "vec2 subgroupPartitionedExclusiveMinNV(vec2, uvec4 ballot);\n" - "vec3 subgroupPartitionedExclusiveMinNV(vec3, uvec4 ballot);\n" - "vec4 subgroupPartitionedExclusiveMinNV(vec4, uvec4 ballot);\n" - "int subgroupPartitionedExclusiveMinNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedExclusiveMinNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedExclusiveMinNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedExclusiveMinNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedExclusiveMinNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedExclusiveMinNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedExclusiveMinNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedExclusiveMinNV(uvec4, uvec4 ballot);\n" - - "float subgroupPartitionedExclusiveMaxNV(float, uvec4 ballot);\n" - "vec2 subgroupPartitionedExclusiveMaxNV(vec2, uvec4 ballot);\n" - "vec3 subgroupPartitionedExclusiveMaxNV(vec3, uvec4 ballot);\n" - "vec4 subgroupPartitionedExclusiveMaxNV(vec4, uvec4 ballot);\n" - "int subgroupPartitionedExclusiveMaxNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedExclusiveMaxNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedExclusiveMaxNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedExclusiveMaxNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedExclusiveMaxNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedExclusiveMaxNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedExclusiveMaxNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedExclusiveMaxNV(uvec4, uvec4 ballot);\n" - - "int subgroupPartitionedExclusiveAndNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedExclusiveAndNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedExclusiveAndNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedExclusiveAndNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedExclusiveAndNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedExclusiveAndNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedExclusiveAndNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedExclusiveAndNV(uvec4, uvec4 ballot);\n" - "bool subgroupPartitionedExclusiveAndNV(bool, uvec4 ballot);\n" - "bvec2 subgroupPartitionedExclusiveAndNV(bvec2, uvec4 ballot);\n" - "bvec3 subgroupPartitionedExclusiveAndNV(bvec3, uvec4 ballot);\n" - "bvec4 subgroupPartitionedExclusiveAndNV(bvec4, uvec4 ballot);\n" - - "int subgroupPartitionedExclusiveOrNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedExclusiveOrNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedExclusiveOrNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedExclusiveOrNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedExclusiveOrNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedExclusiveOrNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedExclusiveOrNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedExclusiveOrNV(uvec4, uvec4 ballot);\n" - "bool subgroupPartitionedExclusiveOrNV(bool, uvec4 ballot);\n" - "bvec2 subgroupPartitionedExclusiveOrNV(bvec2, uvec4 ballot);\n" - "bvec3 subgroupPartitionedExclusiveOrNV(bvec3, uvec4 ballot);\n" - "bvec4 subgroupPartitionedExclusiveOrNV(bvec4, uvec4 ballot);\n" - - "int subgroupPartitionedExclusiveXorNV(int, uvec4 ballot);\n" - "ivec2 subgroupPartitionedExclusiveXorNV(ivec2, uvec4 ballot);\n" - "ivec3 subgroupPartitionedExclusiveXorNV(ivec3, uvec4 ballot);\n" - "ivec4 subgroupPartitionedExclusiveXorNV(ivec4, uvec4 ballot);\n" - "uint subgroupPartitionedExclusiveXorNV(uint, uvec4 ballot);\n" - "uvec2 subgroupPartitionedExclusiveXorNV(uvec2, uvec4 ballot);\n" - "uvec3 subgroupPartitionedExclusiveXorNV(uvec3, uvec4 ballot);\n" - "uvec4 subgroupPartitionedExclusiveXorNV(uvec4, uvec4 ballot);\n" - "bool subgroupPartitionedExclusiveXorNV(bool, uvec4 ballot);\n" - "bvec2 subgroupPartitionedExclusiveXorNV(bvec2, uvec4 ballot);\n" - "bvec3 subgroupPartitionedExclusiveXorNV(bvec3, uvec4 ballot);\n" - "bvec4 subgroupPartitionedExclusiveXorNV(bvec4, uvec4 ballot);\n" - "\n"); - - if (profile != EEsProfile && version >= 400) { - commonBuiltins.append( - "bool subgroupAllEqual(double);\n" - "bool subgroupAllEqual(dvec2);\n" - "bool subgroupAllEqual(dvec3);\n" - "bool subgroupAllEqual(dvec4);\n" - - "double subgroupBroadcast(double, uint);\n" - "dvec2 subgroupBroadcast(dvec2, uint);\n" - "dvec3 subgroupBroadcast(dvec3, uint);\n" - "dvec4 subgroupBroadcast(dvec4, uint);\n" - - "double subgroupBroadcastFirst(double);\n" - "dvec2 subgroupBroadcastFirst(dvec2);\n" - "dvec3 subgroupBroadcastFirst(dvec3);\n" - "dvec4 subgroupBroadcastFirst(dvec4);\n" - - "double subgroupShuffle(double, uint);\n" - "dvec2 subgroupShuffle(dvec2, uint);\n" - "dvec3 subgroupShuffle(dvec3, uint);\n" - "dvec4 subgroupShuffle(dvec4, uint);\n" - - "double subgroupShuffleXor(double, uint);\n" - "dvec2 subgroupShuffleXor(dvec2, uint);\n" - "dvec3 subgroupShuffleXor(dvec3, uint);\n" - "dvec4 subgroupShuffleXor(dvec4, uint);\n" - - "double subgroupShuffleUp(double, uint delta);\n" - "dvec2 subgroupShuffleUp(dvec2, uint delta);\n" - "dvec3 subgroupShuffleUp(dvec3, uint delta);\n" - "dvec4 subgroupShuffleUp(dvec4, uint delta);\n" - - "double subgroupShuffleDown(double, uint delta);\n" - "dvec2 subgroupShuffleDown(dvec2, uint delta);\n" - "dvec3 subgroupShuffleDown(dvec3, uint delta);\n" - "dvec4 subgroupShuffleDown(dvec4, uint delta);\n" - - "double subgroupAdd(double);\n" - "dvec2 subgroupAdd(dvec2);\n" - "dvec3 subgroupAdd(dvec3);\n" - "dvec4 subgroupAdd(dvec4);\n" - - "double subgroupMul(double);\n" - "dvec2 subgroupMul(dvec2);\n" - "dvec3 subgroupMul(dvec3);\n" - "dvec4 subgroupMul(dvec4);\n" - - "double subgroupMin(double);\n" - "dvec2 subgroupMin(dvec2);\n" - "dvec3 subgroupMin(dvec3);\n" - "dvec4 subgroupMin(dvec4);\n" - - "double subgroupMax(double);\n" - "dvec2 subgroupMax(dvec2);\n" - "dvec3 subgroupMax(dvec3);\n" - "dvec4 subgroupMax(dvec4);\n" - - "double subgroupInclusiveAdd(double);\n" - "dvec2 subgroupInclusiveAdd(dvec2);\n" - "dvec3 subgroupInclusiveAdd(dvec3);\n" - "dvec4 subgroupInclusiveAdd(dvec4);\n" - - "double subgroupInclusiveMul(double);\n" - "dvec2 subgroupInclusiveMul(dvec2);\n" - "dvec3 subgroupInclusiveMul(dvec3);\n" - "dvec4 subgroupInclusiveMul(dvec4);\n" - - "double subgroupInclusiveMin(double);\n" - "dvec2 subgroupInclusiveMin(dvec2);\n" - "dvec3 subgroupInclusiveMin(dvec3);\n" - "dvec4 subgroupInclusiveMin(dvec4);\n" - - "double subgroupInclusiveMax(double);\n" - "dvec2 subgroupInclusiveMax(dvec2);\n" - "dvec3 subgroupInclusiveMax(dvec3);\n" - "dvec4 subgroupInclusiveMax(dvec4);\n" - - "double subgroupExclusiveAdd(double);\n" - "dvec2 subgroupExclusiveAdd(dvec2);\n" - "dvec3 subgroupExclusiveAdd(dvec3);\n" - "dvec4 subgroupExclusiveAdd(dvec4);\n" - - "double subgroupExclusiveMul(double);\n" - "dvec2 subgroupExclusiveMul(dvec2);\n" - "dvec3 subgroupExclusiveMul(dvec3);\n" - "dvec4 subgroupExclusiveMul(dvec4);\n" - - "double subgroupExclusiveMin(double);\n" - "dvec2 subgroupExclusiveMin(dvec2);\n" - "dvec3 subgroupExclusiveMin(dvec3);\n" - "dvec4 subgroupExclusiveMin(dvec4);\n" - - "double subgroupExclusiveMax(double);\n" - "dvec2 subgroupExclusiveMax(dvec2);\n" - "dvec3 subgroupExclusiveMax(dvec3);\n" - "dvec4 subgroupExclusiveMax(dvec4);\n" - - "double subgroupClusteredAdd(double, uint);\n" - "dvec2 subgroupClusteredAdd(dvec2, uint);\n" - "dvec3 subgroupClusteredAdd(dvec3, uint);\n" - "dvec4 subgroupClusteredAdd(dvec4, uint);\n" - - "double subgroupClusteredMul(double, uint);\n" - "dvec2 subgroupClusteredMul(dvec2, uint);\n" - "dvec3 subgroupClusteredMul(dvec3, uint);\n" - "dvec4 subgroupClusteredMul(dvec4, uint);\n" - - "double subgroupClusteredMin(double, uint);\n" - "dvec2 subgroupClusteredMin(dvec2, uint);\n" - "dvec3 subgroupClusteredMin(dvec3, uint);\n" - "dvec4 subgroupClusteredMin(dvec4, uint);\n" - - "double subgroupClusteredMax(double, uint);\n" - "dvec2 subgroupClusteredMax(dvec2, uint);\n" - "dvec3 subgroupClusteredMax(dvec3, uint);\n" - "dvec4 subgroupClusteredMax(dvec4, uint);\n" - - "double subgroupQuadBroadcast(double, uint);\n" - "dvec2 subgroupQuadBroadcast(dvec2, uint);\n" - "dvec3 subgroupQuadBroadcast(dvec3, uint);\n" - "dvec4 subgroupQuadBroadcast(dvec4, uint);\n" - - "double subgroupQuadSwapHorizontal(double);\n" - "dvec2 subgroupQuadSwapHorizontal(dvec2);\n" - "dvec3 subgroupQuadSwapHorizontal(dvec3);\n" - "dvec4 subgroupQuadSwapHorizontal(dvec4);\n" - - "double subgroupQuadSwapVertical(double);\n" - "dvec2 subgroupQuadSwapVertical(dvec2);\n" - "dvec3 subgroupQuadSwapVertical(dvec3);\n" - "dvec4 subgroupQuadSwapVertical(dvec4);\n" - - "double subgroupQuadSwapDiagonal(double);\n" - "dvec2 subgroupQuadSwapDiagonal(dvec2);\n" - "dvec3 subgroupQuadSwapDiagonal(dvec3);\n" - "dvec4 subgroupQuadSwapDiagonal(dvec4);\n" - - "uvec4 subgroupPartitionNV(double);\n" - "uvec4 subgroupPartitionNV(dvec2);\n" - "uvec4 subgroupPartitionNV(dvec3);\n" - "uvec4 subgroupPartitionNV(dvec4);\n" - - "double subgroupPartitionedAddNV(double, uvec4 ballot);\n" - "dvec2 subgroupPartitionedAddNV(dvec2, uvec4 ballot);\n" - "dvec3 subgroupPartitionedAddNV(dvec3, uvec4 ballot);\n" - "dvec4 subgroupPartitionedAddNV(dvec4, uvec4 ballot);\n" - - "double subgroupPartitionedMulNV(double, uvec4 ballot);\n" - "dvec2 subgroupPartitionedMulNV(dvec2, uvec4 ballot);\n" - "dvec3 subgroupPartitionedMulNV(dvec3, uvec4 ballot);\n" - "dvec4 subgroupPartitionedMulNV(dvec4, uvec4 ballot);\n" - - "double subgroupPartitionedMinNV(double, uvec4 ballot);\n" - "dvec2 subgroupPartitionedMinNV(dvec2, uvec4 ballot);\n" - "dvec3 subgroupPartitionedMinNV(dvec3, uvec4 ballot);\n" - "dvec4 subgroupPartitionedMinNV(dvec4, uvec4 ballot);\n" - - "double subgroupPartitionedMaxNV(double, uvec4 ballot);\n" - "dvec2 subgroupPartitionedMaxNV(dvec2, uvec4 ballot);\n" - "dvec3 subgroupPartitionedMaxNV(dvec3, uvec4 ballot);\n" - "dvec4 subgroupPartitionedMaxNV(dvec4, uvec4 ballot);\n" - - "double subgroupPartitionedInclusiveAddNV(double, uvec4 ballot);\n" - "dvec2 subgroupPartitionedInclusiveAddNV(dvec2, uvec4 ballot);\n" - "dvec3 subgroupPartitionedInclusiveAddNV(dvec3, uvec4 ballot);\n" - "dvec4 subgroupPartitionedInclusiveAddNV(dvec4, uvec4 ballot);\n" - - "double subgroupPartitionedInclusiveMulNV(double, uvec4 ballot);\n" - "dvec2 subgroupPartitionedInclusiveMulNV(dvec2, uvec4 ballot);\n" - "dvec3 subgroupPartitionedInclusiveMulNV(dvec3, uvec4 ballot);\n" - "dvec4 subgroupPartitionedInclusiveMulNV(dvec4, uvec4 ballot);\n" - - "double subgroupPartitionedInclusiveMinNV(double, uvec4 ballot);\n" - "dvec2 subgroupPartitionedInclusiveMinNV(dvec2, uvec4 ballot);\n" - "dvec3 subgroupPartitionedInclusiveMinNV(dvec3, uvec4 ballot);\n" - "dvec4 subgroupPartitionedInclusiveMinNV(dvec4, uvec4 ballot);\n" - - "double subgroupPartitionedInclusiveMaxNV(double, uvec4 ballot);\n" - "dvec2 subgroupPartitionedInclusiveMaxNV(dvec2, uvec4 ballot);\n" - "dvec3 subgroupPartitionedInclusiveMaxNV(dvec3, uvec4 ballot);\n" - "dvec4 subgroupPartitionedInclusiveMaxNV(dvec4, uvec4 ballot);\n" - - "double subgroupPartitionedExclusiveAddNV(double, uvec4 ballot);\n" - "dvec2 subgroupPartitionedExclusiveAddNV(dvec2, uvec4 ballot);\n" - "dvec3 subgroupPartitionedExclusiveAddNV(dvec3, uvec4 ballot);\n" - "dvec4 subgroupPartitionedExclusiveAddNV(dvec4, uvec4 ballot);\n" - - "double subgroupPartitionedExclusiveMulNV(double, uvec4 ballot);\n" - "dvec2 subgroupPartitionedExclusiveMulNV(dvec2, uvec4 ballot);\n" - "dvec3 subgroupPartitionedExclusiveMulNV(dvec3, uvec4 ballot);\n" - "dvec4 subgroupPartitionedExclusiveMulNV(dvec4, uvec4 ballot);\n" - - "double subgroupPartitionedExclusiveMinNV(double, uvec4 ballot);\n" - "dvec2 subgroupPartitionedExclusiveMinNV(dvec2, uvec4 ballot);\n" - "dvec3 subgroupPartitionedExclusiveMinNV(dvec3, uvec4 ballot);\n" - "dvec4 subgroupPartitionedExclusiveMinNV(dvec4, uvec4 ballot);\n" - - "double subgroupPartitionedExclusiveMaxNV(double, uvec4 ballot);\n" - "dvec2 subgroupPartitionedExclusiveMaxNV(dvec2, uvec4 ballot);\n" - "dvec3 subgroupPartitionedExclusiveMaxNV(dvec3, uvec4 ballot);\n" - "dvec4 subgroupPartitionedExclusiveMaxNV(dvec4, uvec4 ballot);\n" - - "\n"); + ); + + // Generate all flavors of subgroup ops. + static const char *subgroupOps[] = + { + "bool subgroupAllEqual(%s);\n", + "%s subgroupBroadcast(%s, uint);\n", + "%s subgroupBroadcastFirst(%s);\n", + "%s subgroupShuffle(%s, uint);\n", + "%s subgroupShuffleXor(%s, uint);\n", + "%s subgroupShuffleUp(%s, uint delta);\n", + "%s subgroupShuffleDown(%s, uint delta);\n", + "%s subgroupAdd(%s);\n", + "%s subgroupMul(%s);\n", + "%s subgroupMin(%s);\n", + "%s subgroupMax(%s);\n", + "%s subgroupAnd(%s);\n", + "%s subgroupOr(%s);\n", + "%s subgroupXor(%s);\n", + "%s subgroupInclusiveAdd(%s);\n", + "%s subgroupInclusiveMul(%s);\n", + "%s subgroupInclusiveMin(%s);\n", + "%s subgroupInclusiveMax(%s);\n", + "%s subgroupInclusiveAnd(%s);\n", + "%s subgroupInclusiveOr(%s);\n", + "%s subgroupInclusiveXor(%s);\n", + "%s subgroupExclusiveAdd(%s);\n", + "%s subgroupExclusiveMul(%s);\n", + "%s subgroupExclusiveMin(%s);\n", + "%s subgroupExclusiveMax(%s);\n", + "%s subgroupExclusiveAnd(%s);\n", + "%s subgroupExclusiveOr(%s);\n", + "%s subgroupExclusiveXor(%s);\n", + "%s subgroupClusteredAdd(%s, uint);\n", + "%s subgroupClusteredMul(%s, uint);\n", + "%s subgroupClusteredMin(%s, uint);\n", + "%s subgroupClusteredMax(%s, uint);\n", + "%s subgroupClusteredAnd(%s, uint);\n", + "%s subgroupClusteredOr(%s, uint);\n", + "%s subgroupClusteredXor(%s, uint);\n", + "%s subgroupQuadBroadcast(%s, uint);\n", + "%s subgroupQuadSwapHorizontal(%s);\n", + "%s subgroupQuadSwapVertical(%s);\n", + "%s subgroupQuadSwapDiagonal(%s);\n", + "uvec4 subgroupPartitionNV(%s);\n", + "%s subgroupPartitionedAddNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedMulNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedMinNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedMaxNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedAndNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedOrNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedXorNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedInclusiveAddNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedInclusiveMulNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedInclusiveMinNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedInclusiveMaxNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedInclusiveAndNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedInclusiveOrNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedInclusiveXorNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedExclusiveAddNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedExclusiveMulNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedExclusiveMinNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedExclusiveMaxNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedExclusiveAndNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedExclusiveOrNV(%s, uvec4 ballot);\n", + "%s subgroupPartitionedExclusiveXorNV(%s, uvec4 ballot);\n", + }; + + static const char *floatTypes[] = { + "float", "vec2", "vec3", "vec4", + "float16_t", "f16vec2", "f16vec3", "f16vec4", + }; + static const char *doubleTypes[] = { + "double", "dvec2", "dvec3", "dvec4", + }; + static const char *intTypes[] = { + "int8_t", "i8vec2", "i8vec3", "i8vec4", + "int16_t", "i16vec2", "i16vec3", "i16vec4", + "int", "ivec2", "ivec3", "ivec4", + "int64_t", "i64vec2", "i64vec3", "i64vec4", + "uint8_t", "u8vec2", "u8vec3", "u8vec4", + "uint16_t", "u16vec2", "u16vec3", "u16vec4", + "uint", "uvec2", "uvec3", "uvec4", + "uint64_t", "u64vec2", "u64vec3", "u64vec4", + }; + static const char *boolTypes[] = { + "bool", "bvec2", "bvec3", "bvec4", + }; + + for (size_t i = 0; i < sizeof(subgroupOps)/sizeof(subgroupOps[0]); ++i) { + const char *op = subgroupOps[i]; + + // Logical operations don't support float + bool logicalOp = strstr(op, "Or") || strstr(op, "And") || + (strstr(op, "Xor") && !strstr(op, "ShuffleXor")); + // Math operations don't support bool + bool mathOp = strstr(op, "Add") || strstr(op, "Mul") || strstr(op, "Min") || strstr(op, "Max"); + + const int bufSize = 256; + char buf[bufSize]; + + if (!logicalOp) { + for (size_t j = 0; j < sizeof(floatTypes)/sizeof(floatTypes[0]); ++j) { + snprintf(buf, bufSize, op, floatTypes[j], floatTypes[j]); + commonBuiltins.append(buf); + } + if (profile != EEsProfile && version >= 400) { + for (size_t j = 0; j < sizeof(doubleTypes)/sizeof(doubleTypes[0]); ++j) { + snprintf(buf, bufSize, op, doubleTypes[j], doubleTypes[j]); + commonBuiltins.append(buf); + } + } } + if (!mathOp) { + for (size_t j = 0; j < sizeof(boolTypes)/sizeof(boolTypes[0]); ++j) { + snprintf(buf, bufSize, op, boolTypes[j], boolTypes[j]); + commonBuiltins.append(buf); + } + } + for (size_t j = 0; j < sizeof(intTypes)/sizeof(intTypes[0]); ++j) { + snprintf(buf, bufSize, op, intTypes[j], intTypes[j]); + commonBuiltins.append(buf); + } + } stageBuiltins[EShLangCompute].append( "void subgroupMemoryBarrierShared();" diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index c6943918..39918307 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -2202,6 +2202,30 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan // these require SPIR-V 1.3 if (spvVersion.spv > 0 && spvVersion.spv < EShTargetSpv_1_3) error(loc, "requires SPIR-V 1.3", "subgroup op", ""); + + // Check that if extended types are being used that the correct extensions are enabled. + if (arg0 != nullptr) { + const TType& type = arg0->getType(); + switch (type.getBasicType()) { + default: + break; + case EbtInt8: + case EbtUint8: + requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_int8, type.getCompleteString().c_str()); + break; + case EbtInt16: + case EbtUint16: + requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_int16, type.getCompleteString().c_str()); + break; + case EbtInt64: + case EbtUint64: + requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_int64, type.getCompleteString().c_str()); + break; + case EbtFloat16: + requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_float16, type.getCompleteString().c_str()); + break; + } + } } } diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index eb1314a6..df053b0d 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -300,6 +300,12 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_EXT_shader_explicit_arithmetic_types_float16] = EBhDisable; extensionBehavior[E_GL_EXT_shader_explicit_arithmetic_types_float32] = EBhDisable; extensionBehavior[E_GL_EXT_shader_explicit_arithmetic_types_float64] = EBhDisable; + + // subgroup extended types + extensionBehavior[E_GL_EXT_shader_subgroup_extended_types_int8] = EBhDisable; + extensionBehavior[E_GL_EXT_shader_subgroup_extended_types_int16] = EBhDisable; + extensionBehavior[E_GL_EXT_shader_subgroup_extended_types_int64] = EBhDisable; + extensionBehavior[E_GL_EXT_shader_subgroup_extended_types_float16] = EBhDisable; } #endif // GLSLANG_WEB @@ -447,6 +453,11 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_EXT_shader_explicit_arithmetic_types_float16 1\n" "#define GL_EXT_shader_explicit_arithmetic_types_float32 1\n" "#define GL_EXT_shader_explicit_arithmetic_types_float64 1\n" + + "#define GL_EXT_shader_subgroup_extended_types_int8 1\n" + "#define GL_EXT_shader_subgroup_extended_types_int16 1\n" + "#define GL_EXT_shader_subgroup_extended_types_int64 1\n" + "#define GL_EXT_shader_subgroup_extended_types_float16 1\n" ; if (version >= 150) { @@ -826,6 +837,15 @@ void TParseVersions::updateExtensionBehavior(int line, const char* extension, co updateExtensionBehavior(line, "GL_EXT_buffer_reference", behaviorString); else if (strcmp(extension, "GL_NV_integer_cooperative_matrix") == 0) updateExtensionBehavior(line, "GL_NV_cooperative_matrix", behaviorString); + // subgroup extended types to explicit types + else if (strcmp(extension, "GL_EXT_shader_subgroup_extended_types_int8") == 0) + updateExtensionBehavior(line, "GL_EXT_shader_explicit_arithmetic_types_int8", behaviorString); + else if (strcmp(extension, "GL_EXT_shader_subgroup_extended_types_int16") == 0) + updateExtensionBehavior(line, "GL_EXT_shader_explicit_arithmetic_types_int16", behaviorString); + else if (strcmp(extension, "GL_EXT_shader_subgroup_extended_types_int64") == 0) + updateExtensionBehavior(line, "GL_EXT_shader_explicit_arithmetic_types_int64", behaviorString); + else if (strcmp(extension, "GL_EXT_shader_subgroup_extended_types_float16") == 0) + updateExtensionBehavior(line, "GL_EXT_shader_explicit_arithmetic_types_float16", behaviorString); } void TParseVersions::updateExtensionBehavior(const char* extension, TExtensionBehavior behavior) diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index 9535c891..05ba5d75 100644 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -257,7 +257,7 @@ const char* const E_GL_OES_tessellation_point_size = "GL_OES_tessel const char* const E_GL_OES_texture_buffer = "GL_OES_texture_buffer"; const char* const E_GL_OES_texture_cube_map_array = "GL_OES_texture_cube_map_array"; -// KHX +// EXT const char* const E_GL_EXT_shader_explicit_arithmetic_types = "GL_EXT_shader_explicit_arithmetic_types"; const char* const E_GL_EXT_shader_explicit_arithmetic_types_int8 = "GL_EXT_shader_explicit_arithmetic_types_int8"; const char* const E_GL_EXT_shader_explicit_arithmetic_types_int16 = "GL_EXT_shader_explicit_arithmetic_types_int16"; @@ -267,6 +267,11 @@ const char* const E_GL_EXT_shader_explicit_arithmetic_types_float16 = "GL_EXT_s const char* const E_GL_EXT_shader_explicit_arithmetic_types_float32 = "GL_EXT_shader_explicit_arithmetic_types_float32"; const char* const E_GL_EXT_shader_explicit_arithmetic_types_float64 = "GL_EXT_shader_explicit_arithmetic_types_float64"; +const char* const E_GL_EXT_shader_subgroup_extended_types_int8 = "GL_EXT_shader_subgroup_extended_types_int8"; +const char* const E_GL_EXT_shader_subgroup_extended_types_int16 = "GL_EXT_shader_subgroup_extended_types_int16"; +const char* const E_GL_EXT_shader_subgroup_extended_types_int64 = "GL_EXT_shader_subgroup_extended_types_int64"; +const char* const E_GL_EXT_shader_subgroup_extended_types_float16 = "GL_EXT_shader_subgroup_extended_types_float16"; + // Arrays of extensions for the above AEP duplications const char* const AEP_geometry_shader[] = { E_GL_EXT_geometry_shader, E_GL_OES_geometry_shader }; diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index d12d39ac..7ec1e40d 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -459,6 +459,22 @@ INSTANTIATE_TEST_CASE_P( "spv.subgroupShuffleRelative.comp", "spv.subgroupQuad.comp", "spv.subgroupVote.comp", + "spv.subgroupExtendedTypesArithmetic.comp", + "spv.subgroupExtendedTypesArithmeticNeg.comp", + "spv.subgroupExtendedTypesBallot.comp", + "spv.subgroupExtendedTypesBallotNeg.comp", + "spv.subgroupExtendedTypesClustered.comp", + "spv.subgroupExtendedTypesClusteredNeg.comp", + "spv.subgroupExtendedTypesPartitioned.comp", + "spv.subgroupExtendedTypesPartitionedNeg.comp", + "spv.subgroupExtendedTypesShuffle.comp", + "spv.subgroupExtendedTypesShuffleNeg.comp", + "spv.subgroupExtendedTypesShuffleRelative.comp", + "spv.subgroupExtendedTypesShuffleRelativeNeg.comp", + "spv.subgroupExtendedTypesQuad.comp", + "spv.subgroupExtendedTypesQuadNeg.comp", + "spv.subgroupExtendedTypesVote.comp", + "spv.subgroupExtendedTypesVoteNeg.comp", "spv.vulkan110.storageBuffer.vert", })), FileNameAsCustomTestSuffix From f4b2ba2c270bed90d1644187914b6ef922f0dcf1 Mon Sep 17 00:00:00 2001 From: Chow Date: Wed, 18 Sep 2019 14:04:29 +0800 Subject: [PATCH 17/94] Reflection will crash when the VS input symbol defines the same name with FS output symbol [PURPOSE]: The current process design for Uniform / Block / Pipe IO symbols reflection (during program linking) is as following : 1.1 using a global mapper called 'TNameToIndex' to store all the relationship of name (of symbols) to their indexes (in their own MapIndexToReflection vectors). 1.2 TNameToIndex mapper will be used during program linking and helps to check and merge duplicate symbols within each stage ( Uniform, Block and Pipe IO) 1.3 Different types of symbols will have their own index mapping storage. All those symbols will share TNameToIndex as a general searching mapper. 1.4 Only IN in first stage and OUT in last stage will be dealed within traversing functions. Now, here we meet those problems: 2.1 In and Out variables for pipelines are mapping to different MapIndexToReflection vector (ioItems), but they may still have same names within the general symbol search mapper : TNameToIndex. 2.2 Then, when there are same symbols of IN in VS and OUT in FS, TNameToIndex could not tell the difference because it only stores one local index for one symbol (1:1) as a pair of KeyValue. [What fixed]: Seperate I/O from other symbols like Uniform and Block (it is wrong to keep them all in TNameToIndex), and save in new searching mappers called pipeInNameToIndex and pipeOutNameToIndex. Expose new top-level functions defined as getReflectionPipeIOIndex and getPipeIOIndex for users who need to query Pipe I/O information (As they may reach those things through getUniformIndex and getReflectionIndex now, which is a confused way.) As there are 2 mappers for above symbols, users needs to input second argument when they wanna reach those pipe I/O parameters, that's also why we need to modify GET functions either. [Test Case]: The shader is as following: ######### VS ############ layout(location = 0) in vec4 g_position; layout(location = 1) in vec4 g_color; out StageData { vec4 color; } g_vs_out; void main() { gl_Position = g_position; g_vs_out.color = g_color; } ########### FS ############# in StageData { vec4 color; } g_fs_in; layout(location = 0) out vec4 g_color; void main() { g_color = g_fs_in.color; } --- glslang/MachineIndependent/ShaderLang.cpp | 3 +++ glslang/MachineIndependent/reflection.cpp | 13 +++++++++---- glslang/MachineIndependent/reflection.h | 16 ++++++++++++++++ glslang/Public/ShaderLang.h | 4 ++++ 4 files changed, 32 insertions(+), 4 deletions(-) diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index f63305e1..9b3cdc6d 100755 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -2048,6 +2048,9 @@ bool TProgram::buildReflection(int opts) unsigned TProgram::getLocalSize(int dim) const { return reflection->getLocalSize(dim); } int TProgram::getReflectionIndex(const char* name) const { return reflection->getIndex(name); } +int TProgram::getReflectionPipeIOIndex(const char* name, const bool inOrOut) const + { return reflection->getPipeIOIndex(name, inOrOut); } + int TProgram::getNumUniformVariables() const { return reflection->getNumUniforms(); } const TObjectReflection& TProgram::getUniform(int index) const { return reflection->getUniform(index); } int TProgram::getNumUniformBlocks() const { return reflection->getNumUniformBlocks(); } diff --git a/glslang/MachineIndependent/reflection.cpp b/glslang/MachineIndependent/reflection.cpp index f2be2ff1..9f1089de 100644 --- a/glslang/MachineIndependent/reflection.cpp +++ b/glslang/MachineIndependent/reflection.cpp @@ -112,6 +112,10 @@ public: TReflection::TMapIndexToReflection &ioItems = input ? reflection.indexToPipeInput : reflection.indexToPipeOutput; + + TReflection::TNameToIndex &ioMapper = + input ? reflection.pipeInNameToIndex : reflection.pipeOutNameToIndex; + if (reflection.options & EShReflectionUnwrapIOBlocks) { bool anonymous = IsAnonymous(name); @@ -129,12 +133,13 @@ public: blowUpIOAggregate(input, baseName, type); } } else { - TReflection::TNameToIndex::const_iterator it = reflection.nameToIndex.find(name.c_str()); - if (it == reflection.nameToIndex.end()) { - reflection.nameToIndex[name.c_str()] = (int)ioItems.size(); + TReflection::TNameToIndex::const_iterator it = ioMapper.find(name.c_str()); + if (it == ioMapper.end()) { + // seperate pipe i/o params from uniforms and blocks + // in is only for input in first stage as out is only for last stage. check traverse in call stack. + ioMapper[name.c_str()] = ioItems.size(); ioItems.push_back( TObjectReflection(name.c_str(), type, 0, mapToGlType(type), mapToGlArraySize(type), 0)); - EShLanguageMask& stages = ioItems.back().stages; stages = static_cast(stages | 1 << intermediate.getStage()); } else { diff --git a/glslang/MachineIndependent/reflection.h b/glslang/MachineIndependent/reflection.h index e3561a9d..efdc8934 100644 --- a/glslang/MachineIndependent/reflection.h +++ b/glslang/MachineIndependent/reflection.h @@ -152,6 +152,20 @@ public: // see getIndex(const char*) int getIndex(const TString& name) const { return getIndex(name.c_str()); } + + // for mapping any name to its index (only pipe input/output names) + int getPipeIOIndex(const char* name, const bool inOrOut) const + { + TNameToIndex::const_iterator it = inOrOut ? pipeInNameToIndex.find(name) : pipeOutNameToIndex.find(name); + if (it == (inOrOut ? pipeInNameToIndex.end() : pipeOutNameToIndex.end())) + return -1; + else + return it->second; + } + + // see gePipeIOIndex(const char*, const bool) + int getPipeIOIndex(const TString& name, const bool inOrOut) const { return getPipeIOIndex(name.c_str(), inOrOut); } + // Thread local size unsigned getLocalSize(int dim) const { return dim <= 2 ? localSize[dim] : 0; } @@ -189,6 +203,8 @@ protected: TObjectReflection badReflection; // return for queries of -1 or generally out of range; has expected descriptions with in it for this TNameToIndex nameToIndex; // maps names to indexes; can hold all types of data: uniform/buffer and which function names have been processed + TNameToIndex pipeInNameToIndex; // maps pipe in names to indexes, this is a fix to seperate pipe I/O from uniforms and buffers. + TNameToIndex pipeOutNameToIndex; // maps pipe out names to indexes, this is a fix to seperate pipe I/O from uniforms and buffers. TMapIndexToReflection indexToUniform; TMapIndexToReflection indexToUniformBlock; TMapIndexToReflection indexToBufferVariable; diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index a071d78d..bb06acc0 100755 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -789,6 +789,7 @@ public: bool buildReflection(int opts = EShReflectionDefault); unsigned getLocalSize(int dim) const; // return dim'th local size int getReflectionIndex(const char *name) const; + int getReflectionPipeIOIndex(const char* name, const bool inOrOut) const; int getNumUniformVariables() const; const TObjectReflection& getUniform(int index) const; int getNumUniformBlocks() const; @@ -818,6 +819,9 @@ public: // can be used for glGetUniformIndices() int getUniformIndex(const char *name) const { return getReflectionIndex(name); } + int getPipeIOIndex(const char *name, const bool inOrOut) const + { return getReflectionPipeIOIndex(name, inOrOut); } + // can be used for "name" part of glGetActiveUniform() const char *getUniformName(int index) const { return getUniform(index).name.c_str(); } From 54c72c6d2495bed0ddd489954a95143bfddea0d0 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Wed, 18 Sep 2019 00:03:18 -0600 Subject: [PATCH 18/94] HLSL: Fix #1903 Catch 0-argument case to constructors. --- hlsl/hlslGrammar.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hlsl/hlslGrammar.cpp b/hlsl/hlslGrammar.cpp index 45cf5d59..8ab1a900 100755 --- a/hlsl/hlslGrammar.cpp +++ b/hlsl/hlslGrammar.cpp @@ -3221,6 +3221,11 @@ bool HlslGrammar::acceptConstructor(TIntermTyped*& node) return false; } + if (arguments == nullptr) { + expected("one or more arguments"); + return false; + } + // hook it up node = parseContext.handleFunctionCall(arguments->getLoc(), constructorFunction, arguments); From e0932f676db6e816184376b0e2381344bdfe1a39 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Wed, 18 Sep 2019 00:17:31 -0600 Subject: [PATCH 19/94] README: Fix WASM typos. --- README.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 427cf5a5..c2579097 100755 --- a/README.md +++ b/README.md @@ -166,24 +166,25 @@ when executed from the glslang subdirectory of the glslang repository. With no arguments it builds the full grammar, and with a "web" argument, the web grammar subset (see more about the web subset in the next section). -### WASM for the the Web +### WASM for the Web -Use the steps in [Build Steps](#build-steps), which following notes/exceptions: +Use the steps in [Build Steps](#build-steps), with the following notes/exceptions: * For building the web subset of core glslang: - + `m4` also needs a `-DGLSLANG_WEB` argument, or simply execute `updateGrammar web` from the glslang subdirectory + + execute `updateGrammar web` from the glslang subdirectory + (or if using your own scripts, `m4` needs a `-DGLSLANG_WEB` argument) + turn off the CMAKE options for `BUILD_TESTING`, `ENABLE_OPT`, and `INSTALL_GTEST`, while turning on `ENABLE_GLSLANG_WEB` * `emsdk` needs to be present in your executable search path, *PATH* for Bash-like enivironments - + Instructions located - [here](https://emscripten.org/docs/getting_started/downloads.html#sdk-download-and-install) + + [Instructions located + here](https://emscripten.org/docs/getting_started/downloads.html#sdk-download-and-install) * Do not checkout SPIRV-Tools into `External` + Does not work correctly with emscripten out of the box and we don't want it in the build anyway. *TBD* Have build ignore SPIRV-Tools for web build * Wrap call to `cmake` using `emconfigure` with ENABLE_GLSLANG_WEB=ON: + e.g. For Linux, `emconfigure cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_GLSLANG_WEB=ON -DCMAKE_INSTALL_PREFIX="$(pwd)/install" ..` -* To get a 'true' minimized build, make sure to use `brotli` to compress the .js +* To get a fully minimized build, make sure to use `brotli` to compress the .js and .wasm files Testing From 4391924ac5eaa496aa5efcc94765823e292e8964 Mon Sep 17 00:00:00 2001 From: Kai Ninomiya Date: Tue, 17 Sep 2019 23:08:45 -0700 Subject: [PATCH 20/94] Separate GLSLANG_WEB (min-size build) and Emscripten options Allows building non-min-size builds with Emscripten. Adds ENABLE_GLSLANG_WEB_DEVEL. Moves the glslang.js files to OSDependent/Web. Small cleanups and docs update. --- CMakeLists.txt | 68 +++++++++++--------- README.md | 24 ++++--- glslang/CMakeLists.txt | 17 ++--- glslang/OSDependent/Web/CMakeLists.txt | 10 +++ glslang/{ => OSDependent/Web}/glslang.js.cpp | 11 ++-- glslang/{ => OSDependent/Web}/glslang.pre.js | 0 glslang/updateGrammar | 2 +- 7 files changed, 70 insertions(+), 62 deletions(-) create mode 100644 glslang/OSDependent/Web/CMakeLists.txt rename glslang/{ => OSDependent/Web}/glslang.js.cpp (98%) rename glslang/{ => OSDependent/Web}/glslang.pre.js (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 196194d1..150ae7af 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,9 +28,10 @@ option(ENABLE_SPVREMAPPER "Enables building of SPVRemapper" ON) option(ENABLE_GLSLANG_BINARIES "Builds glslangValidator and spirv-remap" ON) -option(ENABLE_GLSLANG_WEB "Reduces glslang to minumum needed for web use" OFF) -option(ENABLE_EMSCRIPTEN_SINGLE_FILE "If using emscripten, enables SINGLE_FILE build" OFF) -option(ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE "If using emscripten, builds to run on Node instead of Web" OFF) +option(ENABLE_GLSLANG_WEB "Reduces glslang to minimum needed for web use" OFF) +option(ENABLE_GLSLANG_WEB_DEVEL "For ENABLE_GLSLANG_WEB builds, enables compilation error messages" OFF) +option(ENABLE_EMSCRIPTEN_SINGLE_FILE "If using Emscripten, enables SINGLE_FILE build" OFF) +option(ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE "If using Emscripten, builds to run on Node instead of Web" OFF) CMAKE_DEPENDENT_OPTION(ENABLE_HLSL "Enables HLSL input support" ON "NOT ENABLE_GLSLANG_WEB" OFF) @@ -70,6 +71,9 @@ endif(ENABLE_HLSL) if(ENABLE_GLSLANG_WEB) add_definitions(-DGLSLANG_WEB) + if(ENABLE_GLSLANG_WEB_DEVEL) + add_definitions(-DGLSLANG_WEB_DEVEL) + endif(ENABLE_GLSLANG_WEB_DEVEL) endif(ENABLE_GLSLANG_WEB) if(WIN32) @@ -98,38 +102,38 @@ elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "MSVC") add_compile_options(/GR-) # Disable RTTI endif() -if(ENABLE_GLSLANG_WEB) - if(EMSCRIPTEN) - add_compile_options(-Os -fno-exceptions) - add_compile_options("SHELL: -s WASM=1") - add_compile_options("SHELL: -s WASM_OBJECT_FILES=0") - add_link_options(-Os) - add_link_options("SHELL: -s FILESYSTEM=0") - add_link_options("SHELL: --llvm-lto 1") - add_link_options("SHELL: --closure 1") - add_link_options("SHELL: -s ALLOW_MEMORY_GROWTH=1") +if(EMSCRIPTEN) + add_compile_options(-Os -fno-exceptions) + add_compile_options("SHELL: -s WASM=1") + add_compile_options("SHELL: -s WASM_OBJECT_FILES=0") + add_link_options(-Os) + add_link_options("SHELL: -s FILESYSTEM=0") + add_link_options("SHELL: --llvm-lto 1") + add_link_options("SHELL: --closure 1") + add_link_options("SHELL: -s ALLOW_MEMORY_GROWTH=1") - add_link_options("SHELL: -s MODULARIZE=1") - if(ENABLE_EMSCRIPTEN_SINGLE_FILE) - add_link_options("SHELL: -s SINGLE_FILE=1") - endif(ENABLE_EMSCRIPTEN_SINGLE_FILE) + add_link_options("SHELL: -s MODULARIZE=1") + if(ENABLE_EMSCRIPTEN_SINGLE_FILE) + add_link_options("SHELL: -s SINGLE_FILE=1") + endif(ENABLE_EMSCRIPTEN_SINGLE_FILE) - if(ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE) - add_link_options("SHELL: -s ENVIRONMENT=node") - add_link_options("SHELL: -s BINARYEN_ASYNC_COMPILATION=0") - else() - add_link_options("SHELL: -s ENVIRONMENT=web,worker") - add_link_options("SHELL: -s EXPORT_ES6=1") - endif() + if(ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE) + add_link_options("SHELL: -s ENVIRONMENT=node") + add_link_options("SHELL: -s BINARYEN_ASYNC_COMPILATION=0") else() - if(MSVC) - add_compile_options(/Os /GR-) - else() - add_compile_options(-Os -fno-exceptions) - add_link_options(-Os) - endif() - endif(EMSCRIPTEN) -endif(ENABLE_GLSLANG_WEB) + add_link_options("SHELL: -s ENVIRONMENT=web,worker") + add_link_options("SHELL: -s EXPORT_ES6=1") + endif() +else() + if(ENABLE_GLSLANG_WEB) + if(MSVC) + add_compile_options(/Os /GR-) + else() + add_compile_options(-Os -fno-exceptions) + add_link_options(-Os) + endif() + endif(ENABLE_GLSLANG_WEB) +endif(EMSCRIPTEN) # Request C++11 if(${CMAKE_VERSION} VERSION_LESS 3.1) diff --git a/README.md b/README.md index 427cf5a5..886f091a 100755 --- a/README.md +++ b/README.md @@ -166,26 +166,30 @@ when executed from the glslang subdirectory of the glslang repository. With no arguments it builds the full grammar, and with a "web" argument, the web grammar subset (see more about the web subset in the next section). -### WASM for the the Web +### Building to WASM for the Web and Node Use the steps in [Build Steps](#build-steps), which following notes/exceptions: * For building the web subset of core glslang: - + `m4` also needs a `-DGLSLANG_WEB` argument, or simply execute `updateGrammar web` from the glslang subdirectory - + turn off the CMAKE options for `BUILD_TESTING`, `ENABLE_OPT`, and `INSTALL_GTEST`, - while turning on `ENABLE_GLSLANG_WEB` + + update the grammar: run `m4` with `-DGLSLANG_WEB`, or simply execute + `updateGrammar web` from the glslang subdirectory + + set `-DENABLE_HLSL=OFF -DBUILD_TESTING=OFF -DENABLE_OPT=OFF -DINSTALL_GTEST=OFF` + + turn on `-DENABLE_GLSLANG_WEB=ON` + + optionally, for GLSL compilation error messages, turn on `-DENABLE_GLSLANG_WEB_DEVEL=ON` * `emsdk` needs to be present in your executable search path, *PATH* for Bash-like enivironments + Instructions located [here](https://emscripten.org/docs/getting_started/downloads.html#sdk-download-and-install) -* Do not checkout SPIRV-Tools into `External` - + Does not work correctly with emscripten out of the box and we don't want it - in the build anyway. *TBD* Have build ignore SPIRV-Tools for web build -* Wrap call to `cmake` using `emconfigure` with ENABLE_GLSLANG_WEB=ON: - + e.g. For Linux, `emconfigure cmake -DCMAKE_BUILD_TYPE=Release - -DENABLE_GLSLANG_WEB=ON -DCMAKE_INSTALL_PREFIX="$(pwd)/install" ..` +* Wrap cmake call: `emcmake cmake` * To get a 'true' minimized build, make sure to use `brotli` to compress the .js and .wasm files +Example: + +```sh +emcmake cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_GLSLANG_WEB=ON \ + -DENABLE_HLSL=OFF -DBUILD_TESTING=OFF -DENABLE_OPT=OFF -DINSTALL_GTEST=OFF .. +``` + Testing ------- diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt index 73124c56..930893c2 100644 --- a/glslang/CMakeLists.txt +++ b/glslang/CMakeLists.txt @@ -6,6 +6,10 @@ else(WIN32) message("unknown platform") endif(WIN32) +if(EMSCRIPTEN OR ENABLE_GLSLANG_WEB) + add_subdirectory(OSDependent/Web) +endif(EMSCRIPTEN OR ENABLE_GLSLANG_WEB) + set(SOURCES MachineIndependent/glslang.m4 MachineIndependent/glslang.y @@ -114,16 +118,3 @@ if(ENABLE_GLSLANG_INSTALL) install(FILES ${file} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang/${dir}) endforeach() endif(ENABLE_GLSLANG_INSTALL) - -if(ENABLE_GLSLANG_WEB) - add_executable(glslang.js glslang.js.cpp) - glslang_set_link_args(glslang.js) - target_link_libraries(glslang.js glslang SPIRV) - if(EMSCRIPTEN) - set_target_properties(glslang.js PROPERTIES - OUTPUT_NAME "glslang" - SUFFIX ".js" - LINK_FLAGS "--bind -s EXPORT_NAME=\"glslangModule\"") - em_link_pre_js(glslang.js ${CMAKE_CURRENT_SOURCE_DIR}/glslang.pre.js) - endif(EMSCRIPTEN) -endif(ENABLE_GLSLANG_WEB) diff --git a/glslang/OSDependent/Web/CMakeLists.txt b/glslang/OSDependent/Web/CMakeLists.txt new file mode 100644 index 00000000..c73c345f --- /dev/null +++ b/glslang/OSDependent/Web/CMakeLists.txt @@ -0,0 +1,10 @@ +add_executable(glslang.js "glslang.js.cpp") +glslang_set_link_args(glslang.js) +target_link_libraries(glslang.js glslang SPIRV) +if(EMSCRIPTEN) + set_target_properties(glslang.js PROPERTIES + OUTPUT_NAME "glslang" + SUFFIX ".js" + LINK_FLAGS "--bind -s EXPORT_NAME=\"glslangModule\"") + em_link_pre_js(glslang.js "${CMAKE_CURRENT_SOURCE_DIR}/glslang.pre.js") +endif(EMSCRIPTEN) diff --git a/glslang/glslang.js.cpp b/glslang/OSDependent/Web/glslang.js.cpp similarity index 98% rename from glslang/glslang.js.cpp rename to glslang/OSDependent/Web/glslang.js.cpp index 45b3d3f6..6cb93fe2 100644 --- a/glslang/glslang.js.cpp +++ b/glslang/OSDependent/Web/glslang.js.cpp @@ -35,17 +35,16 @@ #include #include +#include #ifdef __EMSCRIPTEN__ #include -#endif // __EMSCRIPTEN__ -#include +#endif -#include "../SPIRV/GlslangToSpv.h" -#include "../SPIRV/doc.h" -#include "./../glslang/Public/ShaderLang.h" +#include "../../../SPIRV/GlslangToSpv.h" +#include "../../../glslang/Public/ShaderLang.h" -#ifndef EMSCRIPTEN_KEEPALIVE +#ifndef __EMSCRIPTEN__ #define EMSCRIPTEN_KEEPALIVE #endif diff --git a/glslang/glslang.pre.js b/glslang/OSDependent/Web/glslang.pre.js similarity index 100% rename from glslang/glslang.pre.js rename to glslang/OSDependent/Web/glslang.pre.js diff --git a/glslang/updateGrammar b/glslang/updateGrammar index 37794587..9384db94 100755 --- a/glslang/updateGrammar +++ b/glslang/updateGrammar @@ -1,4 +1,4 @@ -#!/usr/bin/bash +#!/bin/bash if [ "$1" = 'web' ] then From 230117a02cc1996242d8a718980e754fca2fac55 Mon Sep 17 00:00:00 2001 From: Kai Ninomiya Date: Tue, 17 Sep 2019 23:53:30 -0700 Subject: [PATCH 21/94] use custom es6 modularization instead of MODULARIZE=1 --- CMakeLists.txt | 9 -------- glslang/OSDependent/Web/CMakeLists.txt | 18 ++++++++++++++-- glslang/OSDependent/Web/glslang.after.js | 26 ++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 11 deletions(-) create mode 100644 glslang/OSDependent/Web/glslang.after.js diff --git a/CMakeLists.txt b/CMakeLists.txt index 150ae7af..c2adeb03 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -112,18 +112,9 @@ if(EMSCRIPTEN) add_link_options("SHELL: --closure 1") add_link_options("SHELL: -s ALLOW_MEMORY_GROWTH=1") - add_link_options("SHELL: -s MODULARIZE=1") if(ENABLE_EMSCRIPTEN_SINGLE_FILE) add_link_options("SHELL: -s SINGLE_FILE=1") endif(ENABLE_EMSCRIPTEN_SINGLE_FILE) - - if(ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE) - add_link_options("SHELL: -s ENVIRONMENT=node") - add_link_options("SHELL: -s BINARYEN_ASYNC_COMPILATION=0") - else() - add_link_options("SHELL: -s ENVIRONMENT=web,worker") - add_link_options("SHELL: -s EXPORT_ES6=1") - endif() else() if(ENABLE_GLSLANG_WEB) if(MSVC) diff --git a/glslang/OSDependent/Web/CMakeLists.txt b/glslang/OSDependent/Web/CMakeLists.txt index c73c345f..e8238c35 100644 --- a/glslang/OSDependent/Web/CMakeLists.txt +++ b/glslang/OSDependent/Web/CMakeLists.txt @@ -4,7 +4,21 @@ target_link_libraries(glslang.js glslang SPIRV) if(EMSCRIPTEN) set_target_properties(glslang.js PROPERTIES OUTPUT_NAME "glslang" - SUFFIX ".js" - LINK_FLAGS "--bind -s EXPORT_NAME=\"glslangModule\"") + SUFFIX ".js") em_link_pre_js(glslang.js "${CMAKE_CURRENT_SOURCE_DIR}/glslang.pre.js") + + target_link_options(glslang.js PRIVATE + "SHELL:--bind -s MODULARIZE=1") + if(ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE) + target_link_options(glslang.js PRIVATE + "SHELL:-s ENVIRONMENT=node -s BINARYEN_ASYNC_COMPILATION=0") + else() + target_link_options(glslang.js PRIVATE + "SHELL:-s ENVIRONMENT=web,worker") + endif() + + if(NOT ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE) + 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) diff --git a/glslang/OSDependent/Web/glslang.after.js b/glslang/OSDependent/Web/glslang.after.js new file mode 100644 index 00000000..c2cfc35a --- /dev/null +++ b/glslang/OSDependent/Web/glslang.after.js @@ -0,0 +1,26 @@ +export default (() => { + const initialize = () => { + return new Promise(resolve => { + Module({ + locateFile() { + const i = import.meta.url.lastIndexOf('/') + return import.meta.url.substring(0, i) + '/glslang.wasm'; + }, + onRuntimeInitialized() { + resolve({ + compileGLSLZeroCopy: this.compileGLSLZeroCopy, + compileGLSL: this.compileGLSL, + }); + }, + }); + }); + }; + + let instance; + return () => { + if (!instance) { + instance = initialize(); + } + return instance; + }; +})(); From 9d43c7f393d607e0b704170ac2202ac0165267dc Mon Sep 17 00:00:00 2001 From: David 'Digit' Turner Date: Mon, 16 Sep 2019 19:13:16 +0200 Subject: [PATCH 22/94] Fix Fuchsia build. The Fuchsia build is very picky about newlines at the end of files and will complain loudly about them. Removing the -Wnewline-eof warning solves the issue. --- BUILD.gn | 1 + 1 file changed, 1 insertion(+) diff --git a/BUILD.gn b/BUILD.gn index be9e1ab9..55f21ad0 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -167,6 +167,7 @@ source_set("glslang_sources") { "-Wno-sign-compare", "-Wno-unused-variable", "-Wno-missing-field-initializers", + "-Wno-newline-eof", ] } if (is_win && !is_clang) { From 90e402f42b3f05f4e1e59390718f35c78e3cfbe0 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Tue, 17 Sep 2019 23:19:38 -0600 Subject: [PATCH 23/94] SPV_KHR_physical_storage_buffer/SPV: Add GL_EXT_buffer_reference_uvec2 Adds uvec2 <-> reference constructor support. Switches from EXT to KHR for physical_storage_buffer. --- SPIRV/GLSL.ext.KHR.h | 2 +- SPIRV/GlslangToSpv.cpp | 6 +- Test/baseResults/spv.bufferhandle1.frag.out | 2 +- Test/baseResults/spv.bufferhandle10.frag.out | 2 +- Test/baseResults/spv.bufferhandle11.frag.out | 2 +- Test/baseResults/spv.bufferhandle12.frag.out | 2 +- Test/baseResults/spv.bufferhandle13.frag.out | 2 +- Test/baseResults/spv.bufferhandle14.frag.out | 2 +- Test/baseResults/spv.bufferhandle15.frag.out | 2 +- Test/baseResults/spv.bufferhandle16.frag.out | 2 +- Test/baseResults/spv.bufferhandle18.frag.out | 2 +- Test/baseResults/spv.bufferhandle2.frag.out | 2 +- Test/baseResults/spv.bufferhandle3.frag.out | 2 +- Test/baseResults/spv.bufferhandle4.frag.out | 2 +- Test/baseResults/spv.bufferhandle5.frag.out | 2 +- Test/baseResults/spv.bufferhandle6.frag.out | 2 +- Test/baseResults/spv.bufferhandle7.frag.out | 2 +- Test/baseResults/spv.bufferhandle8.frag.out | 2 +- Test/baseResults/spv.bufferhandle9.frag.out | 2 +- .../spv.bufferhandleUvec2.frag.out | 133 ++++++++++++++++++ Test/baseResults/spv.coopmat.comp.out | 2 +- Test/baseResults/spv.intcoopmat.comp.out | 2 +- Test/spv.bufferhandleUvec2.frag | 32 +++++ glslang/Include/intermediate.h | 4 + glslang/MachineIndependent/ParseHelper.cpp | 16 ++- glslang/MachineIndependent/Versions.cpp | 5 +- glslang/MachineIndependent/Versions.h | 1 + gtests/Spv.FromFile.cpp | 1 + known_good.json | 4 +- 29 files changed, 217 insertions(+), 25 deletions(-) create mode 100755 Test/baseResults/spv.bufferhandleUvec2.frag.out create mode 100644 Test/spv.bufferhandleUvec2.frag diff --git a/SPIRV/GLSL.ext.KHR.h b/SPIRV/GLSL.ext.KHR.h index 1140bef5..ac26a054 100644 --- a/SPIRV/GLSL.ext.KHR.h +++ b/SPIRV/GLSL.ext.KHR.h @@ -40,7 +40,7 @@ static const char* const E_SPV_KHR_8bit_storage = "SPV_KHR_8bit_ static const char* const E_SPV_KHR_storage_buffer_storage_class = "SPV_KHR_storage_buffer_storage_class"; static const char* const E_SPV_KHR_post_depth_coverage = "SPV_KHR_post_depth_coverage"; static const char* const E_SPV_KHR_vulkan_memory_model = "SPV_KHR_vulkan_memory_model"; -static const char* const E_SPV_EXT_physical_storage_buffer = "SPV_EXT_physical_storage_buffer"; +static const char* const E_SPV_KHR_physical_storage_buffer = "SPV_KHR_physical_storage_buffer"; static const char* const E_SPV_EXT_fragment_shader_interlock = "SPV_EXT_fragment_shader_interlock"; static const char* const E_SPV_KHR_shader_clock = "SPV_KHR_shader_clock"; diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 73689b84..afb405e4 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -1399,7 +1399,7 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, const gl if (glslangIntermediate->usingPhysicalStorageBuffer()) { addressingModel = spv::AddressingModelPhysicalStorageBuffer64EXT; - builder.addIncorporatedExtension(spv::E_SPV_EXT_physical_storage_buffer, spv::Spv_1_5); + builder.addIncorporatedExtension(spv::E_SPV_KHR_physical_storage_buffer, spv::Spv_1_5); builder.addCapability(spv::CapabilityPhysicalStorageBufferAddressesEXT); }; if (glslangIntermediate->usingVulkanMemoryModel()) { @@ -6273,6 +6273,10 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, OpDecora case glslang::EOpConvPtrToUint64: convOp = spv::OpConvertPtrToU; break; + case glslang::EOpConvPtrToUvec2: + case glslang::EOpConvUvec2ToPtr: + convOp = spv::OpBitcast; + break; #endif default: diff --git a/Test/baseResults/spv.bufferhandle1.frag.out b/Test/baseResults/spv.bufferhandle1.frag.out index 6e50c705..8457eaca 100644 --- a/Test/baseResults/spv.bufferhandle1.frag.out +++ b/Test/baseResults/spv.bufferhandle1.frag.out @@ -6,7 +6,7 @@ spv.bufferhandle1.frag Capability Shader Capability VulkanMemoryModelKHR Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_EXT_physical_storage_buffer" + Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" Extension "SPV_KHR_vulkan_memory_model" 1: ExtInstImport "GLSL.std.450" diff --git a/Test/baseResults/spv.bufferhandle10.frag.out b/Test/baseResults/spv.bufferhandle10.frag.out index a95dc719..871b0177 100644 --- a/Test/baseResults/spv.bufferhandle10.frag.out +++ b/Test/baseResults/spv.bufferhandle10.frag.out @@ -6,7 +6,7 @@ spv.bufferhandle10.frag Capability Shader Capability VulkanMemoryModelKHR Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_EXT_physical_storage_buffer" + Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" Extension "SPV_KHR_vulkan_memory_model" 1: ExtInstImport "GLSL.std.450" diff --git a/Test/baseResults/spv.bufferhandle11.frag.out b/Test/baseResults/spv.bufferhandle11.frag.out index 3469715b..6f3cbe15 100644 --- a/Test/baseResults/spv.bufferhandle11.frag.out +++ b/Test/baseResults/spv.bufferhandle11.frag.out @@ -9,8 +9,8 @@ WARNING: 0:6: '' : all default precisions are highp; use precision statements to Capability Shader Capability StorageBuffer8BitAccess Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_EXT_physical_storage_buffer" Extension "SPV_KHR_8bit_storage" + Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 diff --git a/Test/baseResults/spv.bufferhandle12.frag.out b/Test/baseResults/spv.bufferhandle12.frag.out index 6c20f02c..1808c5fa 100644 --- a/Test/baseResults/spv.bufferhandle12.frag.out +++ b/Test/baseResults/spv.bufferhandle12.frag.out @@ -9,8 +9,8 @@ WARNING: 0:6: '' : all default precisions are highp; use precision statements to Capability Shader Capability StorageUniformBufferBlock16 Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_EXT_physical_storage_buffer" Extension "SPV_KHR_16bit_storage" + Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 diff --git a/Test/baseResults/spv.bufferhandle13.frag.out b/Test/baseResults/spv.bufferhandle13.frag.out index 1231cf67..7b83210a 100644 --- a/Test/baseResults/spv.bufferhandle13.frag.out +++ b/Test/baseResults/spv.bufferhandle13.frag.out @@ -5,7 +5,7 @@ spv.bufferhandle13.frag Capability Shader Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_EXT_physical_storage_buffer" + Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 diff --git a/Test/baseResults/spv.bufferhandle14.frag.out b/Test/baseResults/spv.bufferhandle14.frag.out index 940793d3..b44391a3 100644 --- a/Test/baseResults/spv.bufferhandle14.frag.out +++ b/Test/baseResults/spv.bufferhandle14.frag.out @@ -5,7 +5,7 @@ spv.bufferhandle14.frag Capability Shader Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_EXT_physical_storage_buffer" + Extension "SPV_KHR_physical_storage_buffer" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 EntryPoint Fragment 4 "main" diff --git a/Test/baseResults/spv.bufferhandle15.frag.out b/Test/baseResults/spv.bufferhandle15.frag.out index ec7064d9..2eae28b2 100644 --- a/Test/baseResults/spv.bufferhandle15.frag.out +++ b/Test/baseResults/spv.bufferhandle15.frag.out @@ -8,7 +8,7 @@ WARNING: 0:16: '' : all default precisions are highp; use precision statements t Capability Shader Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_EXT_physical_storage_buffer" + Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 diff --git a/Test/baseResults/spv.bufferhandle16.frag.out b/Test/baseResults/spv.bufferhandle16.frag.out index 16e69d1d..23555918 100644 --- a/Test/baseResults/spv.bufferhandle16.frag.out +++ b/Test/baseResults/spv.bufferhandle16.frag.out @@ -6,7 +6,7 @@ spv.bufferhandle16.frag Capability Shader Capability Int64 Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_EXT_physical_storage_buffer" + Extension "SPV_KHR_physical_storage_buffer" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 EntryPoint Fragment 4 "main" diff --git a/Test/baseResults/spv.bufferhandle18.frag.out b/Test/baseResults/spv.bufferhandle18.frag.out index 567295d3..6d2178df 100644 --- a/Test/baseResults/spv.bufferhandle18.frag.out +++ b/Test/baseResults/spv.bufferhandle18.frag.out @@ -6,7 +6,7 @@ spv.bufferhandle18.frag Capability Shader Capability Int64 Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_EXT_physical_storage_buffer" + Extension "SPV_KHR_physical_storage_buffer" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 EntryPoint Fragment 4 "main" diff --git a/Test/baseResults/spv.bufferhandle2.frag.out b/Test/baseResults/spv.bufferhandle2.frag.out index 8fee6db6..728bee38 100644 --- a/Test/baseResults/spv.bufferhandle2.frag.out +++ b/Test/baseResults/spv.bufferhandle2.frag.out @@ -5,7 +5,7 @@ spv.bufferhandle2.frag Capability Shader Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_EXT_physical_storage_buffer" + Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 diff --git a/Test/baseResults/spv.bufferhandle3.frag.out b/Test/baseResults/spv.bufferhandle3.frag.out index c02c34cf..b888fe42 100644 --- a/Test/baseResults/spv.bufferhandle3.frag.out +++ b/Test/baseResults/spv.bufferhandle3.frag.out @@ -5,7 +5,7 @@ spv.bufferhandle3.frag Capability Shader Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_EXT_physical_storage_buffer" + Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 diff --git a/Test/baseResults/spv.bufferhandle4.frag.out b/Test/baseResults/spv.bufferhandle4.frag.out index 3f568b0f..e5a4f5d3 100644 --- a/Test/baseResults/spv.bufferhandle4.frag.out +++ b/Test/baseResults/spv.bufferhandle4.frag.out @@ -5,7 +5,7 @@ spv.bufferhandle4.frag Capability Shader Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_EXT_physical_storage_buffer" + Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 diff --git a/Test/baseResults/spv.bufferhandle5.frag.out b/Test/baseResults/spv.bufferhandle5.frag.out index 3f1d2141..c663c42d 100644 --- a/Test/baseResults/spv.bufferhandle5.frag.out +++ b/Test/baseResults/spv.bufferhandle5.frag.out @@ -5,7 +5,7 @@ spv.bufferhandle5.frag Capability Shader Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_EXT_physical_storage_buffer" + Extension "SPV_KHR_physical_storage_buffer" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 EntryPoint Fragment 4 "main" diff --git a/Test/baseResults/spv.bufferhandle6.frag.out b/Test/baseResults/spv.bufferhandle6.frag.out index 866741f9..2a9b484c 100644 --- a/Test/baseResults/spv.bufferhandle6.frag.out +++ b/Test/baseResults/spv.bufferhandle6.frag.out @@ -5,7 +5,7 @@ spv.bufferhandle6.frag Capability Shader Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_EXT_physical_storage_buffer" + Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 diff --git a/Test/baseResults/spv.bufferhandle7.frag.out b/Test/baseResults/spv.bufferhandle7.frag.out index d09eded3..c5bbc5d4 100644 --- a/Test/baseResults/spv.bufferhandle7.frag.out +++ b/Test/baseResults/spv.bufferhandle7.frag.out @@ -5,7 +5,7 @@ spv.bufferhandle7.frag Capability Shader Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_EXT_physical_storage_buffer" + Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 diff --git a/Test/baseResults/spv.bufferhandle8.frag.out b/Test/baseResults/spv.bufferhandle8.frag.out index c37fa3fe..3219734a 100644 --- a/Test/baseResults/spv.bufferhandle8.frag.out +++ b/Test/baseResults/spv.bufferhandle8.frag.out @@ -5,7 +5,7 @@ spv.bufferhandle8.frag Capability Shader Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_EXT_physical_storage_buffer" + Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 diff --git a/Test/baseResults/spv.bufferhandle9.frag.out b/Test/baseResults/spv.bufferhandle9.frag.out index 5b91eda9..df2b677c 100644 --- a/Test/baseResults/spv.bufferhandle9.frag.out +++ b/Test/baseResults/spv.bufferhandle9.frag.out @@ -6,7 +6,7 @@ spv.bufferhandle9.frag Capability Shader Capability Int64 Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_EXT_physical_storage_buffer" + Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 diff --git a/Test/baseResults/spv.bufferhandleUvec2.frag.out b/Test/baseResults/spv.bufferhandleUvec2.frag.out new file mode 100755 index 00000000..1e0cbcd3 --- /dev/null +++ b/Test/baseResults/spv.bufferhandleUvec2.frag.out @@ -0,0 +1,133 @@ +spv.bufferhandleUvec2.frag +// Module Version 10000 +// Generated by (magic number): 80007 +// Id's are bound by 71 + + Capability Shader + Capability PhysicalStorageBufferAddressesEXT + Extension "SPV_KHR_physical_storage_buffer" + Extension "SPV_KHR_storage_buffer_storage_class" + 1: ExtInstImport "GLSL.std.450" + MemoryModel PhysicalStorageBuffer64EXT GLSL450 + EntryPoint Fragment 4 "main" 16 19 + ExecutionMode 4 OriginUpperLeft + Source GLSL 450 + SourceExtension "GL_EXT_buffer_reference" + SourceExtension "GL_EXT_buffer_reference_uvec2" + Name 4 "main" + Name 8 "blockType" + MemberName 8(blockType) 0 "a" + MemberName 8(blockType) 1 "b" + MemberName 8(blockType) 2 "c" + MemberName 8(blockType) 3 "d" + MemberName 8(blockType) 4 "e" + Name 13 "b1" + Name 16 "h" + Name 19 "i" + Name 34 "b2" + Name 37 "b3" + Name 46 "j" + Name 54 "carry" + Name 55 "ResType" + Name 68 "t2" + MemberName 68(t2) 0 "f" + MemberName 68(t2) 1 "g" + Name 70 "t" + MemberDecorate 8(blockType) 0 Offset 0 + MemberDecorate 8(blockType) 1 Offset 4 + MemberDecorate 8(blockType) 2 Offset 8 + MemberDecorate 8(blockType) 3 Offset 12 + MemberDecorate 8(blockType) 4 Offset 16 + Decorate 8(blockType) Block + Decorate 13(b1) DecorationAliasedPointerEXT + Decorate 16(h) Flat + Decorate 19(i) Flat + Decorate 34(b2) DecorationAliasedPointerEXT + Decorate 37(b3) DecorationAliasedPointerEXT + MemberDecorate 68(t2) 0 Offset 0 + MemberDecorate 68(t2) 1 Offset 8 + Decorate 68(t2) Block + Decorate 70(t) DescriptorSet 0 + Decorate 70(t) Binding 0 + 2: TypeVoid + 3: TypeFunction 2 + TypeForwardPointer 6 PhysicalStorageBufferEXT + 7: TypeInt 32 1 + 8(blockType): TypeStruct 7(int) 7(int) 7(int) 7(int) 7(int) + 6: TypePointer PhysicalStorageBufferEXT 8(blockType) + 9: TypeInt 32 0 + 10: 9(int) Constant 2 + 11: TypeArray 6(ptr) 10 + 12: TypePointer Function 11 + 14: TypeVector 9(int) 2 + 15: TypePointer Input 14(ivec2) + 16(h): 15(ptr) Variable Input + 19(i): 15(ptr) Variable Input + 23: 7(int) Constant 0 + 24: TypePointer Function 6(ptr) + 27: 7(int) Constant 1 + 30: TypePointer PhysicalStorageBufferEXT 7(int) + 45: TypePointer Function 14(ivec2) + 49: 9(int) Constant 0 + 50: TypePointer Function 9(int) + 53: 9(int) Constant 256 + 55(ResType): TypeStruct 9(int) 9(int) + 61: 9(int) Constant 1 + 68(t2): TypeStruct 6(ptr) 6(ptr) + 69: TypePointer StorageBuffer 68(t2) + 70(t): 69(ptr) Variable StorageBuffer + 4(main): 2 Function None 3 + 5: Label + 13(b1): 12(ptr) Variable Function + 34(b2): 24(ptr) Variable Function + 37(b3): 24(ptr) Variable Function + 46(j): 45(ptr) Variable Function + 54(carry): 50(ptr) Variable Function + 17: 14(ivec2) Load 16(h) + 18: 6(ptr) Bitcast 17 + 20: 14(ivec2) Load 19(i) + 21: 6(ptr) Bitcast 20 + 22: 11 CompositeConstruct 18 21 + Store 13(b1) 22 + 25: 24(ptr) AccessChain 13(b1) 23 + 26: 6(ptr) Load 25 + 28: 24(ptr) AccessChain 13(b1) 27 + 29: 6(ptr) Load 28 + 31: 30(ptr) AccessChain 29 27 + 32: 7(int) Load 31 Aligned 4 + 33: 30(ptr) AccessChain 26 23 + Store 33 32 Aligned 16 + 35: 14(ivec2) Load 16(h) + 36: 6(ptr) Bitcast 35 + Store 34(b2) 36 + 38: 14(ivec2) Load 19(i) + 39: 6(ptr) Bitcast 38 + Store 37(b3) 39 + 40: 6(ptr) Load 34(b2) + 41: 6(ptr) Load 37(b3) + 42: 30(ptr) AccessChain 41 27 + 43: 7(int) Load 42 Aligned 4 + 44: 30(ptr) AccessChain 40 23 + Store 44 43 Aligned 16 + 47: 6(ptr) Load 34(b2) + 48: 14(ivec2) Bitcast 47 + Store 46(j) 48 + 51: 50(ptr) AccessChain 46(j) 49 + 52: 9(int) Load 51 + 56: 55(ResType) IAddCarry 52 53 + 57: 9(int) CompositeExtract 56 1 + Store 54(carry) 57 + 58: 9(int) CompositeExtract 56 0 + 59: 50(ptr) AccessChain 46(j) 49 + Store 59 58 + 60: 9(int) Load 54(carry) + 62: 50(ptr) AccessChain 46(j) 61 + 63: 9(int) Load 62 + 64: 9(int) IAdd 63 60 + 65: 50(ptr) AccessChain 46(j) 61 + Store 65 64 + 66: 14(ivec2) Load 46(j) + 67: 6(ptr) Bitcast 66 + Store 34(b2) 67 + Return + FunctionEnd diff --git a/Test/baseResults/spv.coopmat.comp.out b/Test/baseResults/spv.coopmat.comp.out index acdcbc4f..976c59f4 100644 --- a/Test/baseResults/spv.coopmat.comp.out +++ b/Test/baseResults/spv.coopmat.comp.out @@ -9,8 +9,8 @@ spv.coopmat.comp Capability VulkanMemoryModelKHR Capability PhysicalStorageBufferAddressesEXT Capability CooperativeMatrixNV - Extension "SPV_EXT_physical_storage_buffer" Extension "SPV_KHR_16bit_storage" + Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" Extension "SPV_KHR_vulkan_memory_model" Extension "SPV_NV_cooperative_matrix" diff --git a/Test/baseResults/spv.intcoopmat.comp.out b/Test/baseResults/spv.intcoopmat.comp.out index 06f5623d..a854ed55 100644 --- a/Test/baseResults/spv.intcoopmat.comp.out +++ b/Test/baseResults/spv.intcoopmat.comp.out @@ -10,8 +10,8 @@ spv.intcoopmat.comp Capability VulkanMemoryModelKHR Capability PhysicalStorageBufferAddressesEXT Capability CooperativeMatrixNV - Extension "SPV_EXT_physical_storage_buffer" Extension "SPV_KHR_8bit_storage" + Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" Extension "SPV_KHR_vulkan_memory_model" Extension "SPV_NV_cooperative_matrix" diff --git a/Test/spv.bufferhandleUvec2.frag b/Test/spv.bufferhandleUvec2.frag new file mode 100644 index 00000000..bc86822b --- /dev/null +++ b/Test/spv.bufferhandleUvec2.frag @@ -0,0 +1,32 @@ +#version 450 + +#extension GL_EXT_buffer_reference_uvec2 : enable + +layout(buffer_reference, std430) buffer blockType { + layout(offset = 0) int a; + layout(offset = 4) int b; + layout(offset = 8) int c; + layout(offset = 12) int d; + layout(offset = 16) int e; +}; + +layout(std430) buffer t2 { + blockType f; + blockType g; +} t; + +flat in uvec2 h, i; + +void main() { + + blockType b1[2] = blockType[2](blockType(h), blockType(i)); + b1[0].a = b1[1].b; + blockType b2 = blockType(h); + blockType b3 = blockType(i); + b2.a = b3.b; + uvec2 j = uvec2(b2); + uint carry; + j.x = uaddCarry(j.x, 256, carry); + j.y += carry; + b2 = blockType(j); +} diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index 3a7405ad..b599a905 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -275,6 +275,10 @@ enum TOperator { EOpConvUint64ToPtr, EOpConvPtrToUint64, + // uvec2 <-> pointer + EOpConvUvec2ToPtr, + EOpConvPtrToUvec2, + // // binary operations // diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 14f51607..17b6fe86 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -6941,6 +6941,12 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T break; case EOpConstructUVec2: + if (node->getType().getBasicType() == EbtReference) { + requireExtensions(loc, 1, &E_GL_EXT_buffer_reference_uvec2, "reference conversion to uvec2"); + TIntermTyped* newNode = intermediate.addBuiltInFunctionCall(node->getLoc(), EOpConvPtrToUvec2, true, node, + type); + return newNode; + } case EOpConstructUVec3: case EOpConstructUVec4: case EOpConstructUint: @@ -7098,7 +7104,15 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T return newNode; // construct reference from uint64 } else if (node->getType().isScalar() && node->getType().getBasicType() == EbtUint64) { - TIntermTyped* newNode = intermediate.addBuiltInFunctionCall(node->getLoc(), EOpConvUint64ToPtr, true, node, type); + TIntermTyped* newNode = intermediate.addBuiltInFunctionCall(node->getLoc(), EOpConvUint64ToPtr, true, node, + type); + return newNode; + // construct reference from uvec2 + } else if (node->getType().isVector() && node->getType().getBasicType() == EbtUint && + node->getVectorSize() == 2) { + requireExtensions(loc, 1, &E_GL_EXT_buffer_reference_uvec2, "uvec2 conversion to reference"); + TIntermTyped* newNode = intermediate.addBuiltInFunctionCall(node->getLoc(), EOpConvUvec2ToPtr, true, node, + type); return newNode; } else { return nullptr; diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index df053b0d..644acb1c 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -214,6 +214,7 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_EXT_fragment_invocation_density] = EBhDisable; extensionBehavior[E_GL_EXT_buffer_reference] = EBhDisable; extensionBehavior[E_GL_EXT_buffer_reference2] = EBhDisable; + extensionBehavior[E_GL_EXT_buffer_reference_uvec2] = EBhDisable; extensionBehavior[E_GL_EXT_demote_to_helper_invocation] = EBhDisable; extensionBehavior[E_GL_EXT_shader_16bit_storage] = EBhDisable; @@ -404,6 +405,7 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_EXT_fragment_invocation_density 1\n" "#define GL_EXT_buffer_reference 1\n" "#define GL_EXT_buffer_reference2 1\n" + "#define GL_EXT_buffer_reference_uvec2 1\n" "#define GL_EXT_demote_to_helper_invocation 1\n" // GL_KHR_shader_subgroup @@ -833,7 +835,8 @@ void TParseVersions::updateExtensionBehavior(int line, const char* extension, co updateExtensionBehavior(line, "GL_KHR_shader_subgroup_basic", behaviorString); else if (strcmp(extension, "GL_NV_shader_subgroup_partitioned") == 0) updateExtensionBehavior(line, "GL_KHR_shader_subgroup_basic", behaviorString); - else if (strcmp(extension, "GL_EXT_buffer_reference2") == 0) + else if (strcmp(extension, "GL_EXT_buffer_reference2") == 0 || + strcmp(extension, "GL_EXT_buffer_reference_uvec2") == 0) updateExtensionBehavior(line, "GL_EXT_buffer_reference", behaviorString); else if (strcmp(extension, "GL_NV_integer_cooperative_matrix") == 0) updateExtensionBehavior(line, "GL_NV_cooperative_matrix", behaviorString); diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index 05ba5d75..fae04f45 100644 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -174,6 +174,7 @@ const char* const E_GL_EXT_scalar_block_layout = "GL_EXT_scalar_blo const char* const E_GL_EXT_fragment_invocation_density = "GL_EXT_fragment_invocation_density"; const char* const E_GL_EXT_buffer_reference = "GL_EXT_buffer_reference"; const char* const E_GL_EXT_buffer_reference2 = "GL_EXT_buffer_reference2"; +const char* const E_GL_EXT_buffer_reference_uvec2 = "GL_EXT_buffer_reference_uvec2"; const char* const E_GL_EXT_demote_to_helper_invocation = "GL_EXT_demote_to_helper_invocation"; const char* const E_GL_EXT_shader_realtime_clock = "GL_EXT_shader_realtime_clock"; diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 7ec1e40d..d0c07515 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -284,6 +284,7 @@ INSTANTIATE_TEST_CASE_P( "spv.bufferhandle7.frag", "spv.bufferhandle8.frag", "spv.bufferhandle9.frag", + "spv.bufferhandleUvec2.frag", "spv.bufferhandle_Error.frag", "spv.builtInXFB.vert", "spv.conditionalDemote.frag", diff --git a/known_good.json b/known_good.json index 9946335b..6a139070 100644 --- a/known_good.json +++ b/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "9b3cc3e05337358d0bd9fec1b7a51e3cbf55312b" + "commit" : "bbb29870b510f83f99994358179c9ea6838c3100" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "38cafab379e5d16137cb97a485b9385191039b92" + "commit" : "601d738723ac381741311c6c98c36d6170be14a2" } ] } From c2fafea9700bc3f18fe649395e3b7857b9d7c178 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Fri, 20 Sep 2019 06:01:42 -0600 Subject: [PATCH 24/94] GLSL/SPV: Fix #1900: Drop const on literal when doing an object copy. --- Test/baseResults/nonuniform.frag.out | 14 +++++++++++++ Test/nonuniform.frag | 4 ++-- glslang/MachineIndependent/ParseHelper.cpp | 24 ++++++++++++++++++---- 3 files changed, 36 insertions(+), 6 deletions(-) diff --git a/Test/baseResults/nonuniform.frag.out b/Test/baseResults/nonuniform.frag.out index 0df8cfc3..9054c2ca 100644 --- a/Test/baseResults/nonuniform.frag.out +++ b/Test/baseResults/nonuniform.frag.out @@ -40,6 +40,13 @@ ERROR: node is still EOpNull! 0:27 2 (const int) 0:28 'nu_li' ( nonuniform temp int) 0:29 'nu_li' ( nonuniform temp int) +0:30 move second child to first child ( temp int) +0:30 'nu_li' ( nonuniform temp int) +0:30 indirect index ( nonuniform temp int) +0:30 'table' ( temp 5-element array of int) +0:30 copy object ( nonuniform temp int) +0:30 Constant: +0:30 3 (const int) 0:? Linker Objects 0:? 'nonuniformEXT' ( global int) 0:? 'nu_inv4' ( smooth nonuniform in 4-component vector of float) @@ -83,6 +90,13 @@ ERROR: node is still EOpNull! 0:27 2 (const int) 0:28 'nu_li' ( nonuniform temp int) 0:29 'nu_li' ( nonuniform temp int) +0:30 move second child to first child ( temp int) +0:30 'nu_li' ( nonuniform temp int) +0:30 indirect index ( nonuniform temp int) +0:30 'table' ( temp 5-element array of int) +0:30 copy object ( nonuniform temp int) +0:30 Constant: +0:30 3 (const int) 0:? Linker Objects 0:? 'nonuniformEXT' ( global int) 0:? 'nu_inv4' ( smooth nonuniform in 4-component vector of float) diff --git a/Test/nonuniform.frag b/Test/nonuniform.frag index 3f3dd67a..e98aacc3 100644 --- a/Test/nonuniform.frag +++ b/Test/nonuniform.frag @@ -22,12 +22,12 @@ void main() nonuniformEXT const int nu_ci = 2; // ERROR, const foo(nu_li, nu_li); - + int table[5]; int a; nu_li = nonuniformEXT(a) + nonuniformEXT(a * 2); nu_li = nonuniformEXT(a, a); // ERROR, too many arguments nu_li = nonuniformEXT(); // ERROR, no arguments + nu_li = table[nonuniformEXT(3)]; } - layout(location=1) in struct S { float a; nonuniformEXT float b; } ins; // ERROR, not on member layout(location=3) in inbName { float a; nonuniformEXT float b; } inb; // ERROR, not on member diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 17b6fe86..b5ea803d 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -2774,10 +2774,25 @@ bool TParseContext::builtInName(const TString& identifier) // bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, TFunction& function, TOperator op, TType& type) { - type.shallowCopy(function.getType()); + // See if the constructor does not establish the main type, only requalifies + // it, in which case the type comes from the argument instead of from the + // constructor function. + switch (op) { + case EOpConstructNonuniform: + if (node != nullptr && node->getAsTyped() != nullptr) { + type.shallowCopy(node->getAsTyped()->getType()); + type.getQualifier().makeTemporary(); + type.getQualifier().nonUniform = true; + } + break; + default: + type.shallowCopy(function.getType()); + break; + } + // See if it's a matrix bool constructingMatrix = false; - switch(op) { + switch (op) { #ifndef GLSLANG_WEB case EOpConstructTextureSampler: return constructorTextureSamplerError(loc, function); @@ -2871,6 +2886,8 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T } } } + if (op == EOpConstructNonuniform) + constType = false; #ifndef GLSLANG_WEB switch (op) { @@ -7093,8 +7110,7 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T case EOpConstructNonuniform: // Make a nonuniform copy of node - newNode = intermediate.addBuiltInFunctionCall(node->getLoc(), EOpCopyObject, true, node, node->getType()); - newNode->getWritableType().getQualifier().nonUniform = true; + newNode = intermediate.addBuiltInFunctionCall(node->getLoc(), EOpCopyObject, true, node, type); return newNode; case EOpConstructReference: From 2d9b0a35509b5ffa7960c8f5eb5cc3be860c33b9 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Fri, 27 Sep 2019 15:14:18 -0600 Subject: [PATCH 25/94] HLSL: Fix #1912: add attribute syntax for overriding image formats. --- .../hlsl.format.rwtexture.frag.out | 297 ++++++++++++++++++ Test/hlsl.format.rwtexture.frag | 37 +++ glslang/MachineIndependent/Constant.cpp | 0 glslang/MachineIndependent/ShaderLang.cpp | 0 glslang/MachineIndependent/SymbolTable.cpp | 0 glslang/MachineIndependent/SymbolTable.h | 0 glslang/MachineIndependent/attribute.h | 42 ++- glslang/MachineIndependent/parseVersions.h | 0 gtests/Hlsl.FromFile.cpp | 1 + hlsl/hlslAttributes.cpp | 41 +++ hlsl/hlslGrammar.cpp | 0 hlsl/hlslGrammar.h | 0 hlsl/hlslParseHelper.cpp | 43 +++ hlsl/hlslParseHelper.h | 0 14 files changed, 460 insertions(+), 1 deletion(-) create mode 100755 Test/baseResults/hlsl.format.rwtexture.frag.out create mode 100755 Test/hlsl.format.rwtexture.frag mode change 100755 => 100644 glslang/MachineIndependent/Constant.cpp mode change 100755 => 100644 glslang/MachineIndependent/ShaderLang.cpp mode change 100755 => 100644 glslang/MachineIndependent/SymbolTable.cpp mode change 100755 => 100644 glslang/MachineIndependent/SymbolTable.h mode change 100755 => 100644 glslang/MachineIndependent/parseVersions.h mode change 100644 => 100755 gtests/Hlsl.FromFile.cpp mode change 100755 => 100644 hlsl/hlslGrammar.cpp mode change 100755 => 100644 hlsl/hlslGrammar.h mode change 100644 => 100755 hlsl/hlslParseHelper.cpp mode change 100755 => 100644 hlsl/hlslParseHelper.h diff --git a/Test/baseResults/hlsl.format.rwtexture.frag.out b/Test/baseResults/hlsl.format.rwtexture.frag.out new file mode 100755 index 00000000..2ecd5148 --- /dev/null +++ b/Test/baseResults/hlsl.format.rwtexture.frag.out @@ -0,0 +1,297 @@ +hlsl.format.rwtexture.frag +Shader version: 500 +gl_FragCoord origin is upper left +using depth_any +0:? Sequence +0:30 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) +0:30 Function Parameters: +0:? Sequence +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}) +0:33 Constant: +0:33 0 (const int) +0:33 Constant: +0:33 1.000000 +0:33 1.000000 +0:33 1.000000 +0:33 1.000000 +0:34 move second child to first child ( temp float) +0:34 Depth: direct index for structure ( temp float) +0:34 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) +0:34 Constant: +0:34 1 (const int) +0:34 Constant: +0:34 1.000000 +0:36 Branch: Return with expression +0:36 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) +0:30 Function Definition: main( ( temp void) +0:30 Function Parameters: +0:? Sequence +0:30 Sequence +0:30 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) +0:30 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) +0:30 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) +0:30 move second child to first child ( temp 4-component vector of float) +0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) +0:30 Color: direct index for structure ( temp 4-component vector of float) +0:30 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) +0:30 Constant: +0:30 0 (const int) +0:30 move second child to first child ( temp float) +0:? '@entryPointOutput.Depth' ( out float FragDepth) +0:30 Depth: direct index for structure ( temp float) +0:30 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) +0:30 Constant: +0:30 1 (const int) +0:? Linker Objects +0:? 'g_sSamp' (layout( binding=0) uniform sampler) +0:? 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) +0:? 'g_tTex1di4' (layout( rg32f) uniform iimage1D) +0:? 'g_tTex1du4' (layout( rgba8_snorm) uniform uimage1D) +0:? 'g_tTex2df4' (layout( rgba8i) uniform image2D) +0:? 'g_tTex2di4' (layout( r11f_g11f_b10f) uniform iimage2D) +0:? 'g_tTex2du4' (layout( r8_snorm) uniform uimage2D) +0:? 'g_tTex3df4' (layout( rg8) uniform image3D) +0:? 'g_tTex3di4' (layout( rgba16i) uniform iimage3D) +0:? 'g_tTex3du4' (layout( r8i) uniform uimage3D) +0:? 'g_tTex1df4a' (layout( rgba8ui) uniform image1DArray) +0:? 'g_tTex1di4a' (layout( rg32ui) uniform iimage1DArray) +0:? 'g_tTex1du4a' (layout( r16ui) uniform uimage1DArray) +0:? 'g_tTex2df4a' (layout( rgb10_a2ui) uniform image2DArray) +0:? 'g_tTex2di4a' (layout( r8ui) uniform iimage2DArray) +0:? 'g_tTex2du4a' (layout( rgba16f) uniform uimage2DArray) +0:? '@entryPointOutput.Depth' ( out float FragDepth) +0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) + + +Linked fragment stage: + + +Shader version: 500 +gl_FragCoord origin is upper left +using depth_any +0:? Sequence +0:30 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) +0:30 Function Parameters: +0:? Sequence +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}) +0:33 Constant: +0:33 0 (const int) +0:33 Constant: +0:33 1.000000 +0:33 1.000000 +0:33 1.000000 +0:33 1.000000 +0:34 move second child to first child ( temp float) +0:34 Depth: direct index for structure ( temp float) +0:34 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) +0:34 Constant: +0:34 1 (const int) +0:34 Constant: +0:34 1.000000 +0:36 Branch: Return with expression +0:36 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) +0:30 Function Definition: main( ( temp void) +0:30 Function Parameters: +0:? Sequence +0:30 Sequence +0:30 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) +0:30 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) +0:30 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) +0:30 move second child to first child ( temp 4-component vector of float) +0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) +0:30 Color: direct index for structure ( temp 4-component vector of float) +0:30 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) +0:30 Constant: +0:30 0 (const int) +0:30 move second child to first child ( temp float) +0:? '@entryPointOutput.Depth' ( out float FragDepth) +0:30 Depth: direct index for structure ( temp float) +0:30 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) +0:30 Constant: +0:30 1 (const int) +0:? Linker Objects +0:? 'g_sSamp' (layout( binding=0) uniform sampler) +0:? 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) +0:? 'g_tTex1di4' (layout( rg32f) uniform iimage1D) +0:? 'g_tTex1du4' (layout( rgba8_snorm) uniform uimage1D) +0:? 'g_tTex2df4' (layout( rgba8i) uniform image2D) +0:? 'g_tTex2di4' (layout( r11f_g11f_b10f) uniform iimage2D) +0:? 'g_tTex2du4' (layout( r8_snorm) uniform uimage2D) +0:? 'g_tTex3df4' (layout( rg8) uniform image3D) +0:? 'g_tTex3di4' (layout( rgba16i) uniform iimage3D) +0:? 'g_tTex3du4' (layout( r8i) uniform uimage3D) +0:? 'g_tTex1df4a' (layout( rgba8ui) uniform image1DArray) +0:? 'g_tTex1di4a' (layout( rg32ui) uniform iimage1DArray) +0:? 'g_tTex1du4a' (layout( r16ui) uniform uimage1DArray) +0:? 'g_tTex2df4a' (layout( rgb10_a2ui) uniform image2DArray) +0:? 'g_tTex2di4a' (layout( r8ui) uniform iimage2DArray) +0:? 'g_tTex2du4a' (layout( rgba16f) uniform uimage2DArray) +0:? '@entryPointOutput.Depth' ( out float FragDepth) +0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) + +// Module Version 10000 +// Generated by (magic number): 80007 +// Id's are bound by 85 + + Capability Shader + Capability Image1D + Capability StorageImageExtendedFormats + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 29 33 + ExecutionMode 4 OriginUpperLeft + ExecutionMode 4 DepthReplacing + Source HLSL 500 + Name 4 "main" + Name 8 "PS_OUTPUT" + MemberName 8(PS_OUTPUT) 0 "Color" + MemberName 8(PS_OUTPUT) 1 "Depth" + Name 10 "@main(" + Name 13 "psout" + Name 26 "flattenTemp" + Name 29 "@entryPointOutput.Color" + Name 33 "@entryPointOutput.Depth" + Name 38 "g_sSamp" + Name 41 "g_tTex1df4" + Name 44 "g_tTex1di4" + Name 48 "g_tTex1du4" + Name 51 "g_tTex2df4" + Name 54 "g_tTex2di4" + Name 57 "g_tTex2du4" + Name 60 "g_tTex3df4" + Name 63 "g_tTex3di4" + Name 66 "g_tTex3du4" + Name 69 "g_tTex1df4a" + Name 72 "g_tTex1di4a" + Name 75 "g_tTex1du4a" + Name 78 "g_tTex2df4a" + Name 81 "g_tTex2di4a" + Name 84 "g_tTex2du4a" + Decorate 29(@entryPointOutput.Color) Location 0 + Decorate 33(@entryPointOutput.Depth) BuiltIn FragDepth + Decorate 38(g_sSamp) DescriptorSet 0 + Decorate 38(g_sSamp) Binding 0 + Decorate 41(g_tTex1df4) DescriptorSet 0 + Decorate 41(g_tTex1df4) Binding 0 + Decorate 44(g_tTex1di4) DescriptorSet 0 + Decorate 44(g_tTex1di4) Binding 0 + Decorate 48(g_tTex1du4) DescriptorSet 0 + Decorate 48(g_tTex1du4) Binding 0 + Decorate 51(g_tTex2df4) DescriptorSet 0 + Decorate 51(g_tTex2df4) Binding 0 + Decorate 54(g_tTex2di4) DescriptorSet 0 + Decorate 54(g_tTex2di4) Binding 0 + Decorate 57(g_tTex2du4) DescriptorSet 0 + Decorate 57(g_tTex2du4) Binding 0 + Decorate 60(g_tTex3df4) DescriptorSet 0 + Decorate 60(g_tTex3df4) Binding 0 + Decorate 63(g_tTex3di4) DescriptorSet 0 + Decorate 63(g_tTex3di4) Binding 0 + Decorate 66(g_tTex3du4) DescriptorSet 0 + Decorate 66(g_tTex3du4) Binding 0 + Decorate 69(g_tTex1df4a) DescriptorSet 0 + Decorate 69(g_tTex1df4a) Binding 0 + Decorate 72(g_tTex1di4a) DescriptorSet 0 + Decorate 72(g_tTex1di4a) Binding 0 + Decorate 75(g_tTex1du4a) DescriptorSet 0 + Decorate 75(g_tTex1du4a) Binding 0 + Decorate 78(g_tTex2df4a) DescriptorSet 0 + Decorate 78(g_tTex2df4a) Binding 0 + Decorate 81(g_tTex2di4a) DescriptorSet 0 + Decorate 81(g_tTex2di4a) Binding 0 + Decorate 84(g_tTex2du4a) DescriptorSet 0 + Decorate 84(g_tTex2du4a) Binding 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8(PS_OUTPUT): TypeStruct 7(fvec4) 6(float) + 9: TypeFunction 8(PS_OUTPUT) + 12: TypePointer Function 8(PS_OUTPUT) + 14: TypeInt 32 1 + 15: 14(int) Constant 0 + 16: 6(float) Constant 1065353216 + 17: 7(fvec4) ConstantComposite 16 16 16 16 + 18: TypePointer Function 7(fvec4) + 20: 14(int) Constant 1 + 21: TypePointer Function 6(float) + 28: TypePointer Output 7(fvec4) +29(@entryPointOutput.Color): 28(ptr) Variable Output + 32: TypePointer Output 6(float) +33(@entryPointOutput.Depth): 32(ptr) Variable Output + 36: TypeSampler + 37: TypePointer UniformConstant 36 + 38(g_sSamp): 37(ptr) Variable UniformConstant + 39: TypeImage 6(float) 1D nonsampled format:Rgba32f + 40: TypePointer UniformConstant 39 + 41(g_tTex1df4): 40(ptr) Variable UniformConstant + 42: TypeImage 14(int) 1D nonsampled format:Rg32f + 43: TypePointer UniformConstant 42 + 44(g_tTex1di4): 43(ptr) Variable UniformConstant + 45: TypeInt 32 0 + 46: TypeImage 45(int) 1D nonsampled format:Rgba8Snorm + 47: TypePointer UniformConstant 46 + 48(g_tTex1du4): 47(ptr) Variable UniformConstant + 49: TypeImage 6(float) 2D nonsampled format:Rgba8i + 50: TypePointer UniformConstant 49 + 51(g_tTex2df4): 50(ptr) Variable UniformConstant + 52: TypeImage 14(int) 2D nonsampled format:R11fG11fB10f + 53: TypePointer UniformConstant 52 + 54(g_tTex2di4): 53(ptr) Variable UniformConstant + 55: TypeImage 45(int) 2D nonsampled format:R8Snorm + 56: TypePointer UniformConstant 55 + 57(g_tTex2du4): 56(ptr) Variable UniformConstant + 58: TypeImage 6(float) 3D nonsampled format:Rg8 + 59: TypePointer UniformConstant 58 + 60(g_tTex3df4): 59(ptr) Variable UniformConstant + 61: TypeImage 14(int) 3D nonsampled format:Rgba16i + 62: TypePointer UniformConstant 61 + 63(g_tTex3di4): 62(ptr) Variable UniformConstant + 64: TypeImage 45(int) 3D nonsampled format:R8i + 65: TypePointer UniformConstant 64 + 66(g_tTex3du4): 65(ptr) Variable UniformConstant + 67: TypeImage 6(float) 1D array nonsampled format:Rgba8ui + 68: TypePointer UniformConstant 67 + 69(g_tTex1df4a): 68(ptr) Variable UniformConstant + 70: TypeImage 14(int) 1D array nonsampled format:Rg32ui + 71: TypePointer UniformConstant 70 + 72(g_tTex1di4a): 71(ptr) Variable UniformConstant + 73: TypeImage 45(int) 1D array nonsampled format:R16ui + 74: TypePointer UniformConstant 73 + 75(g_tTex1du4a): 74(ptr) Variable UniformConstant + 76: TypeImage 6(float) 2D array nonsampled format:Rgb10a2ui + 77: TypePointer UniformConstant 76 + 78(g_tTex2df4a): 77(ptr) Variable UniformConstant + 79: TypeImage 14(int) 2D array nonsampled format:R8ui + 80: TypePointer UniformConstant 79 + 81(g_tTex2di4a): 80(ptr) Variable UniformConstant + 82: TypeImage 45(int) 2D array nonsampled format:Rgba16f + 83: TypePointer UniformConstant 82 + 84(g_tTex2du4a): 83(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 26(flattenTemp): 12(ptr) Variable Function + 27:8(PS_OUTPUT) FunctionCall 10(@main() + Store 26(flattenTemp) 27 + 30: 18(ptr) AccessChain 26(flattenTemp) 15 + 31: 7(fvec4) Load 30 + Store 29(@entryPointOutput.Color) 31 + 34: 21(ptr) AccessChain 26(flattenTemp) 20 + 35: 6(float) Load 34 + Store 33(@entryPointOutput.Depth) 35 + Return + FunctionEnd + 10(@main():8(PS_OUTPUT) Function None 9 + 11: Label + 13(psout): 12(ptr) Variable Function + 19: 18(ptr) AccessChain 13(psout) 15 + Store 19 17 + 22: 21(ptr) AccessChain 13(psout) 20 + Store 22 16 + 23:8(PS_OUTPUT) Load 13(psout) + ReturnValue 23 + FunctionEnd diff --git a/Test/hlsl.format.rwtexture.frag b/Test/hlsl.format.rwtexture.frag new file mode 100755 index 00000000..d92f5906 --- /dev/null +++ b/Test/hlsl.format.rwtexture.frag @@ -0,0 +1,37 @@ +SamplerState g_sSamp : register(s0); + +[[spv::format_rgba32f]] RWTexture1D g_tTex1df4 : register(t0); +[[spv::format_rg32f]] RWTexture1D g_tTex1di4; +[[spv::format_rgba8snorm]] RWTexture1D g_tTex1du4; + +[[spv::format_rgba8i]] RWTexture2D g_tTex2df4; +[[spv::format_r11fg11fb10f]] RWTexture2D g_tTex2di4; +[[spv::format_r8snorm]] RWTexture2D g_tTex2du4; + +[[spv::format_rg8]] RWTexture3D g_tTex3df4; +[[spv::format_rgba16i]] RWTexture3D g_tTex3di4; +[[spv::format_r8i]] RWTexture3D g_tTex3du4; + +[[spv::format_rgba8ui]] RWTexture1DArray g_tTex1df4a; +[[spv::format_rg32ui]] RWTexture1DArray g_tTex1di4a; +[[spv::format_r16ui]] RWTexture1DArray g_tTex1du4a; + +[[spv::format_rgb10a2ui]] RWTexture2DArray g_tTex2df4a; +[[spv::format_r8ui]] RWTexture2DArray g_tTex2di4a; +[[spv::format_rgba16f]] RWTexture2DArray g_tTex2du4a; + +struct PS_OUTPUT +{ + float4 Color : SV_Target0; + float Depth : SV_Depth; +}; + +PS_OUTPUT main() +{ + PS_OUTPUT psout; + + psout.Color = 1.0; + psout.Depth = 1.0; + + return psout; +} diff --git a/glslang/MachineIndependent/Constant.cpp b/glslang/MachineIndependent/Constant.cpp old mode 100755 new mode 100644 diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp old mode 100755 new mode 100644 diff --git a/glslang/MachineIndependent/SymbolTable.cpp b/glslang/MachineIndependent/SymbolTable.cpp old mode 100755 new mode 100644 diff --git a/glslang/MachineIndependent/SymbolTable.h b/glslang/MachineIndependent/SymbolTable.h old mode 100755 new mode 100644 diff --git a/glslang/MachineIndependent/attribute.h b/glslang/MachineIndependent/attribute.h index 844ce458..92f3d634 100644 --- a/glslang/MachineIndependent/attribute.h +++ b/glslang/MachineIndependent/attribute.h @@ -76,7 +76,47 @@ namespace glslang { EatMaxIterations, EatIterationMultiple, EatPeelCount, - EatPartialCount + EatPartialCount, + EatFormatRgba32f, + EatFormatRgba16f, + EatFormatR32f, + EatFormatRgba8, + EatFormatRgba8Snorm, + EatFormatRg32f, + EatFormatRg16f, + EatFormatR11fG11fB10f, + EatFormatR16f, + EatFormatRgba16, + EatFormatRgb10A2, + EatFormatRg16, + EatFormatRg8, + EatFormatR16, + EatFormatR8, + EatFormatRgba16Snorm, + EatFormatRg16Snorm, + EatFormatRg8Snorm, + EatFormatR16Snorm, + EatFormatR8Snorm, + EatFormatRgba32i, + EatFormatRgba16i, + EatFormatRgba8i, + EatFormatR32i, + EatFormatRg32i, + EatFormatRg16i, + EatFormatRg8i, + EatFormatR16i, + EatFormatR8i, + EatFormatRgba32ui, + EatFormatRgba16ui, + EatFormatRgba8ui, + EatFormatR32ui, + EatFormatRgb10a2ui, + EatFormatRg32ui, + EatFormatRg16ui, + EatFormatRg8ui, + EatFormatR16ui, + EatFormatR8ui, + EatFormatUnknown }; class TIntermAggregate; diff --git a/glslang/MachineIndependent/parseVersions.h b/glslang/MachineIndependent/parseVersions.h old mode 100755 new mode 100644 diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp old mode 100644 new mode 100755 index 7738c804..59c687d8 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -230,6 +230,7 @@ INSTANTIATE_TEST_CASE_P( {"hlsl.hull.void.tesc", "main"}, {"hlsl.hull.ctrlpt-1.tesc", "main"}, {"hlsl.hull.ctrlpt-2.tesc", "main"}, + {"hlsl.format.rwtexture.frag", "main"}, {"hlsl.groupid.comp", "main"}, {"hlsl.identifier.sample.frag", "main"}, {"hlsl.if.frag", "PixelShaderFunction"}, diff --git a/hlsl/hlslAttributes.cpp b/hlsl/hlslAttributes.cpp index 261cec34..05d4ae36 100644 --- a/hlsl/hlslAttributes.cpp +++ b/hlsl/hlslAttributes.cpp @@ -58,6 +58,47 @@ namespace glslang { return EatConstantId; else if (name == "push_constant") return EatPushConstant; + } else if (nameSpace == "spv") { + if (name == "format_rgba32f") return EatFormatRgba32f; + if (name == "format_rgba16f") return EatFormatRgba16f; + if (name == "format_r32f") return EatFormatR32f; + if (name == "format_rgba8") return EatFormatRgba8; + if (name == "format_rgba8snorm") return EatFormatRgba8Snorm; + if (name == "format_rg32f") return EatFormatRg32f; + if (name == "format_rg16f") return EatFormatRg16f; + if (name == "format_r11fg11fb10f") return EatFormatR11fG11fB10f; + if (name == "format_r16f") return EatFormatR16f; + if (name == "format_rgba16") return EatFormatRgba16; + if (name == "format_rgb10a2") return EatFormatRgb10A2; + if (name == "format_rg16") return EatFormatRg16; + if (name == "format_rg8") return EatFormatRg8; + if (name == "format_r16") return EatFormatR16; + if (name == "format_r8") return EatFormatR8; + if (name == "format_rgba16snorm") return EatFormatRgba16Snorm; + if (name == "format_rg16snorm") return EatFormatRg16Snorm; + if (name == "format_rg8snorm") return EatFormatRg8Snorm; + if (name == "format_r16snorm") return EatFormatR16Snorm; + if (name == "format_r8snorm") return EatFormatR8Snorm; + if (name == "format_rgba32i") return EatFormatRgba32i; + if (name == "format_rgba16i") return EatFormatRgba16i; + if (name == "format_rgba8i") return EatFormatRgba8i; + if (name == "format_r32i") return EatFormatR32i; + if (name == "format_rg32i") return EatFormatRg32i; + if (name == "format_rg16i") return EatFormatRg16i; + if (name == "format_rg8i") return EatFormatRg8i; + if (name == "format_r16i") return EatFormatR16i; + if (name == "format_r8i") return EatFormatR8i; + if (name == "format_rgba32ui") return EatFormatRgba32ui; + if (name == "format_rgba16ui") return EatFormatRgba16ui; + if (name == "format_rgba8ui") return EatFormatRgba8ui; + if (name == "format_r32ui") return EatFormatR32ui; + if (name == "format_rgb10a2ui") return EatFormatRgb10a2ui; + if (name == "format_rg32ui") return EatFormatRg32ui; + if (name == "format_rg16ui") return EatFormatRg16ui; + if (name == "format_rg8ui") return EatFormatRg8ui; + if (name == "format_r16ui") return EatFormatR16ui; + if (name == "format_r8ui") return EatFormatR8ui; + return EatFormatUnknown; } else if (nameSpace.size() > 0) return EatNone; diff --git a/hlsl/hlslGrammar.cpp b/hlsl/hlslGrammar.cpp old mode 100755 new mode 100644 diff --git a/hlsl/hlslGrammar.h b/hlsl/hlslGrammar.h old mode 100755 new mode 100644 diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp old mode 100644 new mode 100755 index 1549e3a4..8d389f5d --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -1950,6 +1950,49 @@ void HlslParseContext::transferTypeAttributes(const TSourceLoc& loc, const TAttr setSpecConstantId(loc, type.getQualifier(), value); } break; + + // image formats + case EatFormatRgba32f: type.getQualifier().layoutFormat = ElfRgba32f; break; + case EatFormatRgba16f: type.getQualifier().layoutFormat = ElfRgba16f; break; + case EatFormatR32f: type.getQualifier().layoutFormat = ElfR32f; break; + case EatFormatRgba8: type.getQualifier().layoutFormat = ElfRgba8; break; + case EatFormatRgba8Snorm: type.getQualifier().layoutFormat = ElfRgba8Snorm; break; + case EatFormatRg32f: type.getQualifier().layoutFormat = ElfRg32f; break; + case EatFormatRg16f: type.getQualifier().layoutFormat = ElfRg16f; break; + case EatFormatR11fG11fB10f: type.getQualifier().layoutFormat = ElfR11fG11fB10f; break; + case EatFormatR16f: type.getQualifier().layoutFormat = ElfR16f; break; + case EatFormatRgba16: type.getQualifier().layoutFormat = ElfRgba16; break; + case EatFormatRgb10A2: type.getQualifier().layoutFormat = ElfRgb10A2; break; + case EatFormatRg16: type.getQualifier().layoutFormat = ElfRg16; break; + case EatFormatRg8: type.getQualifier().layoutFormat = ElfRg8; break; + case EatFormatR16: type.getQualifier().layoutFormat = ElfR16; break; + case EatFormatR8: type.getQualifier().layoutFormat = ElfR8; break; + case EatFormatRgba16Snorm: type.getQualifier().layoutFormat = ElfRgba16Snorm; break; + case EatFormatRg16Snorm: type.getQualifier().layoutFormat = ElfRg16Snorm; break; + case EatFormatRg8Snorm: type.getQualifier().layoutFormat = ElfRg8Snorm; break; + case EatFormatR16Snorm: type.getQualifier().layoutFormat = ElfR16Snorm; break; + case EatFormatR8Snorm: type.getQualifier().layoutFormat = ElfR8Snorm; break; + case EatFormatRgba32i: type.getQualifier().layoutFormat = ElfRgba32i; break; + case EatFormatRgba16i: type.getQualifier().layoutFormat = ElfRgba16i; break; + case EatFormatRgba8i: type.getQualifier().layoutFormat = ElfRgba8i; break; + case EatFormatR32i: type.getQualifier().layoutFormat = ElfR32i; break; + case EatFormatRg32i: type.getQualifier().layoutFormat = ElfRg32i; break; + case EatFormatRg16i: type.getQualifier().layoutFormat = ElfRg16i; break; + case EatFormatRg8i: type.getQualifier().layoutFormat = ElfRg8i; break; + case EatFormatR16i: type.getQualifier().layoutFormat = ElfR16i; break; + case EatFormatR8i: type.getQualifier().layoutFormat = ElfR8i; break; + case EatFormatRgba32ui: type.getQualifier().layoutFormat = ElfRgba32ui; break; + case EatFormatRgba16ui: type.getQualifier().layoutFormat = ElfRgba16ui; break; + case EatFormatRgba8ui: type.getQualifier().layoutFormat = ElfRgba8ui; break; + case EatFormatR32ui: type.getQualifier().layoutFormat = ElfR32ui; break; + case EatFormatRgb10a2ui: type.getQualifier().layoutFormat = ElfRgb10a2ui; break; + case EatFormatRg32ui: type.getQualifier().layoutFormat = ElfRg32ui; break; + case EatFormatRg16ui: type.getQualifier().layoutFormat = ElfRg16ui; break; + case EatFormatRg8ui: type.getQualifier().layoutFormat = ElfRg8ui; break; + case EatFormatR16ui: type.getQualifier().layoutFormat = ElfR16ui; break; + case EatFormatR8ui: type.getQualifier().layoutFormat = ElfR8ui; break; + case EatFormatUnknown: type.getQualifier().layoutFormat = ElfNone; break; + default: if (! allowEntry) warn(loc, "attribute does not apply to a type", "", ""); diff --git a/hlsl/hlslParseHelper.h b/hlsl/hlslParseHelper.h old mode 100755 new mode 100644 From 8a97d38913949b5c5c640882bb73c1c775c7293d Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Sun, 29 Sep 2019 18:02:19 -0600 Subject: [PATCH 26/94] HLSL: Fix #1912: add attribute syntax for nonreadable/nonwritable --- .../hlsl.format.rwtexture.frag.out | 366 ++++++++++++++---- Test/hlsl.format.rwtexture.frag | 32 +- glslang/MachineIndependent/attribute.h | 4 +- hlsl/hlslAttributes.cpp | 4 +- hlsl/hlslParseHelper.cpp | 3 + 5 files changed, 323 insertions(+), 86 deletions(-) mode change 100755 => 100644 Test/baseResults/hlsl.format.rwtexture.frag.out mode change 100755 => 100644 Test/hlsl.format.rwtexture.frag diff --git a/Test/baseResults/hlsl.format.rwtexture.frag.out b/Test/baseResults/hlsl.format.rwtexture.frag.out old mode 100755 new mode 100644 index 2ecd5148..7ab53299 --- a/Test/baseResults/hlsl.format.rwtexture.frag.out +++ b/Test/baseResults/hlsl.format.rwtexture.frag.out @@ -3,47 +3,47 @@ Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence -0:30 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) -0:30 Function Parameters: +0:56 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) +0:56 Function Parameters: 0:? Sequence -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}) -0:33 Constant: -0:33 0 (const int) -0:33 Constant: -0:33 1.000000 -0:33 1.000000 -0:33 1.000000 -0:33 1.000000 -0:34 move second child to first child ( temp float) -0:34 Depth: direct index for structure ( temp float) -0:34 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) -0:34 Constant: -0:34 1 (const int) -0:34 Constant: -0:34 1.000000 -0:36 Branch: Return with expression -0:36 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) -0:30 Function Definition: main( ( temp void) -0:30 Function Parameters: +0:59 move second child to first child ( temp 4-component vector of float) +0:59 Color: direct index for structure ( temp 4-component vector of float) +0:59 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) +0:59 Constant: +0:59 0 (const int) +0:59 Constant: +0:59 1.000000 +0:59 1.000000 +0:59 1.000000 +0:59 1.000000 +0:60 move second child to first child ( temp float) +0:60 Depth: direct index for structure ( temp float) +0:60 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) +0:60 Constant: +0:60 1 (const int) +0:60 Constant: +0:60 1.000000 +0:62 Branch: Return with expression +0:62 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) +0:56 Function Definition: main( ( temp void) +0:56 Function Parameters: 0:? Sequence -0:30 Sequence -0:30 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) -0:30 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) -0:30 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) -0:30 move second child to first child ( temp 4-component vector of float) +0:56 Sequence +0:56 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) +0:56 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) +0:56 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) +0:56 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) -0:30 Color: direct index for structure ( temp 4-component vector of float) -0:30 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) -0:30 Constant: -0:30 0 (const int) -0:30 move second child to first child ( temp float) +0:56 Color: direct index for structure ( temp 4-component vector of float) +0:56 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) +0:56 Constant: +0:56 0 (const int) +0:56 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) -0:30 Depth: direct index for structure ( temp float) -0:30 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) -0:30 Constant: -0:30 1 (const int) +0:56 Depth: direct index for structure ( temp float) +0:56 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) +0:56 Constant: +0:56 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) @@ -52,15 +52,40 @@ using depth_any 0:? 'g_tTex2df4' (layout( rgba8i) uniform image2D) 0:? 'g_tTex2di4' (layout( r11f_g11f_b10f) uniform iimage2D) 0:? 'g_tTex2du4' (layout( r8_snorm) uniform uimage2D) -0:? 'g_tTex3df4' (layout( rg8) uniform image3D) -0:? 'g_tTex3di4' (layout( rgba16i) uniform iimage3D) -0:? 'g_tTex3du4' (layout( r8i) uniform uimage3D) +0:? 'g_tTex3df4' (layout( rg8) readonly uniform image3D) +0:? 'g_tTex3di4' (layout( rgba16i) writeonly uniform iimage3D) +0:? 'g_tTex3du4' (layout( r8i) readonly writeonly uniform uimage3D) 0:? 'g_tTex1df4a' (layout( rgba8ui) uniform image1DArray) 0:? 'g_tTex1di4a' (layout( rg32ui) uniform iimage1DArray) 0:? 'g_tTex1du4a' (layout( r16ui) uniform uimage1DArray) 0:? 'g_tTex2df4a' (layout( rgb10_a2ui) uniform image2DArray) 0:? 'g_tTex2di4a' (layout( r8ui) uniform iimage2DArray) 0:? 'g_tTex2du4a' (layout( rgba16f) uniform uimage2DArray) +0:? 'g_tTex01' (layout( rgba8) uniform iimage2DArray) +0:? 'g_tTex02' (layout( rg16f) uniform iimage2DArray) +0:? 'g_tTex03' (layout( r16f) uniform iimage2DArray) +0:? 'g_tTex04' (layout( rgb10_a2) uniform iimage2DArray) +0:? 'g_tTex05' (layout( rg16) uniform iimage2DArray) +0:? 'g_tTex06' (layout( r32f) uniform iimage2DArray) +0:? 'g_tTex07' (layout( rgba16) uniform iimage2DArray) +0:? 'g_tTex08' (layout( r16) uniform iimage2DArray) +0:? 'g_tTex09' (layout( r8) uniform iimage2DArray) +0:? 'g_tTex10' (layout( rgba16_snorm) uniform iimage2DArray) +0:? 'g_tTex11' (layout( rg16_snorm) uniform iimage2DArray) +0:? 'g_tTex12' (layout( r16_snorm) uniform iimage2DArray) +0:? 'g_tTex13' (layout( r8_snorm) uniform iimage2DArray) +0:? 'g_tTex14' (layout( rgba32i) uniform iimage2DArray) +0:? 'g_tTex15' (layout( r32i) uniform iimage2DArray) +0:? 'g_tTex16' (layout( r32ui) uniform iimage2DArray) +0:? 'g_tTex17' (layout( rg16i) uniform iimage2DArray) +0:? 'g_tTex18' (layout( r16i) uniform iimage2DArray) +0:? 'g_tTex19' (layout( rg32i) uniform iimage2DArray) +0:? 'g_tTex20' (layout( rg8i) uniform iimage2DArray) +0:? 'g_tTex21' (layout( rg8ui) uniform iimage2DArray) +0:? 'g_tTex22' (layout( rgba32ui) uniform iimage2DArray) +0:? 'g_tTex23' (layout( rgba16ui) uniform iimage2DArray) +0:? 'g_tTex24' (layout( rg32ui) uniform iimage2DArray) +0:? 'g_tTex25' (layout( rg16ui) uniform iimage2DArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) @@ -72,47 +97,47 @@ Shader version: 500 gl_FragCoord origin is upper left using depth_any 0:? Sequence -0:30 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) -0:30 Function Parameters: +0:56 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) +0:56 Function Parameters: 0:? Sequence -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}) -0:33 Constant: -0:33 0 (const int) -0:33 Constant: -0:33 1.000000 -0:33 1.000000 -0:33 1.000000 -0:33 1.000000 -0:34 move second child to first child ( temp float) -0:34 Depth: direct index for structure ( temp float) -0:34 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) -0:34 Constant: -0:34 1 (const int) -0:34 Constant: -0:34 1.000000 -0:36 Branch: Return with expression -0:36 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) -0:30 Function Definition: main( ( temp void) -0:30 Function Parameters: +0:59 move second child to first child ( temp 4-component vector of float) +0:59 Color: direct index for structure ( temp 4-component vector of float) +0:59 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) +0:59 Constant: +0:59 0 (const int) +0:59 Constant: +0:59 1.000000 +0:59 1.000000 +0:59 1.000000 +0:59 1.000000 +0:60 move second child to first child ( temp float) +0:60 Depth: direct index for structure ( temp float) +0:60 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) +0:60 Constant: +0:60 1 (const int) +0:60 Constant: +0:60 1.000000 +0:62 Branch: Return with expression +0:62 'psout' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) +0:56 Function Definition: main( ( temp void) +0:56 Function Parameters: 0:? Sequence -0:30 Sequence -0:30 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) -0:30 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) -0:30 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) -0:30 move second child to first child ( temp 4-component vector of float) +0:56 Sequence +0:56 move second child to first child ( temp structure{ temp 4-component vector of float Color, temp float Depth}) +0:56 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) +0:56 Function Call: @main( ( temp structure{ temp 4-component vector of float Color, temp float Depth}) +0:56 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) -0:30 Color: direct index for structure ( temp 4-component vector of float) -0:30 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) -0:30 Constant: -0:30 0 (const int) -0:30 move second child to first child ( temp float) +0:56 Color: direct index for structure ( temp 4-component vector of float) +0:56 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) +0:56 Constant: +0:56 0 (const int) +0:56 move second child to first child ( temp float) 0:? '@entryPointOutput.Depth' ( out float FragDepth) -0:30 Depth: direct index for structure ( temp float) -0:30 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) -0:30 Constant: -0:30 1 (const int) +0:56 Depth: direct index for structure ( temp float) +0:56 'flattenTemp' ( temp structure{ temp 4-component vector of float Color, temp float Depth}) +0:56 Constant: +0:56 1 (const int) 0:? Linker Objects 0:? 'g_sSamp' (layout( binding=0) uniform sampler) 0:? 'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D) @@ -121,21 +146,46 @@ using depth_any 0:? 'g_tTex2df4' (layout( rgba8i) uniform image2D) 0:? 'g_tTex2di4' (layout( r11f_g11f_b10f) uniform iimage2D) 0:? 'g_tTex2du4' (layout( r8_snorm) uniform uimage2D) -0:? 'g_tTex3df4' (layout( rg8) uniform image3D) -0:? 'g_tTex3di4' (layout( rgba16i) uniform iimage3D) -0:? 'g_tTex3du4' (layout( r8i) uniform uimage3D) +0:? 'g_tTex3df4' (layout( rg8) readonly uniform image3D) +0:? 'g_tTex3di4' (layout( rgba16i) writeonly uniform iimage3D) +0:? 'g_tTex3du4' (layout( r8i) readonly writeonly uniform uimage3D) 0:? 'g_tTex1df4a' (layout( rgba8ui) uniform image1DArray) 0:? 'g_tTex1di4a' (layout( rg32ui) uniform iimage1DArray) 0:? 'g_tTex1du4a' (layout( r16ui) uniform uimage1DArray) 0:? 'g_tTex2df4a' (layout( rgb10_a2ui) uniform image2DArray) 0:? 'g_tTex2di4a' (layout( r8ui) uniform iimage2DArray) 0:? 'g_tTex2du4a' (layout( rgba16f) uniform uimage2DArray) +0:? 'g_tTex01' (layout( rgba8) uniform iimage2DArray) +0:? 'g_tTex02' (layout( rg16f) uniform iimage2DArray) +0:? 'g_tTex03' (layout( r16f) uniform iimage2DArray) +0:? 'g_tTex04' (layout( rgb10_a2) uniform iimage2DArray) +0:? 'g_tTex05' (layout( rg16) uniform iimage2DArray) +0:? 'g_tTex06' (layout( r32f) uniform iimage2DArray) +0:? 'g_tTex07' (layout( rgba16) uniform iimage2DArray) +0:? 'g_tTex08' (layout( r16) uniform iimage2DArray) +0:? 'g_tTex09' (layout( r8) uniform iimage2DArray) +0:? 'g_tTex10' (layout( rgba16_snorm) uniform iimage2DArray) +0:? 'g_tTex11' (layout( rg16_snorm) uniform iimage2DArray) +0:? 'g_tTex12' (layout( r16_snorm) uniform iimage2DArray) +0:? 'g_tTex13' (layout( r8_snorm) uniform iimage2DArray) +0:? 'g_tTex14' (layout( rgba32i) uniform iimage2DArray) +0:? 'g_tTex15' (layout( r32i) uniform iimage2DArray) +0:? 'g_tTex16' (layout( r32ui) uniform iimage2DArray) +0:? 'g_tTex17' (layout( rg16i) uniform iimage2DArray) +0:? 'g_tTex18' (layout( r16i) uniform iimage2DArray) +0:? 'g_tTex19' (layout( rg32i) uniform iimage2DArray) +0:? 'g_tTex20' (layout( rg8i) uniform iimage2DArray) +0:? 'g_tTex21' (layout( rg8ui) uniform iimage2DArray) +0:? 'g_tTex22' (layout( rgba32ui) uniform iimage2DArray) +0:? 'g_tTex23' (layout( rgba16ui) uniform iimage2DArray) +0:? 'g_tTex24' (layout( rg32ui) uniform iimage2DArray) +0:? 'g_tTex25' (layout( rg16ui) uniform iimage2DArray) 0:? '@entryPointOutput.Depth' ( out float FragDepth) 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 80007 -// Id's are bound by 85 +// Id's are bound by 160 Capability Shader Capability Image1D @@ -171,6 +221,31 @@ using depth_any Name 78 "g_tTex2df4a" Name 81 "g_tTex2di4a" Name 84 "g_tTex2du4a" + Name 87 "g_tTex01" + Name 90 "g_tTex02" + Name 93 "g_tTex03" + Name 96 "g_tTex04" + Name 99 "g_tTex05" + Name 102 "g_tTex06" + Name 105 "g_tTex07" + Name 108 "g_tTex08" + Name 111 "g_tTex09" + Name 114 "g_tTex10" + Name 117 "g_tTex11" + Name 120 "g_tTex12" + Name 123 "g_tTex13" + Name 126 "g_tTex14" + Name 129 "g_tTex15" + Name 132 "g_tTex16" + Name 135 "g_tTex17" + Name 138 "g_tTex18" + Name 141 "g_tTex19" + Name 144 "g_tTex20" + Name 147 "g_tTex21" + Name 150 "g_tTex22" + Name 153 "g_tTex23" + Name 156 "g_tTex24" + Name 159 "g_tTex25" Decorate 29(@entryPointOutput.Color) Location 0 Decorate 33(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 38(g_sSamp) DescriptorSet 0 @@ -189,10 +264,14 @@ using depth_any Decorate 57(g_tTex2du4) Binding 0 Decorate 60(g_tTex3df4) DescriptorSet 0 Decorate 60(g_tTex3df4) Binding 0 + Decorate 60(g_tTex3df4) NonWritable Decorate 63(g_tTex3di4) DescriptorSet 0 Decorate 63(g_tTex3di4) Binding 0 + Decorate 63(g_tTex3di4) NonReadable Decorate 66(g_tTex3du4) DescriptorSet 0 Decorate 66(g_tTex3du4) Binding 0 + Decorate 66(g_tTex3du4) NonWritable + Decorate 66(g_tTex3du4) NonReadable Decorate 69(g_tTex1df4a) DescriptorSet 0 Decorate 69(g_tTex1df4a) Binding 0 Decorate 72(g_tTex1di4a) DescriptorSet 0 @@ -205,6 +284,56 @@ using depth_any Decorate 81(g_tTex2di4a) Binding 0 Decorate 84(g_tTex2du4a) DescriptorSet 0 Decorate 84(g_tTex2du4a) Binding 0 + Decorate 87(g_tTex01) DescriptorSet 0 + Decorate 87(g_tTex01) Binding 0 + Decorate 90(g_tTex02) DescriptorSet 0 + Decorate 90(g_tTex02) Binding 0 + Decorate 93(g_tTex03) DescriptorSet 0 + Decorate 93(g_tTex03) Binding 0 + Decorate 96(g_tTex04) DescriptorSet 0 + Decorate 96(g_tTex04) Binding 0 + Decorate 99(g_tTex05) DescriptorSet 0 + Decorate 99(g_tTex05) Binding 0 + Decorate 102(g_tTex06) DescriptorSet 0 + Decorate 102(g_tTex06) Binding 0 + Decorate 105(g_tTex07) DescriptorSet 0 + Decorate 105(g_tTex07) Binding 0 + Decorate 108(g_tTex08) DescriptorSet 0 + Decorate 108(g_tTex08) Binding 0 + Decorate 111(g_tTex09) DescriptorSet 0 + Decorate 111(g_tTex09) Binding 0 + Decorate 114(g_tTex10) DescriptorSet 0 + Decorate 114(g_tTex10) Binding 0 + Decorate 117(g_tTex11) DescriptorSet 0 + Decorate 117(g_tTex11) Binding 0 + Decorate 120(g_tTex12) DescriptorSet 0 + Decorate 120(g_tTex12) Binding 0 + Decorate 123(g_tTex13) DescriptorSet 0 + Decorate 123(g_tTex13) Binding 0 + Decorate 126(g_tTex14) DescriptorSet 0 + Decorate 126(g_tTex14) Binding 0 + Decorate 129(g_tTex15) DescriptorSet 0 + Decorate 129(g_tTex15) Binding 0 + Decorate 132(g_tTex16) DescriptorSet 0 + Decorate 132(g_tTex16) Binding 0 + Decorate 135(g_tTex17) DescriptorSet 0 + Decorate 135(g_tTex17) Binding 0 + Decorate 138(g_tTex18) DescriptorSet 0 + Decorate 138(g_tTex18) Binding 0 + Decorate 141(g_tTex19) DescriptorSet 0 + Decorate 141(g_tTex19) Binding 0 + Decorate 144(g_tTex20) DescriptorSet 0 + Decorate 144(g_tTex20) Binding 0 + Decorate 147(g_tTex21) DescriptorSet 0 + Decorate 147(g_tTex21) Binding 0 + Decorate 150(g_tTex22) DescriptorSet 0 + Decorate 150(g_tTex22) Binding 0 + Decorate 153(g_tTex23) DescriptorSet 0 + Decorate 153(g_tTex23) Binding 0 + Decorate 156(g_tTex24) DescriptorSet 0 + Decorate 156(g_tTex24) Binding 0 + Decorate 159(g_tTex25) DescriptorSet 0 + Decorate 159(g_tTex25) Binding 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -272,6 +401,81 @@ using depth_any 82: TypeImage 45(int) 2D array nonsampled format:Rgba16f 83: TypePointer UniformConstant 82 84(g_tTex2du4a): 83(ptr) Variable UniformConstant + 85: TypeImage 14(int) 2D array nonsampled format:Rgba8 + 86: TypePointer UniformConstant 85 + 87(g_tTex01): 86(ptr) Variable UniformConstant + 88: TypeImage 14(int) 2D array nonsampled format:Rg16f + 89: TypePointer UniformConstant 88 + 90(g_tTex02): 89(ptr) Variable UniformConstant + 91: TypeImage 14(int) 2D array nonsampled format:R16f + 92: TypePointer UniformConstant 91 + 93(g_tTex03): 92(ptr) Variable UniformConstant + 94: TypeImage 14(int) 2D array nonsampled format:Rgb10A2 + 95: TypePointer UniformConstant 94 + 96(g_tTex04): 95(ptr) Variable UniformConstant + 97: TypeImage 14(int) 2D array nonsampled format:Rg16 + 98: TypePointer UniformConstant 97 + 99(g_tTex05): 98(ptr) Variable UniformConstant + 100: TypeImage 14(int) 2D array nonsampled format:R32f + 101: TypePointer UniformConstant 100 + 102(g_tTex06): 101(ptr) Variable UniformConstant + 103: TypeImage 14(int) 2D array nonsampled format:Rgba16 + 104: TypePointer UniformConstant 103 + 105(g_tTex07): 104(ptr) Variable UniformConstant + 106: TypeImage 14(int) 2D array nonsampled format:R16 + 107: TypePointer UniformConstant 106 + 108(g_tTex08): 107(ptr) Variable UniformConstant + 109: TypeImage 14(int) 2D array nonsampled format:R8 + 110: TypePointer UniformConstant 109 + 111(g_tTex09): 110(ptr) Variable UniformConstant + 112: TypeImage 14(int) 2D array nonsampled format:Rgba16Snorm + 113: TypePointer UniformConstant 112 + 114(g_tTex10): 113(ptr) Variable UniformConstant + 115: TypeImage 14(int) 2D array nonsampled format:Rg16Snorm + 116: TypePointer UniformConstant 115 + 117(g_tTex11): 116(ptr) Variable UniformConstant + 118: TypeImage 14(int) 2D array nonsampled format:R16Snorm + 119: TypePointer UniformConstant 118 + 120(g_tTex12): 119(ptr) Variable UniformConstant + 121: TypeImage 14(int) 2D array nonsampled format:R8Snorm + 122: TypePointer UniformConstant 121 + 123(g_tTex13): 122(ptr) Variable UniformConstant + 124: TypeImage 14(int) 2D array nonsampled format:Rgba32i + 125: TypePointer UniformConstant 124 + 126(g_tTex14): 125(ptr) Variable UniformConstant + 127: TypeImage 14(int) 2D array nonsampled format:R32i + 128: TypePointer UniformConstant 127 + 129(g_tTex15): 128(ptr) Variable UniformConstant + 130: TypeImage 14(int) 2D array nonsampled format:R32ui + 131: TypePointer UniformConstant 130 + 132(g_tTex16): 131(ptr) Variable UniformConstant + 133: TypeImage 14(int) 2D array nonsampled format:Rg16i + 134: TypePointer UniformConstant 133 + 135(g_tTex17): 134(ptr) Variable UniformConstant + 136: TypeImage 14(int) 2D array nonsampled format:R16i + 137: TypePointer UniformConstant 136 + 138(g_tTex18): 137(ptr) Variable UniformConstant + 139: TypeImage 14(int) 2D array nonsampled format:Rg32i + 140: TypePointer UniformConstant 139 + 141(g_tTex19): 140(ptr) Variable UniformConstant + 142: TypeImage 14(int) 2D array nonsampled format:Rg8i + 143: TypePointer UniformConstant 142 + 144(g_tTex20): 143(ptr) Variable UniformConstant + 145: TypeImage 14(int) 2D array nonsampled format:Rg8ui + 146: TypePointer UniformConstant 145 + 147(g_tTex21): 146(ptr) Variable UniformConstant + 148: TypeImage 14(int) 2D array nonsampled format:Rgba32ui + 149: TypePointer UniformConstant 148 + 150(g_tTex22): 149(ptr) Variable UniformConstant + 151: TypeImage 14(int) 2D array nonsampled format:Rgba16ui + 152: TypePointer UniformConstant 151 + 153(g_tTex23): 152(ptr) Variable UniformConstant + 154: TypeImage 14(int) 2D array nonsampled format:Rg32ui + 155: TypePointer UniformConstant 154 + 156(g_tTex24): 155(ptr) Variable UniformConstant + 157: TypeImage 14(int) 2D array nonsampled format:Rg16ui + 158: TypePointer UniformConstant 157 + 159(g_tTex25): 158(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 26(flattenTemp): 12(ptr) Variable Function diff --git a/Test/hlsl.format.rwtexture.frag b/Test/hlsl.format.rwtexture.frag old mode 100755 new mode 100644 index d92f5906..87ee7de7 --- a/Test/hlsl.format.rwtexture.frag +++ b/Test/hlsl.format.rwtexture.frag @@ -8,9 +8,9 @@ SamplerState g_sSamp : register(s0); [[spv::format_r11fg11fb10f]] RWTexture2D g_tTex2di4; [[spv::format_r8snorm]] RWTexture2D g_tTex2du4; -[[spv::format_rg8]] RWTexture3D g_tTex3df4; -[[spv::format_rgba16i]] RWTexture3D g_tTex3di4; -[[spv::format_r8i]] RWTexture3D g_tTex3du4; +[[spv::format_rg8]] [[spv::nonwritable]] RWTexture3D g_tTex3df4; +[[spv::format_rgba16i]] [[spv::nonreadable]] RWTexture3D g_tTex3di4; +[[spv::format_r8i]] [[spv::nonwritable]] [[spv::nonreadable]] RWTexture3D g_tTex3du4; [[spv::format_rgba8ui]] RWTexture1DArray g_tTex1df4a; [[spv::format_rg32ui]] RWTexture1DArray g_tTex1di4a; @@ -20,6 +20,32 @@ SamplerState g_sSamp : register(s0); [[spv::format_r8ui]] RWTexture2DArray g_tTex2di4a; [[spv::format_rgba16f]] RWTexture2DArray g_tTex2du4a; +[[spv::format_rgba8 ]] RWTexture2DArray g_tTex01; +[[spv::format_rg16f ]] RWTexture2DArray g_tTex02; +[[spv::format_r16f ]] RWTexture2DArray g_tTex03; +[[spv::format_rgb10a2 ]] RWTexture2DArray g_tTex04; +[[spv::format_rg16 ]] RWTexture2DArray g_tTex05; +[[spv::format_r32f ]] RWTexture2DArray g_tTex06; +[[spv::format_rgba16 ]] RWTexture2DArray g_tTex07; +[[spv::format_r16 ]] RWTexture2DArray g_tTex08; +[[spv::format_r8 ]] RWTexture2DArray g_tTex09; +[[spv::format_rgba16snorm ]] RWTexture2DArray g_tTex10; +[[spv::format_rg16snorm ]] RWTexture2DArray g_tTex11; +[[spv::format_r16snorm ]] RWTexture2DArray g_tTex12; +[[spv::format_r8snorm ]] RWTexture2DArray g_tTex13; +[[spv::format_rgba32i ]] RWTexture2DArray g_tTex14; +[[spv::format_r32i ]] RWTexture2DArray g_tTex15; +[[spv::format_r32ui ]] RWTexture2DArray g_tTex16; +[[spv::format_rg16i ]] RWTexture2DArray g_tTex17; +[[spv::format_r16i ]] RWTexture2DArray g_tTex18; +[[spv::format_rg32i ]] RWTexture2DArray g_tTex19; +[[spv::format_rg8i ]] RWTexture2DArray g_tTex20; +[[spv::format_rg8ui ]] RWTexture2DArray g_tTex21; +[[spv::format_rgba32ui ]] RWTexture2DArray g_tTex22; +[[spv::format_rgba16ui ]] RWTexture2DArray g_tTex23; +[[spv::format_rg32ui ]] RWTexture2DArray g_tTex24; +[[spv::format_rg16ui ]] RWTexture2DArray g_tTex25; + struct PS_OUTPUT { float4 Color : SV_Target0; diff --git a/glslang/MachineIndependent/attribute.h b/glslang/MachineIndependent/attribute.h index 92f3d634..38a943d2 100644 --- a/glslang/MachineIndependent/attribute.h +++ b/glslang/MachineIndependent/attribute.h @@ -116,7 +116,9 @@ namespace glslang { EatFormatRg8ui, EatFormatR16ui, EatFormatR8ui, - EatFormatUnknown + EatFormatUnknown, + EatNonWritable, + EatNonReadable }; class TIntermAggregate; diff --git a/hlsl/hlslAttributes.cpp b/hlsl/hlslAttributes.cpp index 05d4ae36..0cc0d3f4 100644 --- a/hlsl/hlslAttributes.cpp +++ b/hlsl/hlslAttributes.cpp @@ -98,7 +98,9 @@ namespace glslang { if (name == "format_rg8ui") return EatFormatRg8ui; if (name == "format_r16ui") return EatFormatR16ui; if (name == "format_r8ui") return EatFormatR8ui; - return EatFormatUnknown; + + if (name == "nonwritable") return EatNonWritable; + if (name == "nonreadable") return EatNonReadable; } else if (nameSpace.size() > 0) return EatNone; diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp index 8d389f5d..be665ac0 100755 --- a/hlsl/hlslParseHelper.cpp +++ b/hlsl/hlslParseHelper.cpp @@ -1993,6 +1993,9 @@ void HlslParseContext::transferTypeAttributes(const TSourceLoc& loc, const TAttr case EatFormatR8ui: type.getQualifier().layoutFormat = ElfR8ui; break; case EatFormatUnknown: type.getQualifier().layoutFormat = ElfNone; break; + case EatNonWritable: type.getQualifier().readonly = true; break; + case EatNonReadable: type.getQualifier().writeonly = true; break; + default: if (! allowEntry) warn(loc, "attribute does not apply to a type", "", ""); From 7b0e236325fa9e8ebc7f446f83797a20a2263b70 Mon Sep 17 00:00:00 2001 From: dan sinclair Date: Thu, 3 Oct 2019 19:35:44 -0400 Subject: [PATCH 27/94] Move install directory for SPIRV/ folder. Currently the SPIRV/ folder will get installed into the include directory. This folder is part of GLSLang, so it makes more sense under glslang/SPIRV. Currently, GLSLang will install a SPIRV/ folder while spirv-headers will install a spirv/ folder. This is confusing and will cause issues on a case sensitive filesystem if both are installed at the same time. --- SPIRV/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt index 94d2ebeb..a666412c 100644 --- a/SPIRV/CMakeLists.txt +++ b/SPIRV/CMakeLists.txt @@ -87,5 +87,6 @@ if(ENABLE_GLSLANG_INSTALL) ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() - install(FILES ${HEADERS} ${SPVREMAP_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/SPIRV/) + install(FILES ${HEADERS} ${SPVREMAP_HEADERS} + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang/SPIRV/) endif(ENABLE_GLSLANG_INSTALL) From c13e0f1e99025e13973bd831d3bd928ce258a42d Mon Sep 17 00:00:00 2001 From: dan sinclair Date: Thu, 3 Oct 2019 20:24:30 -0400 Subject: [PATCH 28/94] Update appveyor and travis files --- .appveyor.yml | 1 - .travis.yml | 1 - 2 files changed, 2 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index e7c42827..32e8f2bd 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -66,7 +66,6 @@ after_test: bin\glslangValidator.exe bin\spirv-remap.exe include\glslang\* - include\SPIRV\* lib\glslang%SUFFIX%.lib lib\HLSL%SUFFIX%.lib lib\OGLCompiler%SUFFIX%.lib diff --git a/.travis.yml b/.travis.yml index 24789121..1fa3fc01 100644 --- a/.travis.yml +++ b/.travis.yml @@ -99,7 +99,6 @@ after_success: zip ${TARBALL} bin/glslangValidator include/glslang/* - include/SPIRV/* lib/libglslang${SUFFIX}.a lib/libHLSL${SUFFIX}.a lib/libOGLCompiler${SUFFIX}.a From 78ba2510b869830412e1d82accb6110e3b93aabd Mon Sep 17 00:00:00 2001 From: dan sinclair Date: Sun, 6 Oct 2019 10:00:37 -0400 Subject: [PATCH 29/94] single line --- SPIRV/CMakeLists.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt index a666412c..f47c8a0e 100644 --- a/SPIRV/CMakeLists.txt +++ b/SPIRV/CMakeLists.txt @@ -87,6 +87,5 @@ if(ENABLE_GLSLANG_INSTALL) ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() - install(FILES ${HEADERS} ${SPVREMAP_HEADERS} - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang/SPIRV/) + install(FILES ${HEADERS} ${SPVREMAP_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang/SPIRV/) endif(ENABLE_GLSLANG_INSTALL) From 1ff0c181bb37b06371e2ffa2810d473c5e01c9b7 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Thu, 10 Oct 2019 12:01:13 -0600 Subject: [PATCH 30/94] Fix #1924: Emit SPV_EXT_physical_storage_buffer, not the KHR form. The KHR form comes along as part of 1.5, and otherwise should require another form of request to emit it. --- SPIRV/GLSL.ext.KHR.h | 1 + SPIRV/GlslangToSpv.cpp | 2 +- Test/baseResults/spv.bufferhandle1.frag.out | 2 +- Test/baseResults/spv.bufferhandle10.frag.out | 2 +- Test/baseResults/spv.bufferhandle11.frag.out | 2 +- Test/baseResults/spv.bufferhandle12.frag.out | 2 +- Test/baseResults/spv.bufferhandle13.frag.out | 2 +- Test/baseResults/spv.bufferhandle14.frag.out | 2 +- Test/baseResults/spv.bufferhandle15.frag.out | 2 +- Test/baseResults/spv.bufferhandle16.frag.out | 2 +- Test/baseResults/spv.bufferhandle18.frag.out | 2 +- Test/baseResults/spv.bufferhandle2.frag.out | 2 +- Test/baseResults/spv.bufferhandle3.frag.out | 2 +- Test/baseResults/spv.bufferhandle4.frag.out | 2 +- Test/baseResults/spv.bufferhandle5.frag.out | 2 +- Test/baseResults/spv.bufferhandle6.frag.out | 2 +- Test/baseResults/spv.bufferhandle7.frag.out | 2 +- Test/baseResults/spv.bufferhandle8.frag.out | 2 +- Test/baseResults/spv.bufferhandle9.frag.out | 2 +- Test/baseResults/spv.bufferhandleUvec2.frag.out | 3 ++- Test/baseResults/spv.coopmat.comp.out | 2 +- Test/baseResults/spv.intcoopmat.comp.out | 2 +- 22 files changed, 23 insertions(+), 21 deletions(-) diff --git a/SPIRV/GLSL.ext.KHR.h b/SPIRV/GLSL.ext.KHR.h index ac26a054..e58e836a 100644 --- a/SPIRV/GLSL.ext.KHR.h +++ b/SPIRV/GLSL.ext.KHR.h @@ -40,6 +40,7 @@ static const char* const E_SPV_KHR_8bit_storage = "SPV_KHR_8bit_ static const char* const E_SPV_KHR_storage_buffer_storage_class = "SPV_KHR_storage_buffer_storage_class"; static const char* const E_SPV_KHR_post_depth_coverage = "SPV_KHR_post_depth_coverage"; static const char* const E_SPV_KHR_vulkan_memory_model = "SPV_KHR_vulkan_memory_model"; +static const char* const E_SPV_EXT_physical_storage_buffer = "SPV_EXT_physical_storage_buffer"; static const char* const E_SPV_KHR_physical_storage_buffer = "SPV_KHR_physical_storage_buffer"; static const char* const E_SPV_EXT_fragment_shader_interlock = "SPV_EXT_fragment_shader_interlock"; static const char* const E_SPV_KHR_shader_clock = "SPV_KHR_shader_clock"; diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index afb405e4..8760f4a9 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -1399,7 +1399,7 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, const gl if (glslangIntermediate->usingPhysicalStorageBuffer()) { addressingModel = spv::AddressingModelPhysicalStorageBuffer64EXT; - builder.addIncorporatedExtension(spv::E_SPV_KHR_physical_storage_buffer, spv::Spv_1_5); + builder.addIncorporatedExtension(spv::E_SPV_EXT_physical_storage_buffer, spv::Spv_1_5); builder.addCapability(spv::CapabilityPhysicalStorageBufferAddressesEXT); }; if (glslangIntermediate->usingVulkanMemoryModel()) { diff --git a/Test/baseResults/spv.bufferhandle1.frag.out b/Test/baseResults/spv.bufferhandle1.frag.out index 8457eaca..6e50c705 100644 --- a/Test/baseResults/spv.bufferhandle1.frag.out +++ b/Test/baseResults/spv.bufferhandle1.frag.out @@ -6,7 +6,7 @@ spv.bufferhandle1.frag Capability Shader Capability VulkanMemoryModelKHR Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_KHR_physical_storage_buffer" + Extension "SPV_EXT_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" Extension "SPV_KHR_vulkan_memory_model" 1: ExtInstImport "GLSL.std.450" diff --git a/Test/baseResults/spv.bufferhandle10.frag.out b/Test/baseResults/spv.bufferhandle10.frag.out index 871b0177..a95dc719 100644 --- a/Test/baseResults/spv.bufferhandle10.frag.out +++ b/Test/baseResults/spv.bufferhandle10.frag.out @@ -6,7 +6,7 @@ spv.bufferhandle10.frag Capability Shader Capability VulkanMemoryModelKHR Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_KHR_physical_storage_buffer" + Extension "SPV_EXT_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" Extension "SPV_KHR_vulkan_memory_model" 1: ExtInstImport "GLSL.std.450" diff --git a/Test/baseResults/spv.bufferhandle11.frag.out b/Test/baseResults/spv.bufferhandle11.frag.out index 6f3cbe15..3469715b 100644 --- a/Test/baseResults/spv.bufferhandle11.frag.out +++ b/Test/baseResults/spv.bufferhandle11.frag.out @@ -9,8 +9,8 @@ WARNING: 0:6: '' : all default precisions are highp; use precision statements to Capability Shader Capability StorageBuffer8BitAccess Capability PhysicalStorageBufferAddressesEXT + Extension "SPV_EXT_physical_storage_buffer" Extension "SPV_KHR_8bit_storage" - Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 diff --git a/Test/baseResults/spv.bufferhandle12.frag.out b/Test/baseResults/spv.bufferhandle12.frag.out index 1808c5fa..6c20f02c 100644 --- a/Test/baseResults/spv.bufferhandle12.frag.out +++ b/Test/baseResults/spv.bufferhandle12.frag.out @@ -9,8 +9,8 @@ WARNING: 0:6: '' : all default precisions are highp; use precision statements to Capability Shader Capability StorageUniformBufferBlock16 Capability PhysicalStorageBufferAddressesEXT + Extension "SPV_EXT_physical_storage_buffer" Extension "SPV_KHR_16bit_storage" - Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 diff --git a/Test/baseResults/spv.bufferhandle13.frag.out b/Test/baseResults/spv.bufferhandle13.frag.out index 7b83210a..1231cf67 100644 --- a/Test/baseResults/spv.bufferhandle13.frag.out +++ b/Test/baseResults/spv.bufferhandle13.frag.out @@ -5,7 +5,7 @@ spv.bufferhandle13.frag Capability Shader Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_KHR_physical_storage_buffer" + Extension "SPV_EXT_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 diff --git a/Test/baseResults/spv.bufferhandle14.frag.out b/Test/baseResults/spv.bufferhandle14.frag.out index b44391a3..940793d3 100644 --- a/Test/baseResults/spv.bufferhandle14.frag.out +++ b/Test/baseResults/spv.bufferhandle14.frag.out @@ -5,7 +5,7 @@ spv.bufferhandle14.frag Capability Shader Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_KHR_physical_storage_buffer" + Extension "SPV_EXT_physical_storage_buffer" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 EntryPoint Fragment 4 "main" diff --git a/Test/baseResults/spv.bufferhandle15.frag.out b/Test/baseResults/spv.bufferhandle15.frag.out index 2eae28b2..ec7064d9 100644 --- a/Test/baseResults/spv.bufferhandle15.frag.out +++ b/Test/baseResults/spv.bufferhandle15.frag.out @@ -8,7 +8,7 @@ WARNING: 0:16: '' : all default precisions are highp; use precision statements t Capability Shader Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_KHR_physical_storage_buffer" + Extension "SPV_EXT_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 diff --git a/Test/baseResults/spv.bufferhandle16.frag.out b/Test/baseResults/spv.bufferhandle16.frag.out index 23555918..16e69d1d 100644 --- a/Test/baseResults/spv.bufferhandle16.frag.out +++ b/Test/baseResults/spv.bufferhandle16.frag.out @@ -6,7 +6,7 @@ spv.bufferhandle16.frag Capability Shader Capability Int64 Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_KHR_physical_storage_buffer" + Extension "SPV_EXT_physical_storage_buffer" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 EntryPoint Fragment 4 "main" diff --git a/Test/baseResults/spv.bufferhandle18.frag.out b/Test/baseResults/spv.bufferhandle18.frag.out index 6d2178df..567295d3 100644 --- a/Test/baseResults/spv.bufferhandle18.frag.out +++ b/Test/baseResults/spv.bufferhandle18.frag.out @@ -6,7 +6,7 @@ spv.bufferhandle18.frag Capability Shader Capability Int64 Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_KHR_physical_storage_buffer" + Extension "SPV_EXT_physical_storage_buffer" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 EntryPoint Fragment 4 "main" diff --git a/Test/baseResults/spv.bufferhandle2.frag.out b/Test/baseResults/spv.bufferhandle2.frag.out index 728bee38..8fee6db6 100644 --- a/Test/baseResults/spv.bufferhandle2.frag.out +++ b/Test/baseResults/spv.bufferhandle2.frag.out @@ -5,7 +5,7 @@ spv.bufferhandle2.frag Capability Shader Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_KHR_physical_storage_buffer" + Extension "SPV_EXT_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 diff --git a/Test/baseResults/spv.bufferhandle3.frag.out b/Test/baseResults/spv.bufferhandle3.frag.out index b888fe42..c02c34cf 100644 --- a/Test/baseResults/spv.bufferhandle3.frag.out +++ b/Test/baseResults/spv.bufferhandle3.frag.out @@ -5,7 +5,7 @@ spv.bufferhandle3.frag Capability Shader Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_KHR_physical_storage_buffer" + Extension "SPV_EXT_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 diff --git a/Test/baseResults/spv.bufferhandle4.frag.out b/Test/baseResults/spv.bufferhandle4.frag.out index e5a4f5d3..3f568b0f 100644 --- a/Test/baseResults/spv.bufferhandle4.frag.out +++ b/Test/baseResults/spv.bufferhandle4.frag.out @@ -5,7 +5,7 @@ spv.bufferhandle4.frag Capability Shader Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_KHR_physical_storage_buffer" + Extension "SPV_EXT_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 diff --git a/Test/baseResults/spv.bufferhandle5.frag.out b/Test/baseResults/spv.bufferhandle5.frag.out index c663c42d..3f1d2141 100644 --- a/Test/baseResults/spv.bufferhandle5.frag.out +++ b/Test/baseResults/spv.bufferhandle5.frag.out @@ -5,7 +5,7 @@ spv.bufferhandle5.frag Capability Shader Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_KHR_physical_storage_buffer" + Extension "SPV_EXT_physical_storage_buffer" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 EntryPoint Fragment 4 "main" diff --git a/Test/baseResults/spv.bufferhandle6.frag.out b/Test/baseResults/spv.bufferhandle6.frag.out index 2a9b484c..866741f9 100644 --- a/Test/baseResults/spv.bufferhandle6.frag.out +++ b/Test/baseResults/spv.bufferhandle6.frag.out @@ -5,7 +5,7 @@ spv.bufferhandle6.frag Capability Shader Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_KHR_physical_storage_buffer" + Extension "SPV_EXT_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 diff --git a/Test/baseResults/spv.bufferhandle7.frag.out b/Test/baseResults/spv.bufferhandle7.frag.out index c5bbc5d4..d09eded3 100644 --- a/Test/baseResults/spv.bufferhandle7.frag.out +++ b/Test/baseResults/spv.bufferhandle7.frag.out @@ -5,7 +5,7 @@ spv.bufferhandle7.frag Capability Shader Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_KHR_physical_storage_buffer" + Extension "SPV_EXT_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 diff --git a/Test/baseResults/spv.bufferhandle8.frag.out b/Test/baseResults/spv.bufferhandle8.frag.out index 3219734a..c37fa3fe 100644 --- a/Test/baseResults/spv.bufferhandle8.frag.out +++ b/Test/baseResults/spv.bufferhandle8.frag.out @@ -5,7 +5,7 @@ spv.bufferhandle8.frag Capability Shader Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_KHR_physical_storage_buffer" + Extension "SPV_EXT_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 diff --git a/Test/baseResults/spv.bufferhandle9.frag.out b/Test/baseResults/spv.bufferhandle9.frag.out index df2b677c..5b91eda9 100644 --- a/Test/baseResults/spv.bufferhandle9.frag.out +++ b/Test/baseResults/spv.bufferhandle9.frag.out @@ -6,7 +6,7 @@ spv.bufferhandle9.frag Capability Shader Capability Int64 Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_KHR_physical_storage_buffer" + Extension "SPV_EXT_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 diff --git a/Test/baseResults/spv.bufferhandleUvec2.frag.out b/Test/baseResults/spv.bufferhandleUvec2.frag.out index 1e0cbcd3..9ac455ba 100755 --- a/Test/baseResults/spv.bufferhandleUvec2.frag.out +++ b/Test/baseResults/spv.bufferhandleUvec2.frag.out @@ -1,11 +1,12 @@ spv.bufferhandleUvec2.frag +Validation failed // Module Version 10000 // Generated by (magic number): 80007 // Id's are bound by 71 Capability Shader Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_KHR_physical_storage_buffer" + Extension "SPV_EXT_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 diff --git a/Test/baseResults/spv.coopmat.comp.out b/Test/baseResults/spv.coopmat.comp.out index 976c59f4..acdcbc4f 100644 --- a/Test/baseResults/spv.coopmat.comp.out +++ b/Test/baseResults/spv.coopmat.comp.out @@ -9,8 +9,8 @@ spv.coopmat.comp Capability VulkanMemoryModelKHR Capability PhysicalStorageBufferAddressesEXT Capability CooperativeMatrixNV + Extension "SPV_EXT_physical_storage_buffer" Extension "SPV_KHR_16bit_storage" - Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" Extension "SPV_KHR_vulkan_memory_model" Extension "SPV_NV_cooperative_matrix" diff --git a/Test/baseResults/spv.intcoopmat.comp.out b/Test/baseResults/spv.intcoopmat.comp.out index a854ed55..06f5623d 100644 --- a/Test/baseResults/spv.intcoopmat.comp.out +++ b/Test/baseResults/spv.intcoopmat.comp.out @@ -10,8 +10,8 @@ spv.intcoopmat.comp Capability VulkanMemoryModelKHR Capability PhysicalStorageBufferAddressesEXT Capability CooperativeMatrixNV + Extension "SPV_EXT_physical_storage_buffer" Extension "SPV_KHR_8bit_storage" - Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" Extension "SPV_KHR_vulkan_memory_model" Extension "SPV_NV_cooperative_matrix" From 39ced690d64174e664c001c046d961cc294e8d96 Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Thu, 10 Oct 2019 19:57:01 -0600 Subject: [PATCH 31/94] Update spirv-tools known good. --- known_good.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/known_good.json b/known_good.json index 6a139070..3d8994a6 100644 --- a/known_good.json +++ b/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "bbb29870b510f83f99994358179c9ea6838c3100" + "commit" : "c3ca04741945c332ddbeb7d7125dbae2809b7195" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "601d738723ac381741311c6c98c36d6170be14a2" + "commit" : "b252a50953ac4375cb1864e94f4b0234db9d215d" } ] } From ee8e9c15222c2aff93dfea451b1e8a892497ec2d Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Thu, 10 Oct 2019 20:54:21 -0600 Subject: [PATCH 32/94] Fix #1924: Promote SPV_EXT_physical_storage_buffer to KHR when required. If the semantics that require the KHR form over the EXT form are seen (OpBitcast between a vector and a pointer) promote the requested extension from the EXT to the KHR. --- SPIRV/GlslangToSpv.cpp | 3 +++ SPIRV/SpvBuilder.h | 9 +++++++++ Test/baseResults/spv.bufferhandleUvec2.frag.out | 3 +-- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 8760f4a9..2d50074f 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -6275,6 +6275,9 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, OpDecora break; case glslang::EOpConvPtrToUvec2: case glslang::EOpConvUvec2ToPtr: + if (builder.isVector(operand)) + builder.promoteIncorporatedExtension(spv::E_SPV_EXT_physical_storage_buffer, + spv::E_SPV_KHR_physical_storage_buffer, spv::Spv_1_5); convOp = spv::OpBitcast; break; #endif diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index bef7d3db..55754f60 100644 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -106,11 +106,20 @@ public: void addModuleProcessed(const std::string& p) { moduleProcesses.push_back(p.c_str()); } void setEmitOpLines() { emitOpLines = true; } void addExtension(const char* ext) { extensions.insert(ext); } + void removeExtension(const char* ext) + { + extensions.erase(ext); + } void addIncorporatedExtension(const char* ext, SpvVersion incorporatedVersion) { if (getSpvVersion() < static_cast(incorporatedVersion)) addExtension(ext); } + void promoteIncorporatedExtension(const char* baseExt, const char* promoExt, SpvVersion incorporatedVersion) + { + removeExtension(baseExt); + addIncorporatedExtension(promoExt, incorporatedVersion); + } void addInclude(const std::string& name, const std::string& text) { spv::Id incId = getStringId(name); diff --git a/Test/baseResults/spv.bufferhandleUvec2.frag.out b/Test/baseResults/spv.bufferhandleUvec2.frag.out index 9ac455ba..1e0cbcd3 100755 --- a/Test/baseResults/spv.bufferhandleUvec2.frag.out +++ b/Test/baseResults/spv.bufferhandleUvec2.frag.out @@ -1,12 +1,11 @@ spv.bufferhandleUvec2.frag -Validation failed // Module Version 10000 // Generated by (magic number): 80007 // Id's are bound by 71 Capability Shader Capability PhysicalStorageBufferAddressesEXT - Extension "SPV_EXT_physical_storage_buffer" + Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 From 7c9accb6534d4cde050555b8091b434dc7e4d218 Mon Sep 17 00:00:00 2001 From: Ryan Harrison Date: Fri, 11 Oct 2019 11:00:57 -0400 Subject: [PATCH 33/94] Remove unnecessary semi-colons and add warning about them These are causing integration issues with Chromium down stream since it is more strict about these. --- BUILD.gn | 1 + CMakeLists.txt | 4 ++-- SPIRV/GlslangToSpv.cpp | 8 ++++---- glslang/Include/Types.h | 4 ++-- glslang/MachineIndependent/ParseHelper.h | 2 +- glslang/MachineIndependent/iomapper.h | 12 ++++++------ glslang/Public/ShaderLang.h | 4 ++-- 7 files changed, 18 insertions(+), 17 deletions(-) diff --git a/BUILD.gn b/BUILD.gn index 55f21ad0..b2878aff 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -168,6 +168,7 @@ source_set("glslang_sources") { "-Wno-unused-variable", "-Wno-missing-field-initializers", "-Wno-newline-eof", + "-Wextra-semi", ] } if (is_win && !is_clang) { diff --git a/CMakeLists.txt b/CMakeLists.txt index c2adeb03..60ccd025 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -90,12 +90,12 @@ endif(WIN32) if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU") add_compile_options(-Wall -Wmaybe-uninitialized -Wuninitialized -Wunused -Wunused-local-typedefs - -Wunused-parameter -Wunused-value -Wunused-variable -Wunused-but-set-parameter -Wunused-but-set-variable -fno-exceptions) + -Wunused-parameter -Wunused-value -Wunused-variable -Wunused-but-set-parameter -Wunused-but-set-variable -fno-exceptions -Wextra-semi) add_compile_options(-Wno-reorder) # disable this from -Wall, since it happens all over. add_compile_options(-fno-rtti) elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang") add_compile_options(-Wall -Wuninitialized -Wunused -Wunused-local-typedefs - -Wunused-parameter -Wunused-value -Wunused-variable) + -Wunused-parameter -Wunused-value -Wunused-variable -Wextra-semi) add_compile_options(-Wno-reorder) # disable this from -Wall, since it happens all over. add_compile_options(-fno-rtti) elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "MSVC") diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 2d50074f..f4e0fdbc 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -100,11 +100,11 @@ struct OpDecorations { spv::Decoration precision; #ifdef GLSLANG_WEB - void addNoContraction(spv::Builder&, spv::Id) const { }; - void addNonUniform(spv::Builder&, spv::Id) const { }; + void addNoContraction(spv::Builder&, spv::Id) const { } + void addNonUniform(spv::Builder&, spv::Id) const { } #else - void addNoContraction(spv::Builder& builder, spv::Id t) { builder.addDecoration(t, noContraction); }; - void addNonUniform(spv::Builder& builder, spv::Id t) { builder.addDecoration(t, nonUniform); }; + void addNoContraction(spv::Builder& builder, spv::Id t) { builder.addDecoration(t, noContraction); } + void addNonUniform(spv::Builder& builder, spv::Id t) { builder.addDecoration(t, nonUniform); } protected: spv::Decoration noContraction; spv::Decoration nonUniform; diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index 59ead22d..ef933b4f 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -135,8 +135,8 @@ struct TSampler { // misnomer now; includes images, textures without sampler, bool isYuv() const { return yuv; } #endif void setCombined(bool c) { combined = c; } - void setBasicType(TBasicType t) { type = t; }; - TBasicType getBasicType() const { return type; }; + void setBasicType(TBasicType t) { type = t; } + TBasicType getBasicType() const { return type; } bool isShadow() const { return shadow; } bool isArrayed() const { return arrayed; } diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h index 5cee05e1..39363f1a 100644 --- a/glslang/MachineIndependent/ParseHelper.h +++ b/glslang/MachineIndependent/ParseHelper.h @@ -283,7 +283,7 @@ public: const TString* entryPoint = nullptr); virtual ~TParseContext(); - bool obeyPrecisionQualifiers() const { return precisionManager.respectingPrecisionQualifiers(); }; + bool obeyPrecisionQualifiers() const { return precisionManager.respectingPrecisionQualifiers(); } void setPrecisionDefaults(); void setLimits(const TBuiltInResource&) override; diff --git a/glslang/MachineIndependent/iomapper.h b/glslang/MachineIndependent/iomapper.h index 01afc5a2..684e88d5 100644 --- a/glslang/MachineIndependent/iomapper.h +++ b/glslang/MachineIndependent/iomapper.h @@ -114,7 +114,7 @@ public: bool doAutoLocationMapping() const; TSlotSet::iterator findSlot(int set, int slot); bool checkEmpty(int set, int slot); - bool validateInOut(EShLanguage /*stage*/, TVarEntryInfo& /*ent*/) override { return true; }; + bool validateInOut(EShLanguage /*stage*/, TVarEntryInfo& /*ent*/) override { return true; } int reserveSlot(int set, int slot, int size = 1); int getFreeSlot(int set, int base, int size = 1); int resolveSet(EShLanguage /*stage*/, TVarEntryInfo& ent) override; @@ -125,7 +125,7 @@ public: void addStage(EShLanguage stage) override { if (stage < EShLangCount) stageMask[stage] = true; - }; + } uint32_t computeTypeLocationSize(const TType& type, EShLanguage stage); TSlotSetMap slots; @@ -191,7 +191,7 @@ public: typedef std::map TVarSlotMap; // typedef std::map TSlotMap; // TDefaultGlslIoResolver(const TIntermediate& intermediate); - bool validateBinding(EShLanguage /*stage*/, TVarEntryInfo& /*ent*/) override { return true; }; + bool validateBinding(EShLanguage /*stage*/, TVarEntryInfo& /*ent*/) override { return true; } TResourceType getResourceType(const glslang::TType& type) override; int resolveInOutLocation(EShLanguage stage, TVarEntryInfo& ent) override; int resolveUniformLocation(EShLanguage /*stage*/, TVarEntryInfo& ent) override; @@ -209,7 +209,7 @@ public: int buildStorageKey(EShLanguage stage, TStorageQualifier type) { assert(static_cast(stage) <= 0x0000ffff && static_cast(type) <= 0x0000ffff); return (stage << 16) | type; - }; + } protected: // Use for mark pre stage, to get more interface symbol information. @@ -242,7 +242,7 @@ struct TVarLivePair : std::pair { const_cast(first) = _Right.first; second = _Right.second; return (*this); - }; + } }; typedef std::vector TVarLiveVector; @@ -253,7 +253,7 @@ public: virtual ~TIoMapper() {} // grow the reflection stage by stage bool virtual addStage(EShLanguage, TIntermediate&, TInfoSink&, TIoMapResolver*); - bool virtual doMap(TIoMapResolver*, TInfoSink&) { return true; }; + bool virtual doMap(TIoMapResolver*, TInfoSink&) { return true; } }; // I/O mapper for OpenGL diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index 9782475d..4cc6c2f4 100755 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -487,7 +487,7 @@ public: environment.target.version = version; } - void getStrings(const char* const* &s, int& n) { s = strings; n = numStrings; }; + void getStrings(const char* const* &s, int& n) { s = strings; n = numStrings; } #ifdef ENABLE_HLSL void setEnvTargetHlslFunctionality1() { environment.target.hlslFunctionality1 = true; } @@ -775,7 +775,7 @@ public: TProgram(); virtual ~TProgram(); void addShader(TShader* shader) { stages[shader->stage].push_back(shader); } - std::list& getShaders(EShLanguage stage) { return stages[stage]; }; + std::list& getShaders(EShLanguage stage) { return stages[stage]; } // Link Validation interface bool link(EShMessages); const char* getInfoLog(); From 41261d95a417bb3a121c162154d441433705a237 Mon Sep 17 00:00:00 2001 From: Ryan Harrison Date: Fri, 11 Oct 2019 13:18:07 -0400 Subject: [PATCH 34/94] Forgot that GCC doesn't recognize this flag --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 60ccd025..6536ad1f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -90,7 +90,7 @@ endif(WIN32) if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU") add_compile_options(-Wall -Wmaybe-uninitialized -Wuninitialized -Wunused -Wunused-local-typedefs - -Wunused-parameter -Wunused-value -Wunused-variable -Wunused-but-set-parameter -Wunused-but-set-variable -fno-exceptions -Wextra-semi) + -Wunused-parameter -Wunused-value -Wunused-variable -Wunused-but-set-parameter -Wunused-but-set-variable -fno-exceptions) add_compile_options(-Wno-reorder) # disable this from -Wall, since it happens all over. add_compile_options(-fno-rtti) elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang") From 3c8b4daabd41fc3140141cf10f133f3084cb20f6 Mon Sep 17 00:00:00 2001 From: Xottab_DUTY Date: Sat, 12 Oct 2019 16:23:54 +0500 Subject: [PATCH 35/94] Fixed typo in README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 67aee9df..f5651e1d 100755 --- a/README.md +++ b/README.md @@ -307,7 +307,7 @@ See `ShaderLang.h` and the usage of it in `StandAlone/StandAlone.cpp` for more details. There is a block comment giving more detail above the calls for `setEnvInput, setEnvClient, and setEnvTarget`. -### C Functional Interface (orignal) +### C Functional Interface (original) This interface is in roughly the first 2/3 of `ShaderLang.h`, and referred to as the `Sh*()` interface, as all the entry points start `Sh`. From 01a50473734249c1d2ca7808de7c78db2cc71e62 Mon Sep 17 00:00:00 2001 From: georgeouzou Date: Sat, 12 Oct 2019 15:17:29 +0300 Subject: [PATCH 36/94] remove redundant check --- glslang/MachineIndependent/ParseHelper.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index a1e8e340..5165eae5 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -5861,9 +5861,7 @@ void TParseContext::layoutQualifierCheck(const TSourceLoc& loc, const TQualifier const char* feature = "location qualifier on uniform or buffer"; requireProfile(loc, EEsProfile | ECoreProfile | ECompatibilityProfile | ENoProfile, feature); profileRequires(loc, ~EEsProfile, 330, E_GL_ARB_explicit_attrib_location, feature); - if (!isEsProfile() && (extensionTurnedOn(E_GL_ARB_explicit_attrib_location) || version >= 330)) { - profileRequires(loc, ~EEsProfile, 430, E_GL_ARB_explicit_uniform_location, feature); - } + profileRequires(loc, ~EEsProfile, 430, E_GL_ARB_explicit_uniform_location, feature); profileRequires(loc, EEsProfile, 310, nullptr, feature); break; } From 765cee844194b7b5b9e4baf86d8f7cd03c793401 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Mon, 14 Oct 2019 23:08:26 -0600 Subject: [PATCH 37/94] GLSL/SPV: Pre SPIR-V 1.5, subgroupQuadBroadcast index must be constant --- Test/baseResults/glsl.450.subgroup.frag.out | 442 ++++++++++---------- Test/glsl.450.subgroup.frag | 4 + glslang/MachineIndependent/ParseHelper.cpp | 1 + 3 files changed, 231 insertions(+), 216 deletions(-) diff --git a/Test/baseResults/glsl.450.subgroup.frag.out b/Test/baseResults/glsl.450.subgroup.frag.out index e61523e9..817abb24 100644 --- a/Test/baseResults/glsl.450.subgroup.frag.out +++ b/Test/baseResults/glsl.450.subgroup.frag.out @@ -85,11 +85,13 @@ ERROR: 0:95: 'subgroupPartitionedExclusiveMaxNV' : required extension not reques ERROR: 0:96: 'subgroupPartitionedExclusiveAndNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:97: 'subgroupPartitionedExclusiveOrNV' : required extension not requested: GL_NV_shader_subgroup_partitioned ERROR: 0:98: 'subgroupPartitionedExclusiveXorNV' : required extension not requested: GL_NV_shader_subgroup_partitioned -ERROR: 0:232: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins -ERROR: 0:233: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins -ERROR: 0:234: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins -ERROR: 0:235: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins -ERROR: 90 compilation errors. No code generated. +ERROR: 0:124: 'id' : argument must be compile-time constant +ERROR: 0:199: 'id' : argument must be compile-time constant +ERROR: 0:236: 'gl_WarpsPerSMNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:237: 'gl_SMCountNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:238: 'gl_WarpIDNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 0:239: 'gl_SMIDNV' : required extension not requested: GL_NV_shader_sm_builtins +ERROR: 92 compilation errors. No code generated. Shader version: 450 @@ -352,270 +354,278 @@ ERROR: node is still EOpNull! 0:116 Function Definition: ballot_works(vf4; ( global void) 0:116 Function Parameters: 0:116 'f4' ( in 4-component vector of float) -0:117 Sequence -0:117 'gl_SubgroupEqMask' ( flat in 4-component vector of uint SubgroupEqMask) -0:118 'gl_SubgroupGeMask' ( flat in 4-component vector of uint SubgroupGeMask) -0:119 'gl_SubgroupGtMask' ( flat in 4-component vector of uint SubgroupGtMask) -0:120 'gl_SubgroupLeMask' ( flat in 4-component vector of uint SubgroupLeMask) -0:121 'gl_SubgroupLtMask' ( flat in 4-component vector of uint SubgroupLtMask) -0:122 subgroupBroadcast ( global 4-component vector of float) -0:122 'f4' ( in 4-component vector of float) -0:122 Constant: -0:122 0 (const uint) -0:123 subgroupBroadcastFirst ( global 4-component vector of float) +0:? Sequence +0:118 'gl_SubgroupEqMask' ( flat in 4-component vector of uint SubgroupEqMask) +0:119 'gl_SubgroupGeMask' ( flat in 4-component vector of uint SubgroupGeMask) +0:120 'gl_SubgroupGtMask' ( flat in 4-component vector of uint SubgroupGtMask) +0:121 'gl_SubgroupLeMask' ( flat in 4-component vector of uint SubgroupLeMask) +0:122 'gl_SubgroupLtMask' ( flat in 4-component vector of uint SubgroupLtMask) +0:123 subgroupBroadcast ( global 4-component vector of float) 0:123 'f4' ( in 4-component vector of float) -0:124 Sequence -0:124 move second child to first child ( temp 4-component vector of uint) -0:124 'ballot' ( temp 4-component vector of uint) -0:124 subgroupBallot ( global 4-component vector of uint) -0:124 Constant: -0:124 false (const bool) -0:125 subgroupInverseBallot ( global bool) -0:125 Constant: -0:125 1 (const uint) -0:125 1 (const uint) -0:125 1 (const uint) -0:125 1 (const uint) -0:126 subgroupBallotBitExtract ( global bool) -0:126 'ballot' ( temp 4-component vector of uint) -0:126 Constant: -0:126 0 (const uint) -0:127 subgroupBallotBitCount ( global uint) -0:127 'ballot' ( temp 4-component vector of uint) -0:128 subgroupBallotInclusiveBitCount ( global uint) +0:123 Constant: +0:123 0 (const uint) +0:124 subgroupBroadcast ( global 4-component vector of float) +0:124 'f4' ( in 4-component vector of float) +0:124 Convert int to uint ( temp uint) +0:124 'i' ( temp int) +0:125 subgroupBroadcastFirst ( global 4-component vector of float) +0:125 'f4' ( in 4-component vector of float) +0:126 Sequence +0:126 move second child to first child ( temp 4-component vector of uint) +0:126 'ballot' ( temp 4-component vector of uint) +0:126 subgroupBallot ( global 4-component vector of uint) +0:126 Constant: +0:126 false (const bool) +0:127 subgroupInverseBallot ( global bool) +0:127 Constant: +0:127 1 (const uint) +0:127 1 (const uint) +0:127 1 (const uint) +0:127 1 (const uint) +0:128 subgroupBallotBitExtract ( global bool) 0:128 'ballot' ( temp 4-component vector of uint) -0:129 subgroupBallotExclusiveBitCount ( global uint) +0:128 Constant: +0:128 0 (const uint) +0:129 subgroupBallotBitCount ( global uint) 0:129 'ballot' ( temp 4-component vector of uint) -0:130 subgroupBallotFindLSB ( global uint) +0:130 subgroupBallotInclusiveBitCount ( global uint) 0:130 'ballot' ( temp 4-component vector of uint) -0:131 subgroupBallotFindMSB ( global uint) +0:131 subgroupBallotExclusiveBitCount ( global uint) 0:131 'ballot' ( temp 4-component vector of uint) -0:135 Function Definition: vote_works(vf4; ( global void) -0:135 Function Parameters: -0:135 'f4' ( in 4-component vector of float) -0:137 Sequence -0:137 subgroupAll ( global bool) -0:137 Constant: -0:137 true (const bool) -0:138 subgroupAny ( global bool) -0:138 Constant: -0:138 false (const bool) -0:139 subgroupAllEqual ( global bool) -0:139 'f4' ( in 4-component vector of float) -0:144 Function Definition: shuffle_works(vf4; ( global void) -0:144 Function Parameters: -0:144 'f4' ( in 4-component vector of float) -0:146 Sequence -0:146 subgroupShuffle ( global 4-component vector of float) -0:146 'f4' ( in 4-component vector of float) -0:146 Constant: -0:146 0 (const uint) -0:147 subgroupShuffleXor ( global 4-component vector of float) -0:147 'f4' ( in 4-component vector of float) -0:147 Constant: -0:147 1 (const uint) -0:148 subgroupShuffleUp ( global 4-component vector of float) +0:132 subgroupBallotFindLSB ( global uint) +0:132 'ballot' ( temp 4-component vector of uint) +0:133 subgroupBallotFindMSB ( global uint) +0:133 'ballot' ( temp 4-component vector of uint) +0:137 Function Definition: vote_works(vf4; ( global void) +0:137 Function Parameters: +0:137 'f4' ( in 4-component vector of float) +0:139 Sequence +0:139 subgroupAll ( global bool) +0:139 Constant: +0:139 true (const bool) +0:140 subgroupAny ( global bool) +0:140 Constant: +0:140 false (const bool) +0:141 subgroupAllEqual ( global bool) +0:141 'f4' ( in 4-component vector of float) +0:146 Function Definition: shuffle_works(vf4; ( global void) +0:146 Function Parameters: +0:146 'f4' ( in 4-component vector of float) +0:148 Sequence +0:148 subgroupShuffle ( global 4-component vector of float) 0:148 'f4' ( in 4-component vector of float) 0:148 Constant: -0:148 1 (const uint) -0:149 subgroupShuffleDown ( global 4-component vector of float) +0:148 0 (const uint) +0:149 subgroupShuffleXor ( global 4-component vector of float) 0:149 'f4' ( in 4-component vector of float) 0:149 Constant: 0:149 1 (const uint) -0:153 Function Definition: arith_works(vf4; ( global void) -0:153 Function Parameters: -0:153 'f4' ( in 4-component vector of float) +0:150 subgroupShuffleUp ( global 4-component vector of float) +0:150 'f4' ( in 4-component vector of float) +0:150 Constant: +0:150 1 (const uint) +0:151 subgroupShuffleDown ( global 4-component vector of float) +0:151 'f4' ( in 4-component vector of float) +0:151 Constant: +0:151 1 (const uint) +0:155 Function Definition: arith_works(vf4; ( global void) +0:155 Function Parameters: +0:155 'f4' ( in 4-component vector of float) 0:? Sequence -0:156 subgroupAdd ( global 4-component vector of float) -0:156 'f4' ( in 4-component vector of float) -0:157 subgroupMul ( global 4-component vector of float) -0:157 'f4' ( in 4-component vector of float) -0:158 subgroupMin ( global 4-component vector of float) +0:158 subgroupAdd ( global 4-component vector of float) 0:158 'f4' ( in 4-component vector of float) -0:159 subgroupMax ( global 4-component vector of float) +0:159 subgroupMul ( global 4-component vector of float) 0:159 'f4' ( in 4-component vector of float) -0:160 subgroupAnd ( global 4-component vector of uint) -0:160 'ballot' ( temp 4-component vector of uint) -0:161 subgroupOr ( global 4-component vector of uint) -0:161 'ballot' ( temp 4-component vector of uint) -0:162 subgroupXor ( global 4-component vector of uint) +0:160 subgroupMin ( global 4-component vector of float) +0:160 'f4' ( in 4-component vector of float) +0:161 subgroupMax ( global 4-component vector of float) +0:161 'f4' ( in 4-component vector of float) +0:162 subgroupAnd ( global 4-component vector of uint) 0:162 'ballot' ( temp 4-component vector of uint) -0:163 subgroupInclusiveAdd ( global 4-component vector of float) -0:163 'f4' ( in 4-component vector of float) -0:164 subgroupInclusiveMul ( global 4-component vector of float) -0:164 'f4' ( in 4-component vector of float) -0:165 subgroupInclusiveMin ( global 4-component vector of float) +0:163 subgroupOr ( global 4-component vector of uint) +0:163 'ballot' ( temp 4-component vector of uint) +0:164 subgroupXor ( global 4-component vector of uint) +0:164 'ballot' ( temp 4-component vector of uint) +0:165 subgroupInclusiveAdd ( global 4-component vector of float) 0:165 'f4' ( in 4-component vector of float) -0:166 subgroupInclusiveMax ( global 4-component vector of float) +0:166 subgroupInclusiveMul ( global 4-component vector of float) 0:166 'f4' ( in 4-component vector of float) -0:167 subgroupInclusiveAnd ( global 4-component vector of uint) -0:167 'ballot' ( temp 4-component vector of uint) -0:168 subgroupInclusiveOr ( global 4-component vector of uint) -0:168 'ballot' ( temp 4-component vector of uint) -0:169 subgroupInclusiveXor ( global 4-component vector of uint) +0:167 subgroupInclusiveMin ( global 4-component vector of float) +0:167 'f4' ( in 4-component vector of float) +0:168 subgroupInclusiveMax ( global 4-component vector of float) +0:168 'f4' ( in 4-component vector of float) +0:169 subgroupInclusiveAnd ( global 4-component vector of uint) 0:169 'ballot' ( temp 4-component vector of uint) -0:170 subgroupExclusiveAdd ( global 4-component vector of float) -0:170 'f4' ( in 4-component vector of float) -0:171 subgroupExclusiveMul ( global 4-component vector of float) -0:171 'f4' ( in 4-component vector of float) -0:172 subgroupExclusiveMin ( global 4-component vector of float) +0:170 subgroupInclusiveOr ( global 4-component vector of uint) +0:170 'ballot' ( temp 4-component vector of uint) +0:171 subgroupInclusiveXor ( global 4-component vector of uint) +0:171 'ballot' ( temp 4-component vector of uint) +0:172 subgroupExclusiveAdd ( global 4-component vector of float) 0:172 'f4' ( in 4-component vector of float) -0:173 subgroupExclusiveMax ( global 4-component vector of float) +0:173 subgroupExclusiveMul ( global 4-component vector of float) 0:173 'f4' ( in 4-component vector of float) -0:174 subgroupExclusiveAnd ( global 4-component vector of uint) -0:174 'ballot' ( temp 4-component vector of uint) -0:175 subgroupExclusiveOr ( global 4-component vector of uint) -0:175 'ballot' ( temp 4-component vector of uint) -0:176 subgroupExclusiveXor ( global 4-component vector of uint) +0:174 subgroupExclusiveMin ( global 4-component vector of float) +0:174 'f4' ( in 4-component vector of float) +0:175 subgroupExclusiveMax ( global 4-component vector of float) +0:175 'f4' ( in 4-component vector of float) +0:176 subgroupExclusiveAnd ( global 4-component vector of uint) 0:176 'ballot' ( temp 4-component vector of uint) -0:180 Function Definition: clustered_works(vf4; ( global void) -0:180 Function Parameters: -0:180 'f4' ( in 4-component vector of float) -0:182 Sequence -0:182 Sequence -0:182 move second child to first child ( temp 4-component vector of uint) -0:182 'ballot' ( temp 4-component vector of uint) -0:182 Constant: -0:182 85 (const uint) -0:182 0 (const uint) -0:182 0 (const uint) -0:182 0 (const uint) -0:183 subgroupClusteredAdd ( global 4-component vector of float) -0:183 'f4' ( in 4-component vector of float) -0:183 Constant: -0:183 2 (const uint) -0:184 subgroupClusteredMul ( global 4-component vector of float) -0:184 'f4' ( in 4-component vector of float) -0:184 Constant: -0:184 2 (const uint) -0:185 subgroupClusteredMin ( global 4-component vector of float) +0:177 subgroupExclusiveOr ( global 4-component vector of uint) +0:177 'ballot' ( temp 4-component vector of uint) +0:178 subgroupExclusiveXor ( global 4-component vector of uint) +0:178 'ballot' ( temp 4-component vector of uint) +0:182 Function Definition: clustered_works(vf4; ( global void) +0:182 Function Parameters: +0:182 'f4' ( in 4-component vector of float) +0:184 Sequence +0:184 Sequence +0:184 move second child to first child ( temp 4-component vector of uint) +0:184 'ballot' ( temp 4-component vector of uint) +0:184 Constant: +0:184 85 (const uint) +0:184 0 (const uint) +0:184 0 (const uint) +0:184 0 (const uint) +0:185 subgroupClusteredAdd ( global 4-component vector of float) 0:185 'f4' ( in 4-component vector of float) 0:185 Constant: 0:185 2 (const uint) -0:186 subgroupClusteredMax ( global 4-component vector of float) +0:186 subgroupClusteredMul ( global 4-component vector of float) 0:186 'f4' ( in 4-component vector of float) 0:186 Constant: 0:186 2 (const uint) -0:187 subgroupClusteredAnd ( global 4-component vector of uint) -0:187 'ballot' ( temp 4-component vector of uint) +0:187 subgroupClusteredMin ( global 4-component vector of float) +0:187 'f4' ( in 4-component vector of float) 0:187 Constant: 0:187 2 (const uint) -0:188 subgroupClusteredOr ( global 4-component vector of uint) -0:188 'ballot' ( temp 4-component vector of uint) +0:188 subgroupClusteredMax ( global 4-component vector of float) +0:188 'f4' ( in 4-component vector of float) 0:188 Constant: 0:188 2 (const uint) -0:189 subgroupClusteredXor ( global 4-component vector of uint) +0:189 subgroupClusteredAnd ( global 4-component vector of uint) 0:189 'ballot' ( temp 4-component vector of uint) 0:189 Constant: 0:189 2 (const uint) -0:193 Function Definition: quad_works(vf4; ( global void) -0:193 Function Parameters: -0:193 'f4' ( in 4-component vector of float) -0:195 Sequence -0:195 subgroupQuadBroadcast ( global 4-component vector of float) -0:195 'f4' ( in 4-component vector of float) -0:195 Constant: -0:195 0 (const uint) -0:196 subgroupQuadSwapHorizontal ( global 4-component vector of float) -0:196 'f4' ( in 4-component vector of float) -0:197 subgroupQuadSwapVertical ( global 4-component vector of float) -0:197 'f4' ( in 4-component vector of float) -0:198 subgroupQuadSwapDiagonal ( global 4-component vector of float) +0:190 subgroupClusteredOr ( global 4-component vector of uint) +0:190 'ballot' ( temp 4-component vector of uint) +0:190 Constant: +0:190 2 (const uint) +0:191 subgroupClusteredXor ( global 4-component vector of uint) +0:191 'ballot' ( temp 4-component vector of uint) +0:191 Constant: +0:191 2 (const uint) +0:195 Function Definition: quad_works(vf4; ( global void) +0:195 Function Parameters: +0:195 'f4' ( in 4-component vector of float) +0:? Sequence +0:198 subgroupQuadBroadcast ( global 4-component vector of float) 0:198 'f4' ( in 4-component vector of float) -0:202 Function Definition: partitioned_works(vf4; ( global void) -0:202 Function Parameters: -0:202 'f4' ( in 4-component vector of float) -0:204 Sequence -0:204 Sequence -0:204 move second child to first child ( temp 4-component vector of uint) -0:204 'parti' ( temp 4-component vector of uint) -0:204 subgroupPartitionNV ( global 4-component vector of uint) -0:204 'f4' ( in 4-component vector of float) -0:205 Sequence -0:205 move second child to first child ( temp 4-component vector of uint) -0:205 'ballot' ( temp 4-component vector of uint) -0:205 Constant: -0:205 85 (const uint) -0:205 0 (const uint) -0:205 0 (const uint) -0:205 0 (const uint) -0:206 subgroupPartitionedAddNV ( global 4-component vector of float) -0:206 'f4' ( in 4-component vector of float) -0:206 'parti' ( temp 4-component vector of uint) -0:207 subgroupPartitionedMulNV ( global 4-component vector of float) -0:207 'f4' ( in 4-component vector of float) -0:207 'parti' ( temp 4-component vector of uint) -0:208 subgroupPartitionedMinNV ( global 4-component vector of float) -0:208 'f4' ( in 4-component vector of float) -0:208 'parti' ( temp 4-component vector of uint) -0:209 subgroupPartitionedMaxNV ( global 4-component vector of float) -0:209 'f4' ( in 4-component vector of float) -0:209 'parti' ( temp 4-component vector of uint) -0:210 subgroupPartitionedAndNV ( global 4-component vector of uint) -0:210 'ballot' ( temp 4-component vector of uint) +0:198 Constant: +0:198 0 (const uint) +0:199 subgroupQuadBroadcast ( global 4-component vector of float) +0:199 'f4' ( in 4-component vector of float) +0:199 Convert int to uint ( temp uint) +0:199 'i' ( temp int) +0:200 subgroupQuadSwapHorizontal ( global 4-component vector of float) +0:200 'f4' ( in 4-component vector of float) +0:201 subgroupQuadSwapVertical ( global 4-component vector of float) +0:201 'f4' ( in 4-component vector of float) +0:202 subgroupQuadSwapDiagonal ( global 4-component vector of float) +0:202 'f4' ( in 4-component vector of float) +0:206 Function Definition: partitioned_works(vf4; ( global void) +0:206 Function Parameters: +0:206 'f4' ( in 4-component vector of float) +0:208 Sequence +0:208 Sequence +0:208 move second child to first child ( temp 4-component vector of uint) +0:208 'parti' ( temp 4-component vector of uint) +0:208 subgroupPartitionNV ( global 4-component vector of uint) +0:208 'f4' ( in 4-component vector of float) +0:209 Sequence +0:209 move second child to first child ( temp 4-component vector of uint) +0:209 'ballot' ( temp 4-component vector of uint) +0:209 Constant: +0:209 85 (const uint) +0:209 0 (const uint) +0:209 0 (const uint) +0:209 0 (const uint) +0:210 subgroupPartitionedAddNV ( global 4-component vector of float) +0:210 'f4' ( in 4-component vector of float) 0:210 'parti' ( temp 4-component vector of uint) -0:211 subgroupPartitionedOrNV ( global 4-component vector of uint) -0:211 'ballot' ( temp 4-component vector of uint) +0:211 subgroupPartitionedMulNV ( global 4-component vector of float) +0:211 'f4' ( in 4-component vector of float) 0:211 'parti' ( temp 4-component vector of uint) -0:212 subgroupPartitionedXorNV ( global 4-component vector of uint) -0:212 'ballot' ( temp 4-component vector of uint) +0:212 subgroupPartitionedMinNV ( global 4-component vector of float) +0:212 'f4' ( in 4-component vector of float) 0:212 'parti' ( temp 4-component vector of uint) -0:213 subgroupPartitionedInclusiveAddNV ( global 4-component vector of float) +0:213 subgroupPartitionedMaxNV ( global 4-component vector of float) 0:213 'f4' ( in 4-component vector of float) 0:213 'parti' ( temp 4-component vector of uint) -0:214 subgroupPartitionedInclusiveMulNV ( global 4-component vector of float) -0:214 'f4' ( in 4-component vector of float) +0:214 subgroupPartitionedAndNV ( global 4-component vector of uint) +0:214 'ballot' ( temp 4-component vector of uint) 0:214 'parti' ( temp 4-component vector of uint) -0:215 subgroupPartitionedInclusiveMinNV ( global 4-component vector of float) -0:215 'f4' ( in 4-component vector of float) +0:215 subgroupPartitionedOrNV ( global 4-component vector of uint) +0:215 'ballot' ( temp 4-component vector of uint) 0:215 'parti' ( temp 4-component vector of uint) -0:216 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float) -0:216 'f4' ( in 4-component vector of float) +0:216 subgroupPartitionedXorNV ( global 4-component vector of uint) +0:216 'ballot' ( temp 4-component vector of uint) 0:216 'parti' ( temp 4-component vector of uint) -0:217 subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint) -0:217 'ballot' ( temp 4-component vector of uint) +0:217 subgroupPartitionedInclusiveAddNV ( global 4-component vector of float) +0:217 'f4' ( in 4-component vector of float) 0:217 'parti' ( temp 4-component vector of uint) -0:218 subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint) -0:218 'ballot' ( temp 4-component vector of uint) +0:218 subgroupPartitionedInclusiveMulNV ( global 4-component vector of float) +0:218 'f4' ( in 4-component vector of float) 0:218 'parti' ( temp 4-component vector of uint) -0:219 subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint) -0:219 'ballot' ( temp 4-component vector of uint) +0:219 subgroupPartitionedInclusiveMinNV ( global 4-component vector of float) +0:219 'f4' ( in 4-component vector of float) 0:219 'parti' ( temp 4-component vector of uint) -0:220 subgroupPartitionedExclusiveAddNV ( global 4-component vector of float) +0:220 subgroupPartitionedInclusiveMaxNV ( global 4-component vector of float) 0:220 'f4' ( in 4-component vector of float) 0:220 'parti' ( temp 4-component vector of uint) -0:221 subgroupPartitionedExclusiveMulNV ( global 4-component vector of float) -0:221 'f4' ( in 4-component vector of float) +0:221 subgroupPartitionedInclusiveAndNV ( global 4-component vector of uint) +0:221 'ballot' ( temp 4-component vector of uint) 0:221 'parti' ( temp 4-component vector of uint) -0:222 subgroupPartitionedExclusiveMinNV ( global 4-component vector of float) -0:222 'f4' ( in 4-component vector of float) +0:222 subgroupPartitionedInclusiveOrNV ( global 4-component vector of uint) +0:222 'ballot' ( temp 4-component vector of uint) 0:222 'parti' ( temp 4-component vector of uint) -0:223 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float) -0:223 'f4' ( in 4-component vector of float) +0:223 subgroupPartitionedInclusiveXorNV ( global 4-component vector of uint) +0:223 'ballot' ( temp 4-component vector of uint) 0:223 'parti' ( temp 4-component vector of uint) -0:224 subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint) -0:224 'ballot' ( temp 4-component vector of uint) +0:224 subgroupPartitionedExclusiveAddNV ( global 4-component vector of float) +0:224 'f4' ( in 4-component vector of float) 0:224 'parti' ( temp 4-component vector of uint) -0:225 subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint) -0:225 'ballot' ( temp 4-component vector of uint) +0:225 subgroupPartitionedExclusiveMulNV ( global 4-component vector of float) +0:225 'f4' ( in 4-component vector of float) 0:225 'parti' ( temp 4-component vector of uint) -0:226 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) -0:226 'ballot' ( temp 4-component vector of uint) +0:226 subgroupPartitionedExclusiveMinNV ( global 4-component vector of float) +0:226 'f4' ( in 4-component vector of float) 0:226 'parti' ( temp 4-component vector of uint) -0:230 Function Definition: sm_builtins_err( ( global void) -0:230 Function Parameters: -0:232 Sequence -0:232 'gl_WarpsPerSMNV' ( flat in uint WarpsPerSMNV) -0:233 'gl_SMCountNV' ( flat in uint SMCountNV) -0:234 'gl_WarpIDNV' ( flat in uint WarpIDNV) -0:235 'gl_SMIDNV' ( flat in uint SMIDNV) -0:242 Function Definition: sm_builtins( ( global void) -0:242 Function Parameters: -0:244 Sequence -0:244 'gl_WarpsPerSMNV' ( flat in uint WarpsPerSMNV) -0:245 'gl_SMCountNV' ( flat in uint SMCountNV) -0:246 'gl_WarpIDNV' ( flat in uint WarpIDNV) -0:247 'gl_SMIDNV' ( flat in uint SMIDNV) +0:227 subgroupPartitionedExclusiveMaxNV ( global 4-component vector of float) +0:227 'f4' ( in 4-component vector of float) +0:227 'parti' ( temp 4-component vector of uint) +0:228 subgroupPartitionedExclusiveAndNV ( global 4-component vector of uint) +0:228 'ballot' ( temp 4-component vector of uint) +0:228 'parti' ( temp 4-component vector of uint) +0:229 subgroupPartitionedExclusiveOrNV ( global 4-component vector of uint) +0:229 'ballot' ( temp 4-component vector of uint) +0:229 'parti' ( temp 4-component vector of uint) +0:230 subgroupPartitionedExclusiveXorNV ( global 4-component vector of uint) +0:230 'ballot' ( temp 4-component vector of uint) +0:230 'parti' ( temp 4-component vector of uint) +0:234 Function Definition: sm_builtins_err( ( global void) +0:234 Function Parameters: +0:236 Sequence +0:236 'gl_WarpsPerSMNV' ( flat in uint WarpsPerSMNV) +0:237 'gl_SMCountNV' ( flat in uint SMCountNV) +0:238 'gl_WarpIDNV' ( flat in uint WarpIDNV) +0:239 'gl_SMIDNV' ( flat in uint SMIDNV) +0:246 Function Definition: sm_builtins( ( global void) +0:246 Function Parameters: +0:248 Sequence +0:248 'gl_WarpsPerSMNV' ( flat in uint WarpsPerSMNV) +0:249 'gl_SMCountNV' ( flat in uint SMCountNV) +0:250 'gl_WarpIDNV' ( flat in uint WarpIDNV) +0:251 'gl_SMIDNV' ( flat in uint SMIDNV) 0:? Linker Objects 0:? 'data' (layout( location=0) out 4-component vector of uint) diff --git a/Test/glsl.450.subgroup.frag b/Test/glsl.450.subgroup.frag index 61cfc8fb..d0b95737 100644 --- a/Test/glsl.450.subgroup.frag +++ b/Test/glsl.450.subgroup.frag @@ -114,12 +114,14 @@ void main (void) #extension GL_KHR_shader_subgroup_ballot: enable void ballot_works(vec4 f4) { + int i; gl_SubgroupEqMask; gl_SubgroupGeMask; gl_SubgroupGtMask; gl_SubgroupLeMask; gl_SubgroupLtMask; subgroupBroadcast(f4, 0); + subgroupBroadcast(f4, i); subgroupBroadcastFirst(f4); uvec4 ballot = subgroupBallot(false); subgroupInverseBallot(uvec4(0x1)); @@ -192,7 +194,9 @@ void clustered_works(vec4 f4) #extension GL_KHR_shader_subgroup_quad: enable void quad_works(vec4 f4) { + int i; subgroupQuadBroadcast(f4, 0); + subgroupQuadBroadcast(f4, i); subgroupQuadSwapHorizontal(f4); subgroupQuadSwapVertical(f4); subgroupQuadSwapDiagonal(f4); diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index cef63f98..b381be9b 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -2155,6 +2155,7 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan break; case EOpSubgroupBroadcast: + case EOpSubgroupQuadBroadcast: if (spvVersion.spv < EShTargetSpv_1_5) { // must be an integral constant expression. if ((*argp)[1]->getAsConstantUnion() == nullptr) From 03be018a473297b4b8b69d79e20d7c5d13548f97 Mon Sep 17 00:00:00 2001 From: Fabian Wahlster Date: Tue, 15 Oct 2019 11:00:23 +0200 Subject: [PATCH 38/94] find Python and add External subdir only if BUILD_EXTERNAL option was set (on by default) and /External dir exists --- CMakeLists.txt | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6536ad1f..da25533e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,6 +13,7 @@ include(GNUInstallDirs) include(CMakeDependentOption) option(BUILD_SHARED_LIBS "Build Shared Libraries" OFF) +option(BUILD_EXTERNAL "Build external dependencies in /External" ON) set(LIB_TYPE STATIC) @@ -148,13 +149,13 @@ endfunction(glslang_set_link_args) # CMake needs to find the right version of python, right from the beginning, # otherwise, it will find the wrong version and fail later -if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/External) +if(BUILD_EXTERNAL AND IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/External) find_package(PythonInterp 3 REQUIRED) + + # We depend on these for later projects, so they should come first. + add_subdirectory(External) endif() -# We depend on these for later projects, so they should come first. -add_subdirectory(External) - if(NOT TARGET SPIRV-Tools-opt) set(ENABLE_OPT OFF) endif() From 05398232431d3c54487eacd893bd847f326548e0 Mon Sep 17 00:00:00 2001 From: durswd Date: Wed, 16 Oct 2019 02:28:40 +0900 Subject: [PATCH 39/94] Added an option to make pch enabled in Cmake --- CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index da25533e..cbdd1c5e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -37,6 +37,7 @@ option(ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE "If using Emscripten, builds to run on CMAKE_DEPENDENT_OPTION(ENABLE_HLSL "Enables HLSL input support" ON "NOT ENABLE_GLSLANG_WEB" OFF) option(ENABLE_OPT "Enables spirv-opt capability if present" ON) +option(ENABLE_PCH "Enables Precompiled header" ON) if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT AND WIN32) set(CMAKE_INSTALL_PREFIX "install" CACHE STRING "..." FORCE) @@ -52,7 +53,7 @@ endif() # Precompiled header macro. Parameters are source file list and filename for pch cpp file. macro(glslang_pch SRCS PCHCPP) - if(MSVC AND CMAKE_GENERATOR MATCHES "^Visual Studio") + if(MSVC AND CMAKE_GENERATOR MATCHES "^Visual Studio" AND ENABLE_PCH) set(PCH_NAME "$(IntDir)\\pch.pch") # make source files use/depend on PCH_NAME set_source_files_properties(${${SRCS}} PROPERTIES COMPILE_FLAGS "/Yupch.h /FIpch.h /Fp${PCH_NAME} /Zm300" OBJECT_DEPENDS "${PCH_NAME}") From 1aeceaea7d011fcf8a3beef741da4553ddbe360f Mon Sep 17 00:00:00 2001 From: Ryan Harrison Date: Tue, 15 Oct 2019 11:17:53 -0400 Subject: [PATCH 40/94] Fix config issues and revert previous fixes for semi-colon issues This reverts commit 41261d95a417bb3a121c162154d441433705a237. This reverts commit 7c9accb6534d4cde050555b8091b434dc7e4d218. Instead of trying to work around all of the potential semicolon issues in glslang, making it conform to Chromium's style, mark the code explicitly as non-chromium in the BUILD.gn, so chromium doesn't attempt to enforce its style rules on glslang. Fixes #1931 --- BUILD.gn | 15 +++++++++++++-- CMakeLists.txt | 4 ++-- SPIRV/GlslangToSpv.cpp | 8 ++++---- glslang/Include/Types.h | 4 ++-- glslang/MachineIndependent/ParseHelper.h | 2 +- glslang/MachineIndependent/iomapper.h | 12 ++++++------ glslang/Public/ShaderLang.h | 4 ++-- 7 files changed, 30 insertions(+), 19 deletions(-) diff --git a/BUILD.gn b/BUILD.gn index b2878aff..77d596e1 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -159,7 +159,7 @@ source_set("glslang_sources") { } if (is_clang) { - cflags_cc = [ + cflags = [ "-Wno-extra-semi", "-Wno-ignored-qualifiers", "-Wno-implicit-fallthrough", @@ -168,7 +168,6 @@ source_set("glslang_sources") { "-Wno-unused-variable", "-Wno-missing-field-initializers", "-Wno-newline-eof", - "-Wextra-semi", ] } if (is_win && !is_clang) { @@ -182,6 +181,9 @@ source_set("glslang_sources") { "${spirv_tools_dir}:spvtools_opt", "${spirv_tools_dir}:spvtools_val", ] + + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] } source_set("glslang_default_resource_limits_sources") { @@ -193,6 +195,9 @@ source_set("glslang_default_resource_limits_sources") { ":glslang_sources", ] public_configs = [ ":glslang_public" ] + + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] } executable("glslang_validator") { @@ -208,6 +213,9 @@ executable("glslang_validator") { ":glslang_default_resource_limits_sources", ":glslang_sources", ] + + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] } executable("spirv-remap") { @@ -218,4 +226,7 @@ executable("spirv-remap") { deps = [ ":glslang_sources", ] + + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] } diff --git a/CMakeLists.txt b/CMakeLists.txt index da25533e..41871ec8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -91,12 +91,12 @@ endif(WIN32) if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU") add_compile_options(-Wall -Wmaybe-uninitialized -Wuninitialized -Wunused -Wunused-local-typedefs - -Wunused-parameter -Wunused-value -Wunused-variable -Wunused-but-set-parameter -Wunused-but-set-variable -fno-exceptions) + -Wunused-parameter -Wunused-value -Wunused-variable -Wunused-but-set-parameter -Wunused-but-set-variable -fno-exceptions) add_compile_options(-Wno-reorder) # disable this from -Wall, since it happens all over. add_compile_options(-fno-rtti) elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang") add_compile_options(-Wall -Wuninitialized -Wunused -Wunused-local-typedefs - -Wunused-parameter -Wunused-value -Wunused-variable -Wextra-semi) + -Wunused-parameter -Wunused-value -Wunused-variable) add_compile_options(-Wno-reorder) # disable this from -Wall, since it happens all over. add_compile_options(-fno-rtti) elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "MSVC") diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index f4e0fdbc..2d50074f 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -100,11 +100,11 @@ struct OpDecorations { spv::Decoration precision; #ifdef GLSLANG_WEB - void addNoContraction(spv::Builder&, spv::Id) const { } - void addNonUniform(spv::Builder&, spv::Id) const { } + void addNoContraction(spv::Builder&, spv::Id) const { }; + void addNonUniform(spv::Builder&, spv::Id) const { }; #else - void addNoContraction(spv::Builder& builder, spv::Id t) { builder.addDecoration(t, noContraction); } - void addNonUniform(spv::Builder& builder, spv::Id t) { builder.addDecoration(t, nonUniform); } + void addNoContraction(spv::Builder& builder, spv::Id t) { builder.addDecoration(t, noContraction); }; + void addNonUniform(spv::Builder& builder, spv::Id t) { builder.addDecoration(t, nonUniform); }; protected: spv::Decoration noContraction; spv::Decoration nonUniform; diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index ef933b4f..59ead22d 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -135,8 +135,8 @@ struct TSampler { // misnomer now; includes images, textures without sampler, bool isYuv() const { return yuv; } #endif void setCombined(bool c) { combined = c; } - void setBasicType(TBasicType t) { type = t; } - TBasicType getBasicType() const { return type; } + void setBasicType(TBasicType t) { type = t; }; + TBasicType getBasicType() const { return type; }; bool isShadow() const { return shadow; } bool isArrayed() const { return arrayed; } diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h index 39363f1a..5cee05e1 100644 --- a/glslang/MachineIndependent/ParseHelper.h +++ b/glslang/MachineIndependent/ParseHelper.h @@ -283,7 +283,7 @@ public: const TString* entryPoint = nullptr); virtual ~TParseContext(); - bool obeyPrecisionQualifiers() const { return precisionManager.respectingPrecisionQualifiers(); } + bool obeyPrecisionQualifiers() const { return precisionManager.respectingPrecisionQualifiers(); }; void setPrecisionDefaults(); void setLimits(const TBuiltInResource&) override; diff --git a/glslang/MachineIndependent/iomapper.h b/glslang/MachineIndependent/iomapper.h index 684e88d5..01afc5a2 100644 --- a/glslang/MachineIndependent/iomapper.h +++ b/glslang/MachineIndependent/iomapper.h @@ -114,7 +114,7 @@ public: bool doAutoLocationMapping() const; TSlotSet::iterator findSlot(int set, int slot); bool checkEmpty(int set, int slot); - bool validateInOut(EShLanguage /*stage*/, TVarEntryInfo& /*ent*/) override { return true; } + bool validateInOut(EShLanguage /*stage*/, TVarEntryInfo& /*ent*/) override { return true; }; int reserveSlot(int set, int slot, int size = 1); int getFreeSlot(int set, int base, int size = 1); int resolveSet(EShLanguage /*stage*/, TVarEntryInfo& ent) override; @@ -125,7 +125,7 @@ public: void addStage(EShLanguage stage) override { if (stage < EShLangCount) stageMask[stage] = true; - } + }; uint32_t computeTypeLocationSize(const TType& type, EShLanguage stage); TSlotSetMap slots; @@ -191,7 +191,7 @@ public: typedef std::map TVarSlotMap; // typedef std::map TSlotMap; // TDefaultGlslIoResolver(const TIntermediate& intermediate); - bool validateBinding(EShLanguage /*stage*/, TVarEntryInfo& /*ent*/) override { return true; } + bool validateBinding(EShLanguage /*stage*/, TVarEntryInfo& /*ent*/) override { return true; }; TResourceType getResourceType(const glslang::TType& type) override; int resolveInOutLocation(EShLanguage stage, TVarEntryInfo& ent) override; int resolveUniformLocation(EShLanguage /*stage*/, TVarEntryInfo& ent) override; @@ -209,7 +209,7 @@ public: int buildStorageKey(EShLanguage stage, TStorageQualifier type) { assert(static_cast(stage) <= 0x0000ffff && static_cast(type) <= 0x0000ffff); return (stage << 16) | type; - } + }; protected: // Use for mark pre stage, to get more interface symbol information. @@ -242,7 +242,7 @@ struct TVarLivePair : std::pair { const_cast(first) = _Right.first; second = _Right.second; return (*this); - } + }; }; typedef std::vector TVarLiveVector; @@ -253,7 +253,7 @@ public: virtual ~TIoMapper() {} // grow the reflection stage by stage bool virtual addStage(EShLanguage, TIntermediate&, TInfoSink&, TIoMapResolver*); - bool virtual doMap(TIoMapResolver*, TInfoSink&) { return true; } + bool virtual doMap(TIoMapResolver*, TInfoSink&) { return true; }; }; // I/O mapper for OpenGL diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index 4cc6c2f4..9782475d 100755 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -487,7 +487,7 @@ public: environment.target.version = version; } - void getStrings(const char* const* &s, int& n) { s = strings; n = numStrings; } + void getStrings(const char* const* &s, int& n) { s = strings; n = numStrings; }; #ifdef ENABLE_HLSL void setEnvTargetHlslFunctionality1() { environment.target.hlslFunctionality1 = true; } @@ -775,7 +775,7 @@ public: TProgram(); virtual ~TProgram(); void addShader(TShader* shader) { stages[shader->stage].push_back(shader); } - std::list& getShaders(EShLanguage stage) { return stages[stage]; } + std::list& getShaders(EShLanguage stage) { return stages[stage]; }; // Link Validation interface bool link(EShMessages); const char* getInfoLog(); From 167201430d79ff8e2ea8b94b112d849bedbde703 Mon Sep 17 00:00:00 2001 From: Dan Sinclair Date: Tue, 15 Oct 2019 15:21:21 -0400 Subject: [PATCH 41/94] Make runtests configurable. This CL allows setting the location of glslangValidator and spirv-remap when calling the runtests script. A test target is added to CMake to execute runtests and sets the location to the build folder for the two applications. --- CMakeLists.txt | 18 ++++++++++++++++++ Test/runtests | 4 ++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index da25533e..c3308e8f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -180,3 +180,21 @@ if(ENABLE_HLSL) add_subdirectory(hlsl) endif(ENABLE_HLSL) add_subdirectory(gtests) + +if(BUILD_TESTING) + # glslang-testsuite runs a bash script on Windows. + # Make sure to use '-o igncr' flag to ignore carriage returns (\r). + set(IGNORE_CR_FLAG "") + if(WIN32) + set(IGNORE_CR_FLAG -o igncr) + endif() + + add_test(NAME glslang-testsuite + COMMAND bash ${IGNORE_CR_FLAG} runtests + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Test/) + + set_property(TEST glslang-testsuite APPEND PROPERTY + ENVIRONMENT GLSLANG_PATH=${CMAKE_CURRENT_BINARY_DIR}/StandAlone/glslangValidator) + set_property(TEST glslang-testsuite APPEND PROPERTY + ENVIRONMENT SPIRV_REMAP_PATH=${CMAKE_CURRENT_BINARY_DIR}/StandAlone/spirv-remap) +endif(BUILD_TESTING) diff --git a/Test/runtests b/Test/runtests index 8e31c069..40e928b6 100755 --- a/Test/runtests +++ b/Test/runtests @@ -2,8 +2,8 @@ TARGETDIR=localResults BASEDIR=baseResults -EXE=../build/install/bin/glslangValidator -REMAPEXE=../build/install/bin/spirv-remap +EXE=${GLSLANG_PATH:-../build/install/bin/glslangValidator} +REMAPEXE=${SPIRV_REMAP_PATH:-../build/install/bin/spirv-remap} HASERROR=0 mkdir -p localResults From 3f072e158ca1f8be54c3cde202f78d35259e0abf Mon Sep 17 00:00:00 2001 From: Dan Sinclair Date: Tue, 15 Oct 2019 16:47:28 -0400 Subject: [PATCH 42/94] Move TARGETDIR as well --- CMakeLists.txt | 8 ++++++++ Test/runtests | 14 +++++++------- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c3308e8f..c5a4f679 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -197,4 +197,12 @@ if(BUILD_TESTING) ENVIRONMENT GLSLANG_PATH=${CMAKE_CURRENT_BINARY_DIR}/StandAlone/glslangValidator) set_property(TEST glslang-testsuite APPEND PROPERTY ENVIRONMENT SPIRV_REMAP_PATH=${CMAKE_CURRENT_BINARY_DIR}/StandAlone/spirv-remap) + + if (CMAKE_CONFIGURATION_TYPES) + set_property(TEST glslang-testsuite APPEND PROPERTY + ENVIRONMENT GLSLANG_TEST_RESULTS=${CMAKE_CURRENT_BINARY_DIR}/$/localResults) + else(CMAKE_CONFIGURATION_TYPES) + set_property(TEST glslang-testsuite APPEND PROPERTY + ENVIRONMENT GLSLANG_TEST_RESULTS=${CMAKE_CURRENT_BINARY_DIR}/localResults) + endif(CMAKE_CONFIGURATION_TYPES) endif(BUILD_TESTING) diff --git a/Test/runtests b/Test/runtests index 40e928b6..3f624f7d 100755 --- a/Test/runtests +++ b/Test/runtests @@ -1,11 +1,11 @@ #!/usr/bin/env bash -TARGETDIR=localResults +TARGETDIR=${GLSLANG_TEST_RESULTS:-localResults} BASEDIR=baseResults EXE=${GLSLANG_PATH:-../build/install/bin/glslangValidator} REMAPEXE=${SPIRV_REMAP_PATH:-../build/install/bin/spirv-remap} HASERROR=0 -mkdir -p localResults +mkdir -p $TARGETDIR if [ -a localtestlist ] then @@ -55,13 +55,13 @@ diff -b $BASEDIR/hlsl.automap.frag.out $TARGETDIR/hlsl.automap.frag.out || HASER # multi-threaded test # echo Comparing single thread to multithread for all tests in current directory... -$EXE -i -C *.vert *.geom *.frag *.tesc *.tese *.comp > singleThread.out -$EXE -i -C *.vert *.geom *.frag *.tesc *.tese *.comp -t > multiThread.out -diff singleThread.out multiThread.out || HASERROR=1 +$EXE -i -C *.vert *.geom *.frag *.tesc *.tese *.comp > $TARGETDIR/singleThread.out +$EXE -i -C *.vert *.geom *.frag *.tesc *.tese *.comp -t > $TARGETDIR/multiThread.out +diff $TARGETDIR/singleThread.out $TARGETDIR/multiThread.out || HASERROR=1 if [ $HASERROR -eq 0 ] then - rm singleThread.out - rm multiThread.out + rm $TARGETDIR/singleThread.out + rm $TARGETDIR/multiThread.out fi # From 0f98465f0aa1a9a2af5b16c7de529dca02c6eafd Mon Sep 17 00:00:00 2001 From: dan sinclair Date: Tue, 15 Oct 2019 19:11:39 -0400 Subject: [PATCH 43/94] Update CMakeLists.txt --- CMakeLists.txt | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c5a4f679..62ee66a0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -193,15 +193,19 @@ if(BUILD_TESTING) COMMAND bash ${IGNORE_CR_FLAG} runtests WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Test/) - set_property(TEST glslang-testsuite APPEND PROPERTY - ENVIRONMENT GLSLANG_PATH=${CMAKE_CURRENT_BINARY_DIR}/StandAlone/glslangValidator) - set_property(TEST glslang-testsuite APPEND PROPERTY - ENVIRONMENT SPIRV_REMAP_PATH=${CMAKE_CURRENT_BINARY_DIR}/StandAlone/spirv-remap) - + if (CMAKE_CONFIGURATION_TYPES) + set_property(TEST glslang-testsuite APPEND PROPERTY + ENVIRONMENT GLSLANG_PATH=${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$/glslangValidator) + set_property(TEST glslang-testsuite APPEND PROPERTY + ENVIRONMENT SPIRV_REMAP_PATH=${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$/spirv-remap) set_property(TEST glslang-testsuite APPEND PROPERTY ENVIRONMENT GLSLANG_TEST_RESULTS=${CMAKE_CURRENT_BINARY_DIR}/$/localResults) else(CMAKE_CONFIGURATION_TYPES) + set_property(TEST glslang-testsuite APPEND PROPERTY + ENVIRONMENT GLSLANG_PATH=${CMAKE_CURRENT_BINARY_DIR}/StandAlone/glslangValidator) + set_property(TEST glslang-testsuite APPEND PROPERTY + ENVIRONMENT SPIRV_REMAP_PATH=${CMAKE_CURRENT_BINARY_DIR}/StandAlone/spirv-remap) set_property(TEST glslang-testsuite APPEND PROPERTY ENVIRONMENT GLSLANG_TEST_RESULTS=${CMAKE_CURRENT_BINARY_DIR}/localResults) endif(CMAKE_CONFIGURATION_TYPES) From 7d623e1c90159e62b4597f3ac826e93d23e9d296 Mon Sep 17 00:00:00 2001 From: dan sinclair Date: Wed, 16 Oct 2019 10:45:11 -0400 Subject: [PATCH 44/94] Indenting --- CMakeLists.txt | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 62ee66a0..44b687ab 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -182,31 +182,31 @@ endif(ENABLE_HLSL) add_subdirectory(gtests) if(BUILD_TESTING) - # glslang-testsuite runs a bash script on Windows. - # Make sure to use '-o igncr' flag to ignore carriage returns (\r). - set(IGNORE_CR_FLAG "") - if(WIN32) - set(IGNORE_CR_FLAG -o igncr) - endif() + # glslang-testsuite runs a bash script on Windows. + # Make sure to use '-o igncr' flag to ignore carriage returns (\r). + set(IGNORE_CR_FLAG "") + if(WIN32) + set(IGNORE_CR_FLAG -o igncr) + endif() - add_test(NAME glslang-testsuite - COMMAND bash ${IGNORE_CR_FLAG} runtests - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Test/) + add_test(NAME glslang-testsuite + COMMAND bash ${IGNORE_CR_FLAG} runtests + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Test/) - if (CMAKE_CONFIGURATION_TYPES) - set_property(TEST glslang-testsuite APPEND PROPERTY - ENVIRONMENT GLSLANG_PATH=${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$/glslangValidator) - set_property(TEST glslang-testsuite APPEND PROPERTY - ENVIRONMENT SPIRV_REMAP_PATH=${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$/spirv-remap) - set_property(TEST glslang-testsuite APPEND PROPERTY - ENVIRONMENT GLSLANG_TEST_RESULTS=${CMAKE_CURRENT_BINARY_DIR}/$/localResults) - else(CMAKE_CONFIGURATION_TYPES) - set_property(TEST glslang-testsuite APPEND PROPERTY - ENVIRONMENT GLSLANG_PATH=${CMAKE_CURRENT_BINARY_DIR}/StandAlone/glslangValidator) - set_property(TEST glslang-testsuite APPEND PROPERTY - ENVIRONMENT SPIRV_REMAP_PATH=${CMAKE_CURRENT_BINARY_DIR}/StandAlone/spirv-remap) - set_property(TEST glslang-testsuite APPEND PROPERTY - ENVIRONMENT GLSLANG_TEST_RESULTS=${CMAKE_CURRENT_BINARY_DIR}/localResults) - endif(CMAKE_CONFIGURATION_TYPES) + if (CMAKE_CONFIGURATION_TYPES) + set_property(TEST glslang-testsuite APPEND PROPERTY + ENVIRONMENT GLSLANG_PATH=${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$/glslangValidator) + set_property(TEST glslang-testsuite APPEND PROPERTY + ENVIRONMENT SPIRV_REMAP_PATH=${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$/spirv-remap) + set_property(TEST glslang-testsuite APPEND PROPERTY + ENVIRONMENT GLSLANG_TEST_RESULTS=${CMAKE_CURRENT_BINARY_DIR}/$/localResults) + else(CMAKE_CONFIGURATION_TYPES) + set_property(TEST glslang-testsuite APPEND PROPERTY + ENVIRONMENT GLSLANG_PATH=${CMAKE_CURRENT_BINARY_DIR}/StandAlone/glslangValidator) + set_property(TEST glslang-testsuite APPEND PROPERTY + ENVIRONMENT SPIRV_REMAP_PATH=${CMAKE_CURRENT_BINARY_DIR}/StandAlone/spirv-remap) + set_property(TEST glslang-testsuite APPEND PROPERTY + ENVIRONMENT GLSLANG_TEST_RESULTS=${CMAKE_CURRENT_BINARY_DIR}/localResults) + endif(CMAKE_CONFIGURATION_TYPES) endif(BUILD_TESTING) From 622024277e1e016cb6f8e35e98d50251f3cca1cd Mon Sep 17 00:00:00 2001 From: Ryan Harrison Date: Wed, 16 Oct 2019 11:46:37 -0400 Subject: [PATCH 45/94] Keep code style improvements --- SPIRV/GlslangToSpv.cpp | 8 ++++---- glslang/Include/Types.h | 4 ++-- glslang/MachineIndependent/ParseHelper.h | 2 +- glslang/MachineIndependent/iomapper.h | 12 ++++++------ glslang/Public/ShaderLang.h | 4 ++-- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 2d50074f..f4e0fdbc 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -100,11 +100,11 @@ struct OpDecorations { spv::Decoration precision; #ifdef GLSLANG_WEB - void addNoContraction(spv::Builder&, spv::Id) const { }; - void addNonUniform(spv::Builder&, spv::Id) const { }; + void addNoContraction(spv::Builder&, spv::Id) const { } + void addNonUniform(spv::Builder&, spv::Id) const { } #else - void addNoContraction(spv::Builder& builder, spv::Id t) { builder.addDecoration(t, noContraction); }; - void addNonUniform(spv::Builder& builder, spv::Id t) { builder.addDecoration(t, nonUniform); }; + void addNoContraction(spv::Builder& builder, spv::Id t) { builder.addDecoration(t, noContraction); } + void addNonUniform(spv::Builder& builder, spv::Id t) { builder.addDecoration(t, nonUniform); } protected: spv::Decoration noContraction; spv::Decoration nonUniform; diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index 59ead22d..ef933b4f 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -135,8 +135,8 @@ struct TSampler { // misnomer now; includes images, textures without sampler, bool isYuv() const { return yuv; } #endif void setCombined(bool c) { combined = c; } - void setBasicType(TBasicType t) { type = t; }; - TBasicType getBasicType() const { return type; }; + void setBasicType(TBasicType t) { type = t; } + TBasicType getBasicType() const { return type; } bool isShadow() const { return shadow; } bool isArrayed() const { return arrayed; } diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h index 5cee05e1..39363f1a 100644 --- a/glslang/MachineIndependent/ParseHelper.h +++ b/glslang/MachineIndependent/ParseHelper.h @@ -283,7 +283,7 @@ public: const TString* entryPoint = nullptr); virtual ~TParseContext(); - bool obeyPrecisionQualifiers() const { return precisionManager.respectingPrecisionQualifiers(); }; + bool obeyPrecisionQualifiers() const { return precisionManager.respectingPrecisionQualifiers(); } void setPrecisionDefaults(); void setLimits(const TBuiltInResource&) override; diff --git a/glslang/MachineIndependent/iomapper.h b/glslang/MachineIndependent/iomapper.h index 01afc5a2..684e88d5 100644 --- a/glslang/MachineIndependent/iomapper.h +++ b/glslang/MachineIndependent/iomapper.h @@ -114,7 +114,7 @@ public: bool doAutoLocationMapping() const; TSlotSet::iterator findSlot(int set, int slot); bool checkEmpty(int set, int slot); - bool validateInOut(EShLanguage /*stage*/, TVarEntryInfo& /*ent*/) override { return true; }; + bool validateInOut(EShLanguage /*stage*/, TVarEntryInfo& /*ent*/) override { return true; } int reserveSlot(int set, int slot, int size = 1); int getFreeSlot(int set, int base, int size = 1); int resolveSet(EShLanguage /*stage*/, TVarEntryInfo& ent) override; @@ -125,7 +125,7 @@ public: void addStage(EShLanguage stage) override { if (stage < EShLangCount) stageMask[stage] = true; - }; + } uint32_t computeTypeLocationSize(const TType& type, EShLanguage stage); TSlotSetMap slots; @@ -191,7 +191,7 @@ public: typedef std::map TVarSlotMap; // typedef std::map TSlotMap; // TDefaultGlslIoResolver(const TIntermediate& intermediate); - bool validateBinding(EShLanguage /*stage*/, TVarEntryInfo& /*ent*/) override { return true; }; + bool validateBinding(EShLanguage /*stage*/, TVarEntryInfo& /*ent*/) override { return true; } TResourceType getResourceType(const glslang::TType& type) override; int resolveInOutLocation(EShLanguage stage, TVarEntryInfo& ent) override; int resolveUniformLocation(EShLanguage /*stage*/, TVarEntryInfo& ent) override; @@ -209,7 +209,7 @@ public: int buildStorageKey(EShLanguage stage, TStorageQualifier type) { assert(static_cast(stage) <= 0x0000ffff && static_cast(type) <= 0x0000ffff); return (stage << 16) | type; - }; + } protected: // Use for mark pre stage, to get more interface symbol information. @@ -242,7 +242,7 @@ struct TVarLivePair : std::pair { const_cast(first) = _Right.first; second = _Right.second; return (*this); - }; + } }; typedef std::vector TVarLiveVector; @@ -253,7 +253,7 @@ public: virtual ~TIoMapper() {} // grow the reflection stage by stage bool virtual addStage(EShLanguage, TIntermediate&, TInfoSink&, TIoMapResolver*); - bool virtual doMap(TIoMapResolver*, TInfoSink&) { return true; }; + bool virtual doMap(TIoMapResolver*, TInfoSink&) { return true; } }; // I/O mapper for OpenGL diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index 9782475d..4cc6c2f4 100755 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -487,7 +487,7 @@ public: environment.target.version = version; } - void getStrings(const char* const* &s, int& n) { s = strings; n = numStrings; }; + void getStrings(const char* const* &s, int& n) { s = strings; n = numStrings; } #ifdef ENABLE_HLSL void setEnvTargetHlslFunctionality1() { environment.target.hlslFunctionality1 = true; } @@ -775,7 +775,7 @@ public: TProgram(); virtual ~TProgram(); void addShader(TShader* shader) { stages[shader->stage].push_back(shader); } - std::list& getShaders(EShLanguage stage) { return stages[stage]; }; + std::list& getShaders(EShLanguage stage) { return stages[stage]; } // Link Validation interface bool link(EShMessages); const char* getInfoLog(); From 3290d38011a8af8c1c284d07ed550e842f79fa23 Mon Sep 17 00:00:00 2001 From: Dan Sinclair Date: Wed, 16 Oct 2019 13:08:48 -0400 Subject: [PATCH 46/94] Use commandline options instead of ENV variables --- CMakeLists.txt | 29 +++++++++++------------------ Test/runtests | 11 ++++++++--- 2 files changed, 19 insertions(+), 21 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 44b687ab..1170e1e5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -151,7 +151,7 @@ endfunction(glslang_set_link_args) # otherwise, it will find the wrong version and fail later if(BUILD_EXTERNAL AND IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/External) find_package(PythonInterp 3 REQUIRED) - + # We depend on these for later projects, so they should come first. add_subdirectory(External) endif() @@ -189,24 +189,17 @@ if(BUILD_TESTING) set(IGNORE_CR_FLAG -o igncr) endif() - add_test(NAME glslang-testsuite - COMMAND bash ${IGNORE_CR_FLAG} runtests - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Test/) - - if (CMAKE_CONFIGURATION_TYPES) - set_property(TEST glslang-testsuite APPEND PROPERTY - ENVIRONMENT GLSLANG_PATH=${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$/glslangValidator) - set_property(TEST glslang-testsuite APPEND PROPERTY - ENVIRONMENT SPIRV_REMAP_PATH=${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$/spirv-remap) - set_property(TEST glslang-testsuite APPEND PROPERTY - ENVIRONMENT GLSLANG_TEST_RESULTS=${CMAKE_CURRENT_BINARY_DIR}/$/localResults) + 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) else(CMAKE_CONFIGURATION_TYPES) - set_property(TEST glslang-testsuite APPEND PROPERTY - ENVIRONMENT GLSLANG_PATH=${CMAKE_CURRENT_BINARY_DIR}/StandAlone/glslangValidator) - set_property(TEST glslang-testsuite APPEND PROPERTY - ENVIRONMENT SPIRV_REMAP_PATH=${CMAKE_CURRENT_BINARY_DIR}/StandAlone/spirv-remap) - set_property(TEST glslang-testsuite APPEND PROPERTY - ENVIRONMENT GLSLANG_TEST_RESULTS=${CMAKE_CURRENT_BINARY_DIR}/localResults) + 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) + + add_test(NAME glslang-testsuite + COMMAND bash ${IGNORE_CR_FLAG} runtests ${RESULTS_PATH} ${VALIDATOR_PATH} ${REMAP_PATH} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Test/) endif(BUILD_TESTING) diff --git a/Test/runtests b/Test/runtests index 3f624f7d..23406dc3 100755 --- a/Test/runtests +++ b/Test/runtests @@ -1,9 +1,14 @@ #!/usr/bin/env bash -TARGETDIR=${GLSLANG_TEST_RESULTS:-localResults} +# Arguments: +# 1- TargetDirectory, where to write test results and intermediary files +# 2- Path to glslangValidator +# 3- Path to spirv-remap + +TARGETDIR=${1:-localResults} BASEDIR=baseResults -EXE=${GLSLANG_PATH:-../build/install/bin/glslangValidator} -REMAPEXE=${SPIRV_REMAP_PATH:-../build/install/bin/spirv-remap} +EXE=${2:-../build/install/bin/glslangValidator} +REMAPEXE=${3:-../build/install/bin/spirv-remap} HASERROR=0 mkdir -p $TARGETDIR From 0608b9d6827f0169b327bc311156ae38a8a80485 Mon Sep 17 00:00:00 2001 From: Ehsan Nasiri Date: Wed, 16 Oct 2019 16:55:23 -0400 Subject: [PATCH 47/94] Add Bazel build configuration files. In order to avoid potential build failures that could arise from SPIRV-Tools/Headers, and to avoid reading known_good.json, this build configuration does not build the SPIRV-Tools dependency and hence cannot perform HLSL compilation to SPIR-V. --- BUILD.bazel | 240 ++++++++++++++++++++++++++++++++++++++++++++++++++++ WORKSPACE | 27 ++++++ 2 files changed, 267 insertions(+) create mode 100644 BUILD.bazel create mode 100644 WORKSPACE diff --git a/BUILD.bazel b/BUILD.bazel new file mode 100644 index 00000000..550dde1e --- /dev/null +++ b/BUILD.bazel @@ -0,0 +1,240 @@ +package( + default_visibility = ["//visibility:public"], +) + +# Description: +# +# Khronos reference front-end for GLSL and ESSL, and sample SPIR-V generator. + +licenses(["notice"]) # Mixed: BSD, MIT, Khronos, Apache 2.0 + +exports_files(["LICENSE"]) + +COMMON_COPTS = [ + "-Wall", + "-Wuninitialized", + "-Wunused", + "-Wunused-local-typedefs", + "-Wunused-parameter", + "-Wunused-value", + "-Wunused-variable", + "-Wno-reorder", + "-std=c++11", + "-fvisibility=hidden", + "-fvisibility-inlines-hidden", + "-fno-exceptions", + "-fno-rtti", +] + +cc_library( + name = "glslang", + srcs = glob( + [ + "glslang/GenericCodeGen/*.cpp", + "glslang/MachineIndependent/*.cpp", + "glslang/MachineIndependent/preprocessor/*.cpp", + "hlsl/*.cpp", + ], + exclude = [ + "glslang/MachineIndependent/pch.cpp", + "glslang/MachineIndependent/pch.h", + "hlsl/pch.cpp", + "hlsl/pch.h", + ], + ) + [ + "OGLCompilersDLL/InitializeDll.cpp", + "glslang/OSDependent/Unix/ossource.cpp", + ], + hdrs = glob([ + "glslang/Include/*.h", + "glslang/MachineIndependent/*.h", + "glslang/MachineIndependent/preprocessor/*.h", + "hlsl/*.h", + ]) + [ + "OGLCompilersDLL/InitializeDll.h", + "StandAlone/DirStackFileIncluder.h", + "glslang/OSDependent/osinclude.h", + "glslang/Public/ShaderLang.h", + ], + copts = COMMON_COPTS, + defines = [ + "AMD_EXTENSIONS", + "ENABLE_HLSL=0", + "ENABLE_OPT=0", + "GLSLANG_OSINCLUDE_UNIX", + "NV_EXTENSIONS", + ], + linkopts = [ + "-lm", + "-lpthread", + ], + linkstatic = 1, +) + +genrule( + name = "export_spirv_headers", + srcs = [ + "SPIRV/GLSL.ext.AMD.h", + "SPIRV/GLSL.ext.EXT.h", + "SPIRV/GLSL.ext.KHR.h", + "SPIRV/GLSL.ext.NV.h", + "SPIRV/GLSL.std.450.h", + "SPIRV/spirv.hpp", + ], + outs = [ + "include/SPIRV/GLSL.ext.AMD.h", + "include/SPIRV/GLSL.ext.EXT.h", + "include/SPIRV/GLSL.ext.KHR.h", + "include/SPIRV/GLSL.ext.NV.h", + "include/SPIRV/GLSL.std.450.h", + "include/SPIRV/spirv.hpp", + ], + cmd = "mkdir -p $(@D)/include/SPIRV && cp $(SRCS) $(@D)/include/SPIRV/", +) + +cc_library( + name = "SPIRV_headers", + hdrs = [":export_spirv_headers"], + copts = COMMON_COPTS, + includes = [ + "include", + "include/SPIRV", + ], + linkstatic = 1, +) + +cc_library( + name = "SPIRV", + srcs = glob( + ["SPIRV/*.cpp"], + exclude = [ + "SPIRV/SpvTools.cpp", + ], + ), + hdrs = [ + "SPIRV/GlslangToSpv.h", + "SPIRV/Logger.h", + "SPIRV/SPVRemapper.h", + "SPIRV/SpvBuilder.h", + "SPIRV/SpvTools.h", + "SPIRV/bitutils.h", + "SPIRV/disassemble.h", + "SPIRV/doc.h", + "SPIRV/hex_float.h", + "SPIRV/spvIR.h", + ], + copts = COMMON_COPTS, + includes = ["SPIRV"], + linkopts = ["-lm"], + linkstatic = 1, + deps = [ + ":SPIRV_headers", + ":glslang", + ], +) + +cc_library( + name = "glslang-default-resource-limits", + srcs = ["StandAlone/ResourceLimits.cpp"], + hdrs = ["StandAlone/ResourceLimits.h"], + copts = COMMON_COPTS, + linkstatic = 1, + deps = [":glslang"], +) + +cc_binary( + name = "glslangValidator", + srcs = [ + "StandAlone/StandAlone.cpp", + "StandAlone/Worklist.h", + ], + copts = COMMON_COPTS, + deps = [ + ":SPIRV", + ":glslang", + ":glslang-default-resource-limits", + ], +) + +cc_binary( + name = "spirv-remap", + srcs = ["StandAlone/spirv-remap.cpp"], + copts = COMMON_COPTS, + deps = [ + ":SPIRV", + ":glslang", + ":glslang-default-resource-limits", + ], +) + +filegroup( + name = "test_files", + srcs = glob( + ["Test/**"], + exclude = [ + "Test/bump", + "Test/glslangValidator", + "Test/runtests", + ], + ), +) + +filegroup( + name = "test_dir", + srcs = ["Test"], +) + +cc_library( + name = "glslang_test_lib", + testonly = 1, + srcs = [ + "gtests/HexFloat.cpp", + "gtests/Initializer.h", + "gtests/Settings.cpp", + "gtests/Settings.h", + "gtests/TestFixture.cpp", + "gtests/TestFixture.h", + "gtests/main.cpp", + ], + copts = COMMON_COPTS, + data = [":test_files"], + defines = [ + 'GLSLANG_TEST_DIRECTORY=\\"\\"', + ], + linkstatic = 1, + deps = [ + ":SPIRV", + ":glslang", + ":glslang-default-resource-limits", + "@com_google_googletest//:gtest", + ], +) + +GLSLANG_TESTS = glob( + ["gtests/*.FromFile.cpp"], + # Since we are not building the SPIRV-Tools dependency, the following tests + # cannot be performed. + exclude = [ + "gtests/Hlsl.FromFile.cpp", + "gtests/Spv.FromFile.cpp", + ], +) + +[cc_test( + name = test_file.replace("gtests/", "").replace(".FromFile.cpp", "") + "_test", + srcs = [test_file], + args = [ + "--test-root", + "$(location :test_dir)", + ], + copts = COMMON_COPTS, + data = [ + ":test_dir", + ":test_files", + ], + deps = [ + ":SPIRV", + ":glslang", + ":glslang_test_lib", + ], +) for test_file in GLSLANG_TESTS] diff --git a/WORKSPACE b/WORKSPACE new file mode 100644 index 00000000..3c38e61d --- /dev/null +++ b/WORKSPACE @@ -0,0 +1,27 @@ +workspace(name = "org_khronos_glslang") +load( + "@bazel_tools//tools/build_defs/repo:http.bzl", + "http_archive", +) + +http_archive( + name = "com_google_googletest", + sha256 = "ef9e2e12e7bf115ee48b427ae171fc869eeaf1b532c0fcfd982f6a353d2471b4", + strip_prefix = "googletest-37ae1fc5e6be26f367d76c078beabd7024fed53a", + urls = ["https://github.com/google/googletest/archive/37ae1fc5e6be26f367d76c078beabd7024fed53a.zip"], # 2018-07-16 +) + +http_archive( + name = "com_googlesource_code_re2", + sha256 = "b885bb965ab4b6cf8718bbb8154d8f6474cd00331481b6d3e390babb3532263e", + strip_prefix = "re2-e860767c86e577b87deadf24cc4567ea83c4f162/", + urls = ["https://github.com/google/re2/archive/e860767c86e577b87deadf24cc4567ea83c4f162.zip"], +) + +http_archive( + name = "com_google_effcee", + build_file = "BUILD.effcee.bazel", + sha256 = "b0c21a01995fdf9792510566d78d5e7fe6f83cb4ba986eba691f4926f127cb34", + strip_prefix = "effcee-8f0a61dc95e0df18c18e0ac56d83b3fa9d2fe90b/", + urls = ["https://github.com/google/effcee/archive/8f0a61dc95e0df18c18e0ac56d83b3fa9d2fe90b.zip"], +) From 016ddee83a5418aaacb5c397d044438d4781bb46 Mon Sep 17 00:00:00 2001 From: Jeff Bolz Date: Thu, 17 Oct 2019 11:22:57 -0500 Subject: [PATCH 48/94] Only apply volatile semantics to atomics when using Vulkan Memory Model --- SPIRV/GlslangToSpv.cpp | 2 +- Test/baseResults/spv.volatileAtomic.comp.out | 40 ++++++++++++++++++++ Test/spv.volatileAtomic.comp | 8 ++++ gtests/Spv.FromFile.cpp | 1 + 4 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 Test/baseResults/spv.volatileAtomic.comp.out create mode 100644 Test/spv.volatileAtomic.comp diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index f4e0fdbc..ae5f24d3 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -6401,7 +6401,7 @@ spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv scopeId = builder.makeUintConstant(spv::ScopeDevice); } // semantics default to relaxed - spv::Id semanticsId = builder.makeUintConstant(lvalueCoherentFlags.isVolatile() ? + spv::Id semanticsId = builder.makeUintConstant(lvalueCoherentFlags.isVolatile() && glslangIntermediate->usingVulkanMemoryModel() ? spv::MemorySemanticsVolatileMask : spv::MemorySemanticsMaskNone); spv::Id semanticsId2 = semanticsId; diff --git a/Test/baseResults/spv.volatileAtomic.comp.out b/Test/baseResults/spv.volatileAtomic.comp.out new file mode 100644 index 00000000..aa2d211a --- /dev/null +++ b/Test/baseResults/spv.volatileAtomic.comp.out @@ -0,0 +1,40 @@ +spv.volatileAtomic.comp +// Module Version 10000 +// Generated by (magic number): 80007 +// Id's are bound by 18 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" + ExecutionMode 4 LocalSize 1 1 1 + Source GLSL 450 + Name 4 "main" + Name 8 "D" + MemberName 8(D) 0 "d" + Name 10 "d" + Decorate 7 ArrayStride 4 + MemberDecorate 8(D) 0 Volatile + MemberDecorate 8(D) 0 Coherent + MemberDecorate 8(D) 0 Offset 0 + Decorate 8(D) BufferBlock + Decorate 10(d) DescriptorSet 0 + Decorate 10(d) Binding 3 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypeRuntimeArray 6(int) + 8(D): TypeStruct 7 + 9: TypePointer Uniform 8(D) + 10(d): 9(ptr) Variable Uniform + 11: TypeInt 32 1 + 12: 11(int) Constant 0 + 13: TypePointer Uniform 6(int) + 15: 6(int) Constant 0 + 16: 6(int) Constant 1 + 4(main): 2 Function None 3 + 5: Label + 14: 13(ptr) AccessChain 10(d) 12 12 + 17: 6(int) AtomicExchange 14 16 15 15 + Return + FunctionEnd diff --git a/Test/spv.volatileAtomic.comp b/Test/spv.volatileAtomic.comp new file mode 100644 index 00000000..2b7e6c62 --- /dev/null +++ b/Test/spv.volatileAtomic.comp @@ -0,0 +1,8 @@ +#version 450 core + +layout(set=0, binding=3) volatile buffer D { uint d[]; } d; + +void main() +{ + atomicExchange(d.d[0], 0); +} diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index d0c07515..96203416 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -404,6 +404,7 @@ INSTANTIATE_TEST_CASE_P( "spv.storageBuffer.vert", "spv.precise.tese", "spv.precise.tesc", + "spv.volatileAtomic.comp", "spv.vulkan100.subgroupArithmetic.comp", "spv.vulkan100.subgroupPartitioned.comp", "spv.xfb.vert", From dccaa59c98dac1122fc806060825e1e4feef274d Mon Sep 17 00:00:00 2001 From: Ehsan Nasiri Date: Thu, 17 Oct 2019 15:14:20 -0400 Subject: [PATCH 49/94] Make it work on Windows. --- BUILD.bazel | 55 +++++++++++++++++++++++++++++++---------------------- 1 file changed, 32 insertions(+), 23 deletions(-) diff --git a/BUILD.bazel b/BUILD.bazel index 550dde1e..4bb6b6b7 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -10,21 +10,24 @@ licenses(["notice"]) # Mixed: BSD, MIT, Khronos, Apache 2.0 exports_files(["LICENSE"]) -COMMON_COPTS = [ - "-Wall", - "-Wuninitialized", - "-Wunused", - "-Wunused-local-typedefs", - "-Wunused-parameter", - "-Wunused-value", - "-Wunused-variable", - "-Wno-reorder", - "-std=c++11", - "-fvisibility=hidden", - "-fvisibility-inlines-hidden", - "-fno-exceptions", - "-fno-rtti", -] +COMMON_COPTS = select({ + "@bazel_tools//src/conditions:windows": [""], + "//conditions:default": [ + "-Wall", + "-Wuninitialized", + "-Wunused", + "-Wunused-local-typedefs", + "-Wunused-parameter", + "-Wunused-value", + "-Wunused-variable", + "-Wno-reorder", + "-std=c++11", + "-fvisibility=hidden", + "-fvisibility-inlines-hidden", + "-fno-exceptions", + "-fno-rtti", + ], +}) cc_library( name = "glslang", @@ -43,8 +46,12 @@ cc_library( ], ) + [ "OGLCompilersDLL/InitializeDll.cpp", - "glslang/OSDependent/Unix/ossource.cpp", - ], + ] + select({ + "@bazel_tools//src/conditions:windows": + ["glslang/OSDependent/Windows/ossource.cpp"], + "//conditions:default": + ["glslang/OSDependent/Unix/ossource.cpp"], + }), hdrs = glob([ "glslang/Include/*.h", "glslang/MachineIndependent/*.h", @@ -61,13 +68,12 @@ cc_library( "AMD_EXTENSIONS", "ENABLE_HLSL=0", "ENABLE_OPT=0", - "GLSLANG_OSINCLUDE_UNIX", "NV_EXTENSIONS", ], - linkopts = [ - "-lm", - "-lpthread", - ], + linkopts = select({ + "@bazel_tools//src/conditions:windows": [""], + "//conditions:default": ["-lm", "-lpthread"], + }), linkstatic = 1, ) @@ -125,7 +131,10 @@ cc_library( ], copts = COMMON_COPTS, includes = ["SPIRV"], - linkopts = ["-lm"], + linkopts = select({ + "@bazel_tools//src/conditions:windows": [""], + "//conditions:default": ["-lm"], + }), linkstatic = 1, deps = [ ":SPIRV_headers", From 8b11dfe16709a4d24ef975e6db6275235e03888d Mon Sep 17 00:00:00 2001 From: Ehsan Nasiri Date: Thu, 17 Oct 2019 16:12:43 -0400 Subject: [PATCH 50/94] Add Kokoro bots for building using Bazel. --- kokoro/linux-clang-release-bazel/build.sh | 40 ++++++++++++++ .../linux-clang-release-bazel/continuous.cfg | 16 ++++++ .../linux-clang-release-bazel/presubmit.cfg | 16 ++++++ kokoro/macos-clang-release-bazel/build.sh | 38 +++++++++++++ .../macos-clang-release-bazel/continuous.cfg | 16 ++++++ .../macos-clang-release-bazel/presubmit.cfg | 16 ++++++ .../windows-msvc-2015-release-bazel/build.bat | 54 +++++++++++++++++++ .../continuous.cfg | 16 ++++++ .../presubmit.cfg | 16 ++++++ 9 files changed, 228 insertions(+) create mode 100644 kokoro/linux-clang-release-bazel/build.sh create mode 100644 kokoro/linux-clang-release-bazel/continuous.cfg create mode 100644 kokoro/linux-clang-release-bazel/presubmit.cfg create mode 100644 kokoro/macos-clang-release-bazel/build.sh create mode 100644 kokoro/macos-clang-release-bazel/continuous.cfg create mode 100644 kokoro/macos-clang-release-bazel/presubmit.cfg create mode 100644 kokoro/windows-msvc-2015-release-bazel/build.bat create mode 100644 kokoro/windows-msvc-2015-release-bazel/continuous.cfg create mode 100644 kokoro/windows-msvc-2015-release-bazel/presubmit.cfg diff --git a/kokoro/linux-clang-release-bazel/build.sh b/kokoro/linux-clang-release-bazel/build.sh new file mode 100644 index 00000000..89c23fea --- /dev/null +++ b/kokoro/linux-clang-release-bazel/build.sh @@ -0,0 +1,40 @@ +#!/bin/bash +# Copyright (c) 2019 Google LLC. +# +# 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. +# +# Linux Build Script. + +# Fail on any error. +set -e +# Display commands being run. +set -x + +CC=clang +CXX=clang++ +SRC=$PWD/github/glslang +cd $SRC + +# Bazel limitation: No 'External' directory is allowed!! +mv External third_party + +gsutil cp gs://bazel/0.29.1/release/bazel-0.29.1-linux-x86_64 . +chmod +x bazel-0.29.1-linux-x86_64 + +echo $(date): Build everything... +./bazel-0.29.1-linux-x86_64 build :all +echo $(date): Build completed. + +echo $(date): Starting bazel test... +./bazel-0.29.1-linux-x86_64 test :all +echo $(date): Bazel test completed. diff --git a/kokoro/linux-clang-release-bazel/continuous.cfg b/kokoro/linux-clang-release-bazel/continuous.cfg new file mode 100644 index 00000000..054f4f65 --- /dev/null +++ b/kokoro/linux-clang-release-bazel/continuous.cfg @@ -0,0 +1,16 @@ +# Copyright (c) 2019 Google LLC. +# +# 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. + +# Continuous build configuration. +build_file: "glslang/kokoro/linux-clang-release-bazel/build.sh" diff --git a/kokoro/linux-clang-release-bazel/presubmit.cfg b/kokoro/linux-clang-release-bazel/presubmit.cfg new file mode 100644 index 00000000..572898cb --- /dev/null +++ b/kokoro/linux-clang-release-bazel/presubmit.cfg @@ -0,0 +1,16 @@ +# Copyright (c) 2019 Google LLC. +# +# 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. + +# Presubmit build configuration. +build_file: "glslang/kokoro/linux-clang-release-bazel/build.sh" diff --git a/kokoro/macos-clang-release-bazel/build.sh b/kokoro/macos-clang-release-bazel/build.sh new file mode 100644 index 00000000..4232fdfd --- /dev/null +++ b/kokoro/macos-clang-release-bazel/build.sh @@ -0,0 +1,38 @@ +#!/bin/bash +# Copyright (c) 2019 Google LLC. +# +# 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. +# +# macOS Build Script. + +# Fail on any error. +set -e +# Display commands being run. +set -x + +CC=clang +CXX=clang++ +SRC=$PWD/github/glslang +cd $SRC + +# Get bazel 0.29.1. +gsutil cp gs://bazel/0.29.1/release/bazel-0.29.1-darwin-x86_64 . +chmod +x bazel-0.29.1-darwin-x86_64 + +echo $(date): Build everything... +./bazel-0.29.1-darwin-x86_64 build :all +echo $(date): Build completed. + +echo $(date): Starting bazel test... +./bazel-0.29.1-darwin-x86_64 test :all +echo $(date): Bazel test completed. diff --git a/kokoro/macos-clang-release-bazel/continuous.cfg b/kokoro/macos-clang-release-bazel/continuous.cfg new file mode 100644 index 00000000..5822fd25 --- /dev/null +++ b/kokoro/macos-clang-release-bazel/continuous.cfg @@ -0,0 +1,16 @@ +# Copyright (c) 2019 Google LLC. +# +# 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. + +# Continuous build configuration. +build_file: "glslang/kokoro/macos-clang-release-bazel/build.sh" diff --git a/kokoro/macos-clang-release-bazel/presubmit.cfg b/kokoro/macos-clang-release-bazel/presubmit.cfg new file mode 100644 index 00000000..12cf6461 --- /dev/null +++ b/kokoro/macos-clang-release-bazel/presubmit.cfg @@ -0,0 +1,16 @@ +# Copyright (c) 2019 Google LLC. +# +# 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. + +# Presubmit build configuration. +build_file: "glslang/kokoro/macos-clang-release-bazel/build.sh" diff --git a/kokoro/windows-msvc-2015-release-bazel/build.bat b/kokoro/windows-msvc-2015-release-bazel/build.bat new file mode 100644 index 00000000..645baf7d --- /dev/null +++ b/kokoro/windows-msvc-2015-release-bazel/build.bat @@ -0,0 +1,54 @@ +:: Copyright (c) 2019 Google LLC. +:: +:: 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. +:: +:: Windows Build Script. + +@echo on + +set SRC=%cd%\github\glslang + +:: Force usage of python 3.6 +set PATH=C:\python36;%PATH% +cd %SRC% + +:: REM Install Bazel. +wget -q https://github.com/bazelbuild/bazel/releases/download/0.29.1/bazel-0.29.1-windows-x86_64.zip +unzip -q bazel-0.29.1-windows-x86_64.zip + +:: Set up MSVC +call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 +set BAZEL_VS=C:\Program Files (x86)\Microsoft Visual Studio 14.0 +set BAZEL_VC=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC +set BAZEL_SH=c:\tools\msys64\usr\bin\bash.exe +set BAZEL_PYTHON=c:\tools\python2\python.exe + +:: ######################################### +:: Start building. +:: ######################################### +echo "Build everything... %DATE% %TIME%" +bazel.exe build :all +if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL% +echo "Build Completed %DATE% %TIME%" + +:: TODO: Currently the bazel tests fail due to issues resolving paths on Windows +:: ############## +:: Run the tests +:: ############## +:: echo "Running Tests... %DATE% %TIME%" +:: bazel.exe test :all +:: if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL% +:: echo "Tests Completed %DATE% %TIME%" + +exit /b 0 + diff --git a/kokoro/windows-msvc-2015-release-bazel/continuous.cfg b/kokoro/windows-msvc-2015-release-bazel/continuous.cfg new file mode 100644 index 00000000..4b068897 --- /dev/null +++ b/kokoro/windows-msvc-2015-release-bazel/continuous.cfg @@ -0,0 +1,16 @@ +# Copyright (c) 2019 Google LLC. +# +# 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. + +# Continuous build configuration. +build_file: "glslang/kokoro/windows-msvc-2015-release-bazel/build.bat" diff --git a/kokoro/windows-msvc-2015-release-bazel/presubmit.cfg b/kokoro/windows-msvc-2015-release-bazel/presubmit.cfg new file mode 100644 index 00000000..08bcefbb --- /dev/null +++ b/kokoro/windows-msvc-2015-release-bazel/presubmit.cfg @@ -0,0 +1,16 @@ +# Copyright (c) 2019 Google LLC. +# +# 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. + +# Presubmit build configuration. +build_file: "glslang/kokoro/windows-msvc-2015-release-bazel/build.bat" From af7991e062d2c1e369dff4ef4ac2a3210b9050bf Mon Sep 17 00:00:00 2001 From: Ehsan Nasiri Date: Fri, 18 Oct 2019 12:21:11 -0400 Subject: [PATCH 51/94] More cleanups for Windows. --- BUILD.bazel | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/BUILD.bazel b/BUILD.bazel index 4bb6b6b7..b1a19679 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -48,9 +48,9 @@ cc_library( "OGLCompilersDLL/InitializeDll.cpp", ] + select({ "@bazel_tools//src/conditions:windows": - ["glslang/OSDependent/Windows/ossource.cpp"], + ["glslang/OSDependent/Windows/ossource.cpp"], "//conditions:default": - ["glslang/OSDependent/Unix/ossource.cpp"], + ["glslang/OSDependent/Unix/ossource.cpp"], }), hdrs = glob([ "glslang/Include/*.h", @@ -188,11 +188,6 @@ filegroup( ), ) -filegroup( - name = "test_dir", - srcs = ["Test"], -) - cc_library( name = "glslang_test_lib", testonly = 1, @@ -207,9 +202,15 @@ cc_library( ], copts = COMMON_COPTS, data = [":test_files"], - defines = [ - 'GLSLANG_TEST_DIRECTORY=\\"\\"', - ], + defines = select({ + # Unfortunately we can't use $(location) in cc_library at the moment. + # See https://github.com/bazelbuild/bazel/issues/1023 + # So we'll specify the path manually. + "@bazel_tools//src/conditions:windows": + ["GLSLANG_TEST_DIRECTORY='\"../../../../../Test\"'"], + "//conditions:default": + ["GLSLANG_TEST_DIRECTORY='\"Test\"'"], + }), linkstatic = 1, deps = [ ":SPIRV", @@ -232,13 +233,8 @@ GLSLANG_TESTS = glob( [cc_test( name = test_file.replace("gtests/", "").replace(".FromFile.cpp", "") + "_test", srcs = [test_file], - args = [ - "--test-root", - "$(location :test_dir)", - ], copts = COMMON_COPTS, data = [ - ":test_dir", ":test_files", ], deps = [ From 2398b216af90026d7eb13863b007d7743086fce0 Mon Sep 17 00:00:00 2001 From: Ehsan Nasiri Date: Fri, 18 Oct 2019 12:25:59 -0400 Subject: [PATCH 52/94] Fix build scripts. --- kokoro/macos-clang-release-bazel/build.sh | 2 ++ kokoro/windows-msvc-2015-release-bazel/build.bat | 2 ++ 2 files changed, 4 insertions(+) diff --git a/kokoro/macos-clang-release-bazel/build.sh b/kokoro/macos-clang-release-bazel/build.sh index 4232fdfd..a899c137 100644 --- a/kokoro/macos-clang-release-bazel/build.sh +++ b/kokoro/macos-clang-release-bazel/build.sh @@ -25,6 +25,8 @@ CXX=clang++ SRC=$PWD/github/glslang cd $SRC +mv External third_party + # Get bazel 0.29.1. gsutil cp gs://bazel/0.29.1/release/bazel-0.29.1-darwin-x86_64 . chmod +x bazel-0.29.1-darwin-x86_64 diff --git a/kokoro/windows-msvc-2015-release-bazel/build.bat b/kokoro/windows-msvc-2015-release-bazel/build.bat index 645baf7d..e6c8cbcc 100644 --- a/kokoro/windows-msvc-2015-release-bazel/build.bat +++ b/kokoro/windows-msvc-2015-release-bazel/build.bat @@ -22,6 +22,8 @@ set SRC=%cd%\github\glslang set PATH=C:\python36;%PATH% cd %SRC% +mv External third_party + :: REM Install Bazel. wget -q https://github.com/bazelbuild/bazel/releases/download/0.29.1/bazel-0.29.1-windows-x86_64.zip unzip -q bazel-0.29.1-windows-x86_64.zip From d3f3f01c4f6cb081f10660318c4feaccaefd307d Mon Sep 17 00:00:00 2001 From: Ehsan Nasiri Date: Fri, 18 Oct 2019 13:49:59 -0400 Subject: [PATCH 53/94] Run tests on Windows too. --- kokoro/windows-msvc-2015-release-bazel/build.bat | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/kokoro/windows-msvc-2015-release-bazel/build.bat b/kokoro/windows-msvc-2015-release-bazel/build.bat index e6c8cbcc..969d74d2 100644 --- a/kokoro/windows-msvc-2015-release-bazel/build.bat +++ b/kokoro/windows-msvc-2015-release-bazel/build.bat @@ -43,14 +43,13 @@ bazel.exe build :all if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL% echo "Build Completed %DATE% %TIME%" -:: TODO: Currently the bazel tests fail due to issues resolving paths on Windows :: ############## :: Run the tests :: ############## -:: echo "Running Tests... %DATE% %TIME%" -:: bazel.exe test :all -:: if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL% -:: echo "Tests Completed %DATE% %TIME%" +echo "Running Tests... %DATE% %TIME%" +bazel.exe test :all +if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL% +echo "Tests Completed %DATE% %TIME%" exit /b 0 From f57feff786785c1eb8e15eb84daf0d418af3cd55 Mon Sep 17 00:00:00 2001 From: David Dubois Date: Mon, 21 Oct 2019 21:31:44 -0700 Subject: [PATCH 54/94] Fix the exports of glslang-default-resource-limits (#1942) --- StandAlone/CMakeLists.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt index 89e91c01..0878965c 100644 --- a/StandAlone/CMakeLists.txt +++ b/StandAlone/CMakeLists.txt @@ -4,8 +4,9 @@ set_property(TARGET glslang-default-resource-limits PROPERTY FOLDER glslang) set_property(TARGET glslang-default-resource-limits PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(glslang-default-resource-limits - PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} - PUBLIC ${PROJECT_SOURCE_DIR}) + PUBLIC $ + PUBLIC $) + set(SOURCES StandAlone.cpp DirStackFileIncluder.h) set(REMAPPER_SOURCES spirv-remap.cpp) From 5e634c8999e631aacb7deacd968b40ff25fc15de Mon Sep 17 00:00:00 2001 From: Timo Suoranta <47668180+tsuoranta@users.noreply.github.com> Date: Tue, 22 Oct 2019 07:38:04 +0300 Subject: [PATCH 55/94] Enable generation of compile_commands.json (#1938) --- CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 78dc5b28..dcb2d0de 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,6 +6,9 @@ if (POLICY CMP0048) endif() set_property(GLOBAL PROPERTY USE_FOLDERS ON) +# Enable compile commands database +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) + # Adhere to GNU filesystem layout conventions include(GNUInstallDirs) From 61c22e255d82f02c7aa250c2ad3cd61c167d3703 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Tue, 8 Oct 2019 01:12:07 -0600 Subject: [PATCH 56/94] Web: Add separate texture/sampler, exclude *CubeArray*. Looks like will add about 1K compressed size to executable footprint. --- Test/baseResults/web.separate.frag.out | 178 + Test/web.separate.frag | 63 + Test/web.testlist | 1 + glslang/Include/Types.h | 29 +- glslang/MachineIndependent/Initialize.cpp | 2 +- glslang/MachineIndependent/ParseHelper.cpp | 2 - glslang/MachineIndependent/Scan.cpp | 91 +- glslang/MachineIndependent/glslang.m4 | 252 +- glslang/MachineIndependent/glslang.y | 1762 +--- glslang/MachineIndependent/glslang_tab.cpp | 8417 ++++-------------- glslang/MachineIndependent/glslang_tab.cpp.h | 462 +- 11 files changed, 2316 insertions(+), 8943 deletions(-) create mode 100644 Test/baseResults/web.separate.frag.out create mode 100644 Test/web.separate.frag diff --git a/Test/baseResults/web.separate.frag.out b/Test/baseResults/web.separate.frag.out new file mode 100644 index 00000000..e31ddca3 --- /dev/null +++ b/Test/baseResults/web.separate.frag.out @@ -0,0 +1,178 @@ +; SPIR-V +; Version: 1.0 +; Generator: Khronos Glslang Reference Front End; 7 +; Bound: 99 +; Schema: 0 + OpCapability Shader + %1 = OpExtInstImport "GLSL.std.450" + OpMemoryModel Logical GLSL450 + OpEntryPoint Fragment %main "main" %color %i + OpExecutionMode %main OriginUpperLeft + OpSource ESSL 310 + OpName %main "main" + OpName %color "color" + OpName %t2d "t2d" + OpName %s "s" + OpName %t3d "t3d" + OpName %sA "sA" + OpName %sShadow "sShadow" + OpName %i "i" + OpName %tex2D "tex2D" + OpName %texCube "texCube" + OpName %tex2DArray "tex2DArray" + OpName %itex2D "itex2D" + OpName %itex3D "itex3D" + OpName %itexCube "itexCube" + OpName %itex2DArray "itex2DArray" + OpName %utex2D "utex2D" + OpName %utex3D "utex3D" + OpName %utexCube "utexCube" + OpName %utex2DArray "utex2DArray" + OpName %tex3D "tex3D" + OpDecorate %color Location 0 + OpDecorate %t2d RelaxedPrecision + OpDecorate %t2d DescriptorSet 0 + OpDecorate %t2d Binding 3 + OpDecorate %14 RelaxedPrecision + OpDecorate %s DescriptorSet 0 + OpDecorate %s Binding 0 + OpDecorate %23 RelaxedPrecision + OpDecorate %t3d DescriptorSet 0 + OpDecorate %t3d Binding 4 + OpDecorate %sA DescriptorSet 0 + OpDecorate %sA Binding 2 + OpDecorate %48 RelaxedPrecision + OpDecorate %51 RelaxedPrecision + OpDecorate %sShadow DescriptorSet 0 + OpDecorate %sShadow Binding 1 + OpDecorate %i RelaxedPrecision + OpDecorate %i Flat + OpDecorate %i Location 0 + OpDecorate %tex2D RelaxedPrecision + OpDecorate %tex2D DescriptorSet 0 + OpDecorate %tex2D Binding 5 + OpDecorate %texCube RelaxedPrecision + OpDecorate %texCube DescriptorSet 0 + OpDecorate %texCube Binding 6 + OpDecorate %tex2DArray DescriptorSet 0 + OpDecorate %tex2DArray Binding 15 + OpDecorate %itex2D DescriptorSet 0 + OpDecorate %itex2D Binding 16 + OpDecorate %itex3D DescriptorSet 0 + OpDecorate %itex3D Binding 17 + OpDecorate %itexCube DescriptorSet 0 + OpDecorate %itexCube Binding 18 + OpDecorate %itex2DArray DescriptorSet 0 + OpDecorate %itex2DArray Binding 19 + OpDecorate %utex2D DescriptorSet 0 + OpDecorate %utex2D Binding 20 + OpDecorate %utex3D DescriptorSet 0 + OpDecorate %utex3D Binding 21 + OpDecorate %utexCube DescriptorSet 0 + OpDecorate %utexCube Binding 22 + OpDecorate %utex2DArray DescriptorSet 0 + OpDecorate %utex2DArray Binding 23 + OpDecorate %tex3D DescriptorSet 0 + OpDecorate %tex3D Binding 36 + %void = OpTypeVoid + %3 = OpTypeFunction %void + %float = OpTypeFloat 32 + %v4float = OpTypeVector %float 4 +%_ptr_Output_v4float = OpTypePointer Output %v4float + %color = OpVariable %_ptr_Output_v4float Output + %10 = OpTypeImage %float 2D 0 0 0 1 Unknown + %11 = OpTypeSampledImage %10 +%_ptr_UniformConstant_11 = OpTypePointer UniformConstant %11 + %t2d = OpVariable %_ptr_UniformConstant_11 UniformConstant + %15 = OpTypeSampler +%_ptr_UniformConstant_15 = OpTypePointer UniformConstant %15 + %s = OpVariable %_ptr_UniformConstant_15 UniformConstant + %v2float = OpTypeVector %float 2 + %float_0_5 = OpConstant %float 0.5 + %22 = OpConstantComposite %v2float %float_0_5 %float_0_5 + %24 = OpTypeImage %float 3D 0 0 0 1 Unknown + %25 = OpTypeSampledImage %24 + %uint = OpTypeInt 32 0 + %uint_4 = OpConstant %uint 4 +%_arr_25_uint_4 = OpTypeArray %25 %uint_4 +%_ptr_UniformConstant__arr_25_uint_4 = OpTypePointer UniformConstant %_arr_25_uint_4 + %t3d = OpVariable %_ptr_UniformConstant__arr_25_uint_4 UniformConstant + %int = OpTypeInt 32 1 + %int_1 = OpConstant %int 1 +%_ptr_UniformConstant_25 = OpTypePointer UniformConstant %25 +%_arr_15_uint_4 = OpTypeArray %15 %uint_4 +%_ptr_UniformConstant__arr_15_uint_4 = OpTypePointer UniformConstant %_arr_15_uint_4 + %sA = OpVariable %_ptr_UniformConstant__arr_15_uint_4 UniformConstant + %int_2 = OpConstant %int 2 + %v3float = OpTypeVector %float 3 + %44 = OpConstantComposite %v3float %float_0_5 %float_0_5 %float_0_5 + %sShadow = OpVariable %_ptr_UniformConstant_15 UniformConstant +%_ptr_Input_int = OpTypePointer Input %int + %i = OpVariable %_ptr_Input_int Input + %tex2D = OpVariable %_ptr_UniformConstant_11 UniformConstant + %58 = OpTypeImage %float Cube 0 0 0 1 Unknown + %59 = OpTypeSampledImage %58 +%_ptr_UniformConstant_59 = OpTypePointer UniformConstant %59 + %texCube = OpVariable %_ptr_UniformConstant_59 UniformConstant + %62 = OpTypeImage %float 2D 0 1 0 1 Unknown + %63 = OpTypeSampledImage %62 +%_ptr_UniformConstant_63 = OpTypePointer UniformConstant %63 + %tex2DArray = OpVariable %_ptr_UniformConstant_63 UniformConstant + %66 = OpTypeImage %int 2D 0 0 0 1 Unknown + %67 = OpTypeSampledImage %66 +%_ptr_UniformConstant_67 = OpTypePointer UniformConstant %67 + %itex2D = OpVariable %_ptr_UniformConstant_67 UniformConstant + %70 = OpTypeImage %int 3D 0 0 0 1 Unknown + %71 = OpTypeSampledImage %70 +%_ptr_UniformConstant_71 = OpTypePointer UniformConstant %71 + %itex3D = OpVariable %_ptr_UniformConstant_71 UniformConstant + %74 = OpTypeImage %int Cube 0 0 0 1 Unknown + %75 = OpTypeSampledImage %74 +%_ptr_UniformConstant_75 = OpTypePointer UniformConstant %75 + %itexCube = OpVariable %_ptr_UniformConstant_75 UniformConstant + %78 = OpTypeImage %int 2D 0 1 0 1 Unknown + %79 = OpTypeSampledImage %78 +%_ptr_UniformConstant_79 = OpTypePointer UniformConstant %79 +%itex2DArray = OpVariable %_ptr_UniformConstant_79 UniformConstant + %82 = OpTypeImage %uint 2D 0 0 0 1 Unknown + %83 = OpTypeSampledImage %82 +%_ptr_UniformConstant_83 = OpTypePointer UniformConstant %83 + %utex2D = OpVariable %_ptr_UniformConstant_83 UniformConstant + %86 = OpTypeImage %uint 3D 0 0 0 1 Unknown + %87 = OpTypeSampledImage %86 +%_ptr_UniformConstant_87 = OpTypePointer UniformConstant %87 + %utex3D = OpVariable %_ptr_UniformConstant_87 UniformConstant + %90 = OpTypeImage %uint Cube 0 0 0 1 Unknown + %91 = OpTypeSampledImage %90 +%_ptr_UniformConstant_91 = OpTypePointer UniformConstant %91 + %utexCube = OpVariable %_ptr_UniformConstant_91 UniformConstant + %94 = OpTypeImage %uint 2D 0 1 0 1 Unknown + %95 = OpTypeSampledImage %94 +%_ptr_UniformConstant_95 = OpTypePointer UniformConstant %95 +%utex2DArray = OpVariable %_ptr_UniformConstant_95 UniformConstant + %tex3D = OpVariable %_ptr_UniformConstant_25 UniformConstant + %main = OpFunction %void None %3 + %5 = OpLabel + %14 = OpLoad %11 %t2d + %18 = OpLoad %15 %s + %19 = OpSampledImage %11 %14 %18 + %23 = OpImageSampleImplicitLod %v4float %19 %22 + OpStore %color %23 + %34 = OpAccessChain %_ptr_UniformConstant_25 %t3d %int_1 + %35 = OpLoad %25 %34 + %40 = OpAccessChain %_ptr_UniformConstant_15 %sA %int_2 + %41 = OpLoad %15 %40 + %42 = OpSampledImage %25 %35 %41 + %45 = OpImageSampleImplicitLod %v4float %42 %44 + %46 = OpLoad %v4float %color + %47 = OpFAdd %v4float %46 %45 + OpStore %color %47 + %48 = OpLoad %11 %t2d + %49 = OpLoad %15 %s + %50 = OpSampledImage %11 %48 %49 + %51 = OpImageSampleImplicitLod %v4float %50 %22 + %52 = OpLoad %v4float %color + %53 = OpFAdd %v4float %52 %51 + OpStore %color %53 + OpReturn + OpFunctionEnd diff --git a/Test/web.separate.frag b/Test/web.separate.frag new file mode 100644 index 00000000..b747cba5 --- /dev/null +++ b/Test/web.separate.frag @@ -0,0 +1,63 @@ +#version 310 es + +precision highp sampler; +precision highp samplerShadow; +precision highp texture2DArray; +precision highp itexture2D; +precision highp itexture3D; +precision highp itextureCube; +precision highp itexture2DArray; +precision highp utexture2D; +precision highp utexture3D; +precision highp utextureCube; +precision highp utexture2DArray; +precision highp texture3D; +precision highp float; + +layout(binding = 0) uniform sampler s; +layout(binding = 1) uniform samplerShadow sShadow; +layout(binding = 2) uniform sampler sA[4]; +layout(binding = 3) uniform texture2D t2d; +layout(binding = 4) uniform texture3D t3d[4]; +layout(location = 0) flat in int i; + +layout(location = 0) out vec4 color; + +void main() +{ + color = texture(sampler2D(t2d, s), vec2(0.5)); + color += texture(sampler3D(t3d[1], sA[2]), vec3(0.5)); + color += texture(sampler2D(t2d, s), vec2(0.5)); +} + +layout(binding = 5) uniform texture2D tex2D; +layout(binding = 6) uniform textureCube texCube; +layout(binding = 15) uniform texture2DArray tex2DArray; +layout(binding = 16) uniform itexture2D itex2D; +layout(binding = 17) uniform itexture3D itex3D; +layout(binding = 18) uniform itextureCube itexCube; +layout(binding = 19) uniform itexture2DArray itex2DArray; +layout(binding = 20) uniform utexture2D utex2D; +layout(binding = 21) uniform utexture3D utex3D; +layout(binding = 22) uniform utextureCube utexCube; +layout(binding = 23) uniform utexture2DArray utex2DArray; +layout(binding = 36) uniform texture3D tex3D; + +void foo() +{ + sampler2D (tex2D, s); + samplerCube (texCube, s); + samplerCubeShadow (texCube, sShadow); + sampler2DArray (tex2DArray, s); + sampler2DArrayShadow (tex2DArray, sShadow); + isampler2D (itex2D, s); + isampler3D (itex3D, s); + isamplerCube (itexCube, s); + isampler2DArray (itex2DArray, s); + usampler2D (utex2D, s); + usampler3D (utex3D, s); + usamplerCube (utexCube, s); + usampler2DArray (utex2DArray, s); + sampler3D (tex3D, s); + sampler2DShadow (tex2D, sShadow); +} diff --git a/Test/web.testlist b/Test/web.testlist index fba92127..0d9de221 100644 --- a/Test/web.testlist +++ b/Test/web.testlist @@ -5,3 +5,4 @@ web.controlFlow.frag web.operations.frag web.texture.frag web.array.frag +web.separate.frag diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index ef933b4f..385ee406 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -79,6 +79,7 @@ struct TSampler { // misnomer now; includes images, textures without sampler, bool ms : 1; bool image : 1; // image, combined should be false bool combined : 1; // true means texture is combined with a sampler, false means texture with no sampler + bool sampler : 1; // true means a pure sampler, other fields should be clear() #ifdef ENABLE_HLSL unsigned int vectorSize : 3; // vector return type size. unsigned int getVectorSize() const { return vectorSize; } @@ -105,8 +106,6 @@ struct TSampler { // misnomer now; includes images, textures without sampler, bool isRect() const { return false; } bool isSubpass() const { return false; } bool isCombined() const { return true; } - bool isPureSampler() const { return false; } - bool isTexture() const { return false; } bool isImage() const { return false; } bool isImageClass() const { return false; } bool isMultiSample() const { return false; } @@ -114,7 +113,6 @@ struct TSampler { // misnomer now; includes images, textures without sampler, void setExternal(bool e) { } bool isYuv() const { return false; } #else - bool sampler : 1; // true means a pure sampler, other fields should be clear() bool external : 1; // GL_OES_EGL_image_external bool yuv : 1; // GL_EXT_YUV_target // Some languages support structures as sample results. Storing the whole structure in the @@ -125,8 +123,6 @@ struct TSampler { // misnomer now; includes images, textures without sampler, bool isRect() const { return dim == EsdRect; } bool isSubpass() const { return dim == EsdSubpass; } bool isCombined() const { return combined; } - bool isPureSampler() const { return sampler; } - bool isTexture() const { return !sampler && !image; } bool isImage() const { return image && !isSubpass(); } bool isImageClass() const { return image; } bool isMultiSample() const { return ms; } @@ -134,6 +130,9 @@ struct TSampler { // misnomer now; includes images, textures without sampler, void setExternal(bool e) { external = e; } bool isYuv() const { return yuv; } #endif + bool isTexture() const { return !sampler && !image; } + bool isPureSampler() const { return sampler; } + void setCombined(bool c) { combined = c; } void setBasicType(TBasicType t) { type = t; } TBasicType getBasicType() const { return type; } @@ -149,8 +148,8 @@ struct TSampler { // misnomer now; includes images, textures without sampler, ms = false; image = false; combined = false; -#ifndef GLSLANG_WEB sampler = false; +#ifndef GLSLANG_WEB external = false; yuv = false; #endif @@ -197,6 +196,14 @@ struct TSampler { // misnomer now; includes images, textures without sampler, ms = m; } + // make a pure sampler, no texture, no image, nothing combined, the 'sampler' keyword + void setPureSampler(bool s) + { + clear(); + sampler = true; + shadow = s; + } + #ifndef GLSLANG_WEB // make a subpass input attachment void setSubpass(TBasicType t, bool m = false) @@ -207,14 +214,6 @@ struct TSampler { // misnomer now; includes images, textures without sampler, dim = EsdSubpass; ms = m; } - - // make a pure sampler, no texture, no image, nothing combined, the 'sampler' keyword - void setPureSampler(bool s) - { - clear(); - sampler = true; - shadow = s; - } #endif bool operator==(const TSampler& right) const @@ -1922,6 +1921,7 @@ public: case EbtFloat: return "float"; case EbtInt: return "int"; case EbtUint: return "uint"; + case EbtSampler: return "sampler/image"; #ifndef GLSLANG_WEB case EbtVoid: return "void"; case EbtDouble: return "double"; @@ -1934,7 +1934,6 @@ public: case EbtUint64: return "uint64_t"; case EbtBool: return "bool"; case EbtAtomicUint: return "atomic_uint"; - case EbtSampler: return "sampler/image"; case EbtStruct: return "structure"; case EbtBlock: return "block"; case EbtAccStructNV: return "accelerationStructureNV"; diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 2344d36c..3348309a 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -5314,7 +5314,7 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c #ifdef GLSLANG_WEB const int ms = 0; #else - for (int ms = 0; ms <= 1; ++ms) + for (int ms = 0; ms <= 1; ++ms) // loop over "bool" multisample or not #endif { #ifndef GLSLANG_WEB diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index b381be9b..e9ff3208 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -2794,10 +2794,8 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T // See if it's a matrix bool constructingMatrix = false; switch (op) { -#ifndef GLSLANG_WEB case EOpConstructTextureSampler: return constructorTextureSamplerError(loc, function); -#endif case EOpConstructMat2x2: case EOpConstructMat2x3: case EOpConstructMat2x4: diff --git a/glslang/MachineIndependent/Scan.cpp b/glslang/MachineIndependent/Scan.cpp index 9a9b69cc..8e54de88 100644 --- a/glslang/MachineIndependent/Scan.cpp +++ b/glslang/MachineIndependent/Scan.cpp @@ -564,10 +564,6 @@ void TScanContext::fillInKeywordMap() (*KeywordMap)["sampler2D"] = SAMPLER2D; (*KeywordMap)["samplerCube"] = SAMPLERCUBE; - (*KeywordMap)["samplerCubeArray"] = SAMPLERCUBEARRAY; - (*KeywordMap)["samplerCubeArrayShadow"] = SAMPLERCUBEARRAYSHADOW; - (*KeywordMap)["isamplerCubeArray"] = ISAMPLERCUBEARRAY; - (*KeywordMap)["usamplerCubeArray"] = USAMPLERCUBEARRAY; (*KeywordMap)["samplerCubeShadow"] = SAMPLERCUBESHADOW; (*KeywordMap)["sampler2DArray"] = SAMPLER2DARRAY; (*KeywordMap)["sampler2DArrayShadow"] = SAMPLER2DARRAYSHADOW; @@ -582,7 +578,30 @@ void TScanContext::fillInKeywordMap() (*KeywordMap)["sampler3D"] = SAMPLER3D; (*KeywordMap)["sampler2DShadow"] = SAMPLER2DSHADOW; + (*KeywordMap)["texture2D"] = TEXTURE2D; + (*KeywordMap)["textureCube"] = TEXTURECUBE; + (*KeywordMap)["texture2DArray"] = TEXTURE2DARRAY; + (*KeywordMap)["itexture2D"] = ITEXTURE2D; + (*KeywordMap)["itexture3D"] = ITEXTURE3D; + (*KeywordMap)["itextureCube"] = ITEXTURECUBE; + (*KeywordMap)["itexture2DArray"] = ITEXTURE2DARRAY; + (*KeywordMap)["utexture2D"] = UTEXTURE2D; + (*KeywordMap)["utexture3D"] = UTEXTURE3D; + (*KeywordMap)["utextureCube"] = UTEXTURECUBE; + (*KeywordMap)["utexture2DArray"] = UTEXTURE2DARRAY; + (*KeywordMap)["texture3D"] = TEXTURE3D; + + (*KeywordMap)["sampler"] = SAMPLER; + (*KeywordMap)["samplerShadow"] = SAMPLERSHADOW; + #ifndef GLSLANG_WEB + (*KeywordMap)["textureCubeArray"] = TEXTURECUBEARRAY; + (*KeywordMap)["itextureCubeArray"] = ITEXTURECUBEARRAY; + (*KeywordMap)["utextureCubeArray"] = UTEXTURECUBEARRAY; + (*KeywordMap)["samplerCubeArray"] = SAMPLERCUBEARRAY; + (*KeywordMap)["samplerCubeArrayShadow"] = SAMPLERCUBEARRAYSHADOW; + (*KeywordMap)["isamplerCubeArray"] = ISAMPLERCUBEARRAY; + (*KeywordMap)["usamplerCubeArray"] = USAMPLERCUBEARRAY; (*KeywordMap)["sampler1DArrayShadow"] = SAMPLER1DARRAYSHADOW; (*KeywordMap)["isampler1DArray"] = ISAMPLER1DARRAY; (*KeywordMap)["usampler1D"] = USAMPLER1D; @@ -609,28 +628,11 @@ void TScanContext::fillInKeywordMap() (*KeywordMap)["__samplerExternal2DY2YEXT"] = SAMPLEREXTERNAL2DY2YEXT; // GL_EXT_YUV_target - (*KeywordMap)["sampler"] = SAMPLER; - (*KeywordMap)["samplerShadow"] = SAMPLERSHADOW; - - (*KeywordMap)["texture2D"] = TEXTURE2D; - (*KeywordMap)["textureCube"] = TEXTURECUBE; - (*KeywordMap)["textureCubeArray"] = TEXTURECUBEARRAY; - (*KeywordMap)["itextureCubeArray"] = ITEXTURECUBEARRAY; - (*KeywordMap)["utextureCubeArray"] = UTEXTURECUBEARRAY; (*KeywordMap)["itexture1DArray"] = ITEXTURE1DARRAY; (*KeywordMap)["utexture1D"] = UTEXTURE1D; (*KeywordMap)["itexture1D"] = ITEXTURE1D; (*KeywordMap)["utexture1DArray"] = UTEXTURE1DARRAY; (*KeywordMap)["textureBuffer"] = TEXTUREBUFFER; - (*KeywordMap)["texture2DArray"] = TEXTURE2DARRAY; - (*KeywordMap)["itexture2D"] = ITEXTURE2D; - (*KeywordMap)["itexture3D"] = ITEXTURE3D; - (*KeywordMap)["itextureCube"] = ITEXTURECUBE; - (*KeywordMap)["itexture2DArray"] = ITEXTURE2DARRAY; - (*KeywordMap)["utexture2D"] = UTEXTURE2D; - (*KeywordMap)["utexture3D"] = UTEXTURE3D; - (*KeywordMap)["utextureCube"] = UTEXTURECUBE; - (*KeywordMap)["utexture2DArray"] = UTEXTURE2DARRAY; (*KeywordMap)["itexture2DRect"] = ITEXTURE2DRECT; (*KeywordMap)["utexture2DRect"] = UTEXTURE2DRECT; (*KeywordMap)["itextureBuffer"] = ITEXTUREBUFFER; @@ -642,7 +644,6 @@ void TScanContext::fillInKeywordMap() (*KeywordMap)["itexture2DMSArray"] = ITEXTURE2DMSARRAY; (*KeywordMap)["utexture2DMSArray"] = UTEXTURE2DMSARRAY; (*KeywordMap)["texture1D"] = TEXTURE1D; - (*KeywordMap)["texture3D"] = TEXTURE3D; (*KeywordMap)["texture2DRect"] = TEXTURE2DRECT; (*KeywordMap)["texture1DArray"] = TEXTURE1DARRAY; @@ -1321,7 +1322,6 @@ int TScanContext::tokenizeIdentifier() return keyword; return identifierOrType(); -#endif case SAMPLERCUBEARRAY: case SAMPLERCUBEARRAYSHADOW: @@ -1335,6 +1335,15 @@ int TScanContext::tokenizeIdentifier() reservedWord(); return keyword; + case TEXTURECUBEARRAY: + case ITEXTURECUBEARRAY: + case UTEXTURECUBEARRAY: + if (parseContext.spvVersion.vulkan > 0) + return keyword; + else + return identifierOrType(); +#endif + case UINT: case UVEC2: case UVEC3: @@ -1369,6 +1378,25 @@ int TScanContext::tokenizeIdentifier() } return keyword; + case TEXTURE2D: + case TEXTURECUBE: + case TEXTURE2DARRAY: + case ITEXTURE2D: + case ITEXTURE3D: + case ITEXTURECUBE: + case ITEXTURE2DARRAY: + case UTEXTURE2D: + case UTEXTURE3D: + case UTEXTURECUBE: + case UTEXTURE2DARRAY: + case TEXTURE3D: + case SAMPLER: + case SAMPLERSHADOW: + if (parseContext.spvVersion.vulkan > 0) + return keyword; + else + return identifierOrType(); + #ifndef GLSLANG_WEB case ISAMPLER1D: case ISAMPLER1DARRAY: @@ -1458,25 +1486,11 @@ int TScanContext::tokenizeIdentifier() return keyword; return identifierOrType(); - case TEXTURE2D: - case TEXTURECUBE: - case TEXTURECUBEARRAY: - case ITEXTURECUBEARRAY: - case UTEXTURECUBEARRAY: case ITEXTURE1DARRAY: case UTEXTURE1D: case ITEXTURE1D: case UTEXTURE1DARRAY: case TEXTUREBUFFER: - case TEXTURE2DARRAY: - case ITEXTURE2D: - case ITEXTURE3D: - case ITEXTURECUBE: - case ITEXTURE2DARRAY: - case UTEXTURE2D: - case UTEXTURE3D: - case UTEXTURECUBE: - case UTEXTURE2DARRAY: case ITEXTURE2DRECT: case UTEXTURE2DRECT: case ITEXTUREBUFFER: @@ -1488,11 +1502,8 @@ int TScanContext::tokenizeIdentifier() case ITEXTURE2DMSARRAY: case UTEXTURE2DMSARRAY: case TEXTURE1D: - case TEXTURE3D: case TEXTURE2DRECT: case TEXTURE1DARRAY: - case SAMPLER: - case SAMPLERSHADOW: if (parseContext.spvVersion.vulkan > 0) return keyword; else diff --git a/glslang/MachineIndependent/glslang.m4 b/glslang/MachineIndependent/glslang.m4 index 6ace0380..1b463ecc 100644 --- a/glslang/MachineIndependent/glslang.m4 +++ b/glslang/MachineIndependent/glslang.m4 @@ -166,8 +166,12 @@ extern int yylex(YYSTYPE*, TParseContext&); %token SAMPLER2DARRAYSHADOW ISAMPLER2D ISAMPLER3D ISAMPLERCUBE %token ISAMPLER2DARRAY USAMPLER2D USAMPLER3D %token USAMPLERCUBE USAMPLER2DARRAY -%token SAMPLERCUBEARRAY SAMPLERCUBEARRAYSHADOW -%token ISAMPLERCUBEARRAY USAMPLERCUBEARRAY + +// separate image/sampler +%token SAMPLER SAMPLERSHADOW +%token TEXTURE2D TEXTURE3D TEXTURECUBE TEXTURE2DARRAY +%token ITEXTURE2D ITEXTURE3D ITEXTURECUBE ITEXTURE2DARRAY +%token UTEXTURE2D UTEXTURE3D UTEXTURECUBE UTEXTURE2DARRAY GLSLANG_WEB_EXCLUDE_ON @@ -203,6 +207,8 @@ GLSLANG_WEB_EXCLUDE_ON %token FCOOPMATNV ICOOPMATNV UCOOPMATNV // combined image/sampler +%token SAMPLERCUBEARRAY SAMPLERCUBEARRAYSHADOW +%token ISAMPLERCUBEARRAY USAMPLERCUBEARRAY %token SAMPLER1D SAMPLER1DARRAY SAMPLER1DARRAYSHADOW ISAMPLER1D SAMPLER1DSHADOW %token SAMPLER2DRECT SAMPLER2DRECTSHADOW ISAMPLER2DRECT USAMPLER2DRECT %token SAMPLERBUFFER ISAMPLERBUFFER USAMPLERBUFFER @@ -233,18 +239,12 @@ GLSLANG_WEB_EXCLUDE_ON %token F16IMAGECUBE F16IMAGE1DARRAY F16IMAGE2DARRAY F16IMAGECUBEARRAY %token F16IMAGEBUFFER F16IMAGE2DMS F16IMAGE2DMSARRAY -// pure sampler -%token SAMPLER SAMPLERSHADOW - // texture without sampler -%token TEXTURE1D TEXTURE2D TEXTURE3D TEXTURECUBE -%token TEXTURE1DARRAY TEXTURE2DARRAY -%token ITEXTURE1D ITEXTURE2D ITEXTURE3D ITEXTURECUBE -%token ITEXTURE1DARRAY ITEXTURE2DARRAY UTEXTURE1D UTEXTURE2D UTEXTURE3D -%token UTEXTURECUBE UTEXTURE1DARRAY UTEXTURE2DARRAY +%token TEXTURECUBEARRAY ITEXTURECUBEARRAY UTEXTURECUBEARRAY +%token TEXTURE1D ITEXTURE1D UTEXTURE1D +%token TEXTURE1DARRAY ITEXTURE1DARRAY UTEXTURE1DARRAY %token TEXTURE2DRECT ITEXTURE2DRECT UTEXTURE2DRECT %token TEXTUREBUFFER ITEXTUREBUFFER UTEXTUREBUFFER -%token TEXTURECUBEARRAY ITEXTURECUBEARRAY UTEXTURECUBEARRAY %token TEXTURE2DMS ITEXTURE2DMS UTEXTURE2DMS %token TEXTURE2DMSARRAY ITEXTURE2DMSARRAY UTEXTURE2DMSARRAY @@ -2354,6 +2354,16 @@ GLSLANG_WEB_EXCLUDE_OFF $$.basicType = EbtSampler; $$.sampler.set(EbtFloat, EsdCube, false, true); } + | SAMPLER2DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat, Esd2D, true); + } + | SAMPLER2DARRAYSHADOW { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat, Esd2D, true, true); + } GLSLANG_WEB_EXCLUDE_ON | SAMPLER1DSHADOW { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -2370,17 +2380,6 @@ GLSLANG_WEB_EXCLUDE_ON $$.basicType = EbtSampler; $$.sampler.set(EbtFloat, Esd1D, true, true); } -GLSLANG_WEB_EXCLUDE_OFF - | SAMPLER2DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, Esd2D, true); - } - | SAMPLER2DARRAYSHADOW { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, Esd2D, true, true); - } | SAMPLERCUBEARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; @@ -2391,7 +2390,6 @@ GLSLANG_WEB_EXCLUDE_OFF $$.basicType = EbtSampler; $$.sampler.set(EbtFloat, EsdCube, true, true); } -GLSLANG_WEB_EXCLUDE_ON | F16SAMPLER1D { parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -2491,30 +2489,11 @@ GLSLANG_WEB_EXCLUDE_OFF $$.basicType = EbtSampler; $$.sampler.set(EbtInt, EsdCube); } -GLSLANG_WEB_EXCLUDE_ON - | ISAMPLER1DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtInt, Esd1D, true); - } -GLSLANG_WEB_EXCLUDE_OFF | ISAMPLER2DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtInt, Esd2D, true); } - | ISAMPLERCUBEARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtInt, EsdCube, true); - } -GLSLANG_WEB_EXCLUDE_ON - | USAMPLER1D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtUint, Esd1D); - } -GLSLANG_WEB_EXCLUDE_OFF | USAMPLER2D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; @@ -2531,21 +2510,121 @@ GLSLANG_WEB_EXCLUDE_OFF $$.sampler.set(EbtUint, EsdCube); } GLSLANG_WEB_EXCLUDE_ON + | ISAMPLER1DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtInt, Esd1D, true); + } + | ISAMPLERCUBEARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtInt, EsdCube, true); + } + | USAMPLER1D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtUint, Esd1D); + } | USAMPLER1DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtUint, Esd1D, true); } + | USAMPLERCUBEARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtUint, EsdCube, true); + } + | TEXTURECUBEARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtFloat, EsdCube, true); + } + | ITEXTURECUBEARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtInt, EsdCube, true); + } + | UTEXTURECUBEARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtUint, EsdCube, true); + } GLSLANG_WEB_EXCLUDE_OFF | USAMPLER2DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtUint, Esd2D, true); } - | USAMPLERCUBEARRAY { + | TEXTURE2D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.set(EbtUint, EsdCube, true); + $$.sampler.setTexture(EbtFloat, Esd2D); + } + | TEXTURE3D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtFloat, Esd3D); + } + | TEXTURE2DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtFloat, Esd2D, true); + } + | TEXTURECUBE { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtFloat, EsdCube); + } + | ITEXTURE2D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtInt, Esd2D); + } + | ITEXTURE3D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtInt, Esd3D); + } + | ITEXTURECUBE { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtInt, EsdCube); + } + | ITEXTURE2DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtInt, Esd2D, true); + } + | UTEXTURE2D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtUint, Esd2D); + } + | UTEXTURE3D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtUint, Esd3D); + } + | UTEXTURECUBE { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtUint, EsdCube); + } + | UTEXTURE2DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtUint, Esd2D, true); + } + | SAMPLER { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setPureSampler(false); + } + | SAMPLERSHADOW { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setPureSampler(true); } GLSLANG_WEB_EXCLUDE_ON | SAMPLER2DRECT { @@ -2643,16 +2722,6 @@ GLSLANG_WEB_EXCLUDE_ON $$.basicType = EbtSampler; $$.sampler.set(EbtUint, Esd2D, true, false, true); } - | SAMPLER { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setPureSampler(false); - } - | SAMPLERSHADOW { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setPureSampler(true); - } | TEXTURE1D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; @@ -2664,33 +2733,18 @@ GLSLANG_WEB_EXCLUDE_ON $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat16, Esd1D); } - | TEXTURE2D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat, Esd2D); - } | F16TEXTURE2D { parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat16, Esd2D); } - | TEXTURE3D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat, Esd3D); - } | F16TEXTURE3D { parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat16, Esd3D); } - | TEXTURECUBE { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat, EsdCube); - } | F16TEXTURECUBE { parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -2708,22 +2762,12 @@ GLSLANG_WEB_EXCLUDE_ON $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat16, Esd1D, true); } - | TEXTURE2DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat, Esd2D, true); - } | F16TEXTURE2DARRAY { parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat16, Esd2D, true); } - | TEXTURECUBEARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat, EsdCube, true); - } | F16TEXTURECUBEARRAY { parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -2735,71 +2779,21 @@ GLSLANG_WEB_EXCLUDE_ON $$.basicType = EbtSampler; $$.sampler.setTexture(EbtInt, Esd1D); } - | ITEXTURE2D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtInt, Esd2D); - } - | ITEXTURE3D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtInt, Esd3D); - } - | ITEXTURECUBE { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtInt, EsdCube); - } | ITEXTURE1DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtInt, Esd1D, true); } - | ITEXTURE2DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtInt, Esd2D, true); - } - | ITEXTURECUBEARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtInt, EsdCube, true); - } | UTEXTURE1D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtUint, Esd1D); } - | UTEXTURE2D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtUint, Esd2D); - } - | UTEXTURE3D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtUint, Esd3D); - } - | UTEXTURECUBE { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtUint, EsdCube); - } | UTEXTURE1DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtUint, Esd1D, true); } - | UTEXTURE2DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtUint, Esd2D, true); - } - | UTEXTURECUBEARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtUint, EsdCube, true); - } | TEXTURE2DRECT { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index 008faf0e..e308825a 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -166,95 +166,12 @@ extern int yylex(YYSTYPE*, TParseContext&); %token SAMPLER2DARRAYSHADOW ISAMPLER2D ISAMPLER3D ISAMPLERCUBE %token ISAMPLER2DARRAY USAMPLER2D USAMPLER3D %token USAMPLERCUBE USAMPLER2DARRAY -%token SAMPLERCUBEARRAY SAMPLERCUBEARRAYSHADOW -%token ISAMPLERCUBEARRAY USAMPLERCUBEARRAY - - -%token ATTRIBUTE VARYING -%token FLOAT16_T FLOAT32_T DOUBLE FLOAT64_T -%token INT64_T UINT64_T INT32_T UINT32_T INT16_T UINT16_T INT8_T UINT8_T -%token I64VEC2 I64VEC3 I64VEC4 -%token U64VEC2 U64VEC3 U64VEC4 -%token I32VEC2 I32VEC3 I32VEC4 -%token U32VEC2 U32VEC3 U32VEC4 -%token I16VEC2 I16VEC3 I16VEC4 -%token U16VEC2 U16VEC3 U16VEC4 -%token I8VEC2 I8VEC3 I8VEC4 -%token U8VEC2 U8VEC3 U8VEC4 -%token DVEC2 DVEC3 DVEC4 DMAT2 DMAT3 DMAT4 -%token F16VEC2 F16VEC3 F16VEC4 F16MAT2 F16MAT3 F16MAT4 -%token F32VEC2 F32VEC3 F32VEC4 F32MAT2 F32MAT3 F32MAT4 -%token F64VEC2 F64VEC3 F64VEC4 F64MAT2 F64MAT3 F64MAT4 -%token DMAT2X2 DMAT2X3 DMAT2X4 -%token DMAT3X2 DMAT3X3 DMAT3X4 -%token DMAT4X2 DMAT4X3 DMAT4X4 -%token F16MAT2X2 F16MAT2X3 F16MAT2X4 -%token F16MAT3X2 F16MAT3X3 F16MAT3X4 -%token F16MAT4X2 F16MAT4X3 F16MAT4X4 -%token F32MAT2X2 F32MAT2X3 F32MAT2X4 -%token F32MAT3X2 F32MAT3X3 F32MAT3X4 -%token F32MAT4X2 F32MAT4X3 F32MAT4X4 -%token F64MAT2X2 F64MAT2X3 F64MAT2X4 -%token F64MAT3X2 F64MAT3X3 F64MAT3X4 -%token F64MAT4X2 F64MAT4X3 F64MAT4X4 -%token ATOMIC_UINT -%token ACCSTRUCTNV -%token FCOOPMATNV ICOOPMATNV UCOOPMATNV - -// combined image/sampler -%token SAMPLER1D SAMPLER1DARRAY SAMPLER1DARRAYSHADOW ISAMPLER1D SAMPLER1DSHADOW -%token SAMPLER2DRECT SAMPLER2DRECTSHADOW ISAMPLER2DRECT USAMPLER2DRECT -%token SAMPLERBUFFER ISAMPLERBUFFER USAMPLERBUFFER -%token SAMPLER2DMS ISAMPLER2DMS USAMPLER2DMS -%token SAMPLER2DMSARRAY ISAMPLER2DMSARRAY USAMPLER2DMSARRAY -%token SAMPLEREXTERNALOES -%token SAMPLEREXTERNAL2DY2YEXT -%token ISAMPLER1DARRAY USAMPLER1D USAMPLER1DARRAY -%token F16SAMPLER1D F16SAMPLER2D F16SAMPLER3D F16SAMPLER2DRECT F16SAMPLERCUBE -%token F16SAMPLER1DARRAY F16SAMPLER2DARRAY F16SAMPLERCUBEARRAY -%token F16SAMPLERBUFFER F16SAMPLER2DMS F16SAMPLER2DMSARRAY -%token F16SAMPLER1DSHADOW F16SAMPLER2DSHADOW F16SAMPLER1DARRAYSHADOW F16SAMPLER2DARRAYSHADOW -%token F16SAMPLER2DRECTSHADOW F16SAMPLERCUBESHADOW F16SAMPLERCUBEARRAYSHADOW - -// images -%token IMAGE1D IIMAGE1D UIMAGE1D IMAGE2D IIMAGE2D -%token UIMAGE2D IMAGE3D IIMAGE3D UIMAGE3D -%token IMAGE2DRECT IIMAGE2DRECT UIMAGE2DRECT -%token IMAGECUBE IIMAGECUBE UIMAGECUBE -%token IMAGEBUFFER IIMAGEBUFFER UIMAGEBUFFER -%token IMAGE1DARRAY IIMAGE1DARRAY UIMAGE1DARRAY -%token IMAGE2DARRAY IIMAGE2DARRAY UIMAGE2DARRAY -%token IMAGECUBEARRAY IIMAGECUBEARRAY UIMAGECUBEARRAY -%token IMAGE2DMS IIMAGE2DMS UIMAGE2DMS -%token IMAGE2DMSARRAY IIMAGE2DMSARRAY UIMAGE2DMSARRAY - -%token F16IMAGE1D F16IMAGE2D F16IMAGE3D F16IMAGE2DRECT -%token F16IMAGECUBE F16IMAGE1DARRAY F16IMAGE2DARRAY F16IMAGECUBEARRAY -%token F16IMAGEBUFFER F16IMAGE2DMS F16IMAGE2DMSARRAY - -// pure sampler +// separate image/sampler %token SAMPLER SAMPLERSHADOW - -// texture without sampler -%token TEXTURE1D TEXTURE2D TEXTURE3D TEXTURECUBE -%token TEXTURE1DARRAY TEXTURE2DARRAY -%token ITEXTURE1D ITEXTURE2D ITEXTURE3D ITEXTURECUBE -%token ITEXTURE1DARRAY ITEXTURE2DARRAY UTEXTURE1D UTEXTURE2D UTEXTURE3D -%token UTEXTURECUBE UTEXTURE1DARRAY UTEXTURE2DARRAY -%token TEXTURE2DRECT ITEXTURE2DRECT UTEXTURE2DRECT -%token TEXTUREBUFFER ITEXTUREBUFFER UTEXTUREBUFFER -%token TEXTURECUBEARRAY ITEXTURECUBEARRAY UTEXTURECUBEARRAY -%token TEXTURE2DMS ITEXTURE2DMS UTEXTURE2DMS -%token TEXTURE2DMSARRAY ITEXTURE2DMSARRAY UTEXTURE2DMSARRAY - -%token F16TEXTURE1D F16TEXTURE2D F16TEXTURE3D F16TEXTURE2DRECT F16TEXTURECUBE -%token F16TEXTURE1DARRAY F16TEXTURE2DARRAY F16TEXTURECUBEARRAY -%token F16TEXTUREBUFFER F16TEXTURE2DMS F16TEXTURE2DMSARRAY - -// input attachments -%token SUBPASSINPUT SUBPASSINPUTMS ISUBPASSINPUT ISUBPASSINPUTMS USUBPASSINPUT USUBPASSINPUTMS -%token F16SUBPASSINPUT F16SUBPASSINPUTMS +%token TEXTURE2D TEXTURE3D TEXTURECUBE TEXTURE2DARRAY +%token ITEXTURE2D ITEXTURE3D ITEXTURECUBE ITEXTURE2DARRAY +%token UTEXTURE2D UTEXTURE3D UTEXTURECUBE UTEXTURE2DARRAY @@ -281,16 +198,6 @@ extern int yylex(YYSTYPE*, TParseContext&); %token FLAT SMOOTH LAYOUT -%token DOUBLECONSTANT INT16CONSTANT UINT16CONSTANT FLOAT16CONSTANT INT32CONSTANT UINT32CONSTANT -%token INT64CONSTANT UINT64CONSTANT -%token SUBROUTINE DEMOTE -%token PAYLOADNV PAYLOADINNV HITATTRNV CALLDATANV CALLDATAINNV -%token PATCH SAMPLE BUFFER NONUNIFORM -%token COHERENT VOLATILE RESTRICT READONLY WRITEONLY DEVICECOHERENT QUEUEFAMILYCOHERENT WORKGROUPCOHERENT -%token SUBGROUPCOHERENT NONPRIVATE -%token NOPERSPECTIVE EXPLICITINTERPAMD PERVERTEXNV PERPRIMITIVENV PERVIEWNV PERTASKNV -%token PRECISE - %type assignment_operator unary_operator %type variable_identifier primary_expression postfix_expression @@ -338,12 +245,6 @@ extern int yylex(YYSTYPE*, TParseContext&); %type identifier_list -%type precise_qualifier non_uniform_qualifier -%type type_name_list -%type attribute attribute_list single_attribute -%type demote_statement -%type initializer_list - %start translation_unit %% @@ -377,39 +278,6 @@ primary_expression $$ = parseContext.intermediate.addConstantUnion($1.b, $1.loc, true); } - | INT32CONSTANT { - parseContext.explicitInt32Check($1.loc, "32-bit signed literal"); - $$ = parseContext.intermediate.addConstantUnion($1.i, $1.loc, true); - } - | UINT32CONSTANT { - parseContext.explicitInt32Check($1.loc, "32-bit signed literal"); - $$ = parseContext.intermediate.addConstantUnion($1.u, $1.loc, true); - } - | INT64CONSTANT { - parseContext.int64Check($1.loc, "64-bit integer literal"); - $$ = parseContext.intermediate.addConstantUnion($1.i64, $1.loc, true); - } - | UINT64CONSTANT { - parseContext.int64Check($1.loc, "64-bit unsigned integer literal"); - $$ = parseContext.intermediate.addConstantUnion($1.u64, $1.loc, true); - } - | INT16CONSTANT { - parseContext.explicitInt16Check($1.loc, "16-bit integer literal"); - $$ = parseContext.intermediate.addConstantUnion((short)$1.i, $1.loc, true); - } - | UINT16CONSTANT { - parseContext.explicitInt16Check($1.loc, "16-bit unsigned integer literal"); - $$ = parseContext.intermediate.addConstantUnion((unsigned short)$1.u, $1.loc, true); - } - | DOUBLECONSTANT { - parseContext.doubleCheck($1.loc, "double literal"); - $$ = parseContext.intermediate.addConstantUnion($1.d, EbtDouble, $1.loc, true); - } - | FLOAT16CONSTANT { - parseContext.float16Check($1.loc, "half float literal"); - $$ = parseContext.intermediate.addConstantUnion($1.d, EbtFloat16, $1.loc, true); - } - ; postfix_expression @@ -536,12 +404,6 @@ function_identifier } } - | non_uniform_qualifier { - // Constructor - $$.intermNode = 0; - $$.function = parseContext.handleConstructorCall($1.loc, $1); - } - ; unary_expression @@ -1102,8 +964,6 @@ single_declaration $$.type = $1; $$.intermNode = 0; - parseContext.declareTypeDefaults($$.loc, $$.type); - } | fully_specified_type IDENTIFIER { $$.type = $1; @@ -1190,53 +1050,6 @@ interpolation_qualifier $$.qualifier.flat = true; } - | NOPERSPECTIVE { - parseContext.globalCheck($1.loc, "noperspective"); - parseContext.profileRequires($1.loc, EEsProfile, 0, E_GL_NV_shader_noperspective_interpolation, "noperspective"); - parseContext.profileRequires($1.loc, ENoProfile, 130, 0, "noperspective"); - $$.init($1.loc); - $$.qualifier.nopersp = true; - } - | EXPLICITINTERPAMD { - parseContext.globalCheck($1.loc, "__explicitInterpAMD"); - parseContext.profileRequires($1.loc, ECoreProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); - parseContext.profileRequires($1.loc, ECompatibilityProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); - $$.init($1.loc); - $$.qualifier.explicitInterp = true; - } - | PERVERTEXNV { - parseContext.globalCheck($1.loc, "pervertexNV"); - parseContext.profileRequires($1.loc, ECoreProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); - parseContext.profileRequires($1.loc, ECompatibilityProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); - parseContext.profileRequires($1.loc, EEsProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); - $$.init($1.loc); - $$.qualifier.pervertexNV = true; - } - | PERPRIMITIVENV { - // No need for profile version or extension check. Shader stage already checks both. - parseContext.globalCheck($1.loc, "perprimitiveNV"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangFragmentMask | EShLangMeshNVMask), "perprimitiveNV"); - // Fragment shader stage doesn't check for extension. So we explicitly add below extension check. - if (parseContext.language == EShLangFragment) - parseContext.requireExtensions($1.loc, 1, &E_GL_NV_mesh_shader, "perprimitiveNV"); - $$.init($1.loc); - $$.qualifier.perPrimitiveNV = true; - } - | PERVIEWNV { - // No need for profile version or extension check. Shader stage already checks both. - parseContext.globalCheck($1.loc, "perviewNV"); - parseContext.requireStage($1.loc, EShLangMeshNV, "perviewNV"); - $$.init($1.loc); - $$.qualifier.perViewNV = true; - } - | PERTASKNV { - // No need for profile version or extension check. Shader stage already checks both. - parseContext.globalCheck($1.loc, "taskNV"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangTaskNVMask | EShLangMeshNVMask), "taskNV"); - $$.init($1.loc); - $$.qualifier.perTaskNV = true; - } - ; layout_qualifier @@ -1272,15 +1085,6 @@ layout_qualifier_id ; -precise_qualifier - : PRECISE { - parseContext.profileRequires($$.loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise"); - parseContext.profileRequires($1.loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "precise"); - $$.init($1.loc); - $$.qualifier.noContraction = true; - } - ; - type_qualifier : single_type_qualifier { @@ -1316,14 +1120,6 @@ single_type_qualifier $$ = $1; } - | precise_qualifier { - // allow inheritance of storage qualifier from block declaration - $$ = $1; - } - | non_uniform_qualifier { - $$ = $1; - } - ; storage_qualifier @@ -1361,174 +1157,9 @@ storage_qualifier $$.qualifier.storage = EvqUniform; } - | SHARED { - parseContext.globalCheck($1.loc, "shared"); - parseContext.profileRequires($1.loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared"); - parseContext.profileRequires($1.loc, EEsProfile, 310, 0, "shared"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangComputeMask | EShLangMeshNVMask | EShLangTaskNVMask), "shared"); - $$.init($1.loc); - $$.qualifier.storage = EvqShared; - } - | BUFFER { - parseContext.globalCheck($1.loc, "buffer"); - $$.init($1.loc); - $$.qualifier.storage = EvqBuffer; - } - | ATTRIBUTE { - parseContext.requireStage($1.loc, EShLangVertex, "attribute"); - parseContext.checkDeprecated($1.loc, ECoreProfile, 130, "attribute"); - parseContext.checkDeprecated($1.loc, ENoProfile, 130, "attribute"); - parseContext.requireNotRemoved($1.loc, ECoreProfile, 420, "attribute"); - parseContext.requireNotRemoved($1.loc, EEsProfile, 300, "attribute"); - - parseContext.globalCheck($1.loc, "attribute"); - - $$.init($1.loc); - $$.qualifier.storage = EvqVaryingIn; - } - | VARYING { - parseContext.checkDeprecated($1.loc, ENoProfile, 130, "varying"); - parseContext.checkDeprecated($1.loc, ECoreProfile, 130, "varying"); - parseContext.requireNotRemoved($1.loc, ECoreProfile, 420, "varying"); - parseContext.requireNotRemoved($1.loc, EEsProfile, 300, "varying"); - - parseContext.globalCheck($1.loc, "varying"); - - $$.init($1.loc); - if (parseContext.language == EShLangVertex) - $$.qualifier.storage = EvqVaryingOut; - else - $$.qualifier.storage = EvqVaryingIn; - } - | PATCH { - parseContext.globalCheck($1.loc, "patch"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch"); - $$.init($1.loc); - $$.qualifier.patch = true; - } - | SAMPLE { - parseContext.globalCheck($1.loc, "sample"); - $$.init($1.loc); - $$.qualifier.sample = true; - } - | HITATTRNV { - parseContext.globalCheck($1.loc, "hitAttributeNV"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangIntersectNVMask | EShLangClosestHitNVMask - | EShLangAnyHitNVMask), "hitAttributeNV"); - parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "hitAttributeNV"); - $$.init($1.loc); - $$.qualifier.storage = EvqHitAttrNV; - } - | PAYLOADNV { - parseContext.globalCheck($1.loc, "rayPayloadNV"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenNVMask | EShLangClosestHitNVMask | - EShLangAnyHitNVMask | EShLangMissNVMask), "rayPayloadNV"); - parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "rayPayloadNV"); - $$.init($1.loc); - $$.qualifier.storage = EvqPayloadNV; - } - | PAYLOADINNV { - parseContext.globalCheck($1.loc, "rayPayloadInNV"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangClosestHitNVMask | - EShLangAnyHitNVMask | EShLangMissNVMask), "rayPayloadInNV"); - parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "rayPayloadInNV"); - $$.init($1.loc); - $$.qualifier.storage = EvqPayloadInNV; - } - | CALLDATANV { - parseContext.globalCheck($1.loc, "callableDataNV"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenNVMask | - EShLangClosestHitNVMask | EShLangMissNVMask | EShLangCallableNVMask), "callableDataNV"); - parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "callableDataNV"); - $$.init($1.loc); - $$.qualifier.storage = EvqCallableDataNV; - } - | CALLDATAINNV { - parseContext.globalCheck($1.loc, "callableDataInNV"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangCallableNVMask), "callableDataInNV"); - parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "callableDataInNV"); - $$.init($1.loc); - $$.qualifier.storage = EvqCallableDataInNV; - } - | COHERENT { - $$.init($1.loc); - $$.qualifier.coherent = true; - } - | DEVICECOHERENT { - $$.init($1.loc); - parseContext.requireExtensions($1.loc, 1, &E_GL_KHR_memory_scope_semantics, "devicecoherent"); - $$.qualifier.devicecoherent = true; - } - | QUEUEFAMILYCOHERENT { - $$.init($1.loc); - parseContext.requireExtensions($1.loc, 1, &E_GL_KHR_memory_scope_semantics, "queuefamilycoherent"); - $$.qualifier.queuefamilycoherent = true; - } - | WORKGROUPCOHERENT { - $$.init($1.loc); - parseContext.requireExtensions($1.loc, 1, &E_GL_KHR_memory_scope_semantics, "workgroupcoherent"); - $$.qualifier.workgroupcoherent = true; - } - | SUBGROUPCOHERENT { - $$.init($1.loc); - parseContext.requireExtensions($1.loc, 1, &E_GL_KHR_memory_scope_semantics, "subgroupcoherent"); - $$.qualifier.subgroupcoherent = true; - } - | NONPRIVATE { - $$.init($1.loc); - parseContext.requireExtensions($1.loc, 1, &E_GL_KHR_memory_scope_semantics, "nonprivate"); - $$.qualifier.nonprivate = true; - } - | VOLATILE { - $$.init($1.loc); - $$.qualifier.volatil = true; - } - | RESTRICT { - $$.init($1.loc); - $$.qualifier.restrict = true; - } - | READONLY { - $$.init($1.loc); - $$.qualifier.readonly = true; - } - | WRITEONLY { - $$.init($1.loc); - $$.qualifier.writeonly = true; - } - | SUBROUTINE { - parseContext.spvRemoved($1.loc, "subroutine"); - parseContext.globalCheck($1.loc, "subroutine"); - parseContext.unimplemented($1.loc, "subroutine"); - $$.init($1.loc); - } - | SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN { - parseContext.spvRemoved($1.loc, "subroutine"); - parseContext.globalCheck($1.loc, "subroutine"); - parseContext.unimplemented($1.loc, "subroutine"); - $$.init($1.loc); - } - ; -non_uniform_qualifier - : NONUNIFORM { - $$.init($1.loc); - $$.qualifier.nonUniform = true; - } - ; - -type_name_list - : IDENTIFIER { - // TODO - } - | type_name_list COMMA IDENTIFIER { - // TODO: 4.0 semantics: subroutines - // 1) make sure each identifier is a type declared earlier with SUBROUTINE - // 2) save all of the identifiers for future comparison with the declared function - } - ; - type_specifier : type_specifier_nonarray type_parameter_specifier_opt { @@ -1750,585 +1381,6 @@ type_specifier_nonarray $$.setMatrix(4, 4); } - | DOUBLE { - parseContext.doubleCheck($1.loc, "double"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - } - | FLOAT16_T { - parseContext.float16ScalarVectorCheck($1.loc, "float16_t", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat16; - } - | FLOAT32_T { - parseContext.explicitFloat32Check($1.loc, "float32_t", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - } - | FLOAT64_T { - parseContext.explicitFloat64Check($1.loc, "float64_t", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - } - | INT8_T { - parseContext.int8ScalarVectorCheck($1.loc, "8-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt8; - } - | UINT8_T { - parseContext.int8ScalarVectorCheck($1.loc, "8-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint8; - } - | INT16_T { - parseContext.int16ScalarVectorCheck($1.loc, "16-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt16; - } - | UINT16_T { - parseContext.int16ScalarVectorCheck($1.loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint16; - } - | INT32_T { - parseContext.explicitInt32Check($1.loc, "32-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt; - } - | UINT32_T { - parseContext.explicitInt32Check($1.loc, "32-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint; - } - | INT64_T { - parseContext.int64Check($1.loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt64; - } - | UINT64_T { - parseContext.int64Check($1.loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint64; - } - | DVEC2 { - parseContext.doubleCheck($1.loc, "double vector"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setVector(2); - } - | DVEC3 { - parseContext.doubleCheck($1.loc, "double vector"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setVector(3); - } - | DVEC4 { - parseContext.doubleCheck($1.loc, "double vector"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setVector(4); - } - | F16VEC2 { - parseContext.float16ScalarVectorCheck($1.loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat16; - $$.setVector(2); - } - | F16VEC3 { - parseContext.float16ScalarVectorCheck($1.loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat16; - $$.setVector(3); - } - | F16VEC4 { - parseContext.float16ScalarVectorCheck($1.loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat16; - $$.setVector(4); - } - | F32VEC2 { - parseContext.explicitFloat32Check($1.loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setVector(2); - } - | F32VEC3 { - parseContext.explicitFloat32Check($1.loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setVector(3); - } - | F32VEC4 { - parseContext.explicitFloat32Check($1.loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setVector(4); - } - | F64VEC2 { - parseContext.explicitFloat64Check($1.loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setVector(2); - } - | F64VEC3 { - parseContext.explicitFloat64Check($1.loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setVector(3); - } - | F64VEC4 { - parseContext.explicitFloat64Check($1.loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setVector(4); - } - | I8VEC2 { - parseContext.int8ScalarVectorCheck($1.loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt8; - $$.setVector(2); - } - | I8VEC3 { - parseContext.int8ScalarVectorCheck($1.loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt8; - $$.setVector(3); - } - | I8VEC4 { - parseContext.int8ScalarVectorCheck($1.loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt8; - $$.setVector(4); - } - | I16VEC2 { - parseContext.int16ScalarVectorCheck($1.loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt16; - $$.setVector(2); - } - | I16VEC3 { - parseContext.int16ScalarVectorCheck($1.loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt16; - $$.setVector(3); - } - | I16VEC4 { - parseContext.int16ScalarVectorCheck($1.loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt16; - $$.setVector(4); - } - | I32VEC2 { - parseContext.explicitInt32Check($1.loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt; - $$.setVector(2); - } - | I32VEC3 { - parseContext.explicitInt32Check($1.loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt; - $$.setVector(3); - } - | I32VEC4 { - parseContext.explicitInt32Check($1.loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt; - $$.setVector(4); - } - | I64VEC2 { - parseContext.int64Check($1.loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt64; - $$.setVector(2); - } - | I64VEC3 { - parseContext.int64Check($1.loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt64; - $$.setVector(3); - } - | I64VEC4 { - parseContext.int64Check($1.loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt64; - $$.setVector(4); - } - | U8VEC2 { - parseContext.int8ScalarVectorCheck($1.loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint8; - $$.setVector(2); - } - | U8VEC3 { - parseContext.int8ScalarVectorCheck($1.loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint8; - $$.setVector(3); - } - | U8VEC4 { - parseContext.int8ScalarVectorCheck($1.loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint8; - $$.setVector(4); - } - | U16VEC2 { - parseContext.int16ScalarVectorCheck($1.loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint16; - $$.setVector(2); - } - | U16VEC3 { - parseContext.int16ScalarVectorCheck($1.loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint16; - $$.setVector(3); - } - | U16VEC4 { - parseContext.int16ScalarVectorCheck($1.loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint16; - $$.setVector(4); - } - | U32VEC2 { - parseContext.explicitInt32Check($1.loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint; - $$.setVector(2); - } - | U32VEC3 { - parseContext.explicitInt32Check($1.loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint; - $$.setVector(3); - } - | U32VEC4 { - parseContext.explicitInt32Check($1.loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint; - $$.setVector(4); - } - | U64VEC2 { - parseContext.int64Check($1.loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint64; - $$.setVector(2); - } - | U64VEC3 { - parseContext.int64Check($1.loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint64; - $$.setVector(3); - } - | U64VEC4 { - parseContext.int64Check($1.loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint64; - $$.setVector(4); - } - | DMAT2 { - parseContext.doubleCheck($1.loc, "double matrix"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(2, 2); - } - | DMAT3 { - parseContext.doubleCheck($1.loc, "double matrix"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(3, 3); - } - | DMAT4 { - parseContext.doubleCheck($1.loc, "double matrix"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(4, 4); - } - | DMAT2X2 { - parseContext.doubleCheck($1.loc, "double matrix"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(2, 2); - } - | DMAT2X3 { - parseContext.doubleCheck($1.loc, "double matrix"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(2, 3); - } - | DMAT2X4 { - parseContext.doubleCheck($1.loc, "double matrix"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(2, 4); - } - | DMAT3X2 { - parseContext.doubleCheck($1.loc, "double matrix"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(3, 2); - } - | DMAT3X3 { - parseContext.doubleCheck($1.loc, "double matrix"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(3, 3); - } - | DMAT3X4 { - parseContext.doubleCheck($1.loc, "double matrix"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(3, 4); - } - | DMAT4X2 { - parseContext.doubleCheck($1.loc, "double matrix"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(4, 2); - } - | DMAT4X3 { - parseContext.doubleCheck($1.loc, "double matrix"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(4, 3); - } - | DMAT4X4 { - parseContext.doubleCheck($1.loc, "double matrix"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(4, 4); - } - | F16MAT2 { - parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat16; - $$.setMatrix(2, 2); - } - | F16MAT3 { - parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat16; - $$.setMatrix(3, 3); - } - | F16MAT4 { - parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat16; - $$.setMatrix(4, 4); - } - | F16MAT2X2 { - parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat16; - $$.setMatrix(2, 2); - } - | F16MAT2X3 { - parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat16; - $$.setMatrix(2, 3); - } - | F16MAT2X4 { - parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat16; - $$.setMatrix(2, 4); - } - | F16MAT3X2 { - parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat16; - $$.setMatrix(3, 2); - } - | F16MAT3X3 { - parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat16; - $$.setMatrix(3, 3); - } - | F16MAT3X4 { - parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat16; - $$.setMatrix(3, 4); - } - | F16MAT4X2 { - parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat16; - $$.setMatrix(4, 2); - } - | F16MAT4X3 { - parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat16; - $$.setMatrix(4, 3); - } - | F16MAT4X4 { - parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat16; - $$.setMatrix(4, 4); - } - | F32MAT2 { - parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(2, 2); - } - | F32MAT3 { - parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(3, 3); - } - | F32MAT4 { - parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(4, 4); - } - | F32MAT2X2 { - parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(2, 2); - } - | F32MAT2X3 { - parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(2, 3); - } - | F32MAT2X4 { - parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(2, 4); - } - | F32MAT3X2 { - parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(3, 2); - } - | F32MAT3X3 { - parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(3, 3); - } - | F32MAT3X4 { - parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(3, 4); - } - | F32MAT4X2 { - parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(4, 2); - } - | F32MAT4X3 { - parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(4, 3); - } - | F32MAT4X4 { - parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(4, 4); - } - | F64MAT2 { - parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(2, 2); - } - | F64MAT3 { - parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(3, 3); - } - | F64MAT4 { - parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(4, 4); - } - | F64MAT2X2 { - parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(2, 2); - } - | F64MAT2X3 { - parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(2, 3); - } - | F64MAT2X4 { - parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(2, 4); - } - | F64MAT3X2 { - parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(3, 2); - } - | F64MAT3X3 { - parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(3, 3); - } - | F64MAT3X4 { - parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(3, 4); - } - | F64MAT4X2 { - parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(4, 2); - } - | F64MAT4X3 { - parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(4, 3); - } - | F64MAT4X4 { - parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(4, 4); - } - | ACCSTRUCTNV { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtAccStructNV; - } - | ATOMIC_UINT { - parseContext.vulkanRemoved($1.loc, "atomic counter types"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtAtomicUint; - } - | SAMPLER1D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, Esd1D); - } - | SAMPLER2D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; @@ -2354,23 +1406,6 @@ type_specifier_nonarray $$.basicType = EbtSampler; $$.sampler.set(EbtFloat, EsdCube, false, true); } - - | SAMPLER1DSHADOW { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, Esd1D, false, true); - } - | SAMPLER1DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, Esd1D, true); - } - | SAMPLER1DARRAYSHADOW { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, Esd1D, true, true); - } - | SAMPLER2DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; @@ -2381,100 +1416,6 @@ type_specifier_nonarray $$.basicType = EbtSampler; $$.sampler.set(EbtFloat, Esd2D, true, true); } - | SAMPLERCUBEARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, EsdCube, true); - } - | SAMPLERCUBEARRAYSHADOW { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, EsdCube, true, true); - } - - | F16SAMPLER1D { - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, Esd1D); - } - | F16SAMPLER2D { - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, Esd2D); - } - | F16SAMPLER3D { - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, Esd3D); - } - | F16SAMPLERCUBE { - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, EsdCube); - } - | F16SAMPLER1DSHADOW { - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, Esd1D, false, true); - } - | F16SAMPLER2DSHADOW { - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, Esd2D, false, true); - } - | F16SAMPLERCUBESHADOW { - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, EsdCube, false, true); - } - | F16SAMPLER1DARRAY { - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, Esd1D, true); - } - | F16SAMPLER2DARRAY { - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, Esd2D, true); - } - | F16SAMPLER1DARRAYSHADOW { - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, Esd1D, true, true); - } - | F16SAMPLER2DARRAYSHADOW { - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, Esd2D, true, true); - } - | F16SAMPLERCUBEARRAY { - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, EsdCube, true); - } - | F16SAMPLERCUBEARRAYSHADOW { - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, EsdCube, true, true); - } - | ISAMPLER1D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtInt, Esd1D); - } | ISAMPLER2D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -2491,30 +1432,11 @@ type_specifier_nonarray $$.basicType = EbtSampler; $$.sampler.set(EbtInt, EsdCube); } - - | ISAMPLER1DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtInt, Esd1D, true); - } - | ISAMPLER2DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtInt, Esd2D, true); } - | ISAMPLERCUBEARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtInt, EsdCube, true); - } - - | USAMPLER1D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtUint, Esd1D); - } - | USAMPLER2D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; @@ -2531,209 +1453,30 @@ type_specifier_nonarray $$.sampler.set(EbtUint, EsdCube); } - | USAMPLER1DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtUint, Esd1D, true); - } - | USAMPLER2DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.set(EbtUint, Esd2D, true); } - | USAMPLERCUBEARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtUint, EsdCube, true); - } - - | SAMPLER2DRECT { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, EsdRect); - } - | SAMPLER2DRECTSHADOW { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, EsdRect, false, true); - } - | F16SAMPLER2DRECT { - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, EsdRect); - } - | F16SAMPLER2DRECTSHADOW { - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, EsdRect, false, true); - } - | ISAMPLER2DRECT { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtInt, EsdRect); - } - | USAMPLER2DRECT { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtUint, EsdRect); - } - | SAMPLERBUFFER { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, EsdBuffer); - } - | F16SAMPLERBUFFER { - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, EsdBuffer); - } - | ISAMPLERBUFFER { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtInt, EsdBuffer); - } - | USAMPLERBUFFER { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtUint, EsdBuffer); - } - | SAMPLER2DMS { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, Esd2D, false, false, true); - } - | F16SAMPLER2DMS { - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, Esd2D, false, false, true); - } - | ISAMPLER2DMS { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtInt, Esd2D, false, false, true); - } - | USAMPLER2DMS { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtUint, Esd2D, false, false, true); - } - | SAMPLER2DMSARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, Esd2D, true, false, true); - } - | F16SAMPLER2DMSARRAY { - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, Esd2D, true, false, true); - } - | ISAMPLER2DMSARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtInt, Esd2D, true, false, true); - } - | USAMPLER2DMSARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtUint, Esd2D, true, false, true); - } - | SAMPLER { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setPureSampler(false); - } - | SAMPLERSHADOW { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setPureSampler(true); - } - | TEXTURE1D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat, Esd1D); - } - | F16TEXTURE1D { - parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat16, Esd1D); - } | TEXTURE2D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat, Esd2D); } - | F16TEXTURE2D { - parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat16, Esd2D); - } | TEXTURE3D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat, Esd3D); } - | F16TEXTURE3D { - parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat16, Esd3D); - } - | TEXTURECUBE { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat, EsdCube); - } - | F16TEXTURECUBE { - parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat16, EsdCube); - } - | TEXTURE1DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat, Esd1D, true); - } - | F16TEXTURE1DARRAY { - parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat16, Esd1D, true); - } | TEXTURE2DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtFloat, Esd2D, true); } - | F16TEXTURE2DARRAY { - parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); + | TEXTURECUBE { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat16, Esd2D, true); - } - | TEXTURECUBEARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat, EsdCube, true); - } - | F16TEXTURECUBEARRAY { - parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat16, EsdCube, true); - } - | ITEXTURE1D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtInt, Esd1D); + $$.sampler.setTexture(EbtFloat, EsdCube); } | ITEXTURE2D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); @@ -2750,26 +1493,11 @@ type_specifier_nonarray $$.basicType = EbtSampler; $$.sampler.setTexture(EbtInt, EsdCube); } - | ITEXTURE1DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtInt, Esd1D, true); - } | ITEXTURE2DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtInt, Esd2D, true); } - | ITEXTURECUBEARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtInt, EsdCube, true); - } - | UTEXTURE1D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtUint, Esd1D); - } | UTEXTURE2D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; @@ -2785,415 +1513,20 @@ type_specifier_nonarray $$.basicType = EbtSampler; $$.sampler.setTexture(EbtUint, EsdCube); } - | UTEXTURE1DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtUint, Esd1D, true); - } | UTEXTURE2DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; $$.sampler.setTexture(EbtUint, Esd2D, true); } - | UTEXTURECUBEARRAY { + | SAMPLER { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtUint, EsdCube, true); + $$.sampler.setPureSampler(false); } - | TEXTURE2DRECT { + | SAMPLERSHADOW { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat, EsdRect); - } - | F16TEXTURE2DRECT { - parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat16, EsdRect); - } - | ITEXTURE2DRECT { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtInt, EsdRect); - } - | UTEXTURE2DRECT { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtUint, EsdRect); - } - | TEXTUREBUFFER { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat, EsdBuffer); - } - | F16TEXTUREBUFFER { - parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat16, EsdBuffer); - } - | ITEXTUREBUFFER { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtInt, EsdBuffer); - } - | UTEXTUREBUFFER { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtUint, EsdBuffer); - } - | TEXTURE2DMS { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat, Esd2D, false, false, true); - } - | F16TEXTURE2DMS { - parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat16, Esd2D, false, false, true); - } - | ITEXTURE2DMS { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtInt, Esd2D, false, false, true); - } - | UTEXTURE2DMS { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtUint, Esd2D, false, false, true); - } - | TEXTURE2DMSARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat, Esd2D, true, false, true); - } - | F16TEXTURE2DMSARRAY { - parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat16, Esd2D, true, false, true); - } - | ITEXTURE2DMSARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtInt, Esd2D, true, false, true); - } - | UTEXTURE2DMSARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtUint, Esd2D, true, false, true); - } - | IMAGE1D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat, Esd1D); - } - | F16IMAGE1D { - parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat16, Esd1D); - } - | IIMAGE1D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtInt, Esd1D); - } - | UIMAGE1D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtUint, Esd1D); - } - | IMAGE2D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat, Esd2D); - } - | F16IMAGE2D { - parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat16, Esd2D); - } - | IIMAGE2D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtInt, Esd2D); - } - | UIMAGE2D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtUint, Esd2D); - } - | IMAGE3D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat, Esd3D); - } - | F16IMAGE3D { - parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat16, Esd3D); - } - | IIMAGE3D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtInt, Esd3D); - } - | UIMAGE3D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtUint, Esd3D); - } - | IMAGE2DRECT { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat, EsdRect); - } - | F16IMAGE2DRECT { - parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat16, EsdRect); - } - | IIMAGE2DRECT { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtInt, EsdRect); - } - | UIMAGE2DRECT { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtUint, EsdRect); - } - | IMAGECUBE { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat, EsdCube); - } - | F16IMAGECUBE { - parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat16, EsdCube); - } - | IIMAGECUBE { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtInt, EsdCube); - } - | UIMAGECUBE { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtUint, EsdCube); - } - | IMAGEBUFFER { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat, EsdBuffer); - } - | F16IMAGEBUFFER { - parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat16, EsdBuffer); - } - | IIMAGEBUFFER { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtInt, EsdBuffer); - } - | UIMAGEBUFFER { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtUint, EsdBuffer); - } - | IMAGE1DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat, Esd1D, true); - } - | F16IMAGE1DARRAY { - parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat16, Esd1D, true); - } - | IIMAGE1DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtInt, Esd1D, true); - } - | UIMAGE1DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtUint, Esd1D, true); - } - | IMAGE2DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat, Esd2D, true); - } - | F16IMAGE2DARRAY { - parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat16, Esd2D, true); - } - | IIMAGE2DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtInt, Esd2D, true); - } - | UIMAGE2DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtUint, Esd2D, true); - } - | IMAGECUBEARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat, EsdCube, true); - } - | F16IMAGECUBEARRAY { - parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat16, EsdCube, true); - } - | IIMAGECUBEARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtInt, EsdCube, true); - } - | UIMAGECUBEARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtUint, EsdCube, true); - } - | IMAGE2DMS { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat, Esd2D, false, false, true); - } - | F16IMAGE2DMS { - parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat16, Esd2D, false, false, true); - } - | IIMAGE2DMS { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtInt, Esd2D, false, false, true); - } - | UIMAGE2DMS { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtUint, Esd2D, false, false, true); - } - | IMAGE2DMSARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat, Esd2D, true, false, true); - } - | F16IMAGE2DMSARRAY { - parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat16, Esd2D, true, false, true); - } - | IIMAGE2DMSARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtInt, Esd2D, true, false, true); - } - | UIMAGE2DMSARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtUint, Esd2D, true, false, true); - } - | SAMPLEREXTERNALOES { // GL_OES_EGL_image_external - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, Esd2D); - $$.sampler.external = true; - } - | SAMPLEREXTERNAL2DY2YEXT { // GL_EXT_YUV_target - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, Esd2D); - $$.sampler.yuv = true; - } - | SUBPASSINPUT { - parseContext.requireStage($1.loc, EShLangFragment, "subpass input"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setSubpass(EbtFloat); - } - | SUBPASSINPUTMS { - parseContext.requireStage($1.loc, EShLangFragment, "subpass input"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setSubpass(EbtFloat, true); - } - | F16SUBPASSINPUT { - parseContext.float16OpaqueCheck($1.loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); - parseContext.requireStage($1.loc, EShLangFragment, "subpass input"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setSubpass(EbtFloat16); - } - | F16SUBPASSINPUTMS { - parseContext.float16OpaqueCheck($1.loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); - parseContext.requireStage($1.loc, EShLangFragment, "subpass input"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setSubpass(EbtFloat16, true); - } - | ISUBPASSINPUT { - parseContext.requireStage($1.loc, EShLangFragment, "subpass input"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setSubpass(EbtInt); - } - | ISUBPASSINPUTMS { - parseContext.requireStage($1.loc, EShLangFragment, "subpass input"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setSubpass(EbtInt, true); - } - | USUBPASSINPUT { - parseContext.requireStage($1.loc, EShLangFragment, "subpass input"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setSubpass(EbtUint); - } - | USUBPASSINPUTMS { - parseContext.requireStage($1.loc, EShLangFragment, "subpass input"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setSubpass(EbtUint, true); - } - | FCOOPMATNV { - parseContext.fcoopmatCheck($1.loc, "fcoopmatNV", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.coopmat = true; - } - | ICOOPMATNV { - parseContext.intcoopmatCheck($1.loc, "icoopmatNV", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt; - $$.coopmat = true; - } - | UCOOPMATNV { - parseContext.intcoopmatCheck($1.loc, "ucoopmatNV", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint; - $$.coopmat = true; + $$.sampler.setPureSampler(true); } | struct_specifier { @@ -3351,31 +1684,9 @@ initializer $$ = $1; } - | LEFT_BRACE initializer_list RIGHT_BRACE { - const char* initFeature = "{ } style initializers"; - parseContext.requireProfile($1.loc, ~EEsProfile, initFeature); - parseContext.profileRequires($1.loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); - $$ = $2; - } - | LEFT_BRACE initializer_list COMMA RIGHT_BRACE { - const char* initFeature = "{ } style initializers"; - parseContext.requireProfile($1.loc, ~EEsProfile, initFeature); - parseContext.profileRequires($1.loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); - $$ = $2; - } - ; -initializer_list - : initializer { - $$ = parseContext.intermediate.growAggregate(0, $1, $1->getLoc()); - } - | initializer_list COMMA initializer { - $$ = parseContext.intermediate.growAggregate($1, $3); - } - ; - declaration_statement : declaration { $$ = $1; } @@ -3397,19 +1708,9 @@ simple_statement | iteration_statement { $$ = $1; } | jump_statement { $$ = $1; } - | demote_statement { $$ = $1; } - ; -demote_statement - : DEMOTE SEMICOLON { - parseContext.requireStage($1.loc, EShLangFragment, "demote"); - parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_demote_to_helper_invocation, "demote"); - $$ = parseContext.intermediate.addBranch(EOpDemote, $1.loc); - } - ; - compound_statement : LEFT_BRACE RIGHT_BRACE { $$ = 0; } @@ -3494,11 +1795,6 @@ selection_statement $$ = $1; } - | attribute selection_statement_nonattributed { - parseContext.handleSelectionAttributes(*$1, $2); - $$ = $2; - } - selection_statement_nonattributed : IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement { @@ -3541,11 +1837,6 @@ switch_statement $$ = $1; } - | attribute switch_statement_nonattributed { - parseContext.handleSwitchAttributes(*$1, $2); - $$ = $2; - } - switch_statement_nonattributed : SWITCH LEFT_PAREN expression RIGHT_PAREN { @@ -3605,11 +1896,6 @@ iteration_statement $$ = $1; } - | attribute iteration_statement_nonattributed { - parseContext.handleLoopAttributes(*$1, $2); - $$ = $2; - } - iteration_statement_nonattributed : WHILE LEFT_PAREN { @@ -3742,12 +2028,6 @@ external_declaration $$ = $1; } - | SEMICOLON { - parseContext.requireProfile($1.loc, ~EEsProfile, "extraneous semicolon"); - parseContext.profileRequires($1.loc, ~EEsProfile, 460, nullptr, "extraneous semicolon"); - $$ = nullptr; - } - ; function_definition @@ -3773,27 +2053,5 @@ function_definition ; -attribute - : LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET { - $$ = $3; - parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_control_flow_attributes, "attribute"); - } - -attribute_list - : single_attribute { - $$ = $1; - } - | attribute_list COMMA single_attribute { - $$ = parseContext.mergeAttributes($1, $3); - } - -single_attribute - : IDENTIFIER { - $$ = parseContext.makeAttributes(*$1.string); - } - | IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN { - $$ = parseContext.makeAttributes(*$1.string, $3); - } - %% diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp index 523e4058..8b9ec345 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -167,370 +167,102 @@ extern int yydebug; USAMPLER3D = 299, USAMPLERCUBE = 300, USAMPLER2DARRAY = 301, - SAMPLERCUBEARRAY = 302, - SAMPLERCUBEARRAYSHADOW = 303, - ISAMPLERCUBEARRAY = 304, - USAMPLERCUBEARRAY = 305, - ATTRIBUTE = 306, - VARYING = 307, - FLOAT16_T = 308, - FLOAT32_T = 309, - DOUBLE = 310, - FLOAT64_T = 311, - INT64_T = 312, - UINT64_T = 313, - INT32_T = 314, - UINT32_T = 315, - INT16_T = 316, - UINT16_T = 317, - INT8_T = 318, - UINT8_T = 319, - I64VEC2 = 320, - I64VEC3 = 321, - I64VEC4 = 322, - U64VEC2 = 323, - U64VEC3 = 324, - U64VEC4 = 325, - I32VEC2 = 326, - I32VEC3 = 327, - I32VEC4 = 328, - U32VEC2 = 329, - U32VEC3 = 330, - U32VEC4 = 331, - I16VEC2 = 332, - I16VEC3 = 333, - I16VEC4 = 334, - U16VEC2 = 335, - U16VEC3 = 336, - U16VEC4 = 337, - I8VEC2 = 338, - I8VEC3 = 339, - I8VEC4 = 340, - U8VEC2 = 341, - U8VEC3 = 342, - U8VEC4 = 343, - DVEC2 = 344, - DVEC3 = 345, - DVEC4 = 346, - DMAT2 = 347, - DMAT3 = 348, - DMAT4 = 349, - F16VEC2 = 350, - F16VEC3 = 351, - F16VEC4 = 352, - F16MAT2 = 353, - F16MAT3 = 354, - F16MAT4 = 355, - F32VEC2 = 356, - F32VEC3 = 357, - F32VEC4 = 358, - F32MAT2 = 359, - F32MAT3 = 360, - F32MAT4 = 361, - F64VEC2 = 362, - F64VEC3 = 363, - F64VEC4 = 364, - F64MAT2 = 365, - F64MAT3 = 366, - F64MAT4 = 367, - DMAT2X2 = 368, - DMAT2X3 = 369, - DMAT2X4 = 370, - DMAT3X2 = 371, - DMAT3X3 = 372, - DMAT3X4 = 373, - DMAT4X2 = 374, - DMAT4X3 = 375, - DMAT4X4 = 376, - F16MAT2X2 = 377, - F16MAT2X3 = 378, - F16MAT2X4 = 379, - F16MAT3X2 = 380, - F16MAT3X3 = 381, - F16MAT3X4 = 382, - F16MAT4X2 = 383, - F16MAT4X3 = 384, - F16MAT4X4 = 385, - F32MAT2X2 = 386, - F32MAT2X3 = 387, - F32MAT2X4 = 388, - F32MAT3X2 = 389, - F32MAT3X3 = 390, - F32MAT3X4 = 391, - F32MAT4X2 = 392, - F32MAT4X3 = 393, - F32MAT4X4 = 394, - F64MAT2X2 = 395, - F64MAT2X3 = 396, - F64MAT2X4 = 397, - F64MAT3X2 = 398, - F64MAT3X3 = 399, - F64MAT3X4 = 400, - F64MAT4X2 = 401, - F64MAT4X3 = 402, - F64MAT4X4 = 403, - ATOMIC_UINT = 404, - ACCSTRUCTNV = 405, - FCOOPMATNV = 406, - ICOOPMATNV = 407, - UCOOPMATNV = 408, - SAMPLER1D = 409, - SAMPLER1DARRAY = 410, - SAMPLER1DARRAYSHADOW = 411, - ISAMPLER1D = 412, - SAMPLER1DSHADOW = 413, - SAMPLER2DRECT = 414, - SAMPLER2DRECTSHADOW = 415, - ISAMPLER2DRECT = 416, - USAMPLER2DRECT = 417, - SAMPLERBUFFER = 418, - ISAMPLERBUFFER = 419, - USAMPLERBUFFER = 420, - SAMPLER2DMS = 421, - ISAMPLER2DMS = 422, - USAMPLER2DMS = 423, - SAMPLER2DMSARRAY = 424, - ISAMPLER2DMSARRAY = 425, - USAMPLER2DMSARRAY = 426, - SAMPLEREXTERNALOES = 427, - SAMPLEREXTERNAL2DY2YEXT = 428, - ISAMPLER1DARRAY = 429, - USAMPLER1D = 430, - USAMPLER1DARRAY = 431, - F16SAMPLER1D = 432, - F16SAMPLER2D = 433, - F16SAMPLER3D = 434, - F16SAMPLER2DRECT = 435, - F16SAMPLERCUBE = 436, - F16SAMPLER1DARRAY = 437, - F16SAMPLER2DARRAY = 438, - F16SAMPLERCUBEARRAY = 439, - F16SAMPLERBUFFER = 440, - F16SAMPLER2DMS = 441, - F16SAMPLER2DMSARRAY = 442, - F16SAMPLER1DSHADOW = 443, - F16SAMPLER2DSHADOW = 444, - F16SAMPLER1DARRAYSHADOW = 445, - F16SAMPLER2DARRAYSHADOW = 446, - F16SAMPLER2DRECTSHADOW = 447, - F16SAMPLERCUBESHADOW = 448, - F16SAMPLERCUBEARRAYSHADOW = 449, - IMAGE1D = 450, - IIMAGE1D = 451, - UIMAGE1D = 452, - IMAGE2D = 453, - IIMAGE2D = 454, - UIMAGE2D = 455, - IMAGE3D = 456, - IIMAGE3D = 457, - UIMAGE3D = 458, - IMAGE2DRECT = 459, - IIMAGE2DRECT = 460, - UIMAGE2DRECT = 461, - IMAGECUBE = 462, - IIMAGECUBE = 463, - UIMAGECUBE = 464, - IMAGEBUFFER = 465, - IIMAGEBUFFER = 466, - UIMAGEBUFFER = 467, - IMAGE1DARRAY = 468, - IIMAGE1DARRAY = 469, - UIMAGE1DARRAY = 470, - IMAGE2DARRAY = 471, - IIMAGE2DARRAY = 472, - UIMAGE2DARRAY = 473, - IMAGECUBEARRAY = 474, - IIMAGECUBEARRAY = 475, - UIMAGECUBEARRAY = 476, - IMAGE2DMS = 477, - IIMAGE2DMS = 478, - UIMAGE2DMS = 479, - IMAGE2DMSARRAY = 480, - IIMAGE2DMSARRAY = 481, - UIMAGE2DMSARRAY = 482, - F16IMAGE1D = 483, - F16IMAGE2D = 484, - F16IMAGE3D = 485, - F16IMAGE2DRECT = 486, - F16IMAGECUBE = 487, - F16IMAGE1DARRAY = 488, - F16IMAGE2DARRAY = 489, - F16IMAGECUBEARRAY = 490, - F16IMAGEBUFFER = 491, - F16IMAGE2DMS = 492, - F16IMAGE2DMSARRAY = 493, - SAMPLER = 494, - SAMPLERSHADOW = 495, - TEXTURE1D = 496, - TEXTURE2D = 497, - TEXTURE3D = 498, - TEXTURECUBE = 499, - TEXTURE1DARRAY = 500, - TEXTURE2DARRAY = 501, - ITEXTURE1D = 502, - ITEXTURE2D = 503, - ITEXTURE3D = 504, - ITEXTURECUBE = 505, - ITEXTURE1DARRAY = 506, - ITEXTURE2DARRAY = 507, - UTEXTURE1D = 508, - UTEXTURE2D = 509, - UTEXTURE3D = 510, - UTEXTURECUBE = 511, - UTEXTURE1DARRAY = 512, - UTEXTURE2DARRAY = 513, - TEXTURE2DRECT = 514, - ITEXTURE2DRECT = 515, - UTEXTURE2DRECT = 516, - TEXTUREBUFFER = 517, - ITEXTUREBUFFER = 518, - UTEXTUREBUFFER = 519, - TEXTURECUBEARRAY = 520, - ITEXTURECUBEARRAY = 521, - UTEXTURECUBEARRAY = 522, - TEXTURE2DMS = 523, - ITEXTURE2DMS = 524, - UTEXTURE2DMS = 525, - TEXTURE2DMSARRAY = 526, - ITEXTURE2DMSARRAY = 527, - UTEXTURE2DMSARRAY = 528, - F16TEXTURE1D = 529, - F16TEXTURE2D = 530, - F16TEXTURE3D = 531, - F16TEXTURE2DRECT = 532, - F16TEXTURECUBE = 533, - F16TEXTURE1DARRAY = 534, - F16TEXTURE2DARRAY = 535, - F16TEXTURECUBEARRAY = 536, - F16TEXTUREBUFFER = 537, - F16TEXTURE2DMS = 538, - F16TEXTURE2DMSARRAY = 539, - SUBPASSINPUT = 540, - SUBPASSINPUTMS = 541, - ISUBPASSINPUT = 542, - ISUBPASSINPUTMS = 543, - USUBPASSINPUT = 544, - USUBPASSINPUTMS = 545, - F16SUBPASSINPUT = 546, - F16SUBPASSINPUTMS = 547, - LEFT_OP = 548, - RIGHT_OP = 549, - INC_OP = 550, - DEC_OP = 551, - LE_OP = 552, - GE_OP = 553, - EQ_OP = 554, - NE_OP = 555, - AND_OP = 556, - OR_OP = 557, - XOR_OP = 558, - MUL_ASSIGN = 559, - DIV_ASSIGN = 560, - ADD_ASSIGN = 561, - MOD_ASSIGN = 562, - LEFT_ASSIGN = 563, - RIGHT_ASSIGN = 564, - AND_ASSIGN = 565, - XOR_ASSIGN = 566, - OR_ASSIGN = 567, - SUB_ASSIGN = 568, - LEFT_PAREN = 569, - RIGHT_PAREN = 570, - LEFT_BRACKET = 571, - RIGHT_BRACKET = 572, - LEFT_BRACE = 573, - RIGHT_BRACE = 574, - DOT = 575, - COMMA = 576, - COLON = 577, - EQUAL = 578, - SEMICOLON = 579, - BANG = 580, - DASH = 581, - TILDE = 582, - PLUS = 583, - STAR = 584, - SLASH = 585, - PERCENT = 586, - LEFT_ANGLE = 587, - RIGHT_ANGLE = 588, - VERTICAL_BAR = 589, - CARET = 590, - AMPERSAND = 591, - QUESTION = 592, - INVARIANT = 593, - HIGH_PRECISION = 594, - MEDIUM_PRECISION = 595, - LOW_PRECISION = 596, - PRECISION = 597, - PACKED = 598, - RESOURCE = 599, - SUPERP = 600, - FLOATCONSTANT = 601, - INTCONSTANT = 602, - UINTCONSTANT = 603, - BOOLCONSTANT = 604, - IDENTIFIER = 605, - TYPE_NAME = 606, - CENTROID = 607, - IN = 608, - OUT = 609, - INOUT = 610, - STRUCT = 611, - VOID = 612, - WHILE = 613, - BREAK = 614, - CONTINUE = 615, - DO = 616, - ELSE = 617, - FOR = 618, - IF = 619, - DISCARD = 620, - RETURN = 621, - SWITCH = 622, - CASE = 623, - DEFAULT = 624, - UNIFORM = 625, - SHARED = 626, - FLAT = 627, - SMOOTH = 628, - LAYOUT = 629, - DOUBLECONSTANT = 630, - INT16CONSTANT = 631, - UINT16CONSTANT = 632, - FLOAT16CONSTANT = 633, - INT32CONSTANT = 634, - UINT32CONSTANT = 635, - INT64CONSTANT = 636, - UINT64CONSTANT = 637, - SUBROUTINE = 638, - DEMOTE = 639, - PAYLOADNV = 640, - PAYLOADINNV = 641, - HITATTRNV = 642, - CALLDATANV = 643, - CALLDATAINNV = 644, - PATCH = 645, - SAMPLE = 646, - BUFFER = 647, - NONUNIFORM = 648, - COHERENT = 649, - VOLATILE = 650, - RESTRICT = 651, - READONLY = 652, - WRITEONLY = 653, - DEVICECOHERENT = 654, - QUEUEFAMILYCOHERENT = 655, - WORKGROUPCOHERENT = 656, - SUBGROUPCOHERENT = 657, - NONPRIVATE = 658, - NOPERSPECTIVE = 659, - EXPLICITINTERPAMD = 660, - PERVERTEXNV = 661, - PERPRIMITIVENV = 662, - PERVIEWNV = 663, - PERTASKNV = 664, - PRECISE = 665 + SAMPLER = 302, + SAMPLERSHADOW = 303, + TEXTURE2D = 304, + TEXTURE3D = 305, + TEXTURECUBE = 306, + TEXTURE2DARRAY = 307, + ITEXTURE2D = 308, + ITEXTURE3D = 309, + ITEXTURECUBE = 310, + ITEXTURE2DARRAY = 311, + UTEXTURE2D = 312, + UTEXTURE3D = 313, + UTEXTURECUBE = 314, + UTEXTURE2DARRAY = 315, + LEFT_OP = 316, + RIGHT_OP = 317, + INC_OP = 318, + DEC_OP = 319, + LE_OP = 320, + GE_OP = 321, + EQ_OP = 322, + NE_OP = 323, + AND_OP = 324, + OR_OP = 325, + XOR_OP = 326, + MUL_ASSIGN = 327, + DIV_ASSIGN = 328, + ADD_ASSIGN = 329, + MOD_ASSIGN = 330, + LEFT_ASSIGN = 331, + RIGHT_ASSIGN = 332, + AND_ASSIGN = 333, + XOR_ASSIGN = 334, + OR_ASSIGN = 335, + SUB_ASSIGN = 336, + LEFT_PAREN = 337, + RIGHT_PAREN = 338, + LEFT_BRACKET = 339, + RIGHT_BRACKET = 340, + LEFT_BRACE = 341, + RIGHT_BRACE = 342, + DOT = 343, + COMMA = 344, + COLON = 345, + EQUAL = 346, + SEMICOLON = 347, + BANG = 348, + DASH = 349, + TILDE = 350, + PLUS = 351, + STAR = 352, + SLASH = 353, + PERCENT = 354, + LEFT_ANGLE = 355, + RIGHT_ANGLE = 356, + VERTICAL_BAR = 357, + CARET = 358, + AMPERSAND = 359, + QUESTION = 360, + INVARIANT = 361, + HIGH_PRECISION = 362, + MEDIUM_PRECISION = 363, + LOW_PRECISION = 364, + PRECISION = 365, + PACKED = 366, + RESOURCE = 367, + SUPERP = 368, + FLOATCONSTANT = 369, + INTCONSTANT = 370, + UINTCONSTANT = 371, + BOOLCONSTANT = 372, + IDENTIFIER = 373, + TYPE_NAME = 374, + CENTROID = 375, + IN = 376, + OUT = 377, + INOUT = 378, + STRUCT = 379, + VOID = 380, + WHILE = 381, + BREAK = 382, + CONTINUE = 383, + DO = 384, + ELSE = 385, + FOR = 386, + IF = 387, + DISCARD = 388, + RETURN = 389, + SWITCH = 390, + CASE = 391, + DEFAULT = 392, + UNIFORM = 393, + SHARED = 394, + FLAT = 395, + SMOOTH = 396, + LAYOUT = 397 }; #endif @@ -575,7 +307,7 @@ union YYSTYPE glslang::TArraySizes* typeParameters; } interm; -#line 579 "MachineIndependent/glslang_tab.cpp" /* yacc.c:355 */ +#line 311 "MachineIndependent/glslang_tab.cpp" /* yacc.c:355 */ }; typedef union YYSTYPE YYSTYPE; @@ -606,7 +338,7 @@ int yyparse (glslang::TParseContext* pParseContext); extern int yylex(YYSTYPE*, TParseContext&); -#line 610 "MachineIndependent/glslang_tab.cpp" /* yacc.c:358 */ +#line 342 "MachineIndependent/glslang_tab.cpp" /* yacc.c:358 */ #ifdef short # undef short @@ -846,30 +578,30 @@ union yyalloc #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 386 +#define YYFINAL 122 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 9369 +#define YYLAST 3110 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 411 +#define YYNTOKENS 143 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 111 +#define YYNNTS 103 /* YYNRULES -- Number of rules. */ -#define YYNRULES 582 +#define YYNRULES 293 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 727 +#define YYNSTATES 422 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 665 +#define YYMAXUTOK 397 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM as returned by yylex, without out-of-bounds checking. */ -static const yytype_uint16 yytranslate[] = +static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -910,99 +642,43 @@ static const yytype_uint16 yytranslate[] = 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 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, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410 + 135, 136, 137, 138, 139, 140, 141, 142 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 352, 352, 358, 361, 366, 369, 372, 376, 380, - 384, 388, 392, 396, 400, 404, 408, 416, 419, 422, - 425, 428, 433, 441, 448, 455, 461, 465, 472, 475, - 481, 488, 498, 506, 511, 539, 548, 554, 558, 562, - 582, 583, 584, 585, 591, 592, 597, 602, 611, 612, - 617, 625, 626, 632, 641, 642, 647, 652, 657, 665, - 666, 675, 687, 688, 697, 698, 707, 708, 717, 718, - 726, 727, 735, 736, 744, 745, 745, 763, 764, 780, - 784, 788, 792, 797, 801, 805, 809, 813, 817, 821, - 828, 831, 842, 849, 854, 859, 866, 870, 874, 878, - 883, 888, 897, 897, 908, 912, 919, 926, 929, 936, - 944, 964, 987, 1002, 1027, 1038, 1048, 1058, 1068, 1077, - 1080, 1084, 1088, 1093, 1101, 1108, 1113, 1118, 1123, 1132, - 1142, 1169, 1178, 1185, 1193, 1200, 1207, 1215, 1225, 1232, - 1243, 1249, 1252, 1259, 1263, 1267, 1276, 1286, 1289, 1300, - 1303, 1306, 1310, 1314, 1319, 1323, 1330, 1334, 1339, 1345, - 1351, 1358, 1364, 1372, 1377, 1389, 1403, 1409, 1414, 1422, - 1430, 1438, 1446, 1453, 1457, 1462, 1467, 1472, 1477, 1482, - 1486, 1490, 1494, 1498, 1504, 1515, 1522, 1525, 1534, 1539, - 1549, 1554, 1562, 1566, 1576, 1579, 1585, 1591, 1598, 1608, - 1612, 1616, 1620, 1625, 1629, 1634, 1639, 1644, 1649, 1654, - 1659, 1664, 1669, 1674, 1680, 1686, 1692, 1697, 1702, 1707, - 1712, 1717, 1722, 1727, 1732, 1737, 1742, 1747, 1753, 1758, - 1763, 1768, 1773, 1778, 1783, 1788, 1793, 1798, 1803, 1808, - 1813, 1819, 1825, 1831, 1837, 1843, 1849, 1855, 1861, 1867, - 1873, 1879, 1885, 1891, 1897, 1903, 1909, 1915, 1921, 1927, - 1933, 1939, 1945, 1951, 1957, 1963, 1969, 1975, 1981, 1987, - 1993, 1999, 2005, 2011, 2017, 2023, 2029, 2035, 2041, 2047, - 2053, 2059, 2065, 2071, 2077, 2083, 2089, 2095, 2101, 2107, - 2113, 2119, 2125, 2131, 2137, 2143, 2149, 2155, 2161, 2167, - 2173, 2179, 2185, 2191, 2197, 2203, 2209, 2215, 2221, 2227, - 2233, 2239, 2245, 2251, 2257, 2263, 2269, 2275, 2281, 2287, - 2293, 2299, 2305, 2311, 2317, 2321, 2326, 2332, 2337, 2342, - 2347, 2352, 2358, 2363, 2368, 2374, 2379, 2384, 2389, 2395, - 2401, 2407, 2413, 2419, 2425, 2431, 2437, 2443, 2449, 2455, - 2461, 2467, 2473, 2479, 2484, 2489, 2495, 2501, 2506, 2512, - 2518, 2523, 2528, 2534, 2540, 2545, 2551, 2556, 2561, 2567, - 2573, 2578, 2583, 2588, 2594, 2599, 2604, 2609, 2615, 2620, - 2625, 2630, 2636, 2641, 2646, 2651, 2656, 2661, 2667, 2672, - 2678, 2683, 2689, 2694, 2700, 2705, 2711, 2716, 2722, 2727, - 2733, 2738, 2743, 2748, 2753, 2758, 2763, 2768, 2773, 2778, - 2783, 2788, 2793, 2798, 2803, 2808, 2814, 2819, 2824, 2829, - 2835, 2840, 2845, 2850, 2856, 2861, 2866, 2871, 2877, 2882, - 2887, 2892, 2898, 2903, 2908, 2913, 2919, 2924, 2929, 2934, - 2940, 2945, 2950, 2955, 2961, 2966, 2971, 2976, 2982, 2987, - 2992, 2997, 3003, 3008, 3013, 3018, 3024, 3029, 3034, 3039, - 3045, 3050, 3055, 3060, 3066, 3071, 3076, 3081, 3087, 3092, - 3097, 3102, 3108, 3113, 3118, 3124, 3130, 3136, 3142, 3149, - 3156, 3162, 3168, 3174, 3180, 3186, 3192, 3199, 3204, 3220, - 3225, 3230, 3238, 3238, 3249, 3249, 3259, 3262, 3275, 3297, - 3324, 3328, 3334, 3339, 3350, 3354, 3360, 3371, 3374, 3381, - 3385, 3386, 3392, 3393, 3394, 3395, 3396, 3397, 3398, 3400, - 3406, 3415, 3416, 3420, 3416, 3432, 3433, 3437, 3437, 3444, - 3444, 3458, 3461, 3469, 3477, 3488, 3489, 3493, 3497, 3504, - 3511, 3515, 3523, 3527, 3540, 3544, 3551, 3551, 3571, 3574, - 3580, 3592, 3604, 3608, 3615, 3615, 3630, 3630, 3646, 3646, - 3667, 3670, 3676, 3679, 3685, 3689, 3696, 3701, 3706, 3713, - 3716, 3725, 3729, 3738, 3741, 3745, 3754, 3754, 3777, 3783, - 3786, 3791, 3794 + 0, 253, 253, 259, 262, 267, 270, 273, 277, 284, + 287, 290, 293, 296, 301, 309, 316, 323, 329, 333, + 340, 343, 349, 356, 366, 374, 379, 410, 416, 420, + 424, 444, 445, 446, 447, 453, 454, 459, 464, 473, + 474, 479, 487, 488, 494, 503, 504, 509, 514, 519, + 527, 528, 537, 549, 550, 559, 560, 569, 570, 579, + 580, 588, 589, 597, 598, 606, 607, 607, 625, 626, + 642, 646, 650, 654, 659, 663, 667, 671, 675, 679, + 683, 690, 693, 704, 711, 716, 721, 728, 732, 736, + 740, 745, 750, 759, 759, 770, 774, 781, 788, 791, + 798, 806, 826, 849, 864, 889, 900, 910, 920, 930, + 939, 942, 946, 950, 955, 963, 968, 973, 978, 983, + 992, 1002, 1029, 1038, 1045, 1056, 1062, 1065, 1072, 1076, + 1080, 1090, 1093, 1104, 1107, 1110, 1114, 1118, 1126, 1130, + 1135, 1141, 1147, 1154, 1165, 1170, 1180, 1185, 1193, 1197, + 1207, 1210, 1216, 1222, 1229, 1239, 1243, 1247, 1251, 1256, + 1260, 1265, 1270, 1275, 1280, 1285, 1290, 1295, 1300, 1305, + 1311, 1317, 1323, 1328, 1333, 1338, 1343, 1348, 1353, 1358, + 1363, 1368, 1373, 1378, 1384, 1389, 1394, 1399, 1404, 1409, + 1414, 1420, 1425, 1430, 1435, 1440, 1445, 1450, 1456, 1461, + 1466, 1471, 1476, 1481, 1486, 1491, 1496, 1501, 1506, 1511, + 1516, 1521, 1526, 1532, 1537, 1553, 1558, 1563, 1571, 1571, + 1582, 1582, 1592, 1595, 1608, 1630, 1657, 1661, 1667, 1672, + 1683, 1692, 1696, 1697, 1703, 1704, 1705, 1706, 1707, 1708, + 1709, 1716, 1717, 1721, 1717, 1733, 1734, 1738, 1738, 1745, + 1745, 1759, 1762, 1770, 1778, 1789, 1790, 1794, 1800, 1807, + 1811, 1819, 1823, 1836, 1842, 1842, 1862, 1865, 1871, 1883, + 1895, 1901, 1901, 1916, 1916, 1932, 1932, 1953, 1956, 1962, + 1965, 1971, 1975, 1982, 1987, 1992, 1999, 2002, 2011, 2015, + 2024, 2027, 2034, 2034 }; #endif @@ -1018,88 +694,27 @@ static const char *const yytname[] = "MAT4X4", "SAMPLER2D", "SAMPLER3D", "SAMPLERCUBE", "SAMPLER2DSHADOW", "SAMPLERCUBESHADOW", "SAMPLER2DARRAY", "SAMPLER2DARRAYSHADOW", "ISAMPLER2D", "ISAMPLER3D", "ISAMPLERCUBE", "ISAMPLER2DARRAY", - "USAMPLER2D", "USAMPLER3D", "USAMPLERCUBE", "USAMPLER2DARRAY", - "SAMPLERCUBEARRAY", "SAMPLERCUBEARRAYSHADOW", "ISAMPLERCUBEARRAY", - "USAMPLERCUBEARRAY", "ATTRIBUTE", "VARYING", "FLOAT16_T", "FLOAT32_T", - "DOUBLE", "FLOAT64_T", "INT64_T", "UINT64_T", "INT32_T", "UINT32_T", - "INT16_T", "UINT16_T", "INT8_T", "UINT8_T", "I64VEC2", "I64VEC3", - "I64VEC4", "U64VEC2", "U64VEC3", "U64VEC4", "I32VEC2", "I32VEC3", - "I32VEC4", "U32VEC2", "U32VEC3", "U32VEC4", "I16VEC2", "I16VEC3", - "I16VEC4", "U16VEC2", "U16VEC3", "U16VEC4", "I8VEC2", "I8VEC3", "I8VEC4", - "U8VEC2", "U8VEC3", "U8VEC4", "DVEC2", "DVEC3", "DVEC4", "DMAT2", - "DMAT3", "DMAT4", "F16VEC2", "F16VEC3", "F16VEC4", "F16MAT2", "F16MAT3", - "F16MAT4", "F32VEC2", "F32VEC3", "F32VEC4", "F32MAT2", "F32MAT3", - "F32MAT4", "F64VEC2", "F64VEC3", "F64VEC4", "F64MAT2", "F64MAT3", - "F64MAT4", "DMAT2X2", "DMAT2X3", "DMAT2X4", "DMAT3X2", "DMAT3X3", - "DMAT3X4", "DMAT4X2", "DMAT4X3", "DMAT4X4", "F16MAT2X2", "F16MAT2X3", - "F16MAT2X4", "F16MAT3X2", "F16MAT3X3", "F16MAT3X4", "F16MAT4X2", - "F16MAT4X3", "F16MAT4X4", "F32MAT2X2", "F32MAT2X3", "F32MAT2X4", - "F32MAT3X2", "F32MAT3X3", "F32MAT3X4", "F32MAT4X2", "F32MAT4X3", - "F32MAT4X4", "F64MAT2X2", "F64MAT2X3", "F64MAT2X4", "F64MAT3X2", - "F64MAT3X3", "F64MAT3X4", "F64MAT4X2", "F64MAT4X3", "F64MAT4X4", - "ATOMIC_UINT", "ACCSTRUCTNV", "FCOOPMATNV", "ICOOPMATNV", "UCOOPMATNV", - "SAMPLER1D", "SAMPLER1DARRAY", "SAMPLER1DARRAYSHADOW", "ISAMPLER1D", - "SAMPLER1DSHADOW", "SAMPLER2DRECT", "SAMPLER2DRECTSHADOW", - "ISAMPLER2DRECT", "USAMPLER2DRECT", "SAMPLERBUFFER", "ISAMPLERBUFFER", - "USAMPLERBUFFER", "SAMPLER2DMS", "ISAMPLER2DMS", "USAMPLER2DMS", - "SAMPLER2DMSARRAY", "ISAMPLER2DMSARRAY", "USAMPLER2DMSARRAY", - "SAMPLEREXTERNALOES", "SAMPLEREXTERNAL2DY2YEXT", "ISAMPLER1DARRAY", - "USAMPLER1D", "USAMPLER1DARRAY", "F16SAMPLER1D", "F16SAMPLER2D", - "F16SAMPLER3D", "F16SAMPLER2DRECT", "F16SAMPLERCUBE", - "F16SAMPLER1DARRAY", "F16SAMPLER2DARRAY", "F16SAMPLERCUBEARRAY", - "F16SAMPLERBUFFER", "F16SAMPLER2DMS", "F16SAMPLER2DMSARRAY", - "F16SAMPLER1DSHADOW", "F16SAMPLER2DSHADOW", "F16SAMPLER1DARRAYSHADOW", - "F16SAMPLER2DARRAYSHADOW", "F16SAMPLER2DRECTSHADOW", - "F16SAMPLERCUBESHADOW", "F16SAMPLERCUBEARRAYSHADOW", "IMAGE1D", - "IIMAGE1D", "UIMAGE1D", "IMAGE2D", "IIMAGE2D", "UIMAGE2D", "IMAGE3D", - "IIMAGE3D", "UIMAGE3D", "IMAGE2DRECT", "IIMAGE2DRECT", "UIMAGE2DRECT", - "IMAGECUBE", "IIMAGECUBE", "UIMAGECUBE", "IMAGEBUFFER", "IIMAGEBUFFER", - "UIMAGEBUFFER", "IMAGE1DARRAY", "IIMAGE1DARRAY", "UIMAGE1DARRAY", - "IMAGE2DARRAY", "IIMAGE2DARRAY", "UIMAGE2DARRAY", "IMAGECUBEARRAY", - "IIMAGECUBEARRAY", "UIMAGECUBEARRAY", "IMAGE2DMS", "IIMAGE2DMS", - "UIMAGE2DMS", "IMAGE2DMSARRAY", "IIMAGE2DMSARRAY", "UIMAGE2DMSARRAY", - "F16IMAGE1D", "F16IMAGE2D", "F16IMAGE3D", "F16IMAGE2DRECT", - "F16IMAGECUBE", "F16IMAGE1DARRAY", "F16IMAGE2DARRAY", - "F16IMAGECUBEARRAY", "F16IMAGEBUFFER", "F16IMAGE2DMS", - "F16IMAGE2DMSARRAY", "SAMPLER", "SAMPLERSHADOW", "TEXTURE1D", - "TEXTURE2D", "TEXTURE3D", "TEXTURECUBE", "TEXTURE1DARRAY", - "TEXTURE2DARRAY", "ITEXTURE1D", "ITEXTURE2D", "ITEXTURE3D", - "ITEXTURECUBE", "ITEXTURE1DARRAY", "ITEXTURE2DARRAY", "UTEXTURE1D", - "UTEXTURE2D", "UTEXTURE3D", "UTEXTURECUBE", "UTEXTURE1DARRAY", - "UTEXTURE2DARRAY", "TEXTURE2DRECT", "ITEXTURE2DRECT", "UTEXTURE2DRECT", - "TEXTUREBUFFER", "ITEXTUREBUFFER", "UTEXTUREBUFFER", "TEXTURECUBEARRAY", - "ITEXTURECUBEARRAY", "UTEXTURECUBEARRAY", "TEXTURE2DMS", "ITEXTURE2DMS", - "UTEXTURE2DMS", "TEXTURE2DMSARRAY", "ITEXTURE2DMSARRAY", - "UTEXTURE2DMSARRAY", "F16TEXTURE1D", "F16TEXTURE2D", "F16TEXTURE3D", - "F16TEXTURE2DRECT", "F16TEXTURECUBE", "F16TEXTURE1DARRAY", - "F16TEXTURE2DARRAY", "F16TEXTURECUBEARRAY", "F16TEXTUREBUFFER", - "F16TEXTURE2DMS", "F16TEXTURE2DMSARRAY", "SUBPASSINPUT", - "SUBPASSINPUTMS", "ISUBPASSINPUT", "ISUBPASSINPUTMS", "USUBPASSINPUT", - "USUBPASSINPUTMS", "F16SUBPASSINPUT", "F16SUBPASSINPUTMS", "LEFT_OP", - "RIGHT_OP", "INC_OP", "DEC_OP", "LE_OP", "GE_OP", "EQ_OP", "NE_OP", - "AND_OP", "OR_OP", "XOR_OP", "MUL_ASSIGN", "DIV_ASSIGN", "ADD_ASSIGN", - "MOD_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN", - "OR_ASSIGN", "SUB_ASSIGN", "LEFT_PAREN", "RIGHT_PAREN", "LEFT_BRACKET", - "RIGHT_BRACKET", "LEFT_BRACE", "RIGHT_BRACE", "DOT", "COMMA", "COLON", - "EQUAL", "SEMICOLON", "BANG", "DASH", "TILDE", "PLUS", "STAR", "SLASH", - "PERCENT", "LEFT_ANGLE", "RIGHT_ANGLE", "VERTICAL_BAR", "CARET", - "AMPERSAND", "QUESTION", "INVARIANT", "HIGH_PRECISION", - "MEDIUM_PRECISION", "LOW_PRECISION", "PRECISION", "PACKED", "RESOURCE", - "SUPERP", "FLOATCONSTANT", "INTCONSTANT", "UINTCONSTANT", "BOOLCONSTANT", - "IDENTIFIER", "TYPE_NAME", "CENTROID", "IN", "OUT", "INOUT", "STRUCT", - "VOID", "WHILE", "BREAK", "CONTINUE", "DO", "ELSE", "FOR", "IF", - "DISCARD", "RETURN", "SWITCH", "CASE", "DEFAULT", "UNIFORM", "SHARED", - "FLAT", "SMOOTH", "LAYOUT", "DOUBLECONSTANT", "INT16CONSTANT", - "UINT16CONSTANT", "FLOAT16CONSTANT", "INT32CONSTANT", "UINT32CONSTANT", - "INT64CONSTANT", "UINT64CONSTANT", "SUBROUTINE", "DEMOTE", "PAYLOADNV", - "PAYLOADINNV", "HITATTRNV", "CALLDATANV", "CALLDATAINNV", "PATCH", - "SAMPLE", "BUFFER", "NONUNIFORM", "COHERENT", "VOLATILE", "RESTRICT", - "READONLY", "WRITEONLY", "DEVICECOHERENT", "QUEUEFAMILYCOHERENT", - "WORKGROUPCOHERENT", "SUBGROUPCOHERENT", "NONPRIVATE", "NOPERSPECTIVE", - "EXPLICITINTERPAMD", "PERVERTEXNV", "PERPRIMITIVENV", "PERVIEWNV", - "PERTASKNV", "PRECISE", "$accept", "variable_identifier", - "primary_expression", "postfix_expression", "integer_expression", - "function_call", "function_call_or_method", "function_call_generic", + "USAMPLER2D", "USAMPLER3D", "USAMPLERCUBE", "USAMPLER2DARRAY", "SAMPLER", + "SAMPLERSHADOW", "TEXTURE2D", "TEXTURE3D", "TEXTURECUBE", + "TEXTURE2DARRAY", "ITEXTURE2D", "ITEXTURE3D", "ITEXTURECUBE", + "ITEXTURE2DARRAY", "UTEXTURE2D", "UTEXTURE3D", "UTEXTURECUBE", + "UTEXTURE2DARRAY", "LEFT_OP", "RIGHT_OP", "INC_OP", "DEC_OP", "LE_OP", + "GE_OP", "EQ_OP", "NE_OP", "AND_OP", "OR_OP", "XOR_OP", "MUL_ASSIGN", + "DIV_ASSIGN", "ADD_ASSIGN", "MOD_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN", + "AND_ASSIGN", "XOR_ASSIGN", "OR_ASSIGN", "SUB_ASSIGN", "LEFT_PAREN", + "RIGHT_PAREN", "LEFT_BRACKET", "RIGHT_BRACKET", "LEFT_BRACE", + "RIGHT_BRACE", "DOT", "COMMA", "COLON", "EQUAL", "SEMICOLON", "BANG", + "DASH", "TILDE", "PLUS", "STAR", "SLASH", "PERCENT", "LEFT_ANGLE", + "RIGHT_ANGLE", "VERTICAL_BAR", "CARET", "AMPERSAND", "QUESTION", + "INVARIANT", "HIGH_PRECISION", "MEDIUM_PRECISION", "LOW_PRECISION", + "PRECISION", "PACKED", "RESOURCE", "SUPERP", "FLOATCONSTANT", + "INTCONSTANT", "UINTCONSTANT", "BOOLCONSTANT", "IDENTIFIER", "TYPE_NAME", + "CENTROID", "IN", "OUT", "INOUT", "STRUCT", "VOID", "WHILE", "BREAK", + "CONTINUE", "DO", "ELSE", "FOR", "IF", "DISCARD", "RETURN", "SWITCH", + "CASE", "DEFAULT", "UNIFORM", "SHARED", "FLAT", "SMOOTH", "LAYOUT", + "$accept", "variable_identifier", "primary_expression", + "postfix_expression", "integer_expression", "function_call", + "function_call_or_method", "function_call_generic", "function_call_header_no_parameters", "function_call_header_with_parameters", "function_call_header", "function_identifier", "unary_expression", "unary_operator", @@ -1116,26 +731,23 @@ static const char *const yytname[] = "parameter_type_specifier", "init_declarator_list", "single_declaration", "fully_specified_type", "invariant_qualifier", "interpolation_qualifier", "layout_qualifier", "layout_qualifier_id_list", "layout_qualifier_id", - "precise_qualifier", "type_qualifier", "single_type_qualifier", - "storage_qualifier", "non_uniform_qualifier", "type_name_list", + "type_qualifier", "single_type_qualifier", "storage_qualifier", "type_specifier", "array_specifier", "type_parameter_specifier_opt", "type_parameter_specifier", "type_parameter_specifier_list", "type_specifier_nonarray", "precision_qualifier", "struct_specifier", "$@3", "$@4", "struct_declaration_list", "struct_declaration", "struct_declarator_list", "struct_declarator", "initializer", - "initializer_list", "declaration_statement", "statement", - "simple_statement", "demote_statement", "compound_statement", "$@5", - "$@6", "statement_no_new_scope", "statement_scoped", "$@7", "$@8", - "compound_statement_no_new_scope", "statement_list", - "expression_statement", "selection_statement", + "declaration_statement", "statement", "simple_statement", + "compound_statement", "$@5", "$@6", "statement_no_new_scope", + "statement_scoped", "$@7", "$@8", "compound_statement_no_new_scope", + "statement_list", "expression_statement", "selection_statement", "selection_statement_nonattributed", "selection_rest_statement", "condition", "switch_statement", "switch_statement_nonattributed", "$@9", "switch_statement_list", "case_label", "iteration_statement", "iteration_statement_nonattributed", "$@10", "$@11", "$@12", "for_init_statement", "conditionopt", "for_rest_statement", "jump_statement", "translation_unit", "external_declaration", - "function_definition", "$@13", "attribute", "attribute_list", - "single_attribute", YY_NULLPTR + "function_definition", "$@13", YY_NULLPTR }; #endif @@ -1158,43 +770,16 @@ static const yytype_uint16 yytoknum[] = 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, - 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, - 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, - 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, - 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, - 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, - 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, - 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, - 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, - 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, - 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, - 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, - 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, - 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, - 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, - 665 + 395, 396, 397 }; # endif -#define YYPACT_NINF -367 +#define YYPACT_NINF -357 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-367))) + (!!((Yystate) == (-357))) -#define YYTABLE_NINF -528 +#define YYTABLE_NINF -248 #define yytable_value_is_error(Yytable_value) \ 0 @@ -1203,79 +788,49 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - 3994, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -13, -367, -367, -367, - -367, -367, 13, -367, -367, -367, -367, -367, 28, 40, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -2, -1, 88, - 98, 6034, 116, -367, 74, -367, -367, -367, -367, 4402, - -367, -367, -367, -367, 104, -367, -367, 730, -367, -367, - 11, -367, 136, -25, 111, -367, 8, -367, 147, -367, - 6034, -367, -367, -367, 6034, 139, 140, -367, 61, -367, - 78, -367, -367, 8391, 155, -367, -367, -367, 149, 6034, - -367, 152, -367, -309, -367, -367, 80, 6831, -367, 27, - 1138, -367, -367, -367, -367, 155, 53, -367, 7221, 69, - -367, 141, -367, 117, 8391, 8391, 8391, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, -367, 77, -367, -367, -367, - 164, 89, 8781, 172, -367, 8391, -367, -367, -320, 176, - -367, 6034, 143, 4810, -367, 6034, 8391, -367, -25, -367, - 145, -367, -367, 138, 144, -231, 23, 65, 158, 153, - 162, 196, 197, 16, 182, 7611, -367, 185, 183, -367, - -367, 189, 180, 181, -367, 195, 198, 186, 8001, 200, - 8391, 199, 187, 122, -367, -367, 123, -367, -1, 203, - 204, -367, -367, -367, -367, -367, 1546, -367, -367, -367, - -367, -367, -367, -367, -367, -367, -353, 176, 7221, 71, - 7221, -367, -367, 7221, 6034, -367, 169, -367, -367, -367, - 91, -367, -367, 8391, 170, -367, -367, 8391, 207, -367, - -367, -367, 8391, -367, 143, 155, 125, -367, -367, -367, - 5218, -367, -367, -367, -367, 8391, 8391, 8391, 8391, 8391, - 8391, 8391, 8391, 8391, 8391, 8391, 8391, 8391, 8391, 8391, - 8391, 8391, 8391, 8391, -367, -367, -367, 206, 177, -367, - 1954, -367, -367, -367, 1954, -367, 8391, -367, -367, 135, - 8391, 60, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, -367, -367, -367, 8391, 8391, -367, -367, -367, - -367, -367, -367, -367, 7221, -367, 129, -367, 5626, -367, - -367, 209, 208, -367, -367, -367, 142, 176, 143, -367, - -367, -367, -367, -367, 138, 138, 144, 144, -231, -231, - -231, -231, 23, 23, 65, 158, 153, 162, 196, 197, - 8391, -367, 214, -314, -367, 1954, 3586, 173, 3178, 93, - -367, 96, -367, -367, -367, -367, -367, 6441, -367, -367, - -367, -367, 121, 8391, 213, 177, 215, 208, 188, 6034, - 217, 221, -367, -367, 3586, 218, -367, -367, -367, 8391, - 222, -367, -367, -367, 216, 2362, 8391, -367, 219, 226, - 190, 224, 2770, -367, 227, -367, -367, 7221, -367, -367, - -367, 100, 8391, 2362, 218, -367, -367, 1954, -367, 220, - 208, -367, -367, 1954, 228, -367, -367 + 1676, -357, -357, -357, -357, -357, -357, -357, -357, -357, + -357, -357, -357, -357, -357, -357, -357, -357, -357, -357, + -357, -357, -357, -357, -357, -357, -357, -357, -357, -357, + -357, -357, -357, -357, -357, -357, -357, -357, -357, -357, + -357, -357, -357, -357, -357, -357, -357, -357, -357, -357, + -357, -357, -357, -357, -357, -357, -357, -357, -357, -357, + -357, -357, -357, 42, -357, -357, -357, -357, -357, -70, + -357, -357, -357, -357, -57, -357, -69, -48, -21, -15, + 2236, -6, -357, -37, -357, -357, -357, 1536, -357, -357, + -357, -40, -357, -357, 416, -357, -357, 2985, -357, 3, + -96, -357, -29, -357, 14, -357, 2236, -357, -357, -357, + 2236, -14, 5, -357, -53, -357, -52, -357, -357, 2741, + 9, -357, -357, -357, 37, 2236, -357, 66, -357, -12, + -357, 2375, -357, -28, 556, -357, -357, -357, -357, 9, + -34, -357, 2741, -25, -357, 41, -357, 28, 2741, 2741, + 2741, -357, -357, -357, -357, -357, -357, -357, -357, -357, + -357, -357, -43, -357, -357, -357, 50, -10, 2863, 72, + -357, 2741, -357, -65, 77, -357, 2236, 55, 1816, -357, + 2236, 2741, -357, -96, -357, -357, 38, 36, 8, -47, + 40, 70, 76, 73, 114, 113, -58, 100, 2497, -357, + 99, -357, -357, 108, 101, 102, -357, 109, 110, 104, + 2619, 115, 2741, 111, 67, -357, -357, 29, -357, -48, + 116, -357, -357, -357, -357, 696, -357, -357, -357, -357, + -357, -357, -357, -357, -357, 77, 2741, -23, -357, -357, + 2741, 2236, -357, 81, -357, -357, -357, -5, -357, -357, + 2741, 82, -357, -357, 2741, 119, -357, -357, -357, 2741, + -357, 55, 9, 30, -357, -357, -357, 1956, -357, -357, + -357, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, + 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, + -357, -357, -357, 118, -357, 836, -357, -357, -357, 836, + -357, 2741, -357, -357, 35, 2741, 63, -357, -357, -357, + -357, -357, -357, -357, -357, -357, -357, -357, -357, 2741, + 2741, -357, -357, -357, -357, 2741, -357, 2096, -357, -357, + 120, 121, -357, -357, -357, 39, 77, 55, -357, -357, + -357, -357, -357, 38, 38, 36, 36, 8, 8, 8, + 8, -47, -47, 40, 70, 76, 73, 114, 113, 2741, + -357, 836, 1396, 78, 1256, -1, -357, 2, -357, -357, + -357, -357, -357, -357, -357, -357, 75, 122, 121, 90, + 2236, 128, 130, -357, -357, 1396, 127, -357, 2741, -357, + 124, 976, 2741, -357, 126, 133, 89, 134, 1116, -357, + 135, -357, 2741, -357, -357, -357, 7, 2741, 976, 127, + -357, -357, 836, -357, 131, 121, -357, -357, 836, 137, + -357, -357 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1283,113 +838,81 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 0, 156, 203, 201, 202, 200, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 204, 205, 206, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 327, 328, 329, 330, 331, 335, 336, 353, 354, 355, - 357, 360, 361, 362, 364, 337, 338, 358, 365, 164, - 165, 229, 230, 228, 231, 238, 239, 236, 237, 234, - 235, 232, 233, 261, 262, 263, 273, 274, 275, 258, - 259, 260, 270, 271, 272, 255, 256, 257, 267, 268, - 269, 252, 253, 254, 264, 265, 266, 240, 241, 242, - 276, 277, 278, 243, 244, 245, 288, 289, 290, 246, - 247, 248, 300, 301, 302, 249, 250, 251, 312, 313, - 314, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 325, 324, 484, - 485, 486, 326, 333, 334, 352, 332, 366, 367, 370, - 371, 372, 374, 375, 376, 378, 379, 380, 382, 383, - 474, 475, 356, 359, 363, 339, 340, 341, 368, 342, - 346, 347, 350, 373, 377, 381, 343, 344, 348, 349, - 369, 345, 351, 430, 432, 433, 434, 436, 437, 438, - 440, 441, 442, 444, 445, 446, 448, 449, 450, 452, - 453, 454, 456, 457, 458, 460, 461, 462, 464, 465, - 466, 468, 469, 470, 472, 473, 431, 435, 439, 443, - 447, 455, 459, 463, 451, 467, 471, 384, 385, 386, - 388, 390, 392, 394, 396, 400, 401, 402, 403, 404, - 405, 407, 408, 409, 410, 411, 412, 414, 416, 417, - 418, 420, 421, 398, 406, 413, 422, 424, 425, 426, - 428, 429, 387, 389, 391, 415, 393, 395, 397, 399, - 419, 423, 427, 476, 477, 480, 481, 482, 483, 478, - 479, 575, 131, 489, 490, 491, 0, 488, 160, 158, - 159, 157, 0, 199, 161, 162, 133, 132, 0, 183, - 169, 170, 168, 171, 172, 166, 167, 163, 185, 173, - 179, 180, 181, 182, 174, 175, 176, 177, 178, 134, - 135, 136, 137, 138, 139, 146, 574, 0, 576, 0, - 108, 107, 0, 119, 124, 153, 152, 150, 154, 0, - 147, 149, 155, 129, 195, 151, 487, 0, 571, 573, - 0, 494, 0, 0, 0, 96, 0, 93, 0, 106, - 0, 115, 109, 117, 0, 118, 0, 94, 125, 99, - 0, 148, 130, 0, 188, 194, 1, 572, 0, 0, - 492, 143, 145, 0, 141, 186, 0, 0, 97, 0, - 0, 577, 110, 114, 116, 112, 120, 111, 0, 126, - 102, 0, 100, 0, 0, 0, 0, 42, 41, 43, - 40, 5, 6, 7, 8, 2, 15, 13, 14, 16, - 9, 10, 11, 12, 3, 17, 36, 19, 24, 25, - 0, 0, 29, 0, 197, 0, 35, 33, 0, 189, - 95, 0, 0, 0, 496, 0, 0, 140, 0, 184, - 0, 190, 44, 48, 51, 54, 59, 62, 64, 66, - 68, 70, 72, 74, 0, 0, 98, 0, 522, 531, - 535, 0, 0, 0, 556, 0, 0, 0, 0, 0, - 0, 0, 0, 44, 77, 90, 0, 509, 0, 155, - 129, 512, 533, 511, 519, 510, 0, 513, 514, 537, - 515, 544, 516, 517, 552, 518, 0, 113, 0, 121, - 0, 504, 128, 0, 0, 104, 0, 101, 37, 38, - 0, 21, 22, 0, 0, 27, 26, 0, 199, 30, - 32, 39, 0, 196, 0, 502, 0, 500, 495, 497, - 0, 92, 144, 142, 187, 0, 0, 0, 0, 0, + 0, 138, 159, 157, 158, 156, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 160, 161, 162, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 211, 212, 199, 200, 202, + 201, 203, 204, 205, 206, 207, 208, 209, 210, 122, + 215, 216, 217, 0, 214, 142, 140, 141, 139, 0, + 155, 143, 124, 123, 0, 291, 0, 292, 0, 99, + 98, 0, 110, 115, 137, 136, 134, 0, 131, 133, + 120, 151, 135, 213, 0, 288, 290, 0, 220, 0, + 0, 87, 0, 84, 0, 97, 0, 106, 100, 108, + 0, 109, 0, 85, 116, 90, 0, 132, 121, 0, + 144, 150, 1, 289, 0, 0, 218, 128, 130, 0, + 126, 0, 88, 0, 0, 293, 101, 105, 107, 103, + 111, 102, 0, 117, 93, 0, 91, 0, 0, 0, + 0, 33, 32, 34, 31, 5, 6, 7, 8, 2, + 3, 9, 27, 11, 16, 17, 0, 0, 21, 0, + 153, 0, 25, 0, 145, 86, 0, 0, 0, 222, + 0, 0, 125, 0, 146, 35, 39, 42, 45, 50, + 53, 55, 57, 59, 61, 63, 65, 0, 0, 89, + 242, 251, 255, 0, 0, 0, 273, 0, 0, 0, + 0, 0, 0, 0, 35, 68, 81, 0, 231, 0, + 120, 234, 253, 233, 232, 0, 235, 236, 257, 237, + 263, 238, 239, 270, 240, 104, 0, 112, 230, 119, + 0, 0, 95, 0, 92, 28, 29, 0, 13, 14, + 0, 0, 19, 18, 0, 155, 22, 24, 30, 0, + 152, 0, 228, 0, 226, 221, 223, 0, 83, 129, + 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 75, 191, 192, 0, 0, 521, - 0, 554, 567, 566, 0, 558, 0, 570, 568, 0, - 0, 0, 551, 520, 80, 81, 83, 82, 85, 86, - 87, 88, 89, 84, 79, 0, 0, 536, 532, 534, - 538, 545, 553, 123, 0, 507, 0, 127, 0, 105, - 4, 0, 23, 20, 31, 198, 0, 503, 0, 498, - 493, 45, 46, 47, 50, 49, 52, 53, 57, 58, - 55, 56, 60, 61, 63, 65, 67, 69, 71, 73, - 0, 193, 581, 0, 579, 523, 0, 0, 0, 0, - 569, 0, 550, 78, 91, 122, 505, 0, 103, 18, - 499, 501, 0, 0, 0, 0, 0, 542, 0, 0, - 0, 0, 561, 560, 563, 529, 546, 506, 508, 0, - 0, 578, 580, 524, 0, 0, 0, 562, 0, 0, - 541, 0, 0, 539, 0, 76, 582, 0, 526, 555, - 525, 0, 564, 0, 529, 528, 530, 548, 543, 0, - 565, 559, 540, 549, 0, 557, 547 + 66, 147, 148, 0, 241, 0, 271, 284, 283, 0, + 275, 0, 287, 285, 0, 0, 0, 269, 71, 72, + 74, 73, 76, 77, 78, 79, 80, 75, 70, 0, + 0, 256, 252, 254, 114, 0, 118, 0, 96, 4, + 0, 15, 12, 23, 154, 0, 229, 0, 224, 219, + 36, 37, 38, 41, 40, 43, 44, 48, 49, 46, + 47, 51, 52, 54, 56, 58, 60, 62, 64, 0, + 149, 243, 0, 0, 0, 0, 286, 0, 268, 69, + 82, 113, 94, 10, 225, 227, 0, 0, 261, 0, + 0, 0, 0, 278, 277, 280, 249, 264, 0, 244, + 0, 0, 0, 279, 0, 0, 260, 0, 0, 258, + 0, 67, 0, 246, 272, 245, 0, 281, 0, 249, + 248, 250, 266, 262, 0, 282, 276, 259, 267, 0, + 274, 265 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -367, -367, -367, -367, -367, -367, -367, -367, -367, -367, - -367, -367, 8696, -367, -81, -78, -225, -82, -20, -18, - -21, -17, -19, -16, -367, -85, -367, -98, -367, -110, - -118, 2, -367, -367, -367, 4, -367, -367, -367, 184, - 191, 192, -367, -367, -339, -367, -367, -367, -367, 102, - -367, -37, -44, -367, 9, -367, 0, -71, -367, -367, - -367, -367, 260, -367, -367, -367, -136, -137, 18, -65, - -209, -367, -94, -198, -366, -367, -134, -367, -367, -148, - -146, -367, -367, 202, -265, -87, -367, 56, -367, -111, - -367, 59, -367, -367, -367, -367, 62, -367, -367, -367, - -367, -367, -367, -367, -367, 225, -367, -367, -367, -367, - -99 + -357, -357, -357, -357, -357, -357, -357, -357, -357, -357, + -357, -357, 58, -357, -108, -106, -166, -114, -62, -59, + -56, -60, -55, -61, -357, -123, -357, -138, -357, -145, + -357, 15, -357, -357, -357, 17, -357, -357, -357, 125, + 132, 136, -357, -357, -334, -357, -357, -357, -357, 48, + -79, -84, -357, 0, -107, -357, -357, -357, -357, 169, + -357, -357, -357, -169, -164, -27, -101, -230, -127, -223, + -356, -155, -357, -357, -165, -160, -357, -357, 140, -286, + -119, -357, -357, -357, -134, -357, -357, -357, -357, -357, + -357, -357, -357, -357, -357, -357, -357, -357, -357, -357, + 158, -357, -357 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 434, 435, 436, 621, 437, 438, 439, 440, 441, - 442, 443, 493, 445, 463, 464, 465, 466, 467, 468, - 469, 470, 471, 472, 473, 494, 650, 495, 605, 496, - 552, 497, 337, 524, 413, 498, 339, 340, 341, 371, - 372, 373, 342, 343, 344, 345, 346, 347, 393, 394, - 348, 349, 350, 351, 446, 396, 447, 399, 384, 385, - 448, 354, 355, 356, 455, 389, 453, 454, 546, 547, - 522, 616, 501, 502, 503, 504, 505, 580, 676, 709, - 700, 701, 702, 710, 506, 507, 508, 509, 703, 680, - 510, 511, 704, 724, 512, 513, 514, 656, 584, 658, - 684, 698, 699, 515, 357, 358, 359, 368, 516, 653, - 654 + -1, 160, 161, 162, 330, 163, 164, 165, 166, 167, + 168, 169, 214, 171, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 215, 359, 216, 319, 217, + 269, 218, 76, 241, 147, 219, 78, 79, 80, 107, + 108, 109, 81, 82, 83, 84, 85, 86, 129, 130, + 87, 88, 89, 172, 133, 120, 121, 173, 91, 92, + 93, 180, 125, 178, 179, 263, 264, 239, 221, 222, + 223, 224, 295, 377, 404, 396, 397, 398, 405, 225, + 226, 227, 228, 399, 381, 229, 230, 400, 419, 231, + 232, 233, 362, 299, 364, 385, 394, 395, 234, 94, + 95, 96, 104 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1397,2091 +920,753 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 353, 542, 336, 674, 338, 481, 457, 675, 484, 352, - 485, 486, 458, 543, 489, 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, 560, 561, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 374, 381, 530, 409, 609, 613, - 521, 615, 474, 449, 617, 655, 549, 678, 573, 550, - 562, 563, 365, 367, 397, 391, 293, 294, 295, 708, - 381, 361, 398, 374, 517, 519, 716, 638, 639, 640, - 641, 375, 363, 475, 539, 678, 392, 708, 366, 382, - 352, 476, 451, 574, 364, 564, 565, 353, 352, 336, - 388, 338, 297, 362, 566, 567, 352, 302, 303, 397, - 375, 551, 531, 532, 375, 407, 518, 397, 589, 352, - 591, 606, 662, 352, 408, 475, 657, 475, 618, 452, - 577, -34, 523, 533, 614, 459, 410, 534, 352, 411, - 500, 460, 412, 369, 536, 665, 620, 381, 685, 499, - 537, 686, 606, 549, 606, 719, 451, 606, 451, 370, - 521, 606, 521, 622, 378, 521, 594, 595, 596, 597, - 598, 599, 600, 601, 602, 603, 383, 376, 526, 624, - 377, 527, 606, 689, 606, 604, 628, 607, 666, 629, - 667, 544, 723, 452, 390, 452, 606, 609, 688, 660, - 352, 395, 352, 628, 352, 400, 670, 555, 556, 557, - 558, 397, 559, 450, 627, 456, 659, 634, 635, 535, - 661, 549, 636, 637, 642, 643, 540, 451, 569, 405, - 406, 525, 475, 545, 568, 554, 570, 571, 718, 575, - 572, 578, 579, 581, 582, 583, 500, 663, 664, 585, - 587, 593, 586, 451, 590, 499, 521, -35, -33, 619, - 623, 592, -28, 651, 452, 609, 669, 652, 673, 606, - 691, 681, 695, 352, 693, 696, -527, 706, 694, 707, - 672, 713, 478, 712, 725, 717, 677, 726, 644, 646, - 452, 645, 714, 648, 647, 690, 360, 649, 403, 352, - 553, 402, 626, 671, 682, 721, 404, 715, 722, 521, - 401, 683, 610, 697, 677, 611, 692, 0, 612, 0, - 500, 451, 387, 0, 500, 0, 711, 0, 551, 499, - 0, 705, 0, 499, 0, 0, 0, 0, 0, 0, - 0, 0, 720, 0, 0, 0, 0, 0, 0, 521, - 0, 0, 0, 0, 0, 0, 0, 0, 452, 679, - 0, 0, 0, 0, 0, 0, 0, 352, 0, 0, - 0, 0, 0, 0, 0, 381, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 679, 0, 0, - 0, 0, 0, 0, 0, 500, 500, 0, 500, 0, - 0, 0, 0, 0, 499, 499, 0, 499, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 382, - 0, 0, 0, 0, 500, 0, 0, 0, 352, 0, - 0, 0, 0, 499, 0, 500, 0, 0, 0, 0, - 0, 0, 500, 0, 499, 0, 0, 0, 0, 0, - 0, 499, 0, 500, 0, 0, 0, 500, 0, 0, - 0, 0, 499, 500, 0, 0, 499, 0, 0, 0, - 386, 0, 499, 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, 0, 0, 0, 0, 0, 0, 0, + 90, 110, 323, 117, 238, 247, 324, 143, 197, 361, + 326, 267, 289, 174, 266, 75, 98, 77, 278, 279, + 248, 249, 127, 101, 259, 100, 117, 110, 379, 141, + 256, 131, 235, 237, 144, 403, 260, 145, 142, -26, + 146, 250, 411, 128, 103, 251, 176, 290, 99, 102, + 131, 379, 403, 280, 281, 131, 198, 236, 268, 198, + 119, 198, 105, 132, 199, 304, 240, 306, 325, 276, + 277, 182, 327, 253, 106, 293, 363, 183, 329, 254, + 111, 114, 386, 112, 320, 387, 113, 118, 320, 126, + 414, 320, 117, 131, 90, 371, 320, 124, 238, 176, + 134, 176, 238, 266, 139, 331, 111, 282, 283, 75, + 111, 77, 347, 348, 349, 350, 333, 243, 320, 337, + 244, 321, 338, 140, 320, 177, 418, 366, 337, 175, + 274, 374, 275, 252, 220, 271, 272, 273, 323, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 60, + 61, 62, 320, 368, 257, 336, 365, 181, 318, 242, + 367, 198, 176, 266, 320, 388, 343, 344, 351, 352, + 345, 346, 413, 262, 284, 286, 261, 170, 177, 285, + 177, 369, 370, 287, 288, 291, 294, 238, 176, 185, + 296, 300, 301, 297, 298, 323, 302, 305, -25, 328, + 332, 307, -20, 360, 382, 373, 245, 246, 390, 389, + 320, 391, 392, -247, 376, 402, 408, 378, 407, 409, + 200, 412, 353, 420, 421, 220, 354, 356, 358, 258, + 355, 270, 97, 357, 335, 137, 375, 383, 136, 185, + 378, 177, 410, 416, 135, 384, 138, 406, 176, 417, + 401, 393, 123, 0, 0, 0, 185, 0, 0, 0, + 0, 0, 415, 0, 238, 0, 0, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 380, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 220, 117, 0, 0, 220, + 0, 0, 0, 0, 0, 0, 380, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 334, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 177, 0, 340, + 341, 342, 185, 185, 185, 185, 185, 185, 185, 185, + 185, 185, 185, 185, 185, 185, 185, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 291, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 292, 293, - 294, 295, 296, 0, 0, 0, 0, 0, 0, 0, - 0, 297, 298, 299, 300, 301, 302, 303, 0, 0, + 0, 220, 220, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 304, 305, 306, 307, 308, 0, 0, 0, 0, 0, - 0, 0, 0, 309, 0, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 1, 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, 0, 0, 414, 415, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 416, 0, 477, 0, 478, 479, 0, 0, - 0, 0, 480, 417, 418, 419, 420, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 292, 293, 294, 295, - 296, 0, 0, 0, 421, 422, 423, 424, 425, 297, - 298, 299, 300, 301, 302, 303, 481, 482, 483, 484, - 0, 485, 486, 487, 488, 489, 490, 491, 304, 305, - 306, 307, 308, 426, 427, 428, 429, 430, 431, 432, - 433, 309, 492, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 1, + 118, 0, 0, 0, 0, 220, 0, 0, 0, 0, + 0, 220, 0, 0, 0, 0, 0, 0, 220, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, + 0, 0, 220, 0, 0, 0, 122, 0, 220, 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, 0, - 0, 414, 415, 0, 0, 0, 0, 0, 0, 0, + 52, 53, 54, 55, 56, 57, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 416, 0, 477, 0, 478, 608, 0, 0, 0, 0, - 480, 417, 418, 419, 420, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 292, 293, 294, 295, 296, 0, - 0, 0, 421, 422, 423, 424, 425, 297, 298, 299, - 300, 301, 302, 303, 481, 482, 483, 484, 0, 485, - 486, 487, 488, 489, 490, 491, 304, 305, 306, 307, - 308, 426, 427, 428, 429, 430, 431, 432, 433, 309, - 492, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 1, 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, 0, 0, 414, - 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 416, 0, - 477, 0, 478, 0, 0, 0, 0, 0, 480, 417, - 418, 419, 420, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 292, 293, 294, 295, 296, 0, 0, 0, - 421, 422, 423, 424, 425, 297, 298, 299, 300, 301, - 302, 303, 481, 482, 483, 484, 0, 485, 486, 487, - 488, 489, 490, 491, 304, 305, 306, 307, 308, 426, - 427, 428, 429, 430, 431, 432, 433, 309, 492, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 1, 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, 0, 0, 414, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 416, 0, 477, 0, - 400, 0, 0, 0, 0, 0, 480, 417, 418, 419, - 420, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 292, 293, 294, 295, 296, 0, 0, 0, 421, 422, - 423, 424, 425, 297, 298, 299, 300, 301, 302, 303, - 481, 482, 483, 484, 0, 485, 486, 487, 488, 489, - 490, 491, 304, 305, 306, 307, 308, 426, 427, 428, - 429, 430, 431, 432, 433, 309, 492, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 1, 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, 0, 0, 414, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 416, 0, 477, 0, 0, 0, - 0, 0, 0, 0, 480, 417, 418, 419, 420, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 292, 293, - 294, 295, 296, 0, 0, 0, 421, 422, 423, 424, - 425, 297, 298, 299, 300, 301, 302, 303, 481, 482, - 483, 484, 0, 485, 486, 487, 488, 489, 490, 491, - 304, 305, 306, 307, 308, 426, 427, 428, 429, 430, - 431, 432, 433, 309, 492, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 1, 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, 0, 0, 414, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 416, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 480, 417, 418, 419, 420, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 292, 293, 294, 295, - 296, 0, 0, 0, 421, 422, 423, 424, 425, 297, - 298, 299, 300, 301, 302, 303, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 304, 305, - 306, 307, 308, 426, 427, 428, 429, 430, 431, 432, - 433, 309, 0, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 1, + 0, 0, 59, 60, 61, 62, 63, 0, 0, 0, + 0, 0, 0, 0, 0, 64, 65, 66, 67, 68, + 69, 70, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 71, 0, 72, 73, 74, 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, 0, - 0, 414, 415, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 416, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 417, 418, 419, 420, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 292, 293, 294, 295, 0, 0, - 0, 0, 421, 422, 423, 424, 425, 297, 298, 299, - 300, 301, 302, 303, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 304, 305, 306, 307, - 308, 426, 427, 428, 429, 430, 431, 432, 433, 309, - 0, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 1, 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, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 291, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 292, 293, 294, 295, 296, 0, 0, 0, - 0, 0, 0, 0, 0, 297, 298, 299, 300, 301, - 302, 303, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 304, 305, 306, 307, 308, 0, - 0, 0, 0, 0, 0, 0, 0, 309, 0, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 1, 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, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 379, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 292, 293, 294, 295, 0, 0, 0, 0, 0, 0, - 0, 0, 380, 297, 298, 299, 300, 301, 302, 303, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 304, 305, 306, 307, 308, 0, 0, 0, - 0, 0, 0, 0, 0, 309, 0, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 1, 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, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 548, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 292, 293, - 294, 295, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 297, 298, 299, 300, 301, 302, 303, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 304, 305, 306, 307, 308, 0, 0, 0, 0, 0, - 0, 0, 0, 309, 0, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 630, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 292, 293, 294, 295, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 297, - 298, 299, 300, 301, 302, 303, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 304, 305, - 306, 307, 308, 0, 0, 0, 0, 0, 0, 0, - 0, 309, 0, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 1, + 52, 53, 54, 55, 56, 57, 58, 0, 0, 148, + 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 150, 0, + 0, 0, 200, 201, 0, 0, 0, 0, 202, 151, + 152, 153, 154, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 59, 60, 61, 62, 63, 0, 0, 0, + 155, 156, 157, 158, 159, 64, 65, 66, 67, 68, + 69, 70, 203, 204, 205, 206, 0, 207, 208, 209, + 210, 211, 212, 213, 71, 0, 72, 73, 74, 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, 0, + 52, 53, 54, 55, 56, 57, 58, 0, 0, 148, + 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 150, 0, + 0, 0, 200, 322, 0, 0, 0, 0, 202, 151, + 152, 153, 154, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 59, 60, 61, 62, 63, 0, 0, 0, + 155, 156, 157, 158, 159, 64, 65, 66, 67, 68, + 69, 70, 203, 204, 205, 206, 0, 207, 208, 209, + 210, 211, 212, 213, 71, 0, 72, 73, 74, 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, 148, + 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 150, 0, + 0, 0, 200, 0, 0, 0, 0, 0, 202, 151, + 152, 153, 154, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 59, 60, 61, 62, 63, 0, 0, 0, + 155, 156, 157, 158, 159, 64, 65, 66, 67, 68, + 69, 70, 203, 204, 205, 206, 0, 207, 208, 209, + 210, 211, 212, 213, 71, 0, 72, 73, 74, 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, 148, + 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 150, 0, + 0, 0, 134, 0, 0, 0, 0, 0, 202, 151, + 152, 153, 154, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 59, 60, 61, 62, 63, 0, 0, 0, + 155, 156, 157, 158, 159, 64, 65, 66, 67, 68, + 69, 70, 203, 204, 205, 206, 0, 207, 208, 209, + 210, 211, 212, 213, 71, 0, 72, 73, 74, 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, 148, + 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 150, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 202, 151, + 152, 153, 154, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 59, 60, 61, 62, 63, 0, 0, 0, + 155, 156, 157, 158, 159, 64, 65, 66, 67, 68, + 69, 70, 203, 204, 205, 206, 0, 207, 208, 209, + 210, 211, 212, 213, 71, 0, 72, 73, 74, 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, 148, + 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 150, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 202, 151, + 152, 153, 154, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 59, 60, 61, 62, 63, 0, 0, 0, + 155, 156, 157, 158, 159, 64, 65, 66, 67, 68, + 69, 70, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 71, 0, 72, 73, 74, 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, 148, + 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 150, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, + 152, 153, 154, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 59, 60, 61, 62, 0, 0, 0, 0, + 155, 156, 157, 158, 159, 64, 65, 66, 67, 68, + 69, 70, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 71, 0, 72, 73, 74, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 668, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 292, 293, 294, 295, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 297, 298, 299, - 300, 301, 302, 303, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 304, 305, 306, 307, - 308, 0, 0, 0, 0, 0, 0, 0, 0, 309, - 0, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 1, 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, 0, 0, 0, + 0, 0, 59, 60, 61, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 116, 64, 65, 66, 67, 68, + 69, 70, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 71, 0, 72, 73, 74, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 292, 293, 294, 295, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 297, 298, 299, 300, 301, - 302, 303, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 304, 305, 306, 307, 308, 0, - 0, 0, 0, 0, 0, 0, 0, 309, 0, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 2, 3, 4, 5, 6, + 0, 0, 59, 60, 61, 62, 63, 0, 0, 0, + 0, 0, 0, 0, 0, 64, 65, 66, 67, 68, + 69, 70, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 71, 0, 72, 73, 74, 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, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 265, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 59, 60, 61, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 64, 65, 66, 67, 68, + 69, 70, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 71, 0, 72, 73, 74, 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, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 339, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 59, 60, 61, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 64, 65, 66, 67, 68, + 69, 70, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 71, 0, 72, 73, 74, 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, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 372, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 59, 60, 61, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 64, 65, 66, 67, 68, + 69, 70, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 71, 0, 72, 73, 74, 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, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 59, 60, 61, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 64, 65, 66, 67, 68, + 69, 70, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 71, 0, 72, 73, 74, 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, 148, 149, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, + 184, 0, 0, 0, 0, 0, 0, 0, 151, 152, + 153, 154, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, + 156, 157, 158, 159, 64, 0, 0, 0, 0, 69, + 70, 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, + 148, 149, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, + 0, 0, 292, 0, 0, 0, 0, 0, 0, 0, + 151, 152, 153, 154, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 155, 156, 157, 158, 159, 64, 0, 0, 0, + 0, 69, 70, 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, 148, 149, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 150, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 303, 151, 152, 153, 154, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 155, 156, 157, 158, 159, 64, 0, + 0, 0, 0, 69, 70, 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, 0, 0, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 0, 0, 414, 415, 0, 0, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 0, 0, 148, 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 416, 0, 0, 0, 520, - 687, 0, 0, 0, 0, 0, 417, 418, 419, 420, + 0, 0, 0, 150, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 151, 152, 153, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 421, 422, 423, - 424, 425, 297, 0, 0, 0, 0, 302, 303, 0, + 0, 0, 0, 0, 0, 155, 156, 157, 158, 159, + 64, 0, 0, 0, 0, 69, 70, 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, 148, 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 426, 427, 428, 429, - 430, 431, 432, 433, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 318, 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, 0, 0, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 0, 0, 414, 415, 0, 0, + 0, 0, 0, 0, 0, 150, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 151, 152, 153, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 416, 0, 0, 461, 0, - 0, 0, 0, 0, 0, 0, 417, 418, 419, 420, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 421, 422, 423, - 424, 425, 297, 0, 0, 0, 0, 302, 303, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 426, 427, 428, 429, - 430, 431, 432, 433, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 318, 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, 0, 0, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 0, 0, 414, 415, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 416, 0, 0, 0, 520, - 0, 0, 0, 0, 0, 0, 417, 418, 419, 420, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 421, 422, 423, - 424, 425, 297, 0, 0, 0, 0, 302, 303, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 426, 427, 428, 429, - 430, 431, 432, 433, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 318, 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, 0, 0, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 0, 0, 414, 415, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 416, 0, 0, 576, 0, - 0, 0, 0, 0, 0, 0, 417, 418, 419, 420, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 421, 422, 423, - 424, 425, 297, 0, 0, 0, 0, 302, 303, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 426, 427, 428, 429, - 430, 431, 432, 433, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 318, 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, 0, 0, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 0, 0, 414, 415, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 416, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 588, 417, 418, 419, 420, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 421, 422, 423, - 424, 425, 297, 0, 0, 0, 0, 302, 303, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 426, 427, 428, 429, - 430, 431, 432, 433, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 318, 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, 0, 0, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 0, 0, 414, 415, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 416, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 417, 418, 419, 420, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 421, 422, 423, - 424, 425, 297, 0, 0, 0, 0, 302, 303, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 426, 427, 428, 429, - 430, 431, 432, 433, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 318, 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, 0, 0, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 0, 0, 414, 415, 0, 444, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 462, 0, 416, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 417, 418, 419, 420, - 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 421, 422, 423, - 424, 425, 297, 0, 0, 0, 0, 302, 538, 0, - 0, 541, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 462, 0, 0, 0, 426, 427, 428, 429, - 430, 431, 432, 433, 0, 0, 0, 0, 0, 0, - 0, 462, 0, 0, 318, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 155, 156, 157, + 158, 159, 64, 0, 0, 0, 0, 69, 255, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 625, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 631, 632, 633, 462, 462, 462, 462, 462, 462, - 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 462 + 0, 0, 0, 0, 64, 0, 0, 0, 0, 69, + 70 }; static const yytype_int16 yycheck[] = { - 0, 321, 0, 317, 0, 358, 315, 321, 361, 0, - 363, 364, 321, 333, 367, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 293, 294, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 341, 349, 416, 378, 506, 518, - 408, 520, 397, 384, 523, 580, 453, 656, 302, 455, - 297, 298, 324, 324, 316, 350, 339, 340, 341, 695, - 374, 318, 324, 370, 405, 406, 702, 562, 563, 564, - 565, 341, 314, 316, 442, 684, 371, 713, 350, 349, - 341, 324, 389, 337, 314, 332, 333, 357, 349, 357, - 360, 357, 351, 350, 299, 300, 357, 356, 357, 316, - 370, 456, 295, 296, 374, 314, 323, 316, 488, 370, - 490, 321, 322, 374, 323, 316, 584, 316, 524, 389, - 475, 314, 323, 316, 323, 315, 318, 320, 389, 321, - 400, 321, 324, 315, 315, 614, 315, 451, 315, 400, - 321, 315, 321, 550, 321, 315, 453, 321, 455, 321, - 518, 321, 520, 533, 350, 523, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 332, 321, 321, 537, - 324, 324, 321, 322, 321, 323, 321, 324, 319, 324, - 321, 451, 717, 453, 318, 455, 321, 655, 667, 324, - 451, 350, 453, 321, 455, 318, 324, 329, 330, 331, - 326, 316, 328, 324, 545, 323, 586, 558, 559, 315, - 590, 618, 560, 561, 566, 567, 314, 524, 335, 350, - 350, 350, 316, 350, 336, 350, 334, 301, 707, 317, - 303, 316, 319, 314, 324, 324, 506, 605, 606, 314, - 324, 324, 314, 550, 314, 506, 614, 314, 314, 350, - 350, 322, 315, 317, 524, 723, 317, 350, 314, 321, - 317, 358, 315, 524, 319, 314, 318, 315, 350, 323, - 650, 315, 318, 324, 324, 318, 656, 319, 568, 570, - 550, 569, 362, 572, 571, 673, 296, 573, 374, 550, - 458, 370, 544, 628, 658, 713, 374, 701, 714, 667, - 368, 658, 516, 684, 684, 516, 675, -1, 516, -1, - 580, 618, 357, -1, 584, -1, 696, -1, 673, 580, - -1, 689, -1, 584, -1, -1, -1, -1, -1, -1, - -1, -1, 712, -1, -1, -1, -1, -1, -1, 707, - -1, -1, -1, -1, -1, -1, -1, -1, 618, 656, - -1, -1, -1, -1, -1, -1, -1, 618, -1, -1, - -1, -1, -1, -1, -1, 679, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 684, -1, -1, - -1, -1, -1, -1, -1, 655, 656, -1, 658, -1, - -1, -1, -1, -1, 655, 656, -1, 658, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 679, - -1, -1, -1, -1, 684, -1, -1, -1, 679, -1, - -1, -1, -1, 684, -1, 695, -1, -1, -1, -1, - -1, -1, 702, -1, 695, -1, -1, -1, -1, -1, - -1, 702, -1, 713, -1, -1, -1, 717, -1, -1, - -1, -1, 713, 723, -1, -1, 717, -1, -1, -1, - 0, -1, 723, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, -1, -1, -1, -1, -1, -1, -1, + 0, 80, 225, 87, 142, 150, 236, 114, 131, 295, + 240, 180, 70, 120, 178, 0, 86, 0, 65, 66, + 63, 64, 118, 92, 89, 82, 110, 106, 362, 82, + 168, 84, 139, 140, 86, 391, 101, 89, 91, 82, + 92, 84, 398, 139, 92, 88, 125, 105, 118, 118, + 84, 385, 408, 100, 101, 84, 84, 91, 181, 84, + 100, 84, 83, 92, 92, 210, 91, 212, 91, 61, + 62, 83, 241, 83, 89, 198, 299, 89, 83, 89, + 80, 118, 83, 89, 89, 83, 92, 87, 89, 86, + 83, 89, 176, 84, 94, 325, 89, 97, 236, 178, + 86, 180, 240, 267, 118, 250, 106, 67, 68, 94, + 110, 94, 278, 279, 280, 281, 254, 89, 89, 89, + 92, 92, 92, 118, 89, 125, 412, 92, 89, 92, + 94, 92, 96, 83, 134, 97, 98, 99, 361, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 107, + 108, 109, 89, 90, 82, 262, 301, 91, 91, 118, + 305, 84, 241, 327, 89, 90, 274, 275, 282, 283, + 276, 277, 402, 118, 104, 102, 176, 119, 178, 103, + 180, 319, 320, 69, 71, 85, 87, 325, 267, 131, + 82, 82, 82, 92, 92, 418, 92, 82, 82, 118, + 118, 90, 83, 85, 126, 85, 148, 149, 118, 87, + 89, 83, 82, 86, 359, 91, 83, 362, 92, 130, + 86, 86, 284, 92, 87, 225, 285, 287, 289, 171, + 286, 183, 63, 288, 261, 110, 337, 364, 106, 181, + 385, 241, 397, 408, 104, 364, 110, 392, 327, 409, + 388, 385, 94, -1, -1, -1, 198, -1, -1, -1, + -1, -1, 407, -1, 402, -1, -1, 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 324, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 338, 339, - 340, 341, 342, -1, -1, -1, -1, -1, -1, -1, - -1, 351, 352, 353, 354, 355, 356, 357, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 370, 371, 372, 373, 374, -1, -1, -1, -1, -1, - -1, -1, -1, 383, -1, 385, 386, 387, 388, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + -1, -1, -1, 362, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 295, 380, -1, -1, 299, + -1, -1, -1, -1, -1, -1, 385, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 259, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 327, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, -1, -1, 295, 296, -1, -1, -1, -1, -1, + 282, 283, 284, 285, 286, 287, 288, 289, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 314, -1, 316, -1, 318, 319, -1, -1, - -1, -1, 324, 325, 326, 327, 328, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 338, 339, 340, 341, - 342, -1, -1, -1, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 3, + -1, 361, 362, -1, 364, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 380, -1, -1, -1, -1, 385, -1, -1, -1, -1, + -1, 391, -1, -1, -1, -1, -1, -1, 398, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 408, -1, + -1, -1, 412, -1, -1, -1, 0, -1, 418, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, - -1, 295, 296, -1, -1, -1, -1, -1, -1, -1, + 54, 55, 56, 57, 58, 59, 60, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 314, -1, 316, -1, 318, 319, -1, -1, -1, -1, - 324, 325, 326, 327, 328, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 338, 339, 340, 341, 342, -1, - -1, -1, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, - 404, 405, 406, 407, 408, 409, 410, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, -1, -1, 295, - 296, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 314, -1, - 316, -1, 318, -1, -1, -1, -1, -1, 324, 325, - 326, 327, 328, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 338, 339, 340, 341, 342, -1, -1, -1, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, -1, -1, 295, 296, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 314, -1, 316, -1, - 318, -1, -1, -1, -1, -1, 324, 325, 326, 327, - 328, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 338, 339, 340, 341, 342, -1, -1, -1, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, -1, -1, 295, 296, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 314, -1, 316, -1, -1, -1, - -1, -1, -1, -1, 324, 325, 326, 327, 328, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 338, 339, - 340, 341, 342, -1, -1, -1, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, -1, -1, 295, 296, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 314, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 324, 325, 326, 327, 328, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 338, 339, 340, 341, - 342, -1, -1, -1, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, -1, 385, 386, 387, 388, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 3, + -1, -1, 106, 107, 108, 109, 110, -1, -1, -1, + -1, -1, -1, -1, -1, 119, 120, 121, 122, 123, + 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 138, -1, 140, 141, 142, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 54, 55, 56, 57, 58, 59, 60, -1, -1, 63, + 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, + -1, -1, 86, 87, -1, -1, -1, -1, 92, 93, + 94, 95, 96, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 106, 107, 108, 109, 110, -1, -1, -1, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, - -1, 295, 296, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 314, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 325, 326, 327, 328, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 338, 339, 340, 341, -1, -1, - -1, -1, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - -1, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, - 404, 405, 406, 407, 408, 409, 410, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 324, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 338, 339, 340, 341, 342, -1, -1, -1, - -1, -1, -1, -1, -1, 351, 352, 353, 354, 355, - 356, 357, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 370, 371, 372, 373, 374, -1, - -1, -1, -1, -1, -1, -1, -1, 383, -1, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 324, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 338, 339, 340, 341, -1, -1, -1, -1, -1, -1, - -1, -1, 350, 351, 352, 353, 354, 355, 356, 357, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 370, 371, 372, 373, 374, -1, -1, -1, - -1, -1, -1, -1, -1, 383, -1, 385, 386, 387, - 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 319, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 338, 339, - 340, 341, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 351, 352, 353, 354, 355, 356, 357, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 370, 371, 372, 373, 374, -1, -1, -1, -1, -1, - -1, -1, -1, 383, -1, 385, 386, 387, 388, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 319, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 338, 339, 340, 341, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 351, - 352, 353, 354, 355, 356, 357, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 370, 371, - 372, 373, 374, -1, -1, -1, -1, -1, -1, -1, - -1, 383, -1, 385, 386, 387, 388, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 3, + 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, + 134, 135, 136, 137, 138, -1, 140, 141, 142, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 54, 55, 56, 57, 58, 59, 60, -1, -1, 63, + 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, + -1, -1, 86, 87, -1, -1, -1, -1, 92, 93, + 94, 95, 96, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 106, 107, 108, 109, 110, -1, -1, -1, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, + 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, + 134, 135, 136, 137, 138, -1, 140, 141, 142, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, + -1, -1, 86, -1, -1, -1, -1, -1, 92, 93, + 94, 95, 96, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 106, 107, 108, 109, 110, -1, -1, -1, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, + 134, 135, 136, 137, 138, -1, 140, 141, 142, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, + -1, -1, 86, -1, -1, -1, -1, -1, 92, 93, + 94, 95, 96, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 106, 107, 108, 109, 110, -1, -1, -1, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, + 134, 135, 136, 137, 138, -1, 140, 141, 142, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 92, 93, + 94, 95, 96, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 106, 107, 108, 109, 110, -1, -1, -1, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, + 134, 135, 136, 137, 138, -1, 140, 141, 142, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 92, 93, + 94, 95, 96, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 106, 107, 108, 109, 110, -1, -1, -1, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 138, -1, 140, 141, 142, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, + 94, 95, 96, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 106, 107, 108, 109, -1, -1, -1, -1, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 138, -1, 140, 141, 142, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 319, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 92, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 338, 339, 340, 341, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 351, 352, 353, - 354, 355, 356, 357, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 370, 371, 372, 373, - 374, -1, -1, -1, -1, -1, -1, -1, -1, 383, - -1, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, - 404, 405, 406, 407, 408, 409, 410, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, -1, -1, -1, + -1, -1, 106, 107, 108, 109, -1, -1, -1, -1, + -1, -1, -1, -1, 118, 119, 120, 121, 122, 123, + 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 138, -1, 140, 141, 142, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 338, 339, 340, 341, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 351, 352, 353, 354, 355, - 356, 357, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 370, 371, 372, 373, 374, -1, - -1, -1, -1, -1, -1, -1, -1, 383, -1, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 4, 5, 6, 7, 8, + -1, -1, 106, 107, 108, 109, 110, -1, -1, -1, + -1, -1, -1, -1, -1, 119, 120, 121, 122, 123, + 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 138, -1, 140, 141, 142, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 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, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 87, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 106, 107, 108, 109, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 119, 120, 121, 122, 123, + 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 138, -1, 140, 141, 142, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 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, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 87, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 106, 107, 108, 109, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 119, 120, 121, 122, 123, + 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 138, -1, 140, 141, 142, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 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, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 87, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 106, 107, 108, 109, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 119, 120, 121, 122, 123, + 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 138, -1, 140, 141, 142, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 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, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 106, 107, 108, 109, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 119, 120, 121, 122, 123, + 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 138, -1, 140, 141, 142, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 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, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, + 85, -1, -1, -1, -1, -1, -1, -1, 93, 94, + 95, 96, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 114, + 115, 116, 117, 118, 119, -1, -1, -1, -1, 124, + 125, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, + -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, + 93, 94, 95, 96, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 114, 115, 116, 117, 118, 119, -1, -1, -1, + -1, 124, 125, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 92, 93, 94, 95, 96, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 114, 115, 116, 117, 118, 119, -1, + -1, -1, -1, 124, 125, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, -1, -1, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, -1, -1, 295, 296, -1, -1, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, -1, -1, 63, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 314, -1, -1, -1, 318, - 319, -1, -1, -1, -1, -1, 325, 326, 327, 328, + -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 93, 94, 95, 96, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 346, 347, 348, - 349, 350, 351, -1, -1, -1, -1, 356, 357, -1, + -1, -1, -1, -1, -1, 114, 115, 116, 117, 118, + 119, -1, -1, -1, -1, 124, 125, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 375, 376, 377, 378, - 379, 380, 381, 382, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 393, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, -1, -1, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, -1, -1, 295, 296, -1, -1, + -1, -1, -1, -1, -1, 82, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 93, 94, 95, 96, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 314, -1, -1, 317, -1, - -1, -1, -1, -1, -1, -1, 325, 326, 327, 328, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 346, 347, 348, - 349, 350, 351, -1, -1, -1, -1, 356, 357, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 375, 376, 377, 378, - 379, 380, 381, 382, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 393, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, -1, -1, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, -1, -1, 295, 296, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 314, -1, -1, -1, 318, - -1, -1, -1, -1, -1, -1, 325, 326, 327, 328, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 346, 347, 348, - 349, 350, 351, -1, -1, -1, -1, 356, 357, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 375, 376, 377, 378, - 379, 380, 381, 382, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 393, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, -1, -1, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, -1, -1, 295, 296, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 314, -1, -1, 317, -1, - -1, -1, -1, -1, -1, -1, 325, 326, 327, 328, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 346, 347, 348, - 349, 350, 351, -1, -1, -1, -1, 356, 357, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 375, 376, 377, 378, - 379, 380, 381, 382, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 393, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, -1, -1, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, -1, -1, 295, 296, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 314, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 324, 325, 326, 327, 328, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 346, 347, 348, - 349, 350, 351, -1, -1, -1, -1, 356, 357, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 375, 376, 377, 378, - 379, 380, 381, 382, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 393, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, -1, -1, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, -1, -1, 295, 296, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 314, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 325, 326, 327, 328, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 346, 347, 348, - 349, 350, 351, -1, -1, -1, -1, 356, 357, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 375, 376, 377, 378, - 379, 380, 381, 382, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 393, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, -1, -1, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, -1, -1, 295, 296, -1, 383, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 397, -1, 314, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 325, 326, 327, 328, - 414, 415, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 346, 347, 348, - 349, 350, 351, -1, -1, -1, -1, 356, 357, -1, - -1, 445, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 456, -1, -1, -1, 375, 376, 377, 378, - 379, 380, 381, 382, -1, -1, -1, -1, -1, -1, - -1, 475, -1, -1, 393, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 114, 115, 116, + 117, 118, 119, -1, -1, -1, -1, 124, 125, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 542, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 555, 556, 557, 558, 559, 560, 561, 562, 563, - 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 673 + -1, -1, -1, -1, 119, -1, -1, -1, -1, 124, + 125 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ -static const yytype_uint16 yystos[] = +static const yytype_uint8 yystos[] = { 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 324, 338, 339, 340, 341, 342, 351, 352, 353, - 354, 355, 356, 357, 370, 371, 372, 373, 374, 383, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 442, 443, 446, 447, - 448, 449, 453, 454, 455, 456, 457, 458, 461, 462, - 463, 464, 465, 467, 472, 473, 474, 515, 516, 517, - 473, 318, 350, 314, 314, 324, 350, 324, 518, 315, - 321, 450, 451, 452, 462, 467, 321, 324, 350, 324, - 350, 463, 467, 332, 469, 470, 0, 516, 467, 476, - 318, 350, 371, 459, 460, 350, 466, 316, 324, 468, - 318, 494, 451, 450, 452, 350, 350, 314, 323, 468, - 318, 321, 324, 445, 295, 296, 314, 325, 326, 327, - 328, 346, 347, 348, 349, 350, 375, 376, 377, 378, - 379, 380, 381, 382, 412, 413, 414, 416, 417, 418, - 419, 420, 421, 422, 423, 424, 465, 467, 471, 468, - 324, 462, 467, 477, 478, 475, 323, 315, 321, 315, - 321, 317, 423, 425, 426, 427, 428, 429, 430, 431, - 432, 433, 434, 435, 436, 316, 324, 316, 318, 319, - 324, 358, 359, 360, 361, 363, 364, 365, 366, 367, - 368, 369, 384, 423, 436, 438, 440, 442, 446, 465, - 467, 483, 484, 485, 486, 487, 495, 496, 497, 498, - 501, 502, 505, 506, 507, 514, 519, 468, 323, 468, - 318, 438, 481, 323, 444, 350, 321, 324, 423, 423, - 440, 295, 296, 316, 320, 315, 315, 321, 357, 438, - 314, 423, 321, 333, 467, 350, 479, 480, 319, 478, - 477, 436, 441, 460, 350, 329, 330, 331, 326, 328, - 293, 294, 297, 298, 332, 333, 299, 300, 336, 335, - 334, 301, 303, 302, 337, 317, 317, 436, 316, 319, - 488, 314, 324, 324, 509, 314, 314, 324, 324, 440, - 314, 440, 322, 324, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 323, 439, 321, 324, 319, 484, - 498, 502, 507, 481, 323, 481, 482, 481, 477, 350, - 315, 415, 440, 350, 438, 423, 479, 468, 321, 324, - 319, 423, 423, 423, 425, 425, 426, 426, 427, 427, - 427, 427, 428, 428, 429, 430, 431, 432, 433, 434, - 437, 317, 350, 520, 521, 495, 508, 484, 510, 440, - 324, 440, 322, 438, 438, 481, 319, 321, 319, 317, - 324, 480, 440, 314, 317, 321, 489, 440, 455, 462, - 500, 358, 483, 496, 511, 315, 315, 319, 481, 322, - 441, 317, 521, 319, 350, 315, 314, 500, 512, 513, - 491, 492, 493, 499, 503, 438, 315, 323, 485, 490, - 494, 440, 324, 315, 362, 487, 485, 318, 481, 315, - 440, 490, 491, 495, 504, 324, 319 + 52, 53, 54, 55, 56, 57, 58, 59, 60, 106, + 107, 108, 109, 110, 119, 120, 121, 122, 123, 124, + 125, 138, 140, 141, 142, 174, 175, 178, 179, 180, + 181, 185, 186, 187, 188, 189, 190, 193, 194, 195, + 196, 201, 202, 203, 242, 243, 244, 202, 86, 118, + 82, 92, 118, 92, 245, 83, 89, 182, 183, 184, + 193, 196, 89, 92, 118, 92, 118, 194, 196, 100, + 198, 199, 0, 243, 196, 205, 86, 118, 139, 191, + 192, 84, 92, 197, 86, 221, 183, 182, 184, 118, + 118, 82, 91, 197, 86, 89, 92, 177, 63, 64, + 82, 93, 94, 95, 96, 114, 115, 116, 117, 118, + 144, 145, 146, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 196, 200, 197, 92, 193, 196, 206, 207, + 204, 91, 83, 89, 85, 155, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 84, 92, + 86, 87, 92, 126, 127, 128, 129, 131, 132, 133, + 134, 135, 136, 137, 155, 168, 170, 172, 174, 178, + 196, 211, 212, 213, 214, 222, 223, 224, 225, 228, + 229, 232, 233, 234, 241, 197, 91, 197, 170, 210, + 91, 176, 118, 89, 92, 155, 155, 172, 63, 64, + 84, 88, 83, 83, 89, 125, 170, 82, 155, 89, + 101, 196, 118, 208, 209, 87, 207, 206, 168, 173, + 192, 97, 98, 99, 94, 96, 61, 62, 65, 66, + 100, 101, 67, 68, 104, 103, 102, 69, 71, 70, + 105, 85, 85, 168, 87, 215, 82, 92, 92, 236, + 82, 82, 92, 92, 172, 82, 172, 90, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 91, 171, + 89, 92, 87, 212, 210, 91, 210, 206, 118, 83, + 147, 172, 118, 170, 155, 208, 197, 89, 92, 87, + 155, 155, 155, 157, 157, 158, 158, 159, 159, 159, + 159, 160, 160, 161, 162, 163, 164, 165, 166, 169, + 85, 222, 235, 212, 237, 172, 92, 172, 90, 170, + 170, 210, 87, 85, 92, 209, 172, 216, 172, 187, + 193, 227, 126, 211, 223, 238, 83, 83, 90, 87, + 118, 83, 82, 227, 239, 240, 218, 219, 220, 226, + 230, 170, 91, 213, 217, 221, 172, 92, 83, 130, + 214, 213, 86, 210, 83, 172, 217, 218, 222, 231, + 92, 87 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint16 yyr1[] = +static const yytype_uint8 yyr1[] = { - 0, 411, 412, 413, 413, 413, 413, 413, 413, 413, - 413, 413, 413, 413, 413, 413, 413, 414, 414, 414, - 414, 414, 414, 415, 416, 417, 418, 418, 419, 419, - 420, 420, 421, 422, 422, 422, 423, 423, 423, 423, - 424, 424, 424, 424, 425, 425, 425, 425, 426, 426, - 426, 427, 427, 427, 428, 428, 428, 428, 428, 429, - 429, 429, 430, 430, 431, 431, 432, 432, 433, 433, - 434, 434, 435, 435, 436, 437, 436, 438, 438, 439, - 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, - 440, 440, 441, 442, 442, 442, 442, 442, 442, 442, - 442, 442, 444, 443, 445, 445, 446, 447, 447, 448, - 448, 449, 450, 450, 451, 451, 451, 451, 452, 453, - 453, 453, 453, 453, 454, 454, 454, 454, 454, 455, - 455, 456, 457, 457, 457, 457, 457, 457, 457, 457, - 458, 459, 459, 460, 460, 460, 461, 462, 462, 463, - 463, 463, 463, 463, 463, 463, 464, 464, 464, 464, - 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, - 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, - 464, 464, 464, 464, 464, 465, 466, 466, 467, 467, - 468, 468, 468, 468, 469, 469, 470, 471, 471, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, - 472, 472, 472, 472, 472, 472, 472, 472, 472, 473, - 473, 473, 475, 474, 476, 474, 477, 477, 478, 478, - 479, 479, 480, 480, 481, 481, 481, 482, 482, 483, - 484, 484, 485, 485, 485, 485, 485, 485, 485, 485, - 486, 487, 488, 489, 487, 490, 490, 492, 491, 493, - 491, 494, 494, 495, 495, 496, 496, 497, 497, 498, - 499, 499, 500, 500, 501, 501, 503, 502, 504, 504, - 505, 505, 506, 506, 508, 507, 509, 507, 510, 507, - 511, 511, 512, 512, 513, 513, 514, 514, 514, 514, - 514, 515, 515, 516, 516, 516, 518, 517, 519, 520, - 520, 521, 521 + 0, 143, 144, 145, 145, 145, 145, 145, 145, 146, + 146, 146, 146, 146, 146, 147, 148, 149, 150, 150, + 151, 151, 152, 152, 153, 154, 154, 155, 155, 155, + 155, 156, 156, 156, 156, 157, 157, 157, 157, 158, + 158, 158, 159, 159, 159, 160, 160, 160, 160, 160, + 161, 161, 161, 162, 162, 163, 163, 164, 164, 165, + 165, 166, 166, 167, 167, 168, 169, 168, 170, 170, + 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, + 171, 172, 172, 173, 174, 174, 174, 174, 174, 174, + 174, 174, 174, 176, 175, 177, 177, 178, 179, 179, + 180, 180, 181, 182, 182, 183, 183, 183, 183, 184, + 185, 185, 185, 185, 185, 186, 186, 186, 186, 186, + 187, 187, 188, 189, 189, 190, 191, 191, 192, 192, + 192, 193, 193, 194, 194, 194, 194, 194, 195, 195, + 195, 195, 195, 195, 196, 196, 197, 197, 197, 197, + 198, 198, 199, 200, 200, 201, 201, 201, 201, 201, + 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, + 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, + 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, + 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, + 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, + 201, 201, 201, 201, 201, 202, 202, 202, 204, 203, + 205, 203, 206, 206, 207, 207, 208, 208, 209, 209, + 210, 211, 212, 212, 213, 213, 213, 213, 213, 213, + 213, 214, 215, 216, 214, 217, 217, 219, 218, 220, + 218, 221, 221, 222, 222, 223, 223, 224, 225, 226, + 226, 227, 227, 228, 230, 229, 231, 231, 232, 232, + 233, 235, 234, 236, 234, 237, 234, 238, 238, 239, + 239, 240, 240, 241, 241, 241, 241, 241, 242, 242, + 243, 243, 245, 244 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 1, 1, 3, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, - 3, 2, 2, 1, 1, 1, 2, 2, 2, 1, - 2, 3, 2, 1, 1, 1, 1, 2, 2, 2, - 1, 1, 1, 1, 1, 3, 3, 3, 1, 3, - 3, 1, 3, 3, 1, 3, 3, 3, 3, 1, - 3, 3, 1, 3, 1, 3, 1, 3, 1, 3, - 1, 3, 1, 3, 1, 0, 6, 1, 3, 1, + 4, 1, 3, 2, 2, 1, 1, 1, 2, 2, + 2, 1, 2, 3, 2, 1, 1, 1, 2, 2, + 2, 1, 1, 1, 1, 1, 3, 3, 3, 1, + 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, + 1, 3, 3, 1, 3, 1, 3, 1, 3, 1, + 3, 1, 3, 1, 3, 1, 0, 6, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 3, 1, 2, 2, 4, 2, 3, 4, 2, - 3, 4, 0, 6, 2, 3, 2, 1, 1, 2, - 3, 3, 2, 3, 2, 1, 2, 1, 1, 1, - 3, 4, 6, 5, 1, 2, 3, 5, 4, 1, - 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 4, 1, 3, 1, 3, 1, 1, 1, 2, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 4, 1, 1, 3, 2, 3, - 2, 3, 3, 4, 1, 0, 3, 1, 3, 1, + 1, 1, 3, 1, 2, 2, 4, 2, 3, 4, + 2, 3, 4, 0, 6, 2, 3, 2, 1, 1, + 2, 3, 3, 2, 3, 2, 1, 2, 1, 1, + 1, 3, 4, 6, 5, 1, 2, 3, 5, 4, + 1, 2, 1, 1, 1, 4, 1, 3, 1, 3, + 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 2, 3, 2, 3, 3, 4, + 1, 0, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 0, 6, + 0, 5, 1, 2, 3, 4, 1, 3, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 0, 6, 0, 5, 1, 2, 3, 4, - 1, 3, 1, 2, 1, 3, 4, 1, 3, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 2, 0, 0, 5, 1, 1, 0, 2, 0, - 2, 2, 3, 1, 2, 1, 2, 1, 2, 5, - 3, 1, 1, 4, 1, 2, 0, 8, 0, 1, - 3, 2, 1, 2, 0, 6, 0, 8, 0, 7, - 1, 1, 1, 0, 2, 3, 2, 2, 2, 3, - 2, 1, 2, 1, 1, 1, 0, 3, 5, 1, - 3, 1, 4 + 1, 2, 0, 0, 5, 1, 1, 0, 2, 0, + 2, 2, 3, 1, 2, 1, 2, 1, 5, 3, + 1, 1, 4, 1, 0, 8, 0, 1, 3, 2, + 1, 0, 6, 0, 8, 0, 7, 1, 1, 1, + 0, 2, 3, 2, 2, 2, 3, 2, 1, 2, + 1, 1, 0, 3 }; @@ -4164,250 +2349,178 @@ yyreduce: switch (yyn) { case 2: -#line 352 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 253 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string); } -#line 4172 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2357 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 3: -#line 358 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 259 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4180 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2365 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 4: -#line 361 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 262 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } -#line 4190 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2375 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 5: -#line 366 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 267 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 4198 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2383 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 6: -#line 369 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 270 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 4206 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2391 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 7: -#line 372 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 273 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 4215 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2400 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 8: -#line 376 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 277 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 4223 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2408 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 9: -#line 380 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 284 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); + (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4232 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2416 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 10: -#line 384 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); - } -#line 4241 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 11: -#line 388 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer literal"); - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i64, (yyvsp[0].lex).loc, true); - } -#line 4250 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 12: -#line 392 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer literal"); - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u64, (yyvsp[0].lex).loc, true); - } -#line 4259 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 13: -#line 396 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit integer literal"); - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((short)(yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); - } -#line 4268 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 14: -#line 400 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit unsigned integer literal"); - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((unsigned short)(yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); - } -#line 4277 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 15: -#line 404 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double literal"); - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtDouble, (yyvsp[0].lex).loc, true); - } -#line 4286 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 16: -#line 408 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float literal"); - (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat16, (yyvsp[0].lex).loc, true); - } -#line 4295 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 17: -#line 416 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); - } -#line 4303 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 18: -#line 419 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 287 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode)); } -#line 4311 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2424 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 19: -#line 422 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 11: +#line 290 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4319 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2432 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 20: -#line 425 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 12: +#line 293 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string); } -#line 4327 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2440 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 21: -#line 428 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 13: +#line 296 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode)); parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "++", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "++", EOpPostIncrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 4337 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2450 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 22: -#line 433 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 14: +#line 301 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode)); parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "--", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "--", EOpPostDecrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 4347 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2460 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 23: -#line 441 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 15: +#line 309 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]"); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4356 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2469 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 24: -#line 448 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 16: +#line 316 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode); delete (yyvsp[0].interm).function; } -#line 4365 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2478 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 25: -#line 455 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 17: +#line 323 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); } -#line 4373 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2486 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 26: -#line 461 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 18: +#line 329 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 4382 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2495 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 27: -#line 465 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 19: +#line 333 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 4391 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2504 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 28: -#line 472 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 20: +#line 340 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-1].interm); } -#line 4399 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2512 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 29: -#line 475 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 21: +#line 343 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); } -#line 4407 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2520 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 30: -#line 481 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 22: +#line 349 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { TParameter param = { 0, new TType }; param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); @@ -4415,11 +2528,11 @@ yyreduce: (yyval.interm).function = (yyvsp[-1].interm).function; (yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode); } -#line 4419 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2532 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 31: -#line 488 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 23: +#line 356 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { TParameter param = { 0, new TType }; param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); @@ -4427,29 +2540,29 @@ yyreduce: (yyval.interm).function = (yyvsp[-2].interm).function; (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); } -#line 4431 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2544 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 32: -#line 498 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 24: +#line 366 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-1].interm); } -#line 4439 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2552 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 33: -#line 506 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 25: +#line 374 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // Constructor (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 4449 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2562 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 34: -#line 511 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 26: +#line 379 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // // Should be a method or subroutine call, but we haven't recognized the arguments yet. @@ -4477,50 +2590,40 @@ yyreduce: (yyval.interm).function = new TFunction(empty, TType(EbtVoid), EOpNull); } } -#line 4481 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2594 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 35: -#line 539 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - // Constructor - (yyval.interm).intermNode = 0; - (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); - } -#line 4491 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 36: -#line 548 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 27: +#line 410 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.variableCheck((yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); if (TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode()) parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), ""); } -#line 4502 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2605 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 37: -#line 554 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 28: +#line 416 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "++", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "++", EOpPreIncrement, (yyvsp[0].interm.intermTypedNode)); } -#line 4511 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2614 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 38: -#line 558 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 29: +#line 420 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "--", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "--", EOpPreDecrement, (yyvsp[0].interm.intermTypedNode)); } -#line 4520 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2623 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 39: -#line 562 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 30: +#line 424 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-1].interm).op != EOpNull) { char errorOp[2] = {0, 0}; @@ -4537,179 +2640,179 @@ yyreduce: (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } } -#line 4541 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2644 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 40: -#line 582 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 31: +#line 444 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; } -#line 4547 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2650 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 41: -#line 583 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 32: +#line 445 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; } -#line 4553 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2656 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 42: -#line 584 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 33: +#line 446 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; } -#line 4559 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2662 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 43: -#line 585 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 34: +#line 447 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot; parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); } -#line 4566 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2669 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 44: -#line 591 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 35: +#line 453 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4572 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2675 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 45: -#line 592 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 36: +#line 454 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "*", EOpMul, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4582 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2685 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 46: -#line 597 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 37: +#line 459 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "/", EOpDiv, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4592 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2695 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 47: -#line 602 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 38: +#line 464 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "%"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "%", EOpMod, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4603 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2706 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 48: -#line 611 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 39: +#line 473 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4609 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2712 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 49: -#line 612 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 40: +#line 474 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "+", EOpAdd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4619 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2722 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 50: -#line 617 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 41: +#line 479 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "-", EOpSub, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4629 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2732 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 51: -#line 625 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 42: +#line 487 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4635 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2738 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 52: -#line 626 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 43: +#line 488 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift left"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<<", EOpLeftShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4646 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2749 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 53: -#line 632 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 44: +#line 494 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift right"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">>", EOpRightShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4657 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2760 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 54: -#line 641 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 45: +#line 503 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4663 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2766 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 55: -#line 642 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 46: +#line 504 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<", EOpLessThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 4673 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2776 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 56: -#line 647 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 47: +#line 509 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">", EOpGreaterThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 4683 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2786 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 57: -#line 652 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 48: +#line 514 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<=", EOpLessThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 4693 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2796 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 58: -#line 657 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 49: +#line 519 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">=", EOpGreaterThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 4703 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2806 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 59: -#line 665 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 50: +#line 527 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4709 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2812 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 60: -#line 666 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 51: +#line 528 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison"); parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=="); @@ -4719,11 +2822,11 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 4723 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2826 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 61: -#line 675 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 52: +#line 537 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison"); parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!="); @@ -4733,124 +2836,124 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 4737 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2840 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 62: -#line 687 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 53: +#line 549 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4743 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2846 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 63: -#line 688 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 54: +#line 550 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise and"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&", EOpAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4754 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2857 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 64: -#line 697 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 55: +#line 559 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4760 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2863 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 65: -#line 698 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 56: +#line 560 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise exclusive or"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^", EOpExclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4771 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2874 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 66: -#line 707 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 57: +#line 569 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4777 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2880 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 67: -#line 708 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 58: +#line 570 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise inclusive or"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "|", EOpInclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 4788 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2891 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 68: -#line 717 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 59: +#line 579 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4794 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2897 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 69: -#line 718 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 60: +#line 580 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&&", EOpLogicalAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 4804 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2907 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 70: -#line 726 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 61: +#line 588 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4810 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2913 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 71: -#line 727 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 62: +#line 589 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^^", EOpLogicalXor, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 4820 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2923 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 72: -#line 735 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 63: +#line 597 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4826 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2929 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 73: -#line 736 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 64: +#line 598 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "||", EOpLogicalOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 4836 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2939 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 74: -#line 744 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 65: +#line 606 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4842 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2945 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 75: -#line 745 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 66: +#line 607 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { ++parseContext.controlFlowNestingLevel; } -#line 4850 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2953 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 76: -#line 748 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 67: +#line 610 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { --parseContext.controlFlowNestingLevel; parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-5].interm.intermTypedNode)); @@ -4863,17 +2966,17 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 4867 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2970 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 77: -#line 763 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 68: +#line 625 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4873 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2976 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 78: -#line 764 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 69: +#line 626 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.arrayObjectCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array assignment"); parseContext.opaqueCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "="); @@ -4887,119 +2990,119 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } } -#line 4891 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2994 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 79: -#line 780 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 70: +#line 642 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAssign; } -#line 4900 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3003 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 80: -#line 784 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 71: +#line 646 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpMulAssign; } -#line 4909 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3012 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 81: -#line 788 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 72: +#line 650 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpDivAssign; } -#line 4918 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3021 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 82: -#line 792 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 73: +#line 654 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "%="); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpModAssign; } -#line 4928 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3031 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 83: -#line 797 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 74: +#line 659 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAddAssign; } -#line 4937 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3040 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 84: -#line 801 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 75: +#line 663 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpSubAssign; } -#line 4946 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3049 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 85: -#line 805 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 76: +#line 667 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign; } -#line 4955 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3058 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 86: -#line 809 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 77: +#line 671 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign; } -#line 4964 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3067 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 87: -#line 813 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 78: +#line 675 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign; } -#line 4973 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3076 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 88: -#line 817 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 79: +#line 679 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign; } -#line 4982 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3085 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 89: -#line 821 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 80: +#line 683 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign; } -#line 4991 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3094 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 90: -#line 828 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 81: +#line 690 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4999 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3102 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 91: -#line 831 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 82: +#line 693 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.samplerConstructorLocationCheck((yyvsp[-1].lex).loc, ",", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.intermediate.addComma((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); @@ -5008,40 +3111,40 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 5012 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3115 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 92: -#line 842 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 83: +#line 704 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), ""); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5021 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3124 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 93: -#line 849 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 84: +#line 711 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.handleFunctionDeclarator((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).function, true /* prototype */); (yyval.interm.intermNode) = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 5031 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3134 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 94: -#line 854 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 85: +#line 716 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-1].interm).intermNode && (yyvsp[-1].interm).intermNode->getAsAggregate()) (yyvsp[-1].interm).intermNode->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm).intermNode; } -#line 5041 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3144 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 95: -#line 859 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 86: +#line 721 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.profileRequires((yyvsp[-3].lex).loc, ENoProfile, 130, 0, "precision statement"); // lazy setting of the previous scope's defaults, has effect only the first time it is called in a particular scope @@ -5049,75 +3152,75 @@ yyreduce: parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision); (yyval.interm.intermNode) = 0; } -#line 5053 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3156 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 96: -#line 866 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 87: +#line 728 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList); (yyval.interm.intermNode) = 0; } -#line 5062 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3165 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 97: -#line 870 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 88: +#line 732 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 5071 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3174 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 98: -#line 874 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 89: +#line 736 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes); (yyval.interm.intermNode) = 0; } -#line 5080 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3183 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 99: -#line 878 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 90: +#line 740 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier); parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type)); (yyval.interm.intermNode) = 0; } -#line 5090 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3193 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 100: -#line 883 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 91: +#line 745 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.checkNoShaderLayouts((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).shaderQualifiers); parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 5100 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3203 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 101: -#line 888 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 92: +#line 750 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.checkNoShaderLayouts((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).shaderQualifiers); (yyvsp[-1].interm.identifierList)->push_back((yyvsp[-2].lex).string); parseContext.addQualifierToExisting((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier, *(yyvsp[-1].interm.identifierList)); (yyval.interm.intermNode) = 0; } -#line 5111 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3214 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 102: -#line 897 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 93: +#line 759 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); } -#line 5117 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3220 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 103: -#line 897 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 94: +#line 759 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { --parseContext.structNestingLevel; parseContext.blockName = (yyvsp[-4].lex).string; @@ -5127,54 +3230,54 @@ yyreduce: (yyval.interm).loc = (yyvsp[-5].interm.type).loc; (yyval.interm).typeList = (yyvsp[-1].interm.typeList); } -#line 5131 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3234 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 104: -#line 908 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 95: +#line 770 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.identifierList) = new TIdentifierList; (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 5140 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3243 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 105: -#line 912 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 96: +#line 774 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList); (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 5149 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3252 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 106: -#line 919 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 97: +#line 781 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).function = (yyvsp[-1].interm.function); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 5158 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3261 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 107: -#line 926 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 98: +#line 788 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 5166 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3269 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 108: -#line 929 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 99: +#line 791 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 5174 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3277 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 109: -#line 936 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 100: +#line 798 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // Add the parameter (yyval.interm.function) = (yyvsp[-1].interm.function); @@ -5183,11 +3286,11 @@ yyreduce: else delete (yyvsp[0].interm).param.type; } -#line 5187 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3290 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 110: -#line 944 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 101: +#line 806 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // // Only first parameter of one-parameter functions can be void @@ -5205,11 +3308,11 @@ yyreduce: (yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param); } } -#line 5209 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3312 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 111: -#line 964 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 102: +#line 826 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-2].interm.type).qualifier.storage != EvqGlobal && (yyvsp[-2].interm.type).qualifier.storage != EvqTemporary) { parseContext.error((yyvsp[-1].lex).loc, "no qualifiers allowed for function return", @@ -5229,11 +3332,11 @@ yyreduce: function = new TFunction((yyvsp[-1].lex).string, type); (yyval.interm.function) = function; } -#line 5233 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3336 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 112: -#line 987 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 103: +#line 849 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-1].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-1].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -5249,11 +3352,11 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).param = param; } -#line 5253 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3356 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 113: -#line 1002 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 104: +#line 864 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -5273,11 +3376,11 @@ yyreduce: (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).param = param; } -#line 5277 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3380 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 114: -#line 1027 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 105: +#line 889 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) @@ -5289,11 +3392,11 @@ yyreduce: parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 5293 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3396 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 115: -#line 1038 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 106: +#line 900 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); @@ -5301,11 +3404,11 @@ yyreduce: parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); } -#line 5305 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3408 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 116: -#line 1048 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 107: +#line 910 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) @@ -5316,11 +3419,11 @@ yyreduce: parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type); parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 5320 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3423 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 117: -#line 1058 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 108: +#line 920 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); @@ -5328,120 +3431,118 @@ yyreduce: parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); } -#line 5332 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3435 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 118: -#line 1068 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 109: +#line 930 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { TParameter param = { 0, new TType((yyvsp[0].interm.type)) }; (yyval.interm).param = param; if ((yyvsp[0].interm.type).arraySizes) parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes); } -#line 5343 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3446 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 119: -#line 1077 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 110: +#line 939 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); } -#line 5351 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3454 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 120: -#line 1080 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 111: +#line 942 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-2].interm); parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type); } -#line 5360 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3463 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 121: -#line 1084 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 112: +#line 946 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-3].interm); parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes); } -#line 5369 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3472 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 122: -#line 1088 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 113: +#line 950 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).type = (yyvsp[-5].interm).type; TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-5].interm).type, (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-5].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 5379 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3482 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 123: -#line 1093 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 114: +#line 955 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).type = (yyvsp[-4].interm).type; TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 5389 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3492 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 124: -#line 1101 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 115: +#line 963 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).type = (yyvsp[0].interm.type); (yyval.interm).intermNode = 0; - parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type); - } -#line 5401 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3502 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 125: -#line 1108 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 116: +#line 968 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).type = (yyvsp[-1].interm.type); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type)); } -#line 5411 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3512 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 126: -#line 1113 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 117: +#line 973 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).type = (yyvsp[-2].interm.type); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes); } -#line 5421 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3522 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 127: -#line 1118 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 118: +#line 978 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).type = (yyvsp[-4].interm.type); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-4].interm.type), (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 5431 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3532 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 128: -#line 1123 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 119: +#line 983 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).type = (yyvsp[-3].interm.type); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 5441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3542 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 129: -#line 1132 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 120: +#line 992 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); @@ -5452,11 +3553,11 @@ yyreduce: } parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier); } -#line 5456 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3557 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 130: -#line 1142 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 121: +#line 1002 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier); parseContext.globalQualifierTypeCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, (yyvsp[0].interm.type)); @@ -5481,22 +3582,22 @@ yyreduce: (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn))) (yyval.interm.type).qualifier.smooth = true; } -#line 5485 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3586 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 131: -#line 1169 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 122: +#line 1029 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "invariant"); parseContext.profileRequires((yyval.interm.type).loc, ENoProfile, 120, 0, "invariant"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.invariant = true; } -#line 5496 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3597 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 132: -#line 1178 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 123: +#line 1038 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "smooth"); parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "smooth"); @@ -5504,11 +3605,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.smooth = true; } -#line 5508 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3609 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 133: -#line 1185 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 124: +#line 1045 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "flat"); parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "flat"); @@ -5516,160 +3617,73 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.flat = true; } -#line 5520 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3621 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 134: -#line 1193 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.globalCheck((yyvsp[0].lex).loc, "noperspective"); - parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 0, E_GL_NV_shader_noperspective_interpolation, "noperspective"); - parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "noperspective"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.nopersp = true; - } -#line 5532 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 135: -#line 1200 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.globalCheck((yyvsp[0].lex).loc, "__explicitInterpAMD"); - parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); - parseContext.profileRequires((yyvsp[0].lex).loc, ECompatibilityProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.explicitInterp = true; - } -#line 5544 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 136: -#line 1207 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.globalCheck((yyvsp[0].lex).loc, "pervertexNV"); - parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); - parseContext.profileRequires((yyvsp[0].lex).loc, ECompatibilityProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); - parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.pervertexNV = true; - } -#line 5557 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 137: -#line 1215 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - // No need for profile version or extension check. Shader stage already checks both. - parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveNV"); - parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangFragmentMask | EShLangMeshNVMask), "perprimitiveNV"); - // Fragment shader stage doesn't check for extension. So we explicitly add below extension check. - if (parseContext.language == EShLangFragment) - parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_NV_mesh_shader, "perprimitiveNV"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.perPrimitiveNV = true; - } -#line 5572 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 138: -#line 1225 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - // No need for profile version or extension check. Shader stage already checks both. - parseContext.globalCheck((yyvsp[0].lex).loc, "perviewNV"); - parseContext.requireStage((yyvsp[0].lex).loc, EShLangMeshNV, "perviewNV"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.perViewNV = true; - } -#line 5584 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 139: -#line 1232 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - // No need for profile version or extension check. Shader stage already checks both. - parseContext.globalCheck((yyvsp[0].lex).loc, "taskNV"); - parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTaskNVMask | EShLangMeshNVMask), "taskNV"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.perTaskNV = true; - } -#line 5596 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 140: -#line 1243 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 125: +#line 1056 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[-1].interm.type); } -#line 5604 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3629 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 141: -#line 1249 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 126: +#line 1062 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5612 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3637 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 142: -#line 1252 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 127: +#line 1065 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[-2].interm.type); (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 5622 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3647 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 143: -#line 1259 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 128: +#line 1072 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string); } -#line 5631 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3656 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 144: -#line 1263 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 129: +#line 1076 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[-2].lex).loc); parseContext.setLayoutQualifier((yyvsp[-2].lex).loc, (yyval.interm.type), *(yyvsp[-2].lex).string, (yyvsp[0].interm.intermTypedNode)); } -#line 5640 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3665 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 145: -#line 1267 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 130: +#line 1080 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // because "shared" is both an identifier and a keyword (yyval.interm.type).init((yyvsp[0].lex).loc); TString strShared("shared"); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), strShared); } -#line 5650 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3675 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 146: -#line 1276 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.profileRequires((yyval.interm.type).loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise"); - parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "precise"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.noContraction = true; - } -#line 5661 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 147: -#line 1286 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 131: +#line 1090 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5669 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3683 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 148: -#line 1289 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 132: +#line 1093 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[-1].interm.type); if ((yyval.interm.type).basicType == EbtVoid) @@ -5678,112 +3692,95 @@ yyreduce: (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeQualifiers((yyval.interm.type).loc, (yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 5682 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3696 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 149: -#line 1300 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 133: +#line 1104 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5690 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3704 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 150: -#line 1303 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 134: +#line 1107 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5698 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3712 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 151: -#line 1306 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 135: +#line 1110 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5707 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3721 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 152: -#line 1310 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 136: +#line 1114 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5716 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3730 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 153: -#line 1314 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 137: +#line 1118 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 5725 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3739 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 154: -#line 1319 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - // allow inheritance of storage qualifier from block declaration - (yyval.interm.type) = (yyvsp[0].interm.type); - } -#line 5734 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 155: -#line 1323 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type) = (yyvsp[0].interm.type); - } -#line 5742 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 156: -#line 1330 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 138: +#line 1126 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqConst; // will later turn into EvqConstReadOnly, if the initializer is not constant } -#line 5751 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3748 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 157: -#line 1334 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 139: +#line 1130 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "inout"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqInOut; } -#line 5761 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3758 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 158: -#line 1339 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 140: +#line 1135 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "in"); (yyval.interm.type).init((yyvsp[0].lex).loc); // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqIn; } -#line 5772 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3769 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 159: -#line 1345 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 141: +#line 1141 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "out"); (yyval.interm.type).init((yyvsp[0].lex).loc); // whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqOut; } -#line 5783 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3780 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 160: -#line 1351 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 142: +#line 1147 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, 0, "centroid"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "centroid"); @@ -5791,319 +3788,31 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.centroid = true; } -#line 5795 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3792 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 161: -#line 1358 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 143: +#line 1154 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "uniform"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqUniform; } -#line 5805 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3802 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 162: -#line 1364 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.globalCheck((yyvsp[0].lex).loc, "shared"); - parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared"); - parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 310, 0, "shared"); - parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangComputeMask | EShLangMeshNVMask | EShLangTaskNVMask), "shared"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.storage = EvqShared; - } -#line 5818 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 163: -#line 1372 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.globalCheck((yyvsp[0].lex).loc, "buffer"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.storage = EvqBuffer; - } -#line 5828 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 164: -#line 1377 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.requireStage((yyvsp[0].lex).loc, EShLangVertex, "attribute"); - parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "attribute"); - parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "attribute"); - parseContext.requireNotRemoved((yyvsp[0].lex).loc, ECoreProfile, 420, "attribute"); - parseContext.requireNotRemoved((yyvsp[0].lex).loc, EEsProfile, 300, "attribute"); - - parseContext.globalCheck((yyvsp[0].lex).loc, "attribute"); - - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.storage = EvqVaryingIn; - } -#line 5845 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 165: -#line 1389 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "varying"); - parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "varying"); - parseContext.requireNotRemoved((yyvsp[0].lex).loc, ECoreProfile, 420, "varying"); - parseContext.requireNotRemoved((yyvsp[0].lex).loc, EEsProfile, 300, "varying"); - - parseContext.globalCheck((yyvsp[0].lex).loc, "varying"); - - (yyval.interm.type).init((yyvsp[0].lex).loc); - if (parseContext.language == EShLangVertex) - (yyval.interm.type).qualifier.storage = EvqVaryingOut; - else - (yyval.interm.type).qualifier.storage = EvqVaryingIn; - } -#line 5864 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 166: -#line 1403 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.globalCheck((yyvsp[0].lex).loc, "patch"); - parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.patch = true; - } -#line 5875 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 167: -#line 1409 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.globalCheck((yyvsp[0].lex).loc, "sample"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.sample = true; - } -#line 5885 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 168: -#line 1414 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV"); - parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectNVMask | EShLangClosestHitNVMask - | EShLangAnyHitNVMask), "hitAttributeNV"); - parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "hitAttributeNV"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.storage = EvqHitAttrNV; - } -#line 5898 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 169: -#line 1422 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadNV"); - parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenNVMask | EShLangClosestHitNVMask | - EShLangAnyHitNVMask | EShLangMissNVMask), "rayPayloadNV"); - parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "rayPayloadNV"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.storage = EvqPayloadNV; - } -#line 5911 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 170: -#line 1430 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInNV"); - parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitNVMask | - EShLangAnyHitNVMask | EShLangMissNVMask), "rayPayloadInNV"); - parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "rayPayloadInNV"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.storage = EvqPayloadInNV; - } -#line 5924 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 171: -#line 1438 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataNV"); - parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenNVMask | - EShLangClosestHitNVMask | EShLangMissNVMask | EShLangCallableNVMask), "callableDataNV"); - parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "callableDataNV"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.storage = EvqCallableDataNV; - } -#line 5937 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 172: -#line 1446 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInNV"); - parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableNVMask), "callableDataInNV"); - parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "callableDataInNV"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.storage = EvqCallableDataInNV; - } -#line 5949 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 173: -#line 1453 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.coherent = true; - } -#line 5958 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 174: -#line 1457 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc); - parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "devicecoherent"); - (yyval.interm.type).qualifier.devicecoherent = true; - } -#line 5968 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 175: -#line 1462 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc); - parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "queuefamilycoherent"); - (yyval.interm.type).qualifier.queuefamilycoherent = true; - } -#line 5978 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 176: -#line 1467 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc); - parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "workgroupcoherent"); - (yyval.interm.type).qualifier.workgroupcoherent = true; - } -#line 5988 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 177: -#line 1472 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc); - parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "subgroupcoherent"); - (yyval.interm.type).qualifier.subgroupcoherent = true; - } -#line 5998 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 178: -#line 1477 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc); - parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "nonprivate"); - (yyval.interm.type).qualifier.nonprivate = true; - } -#line 6008 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 179: -#line 1482 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.volatil = true; - } -#line 6017 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 180: -#line 1486 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.restrict = true; - } -#line 6026 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 181: -#line 1490 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.readonly = true; - } -#line 6035 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 182: -#line 1494 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.writeonly = true; - } -#line 6044 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 183: -#line 1498 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.spvRemoved((yyvsp[0].lex).loc, "subroutine"); - parseContext.globalCheck((yyvsp[0].lex).loc, "subroutine"); - parseContext.unimplemented((yyvsp[0].lex).loc, "subroutine"); - (yyval.interm.type).init((yyvsp[0].lex).loc); - } -#line 6055 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 184: -#line 1504 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.spvRemoved((yyvsp[-3].lex).loc, "subroutine"); - parseContext.globalCheck((yyvsp[-3].lex).loc, "subroutine"); - parseContext.unimplemented((yyvsp[-3].lex).loc, "subroutine"); - (yyval.interm.type).init((yyvsp[-3].lex).loc); - } -#line 6066 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 185: -#line 1515 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc); - (yyval.interm.type).qualifier.nonUniform = true; - } -#line 6075 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 186: -#line 1522 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - // TODO - } -#line 6083 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 187: -#line 1525 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - // TODO: 4.0 semantics: subroutines - // 1) make sure each identifier is a type declared earlier with SUBROUTINE - // 2) save all of the identifiers for future comparison with the declared function - } -#line 6093 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 188: -#line 1534 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 144: +#line 1165 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[-1].interm.type); (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); (yyval.interm.type).typeParameters = (yyvsp[0].interm.typeParameters); } -#line 6103 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3812 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 189: -#line 1539 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 145: +#line 1170 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.arrayOfArrayVersionCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes); (yyval.interm.type) = (yyvsp[-2].interm.type); @@ -6111,21 +3820,21 @@ yyreduce: (yyval.interm.type).typeParameters = (yyvsp[-1].interm.typeParameters); (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes; } -#line 6115 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3824 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 190: -#line 1549 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 146: +#line 1180 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).arraySizes = new TArraySizes; (yyval.interm).arraySizes->addInnerSize(); } -#line 6125 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3834 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 191: -#line 1554 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 147: +#line 1185 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[-2].lex).loc; (yyval.interm).arraySizes = new TArraySizes; @@ -6134,20 +3843,20 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 6138 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3847 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 192: -#line 1562 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 148: +#line 1193 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-2].interm); (yyval.interm).arraySizes->addInnerSize(); } -#line 6147 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3856 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 193: -#line 1566 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 149: +#line 1197 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-3].interm); @@ -6155,35 +3864,35 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 6159 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3868 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 194: -#line 1576 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 150: +#line 1207 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeParameters) = (yyvsp[0].interm.typeParameters); } -#line 6167 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3876 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 195: -#line 1579 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 151: +#line 1210 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeParameters) = 0; } -#line 6175 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3884 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 196: -#line 1585 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 152: +#line 1216 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeParameters) = (yyvsp[-1].interm.typeParameters); } -#line 6183 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3892 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 197: -#line 1591 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 153: +#line 1222 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeParameters) = new TArraySizes; @@ -6191,11 +3900,11 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); (yyval.interm.typeParameters)->addInnerSize(size); } -#line 6195 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3904 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 198: -#line 1598 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 154: +#line 1229 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeParameters) = (yyvsp[-2].interm.typeParameters); @@ -6203,3038 +3912,600 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); (yyval.interm.typeParameters)->addInnerSize(size); } -#line 6207 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3916 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 199: -#line 1608 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 155: +#line 1239 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtVoid; } -#line 6216 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3925 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 200: -#line 1612 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 156: +#line 1243 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 6225 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3934 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 201: -#line 1616 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 157: +#line 1247 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 6234 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3943 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 202: -#line 1620 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 158: +#line 1251 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 6244 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3953 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 203: -#line 1625 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 159: +#line 1256 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; } -#line 6253 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3962 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 204: -#line 1629 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 160: +#line 1260 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 6263 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3972 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 205: -#line 1634 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 161: +#line 1265 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 6273 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3982 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 206: -#line 1639 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 162: +#line 1270 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 6283 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3992 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 207: -#line 1644 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 163: +#line 1275 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(2); } -#line 6293 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4002 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 208: -#line 1649 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 164: +#line 1280 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(3); } -#line 6303 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4012 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 209: -#line 1654 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 165: +#line 1285 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(4); } -#line 6313 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4022 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 210: -#line 1659 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 166: +#line 1290 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 6323 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4032 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 211: -#line 1664 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 167: +#line 1295 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 6333 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4042 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 212: -#line 1669 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 168: +#line 1300 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 6343 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4052 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 213: -#line 1674 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 169: +#line 1305 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 6354 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4063 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 214: -#line 1680 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 170: +#line 1311 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 6365 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4074 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 215: -#line 1686 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 171: +#line 1317 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 6376 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4085 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 216: -#line 1692 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 172: +#line 1323 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 6386 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4095 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 217: -#line 1697 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 173: +#line 1328 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 6396 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4105 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 218: -#line 1702 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 174: +#line 1333 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 6406 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4115 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 219: -#line 1707 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 175: +#line 1338 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 6416 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4125 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 220: -#line 1712 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 176: +#line 1343 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 6426 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4135 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 221: -#line 1717 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 177: +#line 1348 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 6436 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4145 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 222: -#line 1722 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 178: +#line 1353 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 6446 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4155 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 223: -#line 1727 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 179: +#line 1358 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 6456 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4165 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 224: -#line 1732 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 180: +#line 1363 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 6466 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4175 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 225: -#line 1737 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 181: +#line 1368 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 6476 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4185 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 226: -#line 1742 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 182: +#line 1373 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 6486 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4195 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 227: -#line 1747 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 183: +#line 1378 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 6496 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4205 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 228: -#line 1753 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - } -#line 6506 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 229: -#line 1758 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "float16_t", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - } -#line 6516 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 230: -#line 1763 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - } -#line 6526 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 231: -#line 1768 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - } -#line 6536 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 232: -#line 1773 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt8; - } -#line 6546 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 233: -#line 1778 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint8; - } -#line 6556 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 234: -#line 1783 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt16; - } -#line 6566 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 235: -#line 1788 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint16; - } -#line 6576 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 236: -#line 1793 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt; - } -#line 6586 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 237: -#line 1798 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint; - } -#line 6596 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 238: -#line 1803 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt64; - } -#line 6606 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 239: -#line 1808 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint64; - } -#line 6616 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 240: -#line 1813 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setVector(2); - } -#line 6627 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 241: -#line 1819 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setVector(3); - } -#line 6638 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 242: -#line 1825 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setVector(4); - } -#line 6649 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 243: -#line 1831 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setVector(2); - } -#line 6660 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 244: -#line 1837 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setVector(3); - } -#line 6671 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 245: -#line 1843 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setVector(4); - } -#line 6682 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 246: -#line 1849 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setVector(2); - } -#line 6693 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 247: -#line 1855 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setVector(3); - } -#line 6704 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 248: -#line 1861 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setVector(4); - } -#line 6715 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 249: -#line 1867 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setVector(2); - } -#line 6726 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 250: -#line 1873 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setVector(3); - } -#line 6737 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 251: -#line 1879 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setVector(4); - } -#line 6748 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 252: -#line 1885 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt8; - (yyval.interm.type).setVector(2); - } -#line 6759 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 253: -#line 1891 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt8; - (yyval.interm.type).setVector(3); - } -#line 6770 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 254: -#line 1897 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt8; - (yyval.interm.type).setVector(4); - } -#line 6781 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 255: -#line 1903 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt16; - (yyval.interm.type).setVector(2); - } -#line 6792 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 256: -#line 1909 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt16; - (yyval.interm.type).setVector(3); - } -#line 6803 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 257: -#line 1915 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt16; - (yyval.interm.type).setVector(4); - } -#line 6814 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 258: -#line 1921 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt; - (yyval.interm.type).setVector(2); - } -#line 6825 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 259: -#line 1927 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt; - (yyval.interm.type).setVector(3); - } -#line 6836 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 260: -#line 1933 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt; - (yyval.interm.type).setVector(4); - } -#line 6847 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 261: -#line 1939 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt64; - (yyval.interm.type).setVector(2); - } -#line 6858 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 262: -#line 1945 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt64; - (yyval.interm.type).setVector(3); - } -#line 6869 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 263: -#line 1951 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt64; - (yyval.interm.type).setVector(4); - } -#line 6880 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 264: -#line 1957 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint8; - (yyval.interm.type).setVector(2); - } -#line 6891 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 265: -#line 1963 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint8; - (yyval.interm.type).setVector(3); - } -#line 6902 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 266: -#line 1969 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint8; - (yyval.interm.type).setVector(4); - } -#line 6913 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 267: -#line 1975 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint16; - (yyval.interm.type).setVector(2); - } -#line 6924 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 268: -#line 1981 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint16; - (yyval.interm.type).setVector(3); - } -#line 6935 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 269: -#line 1987 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint16; - (yyval.interm.type).setVector(4); - } -#line 6946 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 270: -#line 1993 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint; - (yyval.interm.type).setVector(2); - } -#line 6957 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 271: -#line 1999 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint; - (yyval.interm.type).setVector(3); - } -#line 6968 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 272: -#line 2005 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint; - (yyval.interm.type).setVector(4); - } -#line 6979 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 273: -#line 2011 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint64; - (yyval.interm.type).setVector(2); - } -#line 6990 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 274: -#line 2017 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint64; - (yyval.interm.type).setVector(3); - } -#line 7001 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 275: -#line 2023 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint64; - (yyval.interm.type).setVector(4); - } -#line 7012 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 276: -#line 2029 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(2, 2); - } -#line 7023 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 277: -#line 2035 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(3, 3); - } -#line 7034 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 278: -#line 2041 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(4, 4); - } -#line 7045 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 279: -#line 2047 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(2, 2); - } -#line 7056 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 280: -#line 2053 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(2, 3); - } -#line 7067 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 281: -#line 2059 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(2, 4); - } -#line 7078 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 282: -#line 2065 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(3, 2); - } -#line 7089 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 283: -#line 2071 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(3, 3); - } -#line 7100 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 284: -#line 2077 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(3, 4); - } -#line 7111 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 285: -#line 2083 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(4, 2); - } -#line 7122 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 286: -#line 2089 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(4, 3); - } -#line 7133 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 287: -#line 2095 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(4, 4); - } -#line 7144 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 288: -#line 2101 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(2, 2); - } -#line 7155 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 289: -#line 2107 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(3, 3); - } -#line 7166 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 290: -#line 2113 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(4, 4); - } -#line 7177 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 291: -#line 2119 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(2, 2); - } -#line 7188 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 292: -#line 2125 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(2, 3); - } -#line 7199 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 293: -#line 2131 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(2, 4); - } -#line 7210 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 294: -#line 2137 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(3, 2); - } -#line 7221 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 295: -#line 2143 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(3, 3); - } -#line 7232 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 296: -#line 2149 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(3, 4); - } -#line 7243 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 297: -#line 2155 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(4, 2); - } -#line 7254 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 298: -#line 2161 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(4, 3); - } -#line 7265 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 299: -#line 2167 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat16; - (yyval.interm.type).setMatrix(4, 4); - } -#line 7276 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 300: -#line 2173 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 2); - } -#line 7287 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 301: -#line 2179 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(3, 3); - } -#line 7298 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 302: -#line 2185 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(4, 4); - } -#line 7309 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 303: -#line 2191 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 2); - } -#line 7320 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 304: -#line 2197 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 3); - } -#line 7331 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 305: -#line 2203 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 4); - } -#line 7342 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 306: -#line 2209 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(3, 2); - } -#line 7353 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 307: -#line 2215 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(3, 3); - } -#line 7364 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 308: -#line 2221 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(3, 4); - } -#line 7375 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 309: -#line 2227 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(4, 2); - } -#line 7386 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 310: -#line 2233 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(4, 3); - } -#line 7397 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 311: -#line 2239 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(4, 4); - } -#line 7408 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 312: -#line 2245 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(2, 2); - } -#line 7419 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 313: -#line 2251 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(3, 3); - } -#line 7430 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 314: -#line 2257 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(4, 4); - } -#line 7441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 315: -#line 2263 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(2, 2); - } -#line 7452 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 316: -#line 2269 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(2, 3); - } -#line 7463 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 317: -#line 2275 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(2, 4); - } -#line 7474 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 318: -#line 2281 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(3, 2); - } -#line 7485 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 319: -#line 2287 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(3, 3); - } -#line 7496 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 320: -#line 2293 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(3, 4); - } -#line 7507 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 321: -#line 2299 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(4, 2); - } -#line 7518 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 322: -#line 2305 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(4, 3); - } -#line 7529 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 323: -#line 2311 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtDouble; - (yyval.interm.type).setMatrix(4, 4); - } -#line 7540 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 324: -#line 2317 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtAccStructNV; - } -#line 7549 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 325: -#line 2321 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.vulkanRemoved((yyvsp[0].lex).loc, "atomic counter types"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtAtomicUint; - } -#line 7559 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 326: -#line 2326 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, Esd1D); - } -#line 7569 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 327: -#line 2332 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 184: +#line 1384 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); } -#line 7579 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4215 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 328: -#line 2337 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 185: +#line 1389 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd3D); } -#line 7589 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4225 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 329: -#line 2342 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 186: +#line 1394 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube); } -#line 7599 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4235 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 330: -#line 2347 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 187: +#line 1399 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true); } -#line 7609 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4245 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 331: -#line 2352 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 188: +#line 1404 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true); } -#line 7619 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4255 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 332: -#line 2358 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true); - } -#line 7629 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 333: -#line 2363 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true); - } -#line 7639 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 334: -#line 2368 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true); - } -#line 7649 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 335: -#line 2374 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 189: +#line 1409 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true); } -#line 7659 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4265 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 336: -#line 2379 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 190: +#line 1414 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true); } -#line 7669 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4275 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 337: -#line 2384 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true); - } -#line 7679 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 338: -#line 2389 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true); - } -#line 7689 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 339: -#line 2395 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, Esd1D); - } -#line 7700 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 340: -#line 2401 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, Esd2D); - } -#line 7711 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 341: -#line 2407 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, Esd3D); - } -#line 7722 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 342: -#line 2413 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, EsdCube); - } -#line 7733 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 343: -#line 2419 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, false, true); - } -#line 7744 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 344: -#line 2425 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, true); - } -#line 7755 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 345: -#line 2431 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, false, true); - } -#line 7766 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 346: -#line 2437 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true); - } -#line 7777 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 347: -#line 2443 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true); - } -#line 7788 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 348: -#line 2449 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true, true); - } -#line 7799 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 349: -#line 2455 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, true); - } -#line 7810 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 350: -#line 2461 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true); - } -#line 7821 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 351: -#line 2467 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true, true); - } -#line 7832 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 352: -#line 2473 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, Esd1D); - } -#line 7842 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 353: -#line 2479 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 191: +#line 1420 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D); } -#line 7852 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4285 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 354: -#line 2484 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 192: +#line 1425 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd3D); } -#line 7862 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4295 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 355: -#line 2489 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 193: +#line 1430 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube); } -#line 7872 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4305 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 356: -#line 2495 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, Esd1D, true); - } -#line 7882 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 357: -#line 2501 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 194: +#line 1435 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true); } -#line 7892 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4315 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 358: -#line 2506 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, EsdCube, true); - } -#line 7902 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 359: -#line 2512 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, Esd1D); - } -#line 7912 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 360: -#line 2518 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 195: +#line 1440 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D); } -#line 7922 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4325 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 361: -#line 2523 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 196: +#line 1445 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd3D); } -#line 7932 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4335 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 362: -#line 2528 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 197: +#line 1450 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube); } -#line 7942 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4345 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 363: -#line 2534 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, Esd1D, true); - } -#line 7952 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 364: -#line 2540 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 198: +#line 1456 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true); } -#line 7962 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4355 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 365: -#line 2545 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, EsdCube, true); - } -#line 7972 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 366: -#line 2551 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, EsdRect); - } -#line 7982 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 367: -#line 2556 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true); - } -#line 7992 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 368: -#line 2561 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, EsdRect); - } -#line 8003 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 369: -#line 2567 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, EsdRect, false, true); - } -#line 8014 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 370: -#line 2573 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, EsdRect); - } -#line 8024 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 371: -#line 2578 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, EsdRect); - } -#line 8034 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 372: -#line 2583 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer); - } -#line 8044 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 373: -#line 2588 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, EsdBuffer); - } -#line 8055 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 374: -#line 2594 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, EsdBuffer); - } -#line 8065 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 375: -#line 2599 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, EsdBuffer); - } -#line 8075 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 376: -#line 2604 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true); - } -#line 8085 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 377: -#line 2609 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, false, true); - } -#line 8096 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 378: -#line 2615 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true); - } -#line 8106 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 379: -#line 2620 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true); - } -#line 8116 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 380: -#line 2625 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true); - } -#line 8126 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 381: -#line 2630 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, false, true); - } -#line 8137 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 382: -#line 2636 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true); - } -#line 8147 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 383: -#line 2641 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true); - } -#line 8157 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 384: -#line 2646 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setPureSampler(false); - } -#line 8167 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 385: -#line 2651 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setPureSampler(true); - } -#line 8177 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 386: -#line 2656 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D); - } -#line 8187 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 387: -#line 2661 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D); - } -#line 8198 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 388: -#line 2667 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 199: +#line 1461 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D); } -#line 8208 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4365 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 389: -#line 2672 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D); - } -#line 8219 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 390: -#line 2678 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 200: +#line 1466 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D); } -#line 8229 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4375 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 391: -#line 2683 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd3D); - } -#line 8240 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 392: -#line 2689 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube); - } -#line 8250 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 393: -#line 2694 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube); - } -#line 8261 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 394: -#line 2700 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true); - } -#line 8271 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 395: -#line 2705 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D, true); - } -#line 8282 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 396: -#line 2711 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 201: +#line 1471 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true); } -#line 8292 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4385 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 397: -#line 2716 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true); - } -#line 8303 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 398: -#line 2722 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 202: +#line 1476 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true); + (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube); } -#line 8313 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4395 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 399: -#line 2727 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube, true); - } -#line 8324 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 400: -#line 2733 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D); - } -#line 8334 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 401: -#line 2738 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 203: +#line 1481 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D); } -#line 8344 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4405 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 402: -#line 2743 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 204: +#line 1486 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D); } -#line 8354 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4415 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 403: -#line 2748 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 205: +#line 1491 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube); } -#line 8364 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4425 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 404: -#line 2753 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true); - } -#line 8374 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 405: -#line 2758 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 206: +#line 1496 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true); } -#line 8384 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4435 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 406: -#line 2763 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true); - } -#line 8394 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 407: -#line 2768 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D); - } -#line 8404 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 408: -#line 2773 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 207: +#line 1501 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D); } -#line 8414 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4445 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 409: -#line 2778 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 208: +#line 1506 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D); } -#line 8424 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4455 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 410: -#line 2783 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 209: +#line 1511 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube); } -#line 8434 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4465 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 411: -#line 2788 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true); - } -#line 8444 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 412: -#line 2793 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 210: +#line 1516 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true); } -#line 8454 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4475 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 413: -#line 2798 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 211: +#line 1521 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true); + (yyval.interm.type).sampler.setPureSampler(false); } -#line 8464 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4485 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 414: -#line 2803 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 212: +#line 1526 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect); + (yyval.interm.type).sampler.setPureSampler(true); } -#line 8474 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4495 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 415: -#line 2808 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdRect); - } -#line 8485 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 416: -#line 2814 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, EsdRect); - } -#line 8495 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 417: -#line 2819 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, EsdRect); - } -#line 8505 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 418: -#line 2824 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer); - } -#line 8515 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 419: -#line 2829 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdBuffer); - } -#line 8526 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 420: -#line 2835 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer); - } -#line 8536 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 421: -#line 2840 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer); - } -#line 8546 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 422: -#line 2845 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true); - } -#line 8556 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 423: -#line 2850 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, false, false, true); - } -#line 8567 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 424: -#line 2856 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true); - } -#line 8577 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 425: -#line 2861 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true); - } -#line 8587 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 426: -#line 2866 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true); - } -#line 8597 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 427: -#line 2871 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true, false, true); - } -#line 8608 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 428: -#line 2877 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true); - } -#line 8618 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 429: -#line 2882 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true); - } -#line 8628 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 430: -#line 2887 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D); - } -#line 8638 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 431: -#line 2892 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D); - } -#line 8649 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 432: -#line 2898 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, Esd1D); - } -#line 8659 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 433: -#line 2903 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, Esd1D); - } -#line 8669 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 434: -#line 2908 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D); - } -#line 8679 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 435: -#line 2913 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D); - } -#line 8690 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 436: -#line 2919 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, Esd2D); - } -#line 8700 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 437: -#line 2924 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, Esd2D); - } -#line 8710 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 438: -#line 2929 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, Esd3D); - } -#line 8720 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 439: -#line 2934 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat16, Esd3D); - } -#line 8731 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 440: -#line 2940 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, Esd3D); - } -#line 8741 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 441: -#line 2945 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, Esd3D); - } -#line 8751 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 442: -#line 2950 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, EsdRect); - } -#line 8761 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 443: -#line 2955 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat16, EsdRect); - } -#line 8772 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 444: -#line 2961 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, EsdRect); - } -#line 8782 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 445: -#line 2966 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, EsdRect); - } -#line 8792 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 446: -#line 2971 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube); - } -#line 8802 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 447: -#line 2976 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube); - } -#line 8813 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 448: -#line 2982 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, EsdCube); - } -#line 8823 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 449: -#line 2987 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, EsdCube); - } -#line 8833 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 450: -#line 2992 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer); - } -#line 8843 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 451: -#line 2997 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat16, EsdBuffer); - } -#line 8854 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 452: -#line 3003 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer); - } -#line 8864 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 453: -#line 3008 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer); - } -#line 8874 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 454: -#line 3013 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true); - } -#line 8884 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 455: -#line 3018 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D, true); - } -#line 8895 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 456: -#line 3024 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true); - } -#line 8905 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 457: -#line 3029 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true); - } -#line 8915 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 458: -#line 3034 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true); - } -#line 8925 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 459: -#line 3039 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true); - } -#line 8936 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 460: -#line 3045 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true); - } -#line 8946 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 461: -#line 3050 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true); - } -#line 8956 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 462: -#line 3055 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true); - } -#line 8966 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 463: -#line 3060 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube, true); - } -#line 8977 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 464: -#line 3066 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true); - } -#line 8987 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 465: -#line 3071 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true); - } -#line 8997 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 466: -#line 3076 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true); - } -#line 9007 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 467: -#line 3081 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, false, false, true); - } -#line 9018 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 468: -#line 3087 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true); - } -#line 9028 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 469: -#line 3092 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true); - } -#line 9038 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 470: -#line 3097 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true); - } -#line 9048 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 471: -#line 3102 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true, false, true); - } -#line 9059 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 472: -#line 3108 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true); - } -#line 9069 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 473: -#line 3113 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true); - } -#line 9079 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 474: -#line 3118 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { // GL_OES_EGL_image_external - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, Esd2D); - (yyval.interm.type).sampler.external = true; - } -#line 9090 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 475: -#line 3124 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { // GL_EXT_YUV_target - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, Esd2D); - (yyval.interm.type).sampler.yuv = true; - } -#line 9101 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 476: -#line 3130 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setSubpass(EbtFloat); - } -#line 9112 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 477: -#line 3136 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setSubpass(EbtFloat, true); - } -#line 9123 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 478: -#line 3142 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); - parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setSubpass(EbtFloat16); - } -#line 9135 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 479: -#line 3149 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); - parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setSubpass(EbtFloat16, true); - } -#line 9147 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 480: -#line 3156 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setSubpass(EbtInt); - } -#line 9158 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 481: -#line 3162 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setSubpass(EbtInt, true); - } -#line 9169 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 482: -#line 3168 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setSubpass(EbtUint); - } -#line 9180 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 483: -#line 3174 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setSubpass(EbtUint, true); - } -#line 9191 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 484: -#line 3180 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.fcoopmatCheck((yyvsp[0].lex).loc, "fcoopmatNV", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).coopmat = true; - } -#line 9202 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 485: -#line 3186 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.intcoopmatCheck((yyvsp[0].lex).loc, "icoopmatNV", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt; - (yyval.interm.type).coopmat = true; - } -#line 9213 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 486: -#line 3192 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.intcoopmatCheck((yyvsp[0].lex).loc, "ucoopmatNV", parseContext.symbolTable.atBuiltInLevel()); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint; - (yyval.interm.type).coopmat = true; - } -#line 9224 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 487: -#line 3199 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 213: +#line 1532 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type)); } -#line 9234 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4505 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 488: -#line 3204 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 214: +#line 1537 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // // This is for user defined type names. The lexical phase looked up the @@ -9248,47 +4519,47 @@ yyreduce: } else parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), ""); } -#line 9252 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4523 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 489: -#line 3220 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 215: +#line 1553 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "highp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh); } -#line 9262 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4533 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 490: -#line 3225 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 216: +#line 1558 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium); } -#line 9272 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4543 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 491: -#line 3230 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 217: +#line 1563 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow); } -#line 9282 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4553 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 492: -#line 3238 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 218: +#line 1571 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); } -#line 9288 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4559 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 493: -#line 3238 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 219: +#line 1571 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { TType* structure = new TType((yyvsp[-1].interm.typeList), *(yyvsp[-4].lex).string); parseContext.structArrayCheck((yyvsp[-4].lex).loc, *structure); @@ -9300,17 +4571,17 @@ yyreduce: (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 9304 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4575 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 494: -#line 3249 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 220: +#line 1582 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); } -#line 9310 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4581 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 495: -#line 3249 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 221: +#line 1582 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { TType* structure = new TType((yyvsp[-1].interm.typeList), TString("")); (yyval.interm.type).init((yyvsp[-4].lex).loc); @@ -9318,19 +4589,19 @@ yyreduce: (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 9322 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4593 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 496: -#line 3259 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 222: +#line 1592 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeList) = (yyvsp[0].interm.typeList); } -#line 9330 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4601 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 497: -#line 3262 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 223: +#line 1595 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeList) = (yyvsp[-1].interm.typeList); for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) { @@ -9341,11 +4612,11 @@ yyreduce: (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]); } } -#line 9345 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4616 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 498: -#line 3275 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 224: +#line 1608 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -9368,11 +4639,11 @@ yyreduce: (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 9372 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4643 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 499: -#line 3297 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 225: +#line 1630 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -9397,38 +4668,38 @@ yyreduce: (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 9401 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4672 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 500: -#line 3324 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 226: +#line 1657 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeList) = new TTypeList; (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 9410 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4681 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 501: -#line 3328 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 227: +#line 1661 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 9418 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4689 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 502: -#line 3334 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 228: +#line 1667 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeLine).type = new TType(EbtVoid); (yyval.interm.typeLine).loc = (yyvsp[0].lex).loc; (yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string); } -#line 9428 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4699 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 503: -#line 3339 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 229: +#line 1672 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes); @@ -9437,235 +4708,181 @@ yyreduce: (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string); (yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes); } -#line 9441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4712 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 504: -#line 3350 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 230: +#line 1683 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 9449 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4720 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 505: -#line 3354 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - const char* initFeature = "{ } style initializers"; - parseContext.requireProfile((yyvsp[-2].lex).loc, ~EEsProfile, initFeature); - parseContext.profileRequires((yyvsp[-2].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); - (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); - } -#line 9460 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 506: -#line 3360 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - const char* initFeature = "{ } style initializers"; - parseContext.requireProfile((yyvsp[-3].lex).loc, ~EEsProfile, initFeature); - parseContext.profileRequires((yyvsp[-3].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); - (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); - } -#line 9471 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 507: -#line 3371 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc()); - } -#line 9479 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 508: -#line 3374 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - } -#line 9487 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 509: -#line 3381 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 231: +#line 1692 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9493 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4726 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 510: -#line 3385 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 232: +#line 1696 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9499 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4732 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 511: -#line 3386 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 233: +#line 1697 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9505 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4738 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 512: -#line 3392 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 234: +#line 1703 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9511 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4744 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 513: -#line 3393 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 235: +#line 1704 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9517 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4750 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 514: -#line 3394 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 236: +#line 1705 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9523 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4756 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 515: -#line 3395 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 237: +#line 1706 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9529 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4762 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 516: -#line 3396 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 238: +#line 1707 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9535 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4768 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 517: -#line 3397 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 239: +#line 1708 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9541 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4774 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 518: -#line 3398 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 240: +#line 1709 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9547 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4780 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 519: -#line 3400 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9553 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 520: -#line 3406 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "demote"); - parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_demote_to_helper_invocation, "demote"); - (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDemote, (yyvsp[-1].lex).loc); - } -#line 9563 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 521: -#line 3415 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 241: +#line 1716 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; } -#line 9569 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4786 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 522: -#line 3416 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 242: +#line 1717 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; } -#line 9578 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4795 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 523: -#line 3420 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 243: +#line 1721 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; } -#line 9587 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4804 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 524: -#line 3424 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 244: +#line 1725 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate()) (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode); } -#line 9597 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4814 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 525: -#line 3432 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 245: +#line 1733 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9603 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4820 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 526: -#line 3433 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 246: +#line 1734 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9609 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4826 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 527: -#line 3437 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 247: +#line 1738 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { ++parseContext.controlFlowNestingLevel; } -#line 9617 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4834 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 528: -#line 3440 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 248: +#line 1741 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9626 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4843 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 529: -#line 3444 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 249: +#line 1745 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 9636 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4853 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 530: -#line 3449 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 250: +#line 1750 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9647 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4864 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 531: -#line 3458 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 251: +#line 1759 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; } -#line 9655 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4872 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 532: -#line 3461 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 252: +#line 1762 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate()) (yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode); } -#line 9665 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4882 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 533: -#line 3469 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 253: +#line 1770 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || @@ -9674,11 +4891,11 @@ yyreduce: (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case } } -#line 9678 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4895 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 534: -#line 3477 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 254: +#line 1778 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { @@ -9687,76 +4904,67 @@ yyreduce: } else (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 9691 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4908 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 535: -#line 3488 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 255: +#line 1789 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; } -#line 9697 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4914 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 536: -#line 3489 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 256: +#line 1790 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = static_cast((yyvsp[-1].interm.intermTypedNode)); } -#line 9703 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4920 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 537: -#line 3493 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 257: +#line 1794 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9711 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4928 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 538: -#line 3497 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); - } -#line 9720 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 539: -#line 3504 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 258: +#line 1800 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode)); (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc); } -#line 9729 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4937 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 540: -#line 3511 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 259: +#line 1807 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode); } -#line 9738 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4946 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 541: -#line 3515 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 260: +#line 1811 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode); (yyval.interm.nodePair).node2 = 0; } -#line 9747 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4955 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 542: -#line 3523 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 261: +#line 1819 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)); } -#line 9756 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4964 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 543: -#line 3527 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 262: +#line 1823 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type)); @@ -9767,28 +4975,19 @@ yyreduce: else (yyval.interm.intermTypedNode) = 0; } -#line 9771 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4979 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 544: -#line 3540 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 263: +#line 1836 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9779 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4987 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 545: -#line 3544 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); - } -#line 9788 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 546: -#line 3551 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 264: +#line 1842 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // start new switch sequence on the switch stack ++parseContext.controlFlowNestingLevel; @@ -9797,11 +4996,11 @@ yyreduce: parseContext.switchLevel.push_back(parseContext.statementNestingLevel); parseContext.symbolTable.push(); } -#line 9801 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5000 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 547: -#line 3559 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 265: +#line 1850 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0); delete parseContext.switchSequenceStack.back(); @@ -9811,27 +5010,27 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 9815 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5014 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 548: -#line 3571 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 266: +#line 1862 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; } -#line 9823 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5022 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 549: -#line 3574 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 267: +#line 1865 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9831 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5030 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 550: -#line 3580 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 268: +#line 1871 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -9844,11 +5043,11 @@ yyreduce: (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc); } } -#line 9848 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5047 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 551: -#line 3592 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 269: +#line 1883 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -9858,28 +5057,19 @@ yyreduce: else (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc); } -#line 9862 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5061 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 552: -#line 3604 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 270: +#line 1895 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9870 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5069 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 553: -#line 3608 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); - } -#line 9879 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 554: -#line 3615 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 271: +#line 1901 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", ""); @@ -9888,11 +5078,11 @@ yyreduce: ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 9892 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5082 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 555: -#line 3623 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 272: +#line 1909 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc); @@ -9900,21 +5090,21 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 9904 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5094 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 556: -#line 3630 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 273: +#line 1916 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 9914 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5104 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 557: -#line 3635 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 274: +#line 1921 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", ""); @@ -9926,22 +5116,22 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 9930 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5120 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 558: -#line 3646 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 275: +#line 1932 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 9941 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5131 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 559: -#line 3652 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 276: +#line 1938 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc); @@ -9954,81 +5144,81 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 9958 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5148 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 560: -#line 3667 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 277: +#line 1953 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9966 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5156 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 561: -#line 3670 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 278: +#line 1956 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 9974 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5164 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 562: -#line 3676 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 279: +#line 1962 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 9982 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5172 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 563: -#line 3679 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 280: +#line 1965 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = 0; } -#line 9990 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5180 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 564: -#line 3685 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 281: +#line 1971 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); (yyval.interm.nodePair).node2 = 0; } -#line 9999 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5189 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 565: -#line 3689 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 282: +#line 1975 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode); } -#line 10008 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5198 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 566: -#line 3696 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 283: +#line 1982 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if (parseContext.loopNestingLevel <= 0) parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc); } -#line 10018 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5208 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 567: -#line 3701 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 284: +#line 1987 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0) parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc); } -#line 10028 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5218 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 568: -#line 3706 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 285: +#line 1992 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc); if (parseContext.currentFunctionType->getBasicType() != EbtVoid) @@ -10036,83 +5226,73 @@ yyreduce: if (parseContext.inMain) parseContext.postEntryPointReturn = true; } -#line 10040 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5230 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 569: -#line 3713 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 286: +#line 1999 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); } -#line 10048 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5238 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 570: -#line 3716 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 287: +#line 2002 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc); } -#line 10057 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5247 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 571: -#line 3725 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 288: +#line 2011 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } -#line 10066 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5256 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 572: -#line 3729 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 289: +#line 2015 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[0].interm.intermNode) != nullptr) { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } } -#line 10077 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5267 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 573: -#line 3738 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 290: +#line 2024 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10085 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5275 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 574: -#line 3741 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 291: +#line 2027 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10093 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5283 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 575: -#line 3745 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "extraneous semicolon"); - parseContext.profileRequires((yyvsp[0].lex).loc, ~EEsProfile, 460, nullptr, "extraneous semicolon"); - (yyval.interm.intermNode) = nullptr; - } -#line 10103 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 576: -#line 3754 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 292: +#line 2034 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyvsp[0].interm).function = parseContext.handleFunctionDeclarator((yyvsp[0].interm).loc, *(yyvsp[0].interm).function, false /* not prototype */); (yyvsp[0].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[0].interm).loc, *(yyvsp[0].interm).function); } -#line 10112 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5292 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 577: -#line 3758 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 293: +#line 2038 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // May be best done as post process phase on intermediate code if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) @@ -10128,52 +5308,11 @@ yyreduce: (yyval.interm.intermNode)->getAsAggregate()->setDebug(parseContext.contextPragma.debug); (yyval.interm.intermNode)->getAsAggregate()->setPragmaTable(parseContext.contextPragma.pragmaTable); } -#line 10132 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 578: -#line 3777 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.attributes) = (yyvsp[-2].interm.attributes); - parseContext.requireExtensions((yyvsp[-4].lex).loc, 1, &E_GL_EXT_control_flow_attributes, "attribute"); - } -#line 10141 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 579: -#line 3783 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.attributes) = (yyvsp[0].interm.attributes); - } -#line 10149 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 580: -#line 3786 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes)); - } -#line 10157 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 581: -#line 3791 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string); - } -#line 10165 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 582: -#line 3794 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode)); - } -#line 10173 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5312 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; -#line 10177 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5316 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -10401,5 +5540,5 @@ yyreturn: #endif return yyresult; } -#line 3799 "MachineIndependent/glslang.y" /* yacc.c:1906 */ +#line 2057 "MachineIndependent/glslang.y" /* yacc.c:1906 */ diff --git a/glslang/MachineIndependent/glslang_tab.cpp.h b/glslang/MachineIndependent/glslang_tab.cpp.h index f3f0251f..5b9a17ee 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp.h +++ b/glslang/MachineIndependent/glslang_tab.cpp.h @@ -89,370 +89,102 @@ extern int yydebug; USAMPLER3D = 299, USAMPLERCUBE = 300, USAMPLER2DARRAY = 301, - SAMPLERCUBEARRAY = 302, - SAMPLERCUBEARRAYSHADOW = 303, - ISAMPLERCUBEARRAY = 304, - USAMPLERCUBEARRAY = 305, - ATTRIBUTE = 306, - VARYING = 307, - FLOAT16_T = 308, - FLOAT32_T = 309, - DOUBLE = 310, - FLOAT64_T = 311, - INT64_T = 312, - UINT64_T = 313, - INT32_T = 314, - UINT32_T = 315, - INT16_T = 316, - UINT16_T = 317, - INT8_T = 318, - UINT8_T = 319, - I64VEC2 = 320, - I64VEC3 = 321, - I64VEC4 = 322, - U64VEC2 = 323, - U64VEC3 = 324, - U64VEC4 = 325, - I32VEC2 = 326, - I32VEC3 = 327, - I32VEC4 = 328, - U32VEC2 = 329, - U32VEC3 = 330, - U32VEC4 = 331, - I16VEC2 = 332, - I16VEC3 = 333, - I16VEC4 = 334, - U16VEC2 = 335, - U16VEC3 = 336, - U16VEC4 = 337, - I8VEC2 = 338, - I8VEC3 = 339, - I8VEC4 = 340, - U8VEC2 = 341, - U8VEC3 = 342, - U8VEC4 = 343, - DVEC2 = 344, - DVEC3 = 345, - DVEC4 = 346, - DMAT2 = 347, - DMAT3 = 348, - DMAT4 = 349, - F16VEC2 = 350, - F16VEC3 = 351, - F16VEC4 = 352, - F16MAT2 = 353, - F16MAT3 = 354, - F16MAT4 = 355, - F32VEC2 = 356, - F32VEC3 = 357, - F32VEC4 = 358, - F32MAT2 = 359, - F32MAT3 = 360, - F32MAT4 = 361, - F64VEC2 = 362, - F64VEC3 = 363, - F64VEC4 = 364, - F64MAT2 = 365, - F64MAT3 = 366, - F64MAT4 = 367, - DMAT2X2 = 368, - DMAT2X3 = 369, - DMAT2X4 = 370, - DMAT3X2 = 371, - DMAT3X3 = 372, - DMAT3X4 = 373, - DMAT4X2 = 374, - DMAT4X3 = 375, - DMAT4X4 = 376, - F16MAT2X2 = 377, - F16MAT2X3 = 378, - F16MAT2X4 = 379, - F16MAT3X2 = 380, - F16MAT3X3 = 381, - F16MAT3X4 = 382, - F16MAT4X2 = 383, - F16MAT4X3 = 384, - F16MAT4X4 = 385, - F32MAT2X2 = 386, - F32MAT2X3 = 387, - F32MAT2X4 = 388, - F32MAT3X2 = 389, - F32MAT3X3 = 390, - F32MAT3X4 = 391, - F32MAT4X2 = 392, - F32MAT4X3 = 393, - F32MAT4X4 = 394, - F64MAT2X2 = 395, - F64MAT2X3 = 396, - F64MAT2X4 = 397, - F64MAT3X2 = 398, - F64MAT3X3 = 399, - F64MAT3X4 = 400, - F64MAT4X2 = 401, - F64MAT4X3 = 402, - F64MAT4X4 = 403, - ATOMIC_UINT = 404, - ACCSTRUCTNV = 405, - FCOOPMATNV = 406, - ICOOPMATNV = 407, - UCOOPMATNV = 408, - SAMPLER1D = 409, - SAMPLER1DARRAY = 410, - SAMPLER1DARRAYSHADOW = 411, - ISAMPLER1D = 412, - SAMPLER1DSHADOW = 413, - SAMPLER2DRECT = 414, - SAMPLER2DRECTSHADOW = 415, - ISAMPLER2DRECT = 416, - USAMPLER2DRECT = 417, - SAMPLERBUFFER = 418, - ISAMPLERBUFFER = 419, - USAMPLERBUFFER = 420, - SAMPLER2DMS = 421, - ISAMPLER2DMS = 422, - USAMPLER2DMS = 423, - SAMPLER2DMSARRAY = 424, - ISAMPLER2DMSARRAY = 425, - USAMPLER2DMSARRAY = 426, - SAMPLEREXTERNALOES = 427, - SAMPLEREXTERNAL2DY2YEXT = 428, - ISAMPLER1DARRAY = 429, - USAMPLER1D = 430, - USAMPLER1DARRAY = 431, - F16SAMPLER1D = 432, - F16SAMPLER2D = 433, - F16SAMPLER3D = 434, - F16SAMPLER2DRECT = 435, - F16SAMPLERCUBE = 436, - F16SAMPLER1DARRAY = 437, - F16SAMPLER2DARRAY = 438, - F16SAMPLERCUBEARRAY = 439, - F16SAMPLERBUFFER = 440, - F16SAMPLER2DMS = 441, - F16SAMPLER2DMSARRAY = 442, - F16SAMPLER1DSHADOW = 443, - F16SAMPLER2DSHADOW = 444, - F16SAMPLER1DARRAYSHADOW = 445, - F16SAMPLER2DARRAYSHADOW = 446, - F16SAMPLER2DRECTSHADOW = 447, - F16SAMPLERCUBESHADOW = 448, - F16SAMPLERCUBEARRAYSHADOW = 449, - IMAGE1D = 450, - IIMAGE1D = 451, - UIMAGE1D = 452, - IMAGE2D = 453, - IIMAGE2D = 454, - UIMAGE2D = 455, - IMAGE3D = 456, - IIMAGE3D = 457, - UIMAGE3D = 458, - IMAGE2DRECT = 459, - IIMAGE2DRECT = 460, - UIMAGE2DRECT = 461, - IMAGECUBE = 462, - IIMAGECUBE = 463, - UIMAGECUBE = 464, - IMAGEBUFFER = 465, - IIMAGEBUFFER = 466, - UIMAGEBUFFER = 467, - IMAGE1DARRAY = 468, - IIMAGE1DARRAY = 469, - UIMAGE1DARRAY = 470, - IMAGE2DARRAY = 471, - IIMAGE2DARRAY = 472, - UIMAGE2DARRAY = 473, - IMAGECUBEARRAY = 474, - IIMAGECUBEARRAY = 475, - UIMAGECUBEARRAY = 476, - IMAGE2DMS = 477, - IIMAGE2DMS = 478, - UIMAGE2DMS = 479, - IMAGE2DMSARRAY = 480, - IIMAGE2DMSARRAY = 481, - UIMAGE2DMSARRAY = 482, - F16IMAGE1D = 483, - F16IMAGE2D = 484, - F16IMAGE3D = 485, - F16IMAGE2DRECT = 486, - F16IMAGECUBE = 487, - F16IMAGE1DARRAY = 488, - F16IMAGE2DARRAY = 489, - F16IMAGECUBEARRAY = 490, - F16IMAGEBUFFER = 491, - F16IMAGE2DMS = 492, - F16IMAGE2DMSARRAY = 493, - SAMPLER = 494, - SAMPLERSHADOW = 495, - TEXTURE1D = 496, - TEXTURE2D = 497, - TEXTURE3D = 498, - TEXTURECUBE = 499, - TEXTURE1DARRAY = 500, - TEXTURE2DARRAY = 501, - ITEXTURE1D = 502, - ITEXTURE2D = 503, - ITEXTURE3D = 504, - ITEXTURECUBE = 505, - ITEXTURE1DARRAY = 506, - ITEXTURE2DARRAY = 507, - UTEXTURE1D = 508, - UTEXTURE2D = 509, - UTEXTURE3D = 510, - UTEXTURECUBE = 511, - UTEXTURE1DARRAY = 512, - UTEXTURE2DARRAY = 513, - TEXTURE2DRECT = 514, - ITEXTURE2DRECT = 515, - UTEXTURE2DRECT = 516, - TEXTUREBUFFER = 517, - ITEXTUREBUFFER = 518, - UTEXTUREBUFFER = 519, - TEXTURECUBEARRAY = 520, - ITEXTURECUBEARRAY = 521, - UTEXTURECUBEARRAY = 522, - TEXTURE2DMS = 523, - ITEXTURE2DMS = 524, - UTEXTURE2DMS = 525, - TEXTURE2DMSARRAY = 526, - ITEXTURE2DMSARRAY = 527, - UTEXTURE2DMSARRAY = 528, - F16TEXTURE1D = 529, - F16TEXTURE2D = 530, - F16TEXTURE3D = 531, - F16TEXTURE2DRECT = 532, - F16TEXTURECUBE = 533, - F16TEXTURE1DARRAY = 534, - F16TEXTURE2DARRAY = 535, - F16TEXTURECUBEARRAY = 536, - F16TEXTUREBUFFER = 537, - F16TEXTURE2DMS = 538, - F16TEXTURE2DMSARRAY = 539, - SUBPASSINPUT = 540, - SUBPASSINPUTMS = 541, - ISUBPASSINPUT = 542, - ISUBPASSINPUTMS = 543, - USUBPASSINPUT = 544, - USUBPASSINPUTMS = 545, - F16SUBPASSINPUT = 546, - F16SUBPASSINPUTMS = 547, - LEFT_OP = 548, - RIGHT_OP = 549, - INC_OP = 550, - DEC_OP = 551, - LE_OP = 552, - GE_OP = 553, - EQ_OP = 554, - NE_OP = 555, - AND_OP = 556, - OR_OP = 557, - XOR_OP = 558, - MUL_ASSIGN = 559, - DIV_ASSIGN = 560, - ADD_ASSIGN = 561, - MOD_ASSIGN = 562, - LEFT_ASSIGN = 563, - RIGHT_ASSIGN = 564, - AND_ASSIGN = 565, - XOR_ASSIGN = 566, - OR_ASSIGN = 567, - SUB_ASSIGN = 568, - LEFT_PAREN = 569, - RIGHT_PAREN = 570, - LEFT_BRACKET = 571, - RIGHT_BRACKET = 572, - LEFT_BRACE = 573, - RIGHT_BRACE = 574, - DOT = 575, - COMMA = 576, - COLON = 577, - EQUAL = 578, - SEMICOLON = 579, - BANG = 580, - DASH = 581, - TILDE = 582, - PLUS = 583, - STAR = 584, - SLASH = 585, - PERCENT = 586, - LEFT_ANGLE = 587, - RIGHT_ANGLE = 588, - VERTICAL_BAR = 589, - CARET = 590, - AMPERSAND = 591, - QUESTION = 592, - INVARIANT = 593, - HIGH_PRECISION = 594, - MEDIUM_PRECISION = 595, - LOW_PRECISION = 596, - PRECISION = 597, - PACKED = 598, - RESOURCE = 599, - SUPERP = 600, - FLOATCONSTANT = 601, - INTCONSTANT = 602, - UINTCONSTANT = 603, - BOOLCONSTANT = 604, - IDENTIFIER = 605, - TYPE_NAME = 606, - CENTROID = 607, - IN = 608, - OUT = 609, - INOUT = 610, - STRUCT = 611, - VOID = 612, - WHILE = 613, - BREAK = 614, - CONTINUE = 615, - DO = 616, - ELSE = 617, - FOR = 618, - IF = 619, - DISCARD = 620, - RETURN = 621, - SWITCH = 622, - CASE = 623, - DEFAULT = 624, - UNIFORM = 625, - SHARED = 626, - FLAT = 627, - SMOOTH = 628, - LAYOUT = 629, - DOUBLECONSTANT = 630, - INT16CONSTANT = 631, - UINT16CONSTANT = 632, - FLOAT16CONSTANT = 633, - INT32CONSTANT = 634, - UINT32CONSTANT = 635, - INT64CONSTANT = 636, - UINT64CONSTANT = 637, - SUBROUTINE = 638, - DEMOTE = 639, - PAYLOADNV = 640, - PAYLOADINNV = 641, - HITATTRNV = 642, - CALLDATANV = 643, - CALLDATAINNV = 644, - PATCH = 645, - SAMPLE = 646, - BUFFER = 647, - NONUNIFORM = 648, - COHERENT = 649, - VOLATILE = 650, - RESTRICT = 651, - READONLY = 652, - WRITEONLY = 653, - DEVICECOHERENT = 654, - QUEUEFAMILYCOHERENT = 655, - WORKGROUPCOHERENT = 656, - SUBGROUPCOHERENT = 657, - NONPRIVATE = 658, - NOPERSPECTIVE = 659, - EXPLICITINTERPAMD = 660, - PERVERTEXNV = 661, - PERPRIMITIVENV = 662, - PERVIEWNV = 663, - PERTASKNV = 664, - PRECISE = 665 + SAMPLER = 302, + SAMPLERSHADOW = 303, + TEXTURE2D = 304, + TEXTURE3D = 305, + TEXTURECUBE = 306, + TEXTURE2DARRAY = 307, + ITEXTURE2D = 308, + ITEXTURE3D = 309, + ITEXTURECUBE = 310, + ITEXTURE2DARRAY = 311, + UTEXTURE2D = 312, + UTEXTURE3D = 313, + UTEXTURECUBE = 314, + UTEXTURE2DARRAY = 315, + LEFT_OP = 316, + RIGHT_OP = 317, + INC_OP = 318, + DEC_OP = 319, + LE_OP = 320, + GE_OP = 321, + EQ_OP = 322, + NE_OP = 323, + AND_OP = 324, + OR_OP = 325, + XOR_OP = 326, + MUL_ASSIGN = 327, + DIV_ASSIGN = 328, + ADD_ASSIGN = 329, + MOD_ASSIGN = 330, + LEFT_ASSIGN = 331, + RIGHT_ASSIGN = 332, + AND_ASSIGN = 333, + XOR_ASSIGN = 334, + OR_ASSIGN = 335, + SUB_ASSIGN = 336, + LEFT_PAREN = 337, + RIGHT_PAREN = 338, + LEFT_BRACKET = 339, + RIGHT_BRACKET = 340, + LEFT_BRACE = 341, + RIGHT_BRACE = 342, + DOT = 343, + COMMA = 344, + COLON = 345, + EQUAL = 346, + SEMICOLON = 347, + BANG = 348, + DASH = 349, + TILDE = 350, + PLUS = 351, + STAR = 352, + SLASH = 353, + PERCENT = 354, + LEFT_ANGLE = 355, + RIGHT_ANGLE = 356, + VERTICAL_BAR = 357, + CARET = 358, + AMPERSAND = 359, + QUESTION = 360, + INVARIANT = 361, + HIGH_PRECISION = 362, + MEDIUM_PRECISION = 363, + LOW_PRECISION = 364, + PRECISION = 365, + PACKED = 366, + RESOURCE = 367, + SUPERP = 368, + FLOATCONSTANT = 369, + INTCONSTANT = 370, + UINTCONSTANT = 371, + BOOLCONSTANT = 372, + IDENTIFIER = 373, + TYPE_NAME = 374, + CENTROID = 375, + IN = 376, + OUT = 377, + INOUT = 378, + STRUCT = 379, + VOID = 380, + WHILE = 381, + BREAK = 382, + CONTINUE = 383, + DO = 384, + ELSE = 385, + FOR = 386, + IF = 387, + DISCARD = 388, + RETURN = 389, + SWITCH = 390, + CASE = 391, + DEFAULT = 392, + UNIFORM = 393, + SHARED = 394, + FLAT = 395, + SMOOTH = 396, + LAYOUT = 397 }; #endif @@ -497,7 +229,7 @@ union YYSTYPE glslang::TArraySizes* typeParameters; } interm; -#line 501 "MachineIndependent/glslang_tab.cpp.h" /* yacc.c:1909 */ +#line 233 "MachineIndependent/glslang_tab.cpp.h" /* yacc.c:1909 */ }; typedef union YYSTYPE YYSTYPE; From 51ed01c8774735a81f884cdf9f12258b96d9b138 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Thu, 10 Oct 2019 11:40:11 -0600 Subject: [PATCH 57/94] Web: Add compute stage. --- SPIRV/GlslangToSpv.cpp | 8 +- Test/baseResults/web.comp.out | 75 + Test/web.comp | 28 + Test/web.testlist | 1 + glslang/MachineIndependent/Initialize.cpp | 127 +- glslang/MachineIndependent/ParseHelper.cpp | 18 +- glslang/MachineIndependent/Scan.cpp | 3 +- glslang/MachineIndependent/ShaderLang.cpp | 2 + glslang/MachineIndependent/Versions.cpp | 2 +- glslang/MachineIndependent/glslang.m4 | 2 +- glslang/MachineIndependent/glslang.y | 8 + glslang/MachineIndependent/glslang_tab.cpp | 2589 +++++++++-------- .../MachineIndependent/localintermediate.h | 43 +- 13 files changed, 1526 insertions(+), 1380 deletions(-) create mode 100644 Test/baseResults/web.comp.out create mode 100644 Test/web.comp diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index ae5f24d3..762a292e 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -292,8 +292,8 @@ spv::ExecutionModel TranslateExecutionModel(EShLanguage stage) switch (stage) { case EShLangVertex: return spv::ExecutionModelVertex; case EShLangFragment: return spv::ExecutionModelFragment; -#ifndef GLSLANG_WEB case EShLangCompute: return spv::ExecutionModelGLCompute; +#ifndef GLSLANG_WEB case EShLangTessControl: return spv::ExecutionModelTessellationControl; case EShLangTessEvaluation: return spv::ExecutionModelTessellationEvaluation; case EShLangGeometry: return spv::ExecutionModelGeometry; @@ -1489,12 +1489,12 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, const gl #endif break; -#ifndef GLSLANG_WEB case EShLangCompute: builder.addCapability(spv::CapabilityShader); builder.addExecutionMode(shaderEntry, spv::ExecutionModeLocalSize, glslangIntermediate->getLocalSize(0), glslangIntermediate->getLocalSize(1), glslangIntermediate->getLocalSize(2)); +#ifndef GLSLANG_WEB if (glslangIntermediate->getLayoutDerivativeModeNone() == glslang::LayoutDerivativeGroupQuads) { builder.addCapability(spv::CapabilityComputeDerivativeGroupQuadsNV); builder.addExecutionMode(shaderEntry, spv::ExecutionModeDerivativeGroupQuadsNV); @@ -1504,7 +1504,9 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, const gl builder.addExecutionMode(shaderEntry, spv::ExecutionModeDerivativeGroupLinearNV); builder.addExtension(spv::E_SPV_NV_compute_shader_derivatives); } +#endif break; +#ifndef GLSLANG_WEB case EShLangTessEvaluation: case EShLangTessControl: builder.addCapability(spv::CapabilityTessellation); @@ -7826,7 +7828,6 @@ spv::Id TGlslangToSpvTraverser::createSpvConstant(const glslang::TIntermTyped& n // We now know we have a specialization constant to build -#ifndef GLSLANG_WEB // gl_WorkGroupSize is a special case until the front-end handles hierarchical specialization constants, // even then, it's specialization ids are handled by special case syntax in GLSL: layout(local_size_x = ... if (node.getType().getQualifier().builtIn == glslang::EbvWorkGroupSize) { @@ -7841,7 +7842,6 @@ spv::Id TGlslangToSpvTraverser::createSpvConstant(const glslang::TIntermTyped& n } return builder.makeCompositeConstant(builder.makeVectorType(builder.makeUintType(32), 3), dimConstId, true); } -#endif // An AST node labelled as specialization constant should be a symbol node. // Its initializer should either be a sub tree with constant nodes, or a constant union array. diff --git a/Test/baseResults/web.comp.out b/Test/baseResults/web.comp.out new file mode 100644 index 00000000..e69de88c --- /dev/null +++ b/Test/baseResults/web.comp.out @@ -0,0 +1,75 @@ +; SPIR-V +; Version: 1.0 +; Generator: Khronos Glslang Reference Front End; 7 +; Bound: 55 +; Schema: 0 + OpCapability Shader + %1 = OpExtInstImport "GLSL.std.450" + OpMemoryModel Logical GLSL450 + OpEntryPoint GLCompute %main "main" + OpExecutionMode %main LocalSize 2 5 7 + OpSource ESSL 310 + OpName %main "main" + OpName %s "s" + OpName %arrX "arrX" + OpName %arrY "arrY" + OpName %arrZ "arrZ" + OpDecorate %19 SpecId 18 + OpDecorate %21 SpecId 19 + %void = OpTypeVoid + %3 = OpTypeFunction %void + %float = OpTypeFloat 32 + %v4float = OpTypeVector %float 4 + %uint = OpTypeInt 32 0 +%uint_197645 = OpConstant %uint 197645 +%_arr_v4float_uint_197645 = OpTypeArray %v4float %uint_197645 +%_ptr_Function__arr_v4float_uint_197645 = OpTypePointer Function %_arr_v4float_uint_197645 + %int = OpTypeInt 32 1 + %int_3 = OpConstant %int 3 + %float_1 = OpConstant %float 1 + %16 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 +%_ptr_Function_v4float = OpTypePointer Function %v4float + %19 = OpSpecConstant %uint 2 + %uint_5 = OpConstant %uint 5 + %21 = OpSpecConstant %uint 7 + %v3uint = OpTypeVector %uint 3 + %23 = OpSpecConstantComposite %v3uint %19 %uint_5 %21 + %uint_0 = OpConstant %uint 0 +%_arr_int_25 = OpTypeArray %int %25 +%_ptr_Private__arr_int_25 = OpTypePointer Private %_arr_int_25 + %arrX = OpVariable %_ptr_Private__arr_int_25 Private + %int_0 = OpConstant %int 0 +%_ptr_Private_int = OpTypePointer Private %int + %uint_1 = OpConstant %uint 1 +%_arr_int_34 = OpTypeArray %int %34 +%_ptr_Private__arr_int_34 = OpTypePointer Private %_arr_int_34 + %arrY = OpVariable %_ptr_Private__arr_int_34 Private + %uint_2 = OpConstant %uint 2 +%_arr_int_42 = OpTypeArray %int %42 +%_ptr_Private__arr_int_42 = OpTypePointer Private %_arr_int_42 + %arrZ = OpVariable %_ptr_Private__arr_int_42 Private + %int_197645 = OpConstant %int 197645 + %main = OpFunction %void None %3 + %5 = OpLabel + %s = OpVariable %_ptr_Function__arr_v4float_uint_197645 Function + %18 = OpAccessChain %_ptr_Function_v4float %s %int_3 + OpStore %18 %16 + %25 = OpCompositeExtract %uint %23 0 + %31 = OpAccessChain %_ptr_Private_int %arrX %int_0 + %32 = OpLoad %int %31 + %34 = OpCompositeExtract %uint %23 1 + %38 = OpAccessChain %_ptr_Private_int %arrY %int_0 + %39 = OpLoad %int %38 + %40 = OpIMul %int %32 %39 + %42 = OpCompositeExtract %uint %23 2 + %46 = OpAccessChain %_ptr_Private_int %arrZ %int_0 + %47 = OpLoad %int %46 + %48 = OpIMul %int %40 %47 + %49 = OpConvertSToF %float %48 + %50 = OpAccessChain %_ptr_Function_v4float %s %int_3 + %51 = OpLoad %v4float %50 + %52 = OpVectorTimesScalar %v4float %51 %49 + %53 = OpAccessChain %_ptr_Function_v4float %s %int_3 + OpStore %53 %52 + OpReturn + OpFunctionEnd diff --git a/Test/web.comp b/Test/web.comp new file mode 100644 index 00000000..9cc23bff --- /dev/null +++ b/Test/web.comp @@ -0,0 +1,28 @@ +#version 310 es + +layout(local_size_x_id = 18, local_size_z_id = 19) in; + +layout(local_size_x = 2) in; +layout(local_size_y = 5) in; +layout(local_size_z = 7) in; +const int total = gl_MaxComputeWorkGroupCount.x + + gl_MaxComputeWorkGroupCount.y + + gl_MaxComputeWorkGroupCount.z + + gl_MaxComputeUniformComponents + + gl_MaxComputeTextureImageUnits; + +shared vec4 s[total]; + +int arrX[gl_WorkGroupSize.x]; +int arrY[gl_WorkGroupSize.y]; +int arrZ[gl_WorkGroupSize.z]; + +void main() +{ + barrier(); + memoryBarrier(); + memoryBarrierShared(); + groupMemoryBarrier(); + s[3] = vec4(1.0); + s[3] *= arrX[0] * arrY[0] * arrZ[0]; +} diff --git a/Test/web.testlist b/Test/web.testlist index 0d9de221..764c0c0f 100644 --- a/Test/web.testlist +++ b/Test/web.testlist @@ -6,3 +6,4 @@ web.operations.frag web.texture.frag web.array.frag web.separate.frag +web.comp diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 3348309a..cb3baf18 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -3795,21 +3795,44 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "void EndPrimitive();" "\n"); } +#endif //============================================================================ // // Prototypes for all control functions. // //============================================================================ +#ifdef GLSLANG_WEB + bool esBarrier = true; +#else bool esBarrier = (profile == EEsProfile && version >= 310); - if ((profile != EEsProfile && version >= 150) || esBarrier) - stageBuiltins[EShLangTessControl].append( - "void barrier();" - ); +#endif if ((profile != EEsProfile && version >= 420) || esBarrier) stageBuiltins[EShLangCompute].append( "void barrier();" ); + if ((profile != EEsProfile && version >= 130) || esBarrier) + commonBuiltins.append( + "void memoryBarrier();" + ); + if ((profile != EEsProfile && version >= 420) || esBarrier) { + stageBuiltins[EShLangCompute].append( + "void memoryBarrierShared();" + "void groupMemoryBarrier();" + ); + } +#ifndef GLSLANG_WEB + if ((profile != EEsProfile && version >= 420) || esBarrier) { + commonBuiltins.append( + "void memoryBarrierAtomicCounter();" + "void memoryBarrierBuffer();" + "void memoryBarrierImage();" + ); + } + if ((profile != EEsProfile && version >= 150) || esBarrier) + stageBuiltins[EShLangTessControl].append( + "void barrier();" + ); if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { stageBuiltins[EShLangMeshNV].append( "void barrier();" @@ -3818,21 +3841,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "void barrier();" ); } - if ((profile != EEsProfile && version >= 130) || esBarrier) - commonBuiltins.append( - "void memoryBarrier();" - ); - if ((profile != EEsProfile && version >= 420) || esBarrier) { - commonBuiltins.append( - "void memoryBarrierAtomicCounter();" - "void memoryBarrierBuffer();" - "void memoryBarrierImage();" - ); - stageBuiltins[EShLangCompute].append( - "void memoryBarrierShared();" - "void groupMemoryBarrier();" - ); - } if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { stageBuiltins[EShLangMeshNV].append( "void memoryBarrierShared();" @@ -4279,6 +4287,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } +#endif //============================================================================ // @@ -4308,6 +4317,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } +#ifndef GLSLANG_WEB //============================================================================ // // Define the interface to the mesh/task shader. @@ -6300,9 +6310,7 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf s.append(builtInConstant); } -#ifdef GLSLANG_WEB - } -#else +#ifndef GLSLANG_WEB if (version >= 310) { // geometry @@ -6584,8 +6592,29 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf snprintf(builtInConstant, maxSize, "const int gl_MaxTransformFeedbackInterleavedComponents = %d;", resources.maxTransformFeedbackInterleavedComponents); s.append(builtInConstant); } +#endif } + // compute + if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 420)) { + snprintf(builtInConstant, maxSize, "const ivec3 gl_MaxComputeWorkGroupCount = ivec3(%d,%d,%d);", resources.maxComputeWorkGroupCountX, + resources.maxComputeWorkGroupCountY, + resources.maxComputeWorkGroupCountZ); + s.append(builtInConstant); + snprintf(builtInConstant, maxSize, "const ivec3 gl_MaxComputeWorkGroupSize = ivec3(%d,%d,%d);", resources.maxComputeWorkGroupSizeX, + resources.maxComputeWorkGroupSizeY, + resources.maxComputeWorkGroupSizeZ); + s.append(builtInConstant); + + snprintf(builtInConstant, maxSize, "const int gl_MaxComputeUniformComponents = %d;", resources.maxComputeUniformComponents); + s.append(builtInConstant); + snprintf(builtInConstant, maxSize, "const int gl_MaxComputeTextureImageUnits = %d;", resources.maxComputeTextureImageUnits); + s.append(builtInConstant); + + s.append("\n"); + } + +#ifndef GLSLANG_WEB // images (some in compute below) if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 130)) { @@ -6601,6 +6630,18 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf s.append(builtInConstant); } + // compute + if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 420)) { + snprintf(builtInConstant, maxSize, "const int gl_MaxComputeImageUniforms = %d;", resources.maxComputeImageUniforms); + s.append(builtInConstant); + snprintf(builtInConstant, maxSize, "const int gl_MaxComputeAtomicCounters = %d;", resources.maxComputeAtomicCounters); + s.append(builtInConstant); + snprintf(builtInConstant, maxSize, "const int gl_MaxComputeAtomicCounterBuffers = %d;", resources.maxComputeAtomicCounterBuffers); + s.append(builtInConstant); + + s.append("\n"); + } + // atomic counters (some in compute below) if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 420)) { @@ -6638,31 +6679,6 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf s.append("\n"); } - // compute - if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 420)) { - snprintf(builtInConstant, maxSize, "const ivec3 gl_MaxComputeWorkGroupCount = ivec3(%d,%d,%d);", resources.maxComputeWorkGroupCountX, - resources.maxComputeWorkGroupCountY, - resources.maxComputeWorkGroupCountZ); - s.append(builtInConstant); - snprintf(builtInConstant, maxSize, "const ivec3 gl_MaxComputeWorkGroupSize = ivec3(%d,%d,%d);", resources.maxComputeWorkGroupSizeX, - resources.maxComputeWorkGroupSizeY, - resources.maxComputeWorkGroupSizeZ); - s.append(builtInConstant); - - snprintf(builtInConstant, maxSize, "const int gl_MaxComputeUniformComponents = %d;", resources.maxComputeUniformComponents); - s.append(builtInConstant); - snprintf(builtInConstant, maxSize, "const int gl_MaxComputeTextureImageUnits = %d;", resources.maxComputeTextureImageUnits); - s.append(builtInConstant); - snprintf(builtInConstant, maxSize, "const int gl_MaxComputeImageUniforms = %d;", resources.maxComputeImageUniforms); - s.append(builtInConstant); - snprintf(builtInConstant, maxSize, "const int gl_MaxComputeAtomicCounters = %d;", resources.maxComputeAtomicCounters); - s.append(builtInConstant); - snprintf(builtInConstant, maxSize, "const int gl_MaxComputeAtomicCounterBuffers = %d;", resources.maxComputeAtomicCounterBuffers); - s.append(builtInConstant); - - s.append("\n"); - } - // GL_ARB_cull_distance if (profile != EEsProfile && version >= 450) { snprintf(builtInConstant, maxSize, "const int gl_MaxCullDistances = %d;", resources.maxCullDistances); @@ -7547,7 +7563,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion #endif break; -#ifndef GLSLANG_WEB case EShLangCompute: BuiltInVariable("gl_NumWorkGroups", EbvNumWorkGroups, symbolTable); BuiltInVariable("gl_WorkGroupSize", EbvWorkGroupSize, symbolTable); @@ -7556,6 +7571,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_GlobalInvocationID", EbvGlobalInvocationId, symbolTable); BuiltInVariable("gl_LocalInvocationIndex", EbvLocalInvocationIndex, symbolTable); +#ifndef GLSLANG_WEB if (profile != EEsProfile && version < 430) { symbolTable.setVariableExtensions("gl_NumWorkGroups", 1, &E_GL_ARB_compute_shader); symbolTable.setVariableExtensions("gl_WorkGroupSize", 1, &E_GL_ARB_compute_shader); @@ -7635,6 +7651,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_WarpIDNV", EbvWarpID, symbolTable); BuiltInVariable("gl_SMIDNV", EbvSMID, symbolTable); } +#endif if ((profile != EEsProfile && version >= 140) || (profile == EEsProfile && version >= 310)) { @@ -7644,6 +7661,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_ViewIndex", EbvViewIndex, symbolTable); } +#ifndef GLSLANG_WEB // GL_KHR_shader_subgroup if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 140)) { @@ -8088,6 +8106,9 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("packUint2x32", EOpPackUint2x32); symbolTable.relateToOperator("unpackUint2x32", EOpUnpackUint2x32); + symbolTable.relateToOperator("barrier", EOpBarrier); + symbolTable.relateToOperator("memoryBarrier", EOpMemoryBarrier); + #ifndef GLSLANG_WEB symbolTable.relateToOperator("packInt2x16", EOpPackInt2x16); symbolTable.relateToOperator("unpackInt2x16", EOpUnpackInt2x16); @@ -8109,9 +8130,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("unpack16", EOpUnpack16); symbolTable.relateToOperator("unpack8", EOpUnpack8); - symbolTable.relateToOperator("barrier", EOpBarrier); symbolTable.relateToOperator("controlBarrier", EOpBarrier); - symbolTable.relateToOperator("memoryBarrier", EOpMemoryBarrier); symbolTable.relateToOperator("memoryBarrierAtomicCounter", EOpMemoryBarrierAtomicCounter); symbolTable.relateToOperator("memoryBarrierBuffer", EOpMemoryBarrierBuffer); symbolTable.relateToOperator("memoryBarrierImage", EOpMemoryBarrierImage); @@ -8443,8 +8462,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion #endif } -#ifndef GLSLANG_WEB switch(language) { +#ifndef GLSLANG_WEB case EShLangVertex: break; @@ -8479,10 +8498,12 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("endInvocationInterlockARB", EOpEndInvocationInterlock); break; +#endif case EShLangCompute: symbolTable.relateToOperator("memoryBarrierShared", EOpMemoryBarrierShared); symbolTable.relateToOperator("groupMemoryBarrier", EOpGroupMemoryBarrier); +#ifndef GLSLANG_WEB symbolTable.relateToOperator("subgroupMemoryBarrierShared", EOpSubgroupMemoryBarrierShared); if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { @@ -8499,8 +8520,10 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("coopMatLoadNV", EOpCooperativeMatrixLoad); symbolTable.relateToOperator("coopMatStoreNV", EOpCooperativeMatrixStore); symbolTable.relateToOperator("coopMatMulAddNV", EOpCooperativeMatrixMulAdd); +#endif break; +#ifndef GLSLANG_WEB case EShLangRayGenNV: case EShLangClosestHitNV: case EShLangMissNV: @@ -8539,8 +8562,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion default: assert(false && "Language not supported"); - } #endif + } } // diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index e9ff3208..786da187 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -3387,11 +3387,11 @@ void TParseContext::globalQualifierTypeCheck(const TSourceLoc& loc, const TQuali requireProfile(loc, ~EEsProfile, "fragment-shader struct input containing an array"); } break; -#ifndef GLSLANG_WEB case EShLangCompute: if (! symbolTable.atBuiltInLevel()) error(loc, "global storage input qualifier cannot be used in a compute shader", "in", ""); break; +#ifndef GLSLANG_WEB case EShLangTessControl: if (qualifier.patch) error(loc, "can only use on output in tessellation-control shader", "patch", ""); @@ -3432,10 +3432,10 @@ void TParseContext::globalQualifierTypeCheck(const TSourceLoc& loc, const TQuali error(loc, "cannot contain a double, int64, or uint64", GetStorageQualifierString(qualifier.storage), ""); break; -#ifndef GLSLANG_WEB case EShLangCompute: error(loc, "global storage output qualifier cannot be used in a compute shader", "out", ""); break; +#ifndef GLSLANG_WEB case EShLangTessEvaluation: if (qualifier.patch) error(loc, "can only use on input in tessellation-evaluation shader", "patch", ""); @@ -5293,11 +5293,10 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi error(loc, "needs a literal integer", "buffer_reference_align", ""); return; } +#endif switch (language) { - case EShLangVertex: - break; - +#ifndef GLSLANG_WEB case EShLangTessControl: if (id == "vertices") { if (value == 0) @@ -5310,9 +5309,6 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi } break; - case EShLangTessEvaluation: - break; - case EShLangGeometry: if (id == "invocations") { profileRequires(loc, ECompatibilityProfile | ECoreProfile, 400, nullptr, "invocations"); @@ -5385,6 +5381,7 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi case EShLangTaskNV: // Fall through +#endif case EShLangCompute: if (id.compare(0, 11, "local_size_") == 0) { if (language == EShLangMeshNV || language == EShLangTaskNV) { @@ -5432,12 +5429,11 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi } } break; + default: break; } -#endif // GLSLANG_WEB - error(loc, "there is no such layout identifier for this stage taking an assigned value", id.c_str(), ""); } @@ -8004,6 +8000,7 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con else error(loc, "can only apply to 'in'", "point_mode", ""); } +#endif for (int i = 0; i < 3; ++i) { if (publicType.shaderQualifiers.localSizeNotDefault[i]) { if (publicType.qualifier.storage == EvqVaryingIn) { @@ -8063,6 +8060,7 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con } } +#ifndef GLSLANG_WEB if (publicType.shaderQualifiers.earlyFragmentTests) { if (publicType.qualifier.storage == EvqVaryingIn) intermediate.setEarlyFragmentTests(); diff --git a/glslang/MachineIndependent/Scan.cpp b/glslang/MachineIndependent/Scan.cpp index 8e54de88..459e49a3 100644 --- a/glslang/MachineIndependent/Scan.cpp +++ b/glslang/MachineIndependent/Scan.cpp @@ -1058,13 +1058,12 @@ int TScanContext::tokenizeIdentifier() case SUBROUTINE: return es30ReservedFromGLSL(400); +#endif case SHARED: if ((parseContext.isEsProfile() && parseContext.version < 300) || (!parseContext.isEsProfile() && parseContext.version < 140)) return identifierOrType(); return keyword; -#endif - case LAYOUT: { const int numLayoutExts = 2; diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index 9b3cdc6d..f14d442a 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -341,6 +341,7 @@ bool InitializeSymbolTables(TInfoSink& infoSink, TSymbolTable** commonTable, TS (profile == EEsProfile && version >= 310)) InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangGeometry, source, infoSink, commonTable, symbolTables); +#endif // check for compute if ((profile != EEsProfile && version >= 420) || @@ -348,6 +349,7 @@ bool InitializeSymbolTables(TInfoSink& infoSink, TSymbolTable** commonTable, TS InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangCompute, source, infoSink, commonTable, symbolTables); +#ifndef GLSLANG_WEB // check for ray tracing stages if (profile != EEsProfile && version >= 450) { InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangRayGenNV, source, diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index bccf6a55..518ba6cd 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -527,11 +527,11 @@ const char* StageName(EShLanguage stage) switch(stage) { case EShLangVertex: return "vertex"; case EShLangFragment: return "fragment"; + case EShLangCompute: return "compute"; #ifndef GLSLANG_WEB case EShLangTessControl: return "tessellation control"; case EShLangTessEvaluation: return "tessellation evaluation"; case EShLangGeometry: return "geometry"; - case EShLangCompute: return "compute"; case EShLangRayGenNV: return "ray-generation"; case EShLangIntersectNV: return "intersection"; case EShLangAnyHitNV: return "any-hit"; diff --git a/glslang/MachineIndependent/glslang.m4 b/glslang/MachineIndependent/glslang.m4 index 1b463ecc..e9780e2a 100644 --- a/glslang/MachineIndependent/glslang.m4 +++ b/glslang/MachineIndependent/glslang.m4 @@ -1360,7 +1360,6 @@ storage_qualifier $$.init($1.loc); $$.qualifier.storage = EvqUniform; } -GLSLANG_WEB_EXCLUDE_ON | SHARED { parseContext.globalCheck($1.loc, "shared"); parseContext.profileRequires($1.loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared"); @@ -1369,6 +1368,7 @@ GLSLANG_WEB_EXCLUDE_ON $$.init($1.loc); $$.qualifier.storage = EvqShared; } +GLSLANG_WEB_EXCLUDE_ON | BUFFER { parseContext.globalCheck($1.loc, "buffer"); $$.init($1.loc); diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index e308825a..5001f60f 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -1156,6 +1156,14 @@ storage_qualifier $$.init($1.loc); $$.qualifier.storage = EvqUniform; } + | SHARED { + parseContext.globalCheck($1.loc, "shared"); + parseContext.profileRequires($1.loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared"); + parseContext.profileRequires($1.loc, EEsProfile, 310, 0, "shared"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangComputeMask | EShLangMeshNVMask | EShLangTaskNVMask), "shared"); + $$.init($1.loc); + $$.qualifier.storage = EvqShared; + } ; diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp index 8b9ec345..4488b699 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -578,18 +578,18 @@ union yyalloc #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 122 +#define YYFINAL 123 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 3110 +#define YYLAST 3111 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 143 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 103 /* YYNRULES -- Number of rules. */ -#define YYNRULES 293 +#define YYNRULES 294 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 422 +#define YYNSTATES 423 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ @@ -663,22 +663,22 @@ static const yytype_uint16 yyrline[] = 939, 942, 946, 950, 955, 963, 968, 973, 978, 983, 992, 1002, 1029, 1038, 1045, 1056, 1062, 1065, 1072, 1076, 1080, 1090, 1093, 1104, 1107, 1110, 1114, 1118, 1126, 1130, - 1135, 1141, 1147, 1154, 1165, 1170, 1180, 1185, 1193, 1197, - 1207, 1210, 1216, 1222, 1229, 1239, 1243, 1247, 1251, 1256, - 1260, 1265, 1270, 1275, 1280, 1285, 1290, 1295, 1300, 1305, - 1311, 1317, 1323, 1328, 1333, 1338, 1343, 1348, 1353, 1358, - 1363, 1368, 1373, 1378, 1384, 1389, 1394, 1399, 1404, 1409, - 1414, 1420, 1425, 1430, 1435, 1440, 1445, 1450, 1456, 1461, - 1466, 1471, 1476, 1481, 1486, 1491, 1496, 1501, 1506, 1511, - 1516, 1521, 1526, 1532, 1537, 1553, 1558, 1563, 1571, 1571, - 1582, 1582, 1592, 1595, 1608, 1630, 1657, 1661, 1667, 1672, - 1683, 1692, 1696, 1697, 1703, 1704, 1705, 1706, 1707, 1708, - 1709, 1716, 1717, 1721, 1717, 1733, 1734, 1738, 1738, 1745, - 1745, 1759, 1762, 1770, 1778, 1789, 1790, 1794, 1800, 1807, - 1811, 1819, 1823, 1836, 1842, 1842, 1862, 1865, 1871, 1883, - 1895, 1901, 1901, 1916, 1916, 1932, 1932, 1953, 1956, 1962, - 1965, 1971, 1975, 1982, 1987, 1992, 1999, 2002, 2011, 2015, - 2024, 2027, 2034, 2034 + 1135, 1141, 1147, 1154, 1159, 1173, 1178, 1188, 1193, 1201, + 1205, 1215, 1218, 1224, 1230, 1237, 1247, 1251, 1255, 1259, + 1264, 1268, 1273, 1278, 1283, 1288, 1293, 1298, 1303, 1308, + 1313, 1319, 1325, 1331, 1336, 1341, 1346, 1351, 1356, 1361, + 1366, 1371, 1376, 1381, 1386, 1392, 1397, 1402, 1407, 1412, + 1417, 1422, 1428, 1433, 1438, 1443, 1448, 1453, 1458, 1464, + 1469, 1474, 1479, 1484, 1489, 1494, 1499, 1504, 1509, 1514, + 1519, 1524, 1529, 1534, 1540, 1545, 1561, 1566, 1571, 1579, + 1579, 1590, 1590, 1600, 1603, 1616, 1638, 1665, 1669, 1675, + 1680, 1691, 1700, 1704, 1705, 1711, 1712, 1713, 1714, 1715, + 1716, 1717, 1724, 1725, 1729, 1725, 1741, 1742, 1746, 1746, + 1753, 1753, 1767, 1770, 1778, 1786, 1797, 1798, 1802, 1808, + 1815, 1819, 1827, 1831, 1844, 1850, 1850, 1870, 1873, 1879, + 1891, 1903, 1909, 1909, 1924, 1924, 1940, 1940, 1961, 1964, + 1970, 1973, 1979, 1983, 1990, 1995, 2000, 2007, 2010, 2019, + 2023, 2032, 2035, 2042, 2042 }; #endif @@ -774,12 +774,12 @@ static const yytype_uint16 yytoknum[] = }; # endif -#define YYPACT_NINF -357 +#define YYPACT_NINF -362 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-357))) + (!!((Yystate) == (-362))) -#define YYTABLE_NINF -248 +#define YYTABLE_NINF -249 #define yytable_value_is_error(Yytable_value) \ 0 @@ -788,49 +788,49 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - 1676, -357, -357, -357, -357, -357, -357, -357, -357, -357, - -357, -357, -357, -357, -357, -357, -357, -357, -357, -357, - -357, -357, -357, -357, -357, -357, -357, -357, -357, -357, - -357, -357, -357, -357, -357, -357, -357, -357, -357, -357, - -357, -357, -357, -357, -357, -357, -357, -357, -357, -357, - -357, -357, -357, -357, -357, -357, -357, -357, -357, -357, - -357, -357, -357, 42, -357, -357, -357, -357, -357, -70, - -357, -357, -357, -357, -57, -357, -69, -48, -21, -15, - 2236, -6, -357, -37, -357, -357, -357, 1536, -357, -357, - -357, -40, -357, -357, 416, -357, -357, 2985, -357, 3, - -96, -357, -29, -357, 14, -357, 2236, -357, -357, -357, - 2236, -14, 5, -357, -53, -357, -52, -357, -357, 2741, - 9, -357, -357, -357, 37, 2236, -357, 66, -357, -12, - -357, 2375, -357, -28, 556, -357, -357, -357, -357, 9, - -34, -357, 2741, -25, -357, 41, -357, 28, 2741, 2741, - 2741, -357, -357, -357, -357, -357, -357, -357, -357, -357, - -357, -357, -43, -357, -357, -357, 50, -10, 2863, 72, - -357, 2741, -357, -65, 77, -357, 2236, 55, 1816, -357, - 2236, 2741, -357, -96, -357, -357, 38, 36, 8, -47, - 40, 70, 76, 73, 114, 113, -58, 100, 2497, -357, - 99, -357, -357, 108, 101, 102, -357, 109, 110, 104, - 2619, 115, 2741, 111, 67, -357, -357, 29, -357, -48, - 116, -357, -357, -357, -357, 696, -357, -357, -357, -357, - -357, -357, -357, -357, -357, 77, 2741, -23, -357, -357, - 2741, 2236, -357, 81, -357, -357, -357, -5, -357, -357, - 2741, 82, -357, -357, 2741, 119, -357, -357, -357, 2741, - -357, 55, 9, 30, -357, -357, -357, 1956, -357, -357, - -357, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, - 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, 2741, - -357, -357, -357, 118, -357, 836, -357, -357, -357, 836, - -357, 2741, -357, -357, 35, 2741, 63, -357, -357, -357, - -357, -357, -357, -357, -357, -357, -357, -357, -357, 2741, - 2741, -357, -357, -357, -357, 2741, -357, 2096, -357, -357, - 120, 121, -357, -357, -357, 39, 77, 55, -357, -357, - -357, -357, -357, 38, 38, 36, 36, 8, 8, 8, - 8, -47, -47, 40, 70, 76, 73, 114, 113, 2741, - -357, 836, 1396, 78, 1256, -1, -357, 2, -357, -357, - -357, -357, -357, -357, -357, -357, 75, 122, 121, 90, - 2236, 128, 130, -357, -357, 1396, 127, -357, 2741, -357, - 124, 976, 2741, -357, 126, 133, 89, 134, 1116, -357, - 135, -357, 2741, -357, -357, -357, 7, 2741, 976, 127, - -357, -357, 836, -357, 131, 121, -357, -357, 836, 137, - -357, -357 + 1677, -362, -362, -362, -362, -362, -362, -362, -362, -362, + -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, + -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, + -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, + -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, + -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, + -362, -362, -362, 20, -362, -362, -362, -362, -362, -66, + -362, -362, -362, -362, -362, -43, -362, -73, -33, -11, + 3, 2237, -19, -362, -29, -362, -362, -362, 1537, -362, + -362, -362, 2, -362, -362, 417, -362, -362, 2986, -362, + 11, -90, -362, -28, -362, 24, -362, 2237, -362, -362, + -362, 2237, 5, 18, -362, -58, -362, -18, -362, -362, + 2742, 55, -362, -362, -362, 61, 2237, -362, 21, -362, + -54, -362, 2376, -362, -26, 557, -362, -362, -362, -362, + 55, -30, -362, 2742, -24, -362, 43, -362, -7, 2742, + 2742, 2742, -362, -362, -362, -362, -362, -362, -362, -362, + -362, -362, -362, -41, -362, -362, -362, 87, -49, 2864, + 73, -362, 2742, -362, -59, 90, -362, 2237, 57, 1817, + -362, 2237, 2742, -362, -90, -362, -362, 33, -39, 72, + -50, 70, 76, 75, 80, 107, 114, -52, 105, 2498, + -362, 104, -362, -362, 110, 101, 102, -362, 113, 116, + 108, 2620, 117, 2742, 106, 69, -362, -362, 17, -362, + -33, 119, -362, -362, -362, -362, 697, -362, -362, -362, + -362, -362, -362, -362, -362, -362, 90, 2742, -15, -362, + -362, 2742, 2237, -362, 84, -362, -362, -362, -6, -362, + -362, 2742, 85, -362, -362, 2742, 121, -362, -362, -362, + 2742, -362, 57, 55, 28, -362, -362, -362, 1957, -362, + -362, -362, 2742, 2742, 2742, 2742, 2742, 2742, 2742, 2742, + 2742, 2742, 2742, 2742, 2742, 2742, 2742, 2742, 2742, 2742, + 2742, -362, -362, -362, 120, -362, 837, -362, -362, -362, + 837, -362, 2742, -362, -362, 30, 2742, 62, -362, -362, + -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, + 2742, 2742, -362, -362, -362, -362, 2742, -362, 2097, -362, + -362, 122, 124, -362, -362, -362, 32, 90, 57, -362, + -362, -362, -362, -362, 33, 33, -39, -39, 72, 72, + 72, 72, -50, -50, 70, 76, 75, 80, 107, 114, + 2742, -362, 837, 1397, 82, 1257, -3, -362, 1, -362, + -362, -362, -362, -362, -362, -362, -362, 74, 123, 124, + 88, 2237, 128, 132, -362, -362, 1397, 130, -362, 2742, + -362, 126, 977, 2742, -362, 129, 135, 92, 134, 1117, + -362, 137, -362, 2742, -362, -362, -362, 4, 2742, 977, + 130, -362, -362, 837, -362, 133, 124, -362, -362, 837, + 140, -362, -362 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -838,81 +838,81 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 0, 138, 159, 157, 158, 156, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 160, 161, 162, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 211, 212, 199, 200, 202, - 201, 203, 204, 205, 206, 207, 208, 209, 210, 122, - 215, 216, 217, 0, 214, 142, 140, 141, 139, 0, - 155, 143, 124, 123, 0, 291, 0, 292, 0, 99, - 98, 0, 110, 115, 137, 136, 134, 0, 131, 133, - 120, 151, 135, 213, 0, 288, 290, 0, 220, 0, - 0, 87, 0, 84, 0, 97, 0, 106, 100, 108, - 0, 109, 0, 85, 116, 90, 0, 132, 121, 0, - 144, 150, 1, 289, 0, 0, 218, 128, 130, 0, - 126, 0, 88, 0, 0, 293, 101, 105, 107, 103, - 111, 102, 0, 117, 93, 0, 91, 0, 0, 0, - 0, 33, 32, 34, 31, 5, 6, 7, 8, 2, - 3, 9, 27, 11, 16, 17, 0, 0, 21, 0, - 153, 0, 25, 0, 145, 86, 0, 0, 0, 222, - 0, 0, 125, 0, 146, 35, 39, 42, 45, 50, - 53, 55, 57, 59, 61, 63, 65, 0, 0, 89, - 242, 251, 255, 0, 0, 0, 273, 0, 0, 0, - 0, 0, 0, 0, 35, 68, 81, 0, 231, 0, - 120, 234, 253, 233, 232, 0, 235, 236, 257, 237, - 263, 238, 239, 270, 240, 104, 0, 112, 230, 119, - 0, 0, 95, 0, 92, 28, 29, 0, 13, 14, - 0, 0, 19, 18, 0, 155, 22, 24, 30, 0, - 152, 0, 228, 0, 226, 221, 223, 0, 83, 129, - 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 138, 160, 158, 159, 157, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 161, 162, 163, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 212, 213, 200, 201, 203, + 202, 204, 205, 206, 207, 208, 209, 210, 211, 122, + 216, 217, 218, 0, 215, 142, 140, 141, 139, 0, + 156, 143, 144, 124, 123, 0, 292, 0, 293, 0, + 99, 98, 0, 110, 115, 137, 136, 134, 0, 131, + 133, 120, 152, 135, 214, 0, 289, 291, 0, 221, + 0, 0, 87, 0, 84, 0, 97, 0, 106, 100, + 108, 0, 109, 0, 85, 116, 90, 0, 132, 121, + 0, 145, 151, 1, 290, 0, 0, 219, 128, 130, + 0, 126, 0, 88, 0, 0, 294, 101, 105, 107, + 103, 111, 102, 0, 117, 93, 0, 91, 0, 0, + 0, 0, 33, 32, 34, 31, 5, 6, 7, 8, + 2, 3, 9, 27, 11, 16, 17, 0, 0, 21, + 0, 154, 0, 25, 0, 146, 86, 0, 0, 0, + 223, 0, 0, 125, 0, 147, 35, 39, 42, 45, + 50, 53, 55, 57, 59, 61, 63, 65, 0, 0, + 89, 243, 252, 256, 0, 0, 0, 274, 0, 0, + 0, 0, 0, 0, 0, 35, 68, 81, 0, 232, + 0, 120, 235, 254, 234, 233, 0, 236, 237, 258, + 238, 264, 239, 240, 271, 241, 104, 0, 112, 231, + 119, 0, 0, 95, 0, 92, 28, 29, 0, 13, + 14, 0, 0, 19, 18, 0, 156, 22, 24, 30, + 0, 153, 0, 229, 0, 227, 222, 224, 0, 83, + 129, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 147, 148, 0, 241, 0, 271, 284, 283, 0, - 275, 0, 287, 285, 0, 0, 0, 269, 71, 72, - 74, 73, 76, 77, 78, 79, 80, 75, 70, 0, - 0, 256, 252, 254, 114, 0, 118, 0, 96, 4, - 0, 15, 12, 23, 154, 0, 229, 0, 224, 219, - 36, 37, 38, 41, 40, 43, 44, 48, 49, 46, - 47, 51, 52, 54, 56, 58, 60, 62, 64, 0, - 149, 243, 0, 0, 0, 0, 286, 0, 268, 69, - 82, 113, 94, 10, 225, 227, 0, 0, 261, 0, - 0, 0, 0, 278, 277, 280, 249, 264, 0, 244, - 0, 0, 0, 279, 0, 0, 260, 0, 0, 258, - 0, 67, 0, 246, 272, 245, 0, 281, 0, 249, - 248, 250, 266, 262, 0, 282, 276, 259, 267, 0, - 274, 265 + 0, 66, 148, 149, 0, 242, 0, 272, 285, 284, + 0, 276, 0, 288, 286, 0, 0, 0, 270, 71, + 72, 74, 73, 76, 77, 78, 79, 80, 75, 70, + 0, 0, 257, 253, 255, 114, 0, 118, 0, 96, + 4, 0, 15, 12, 23, 155, 0, 230, 0, 225, + 220, 36, 37, 38, 41, 40, 43, 44, 48, 49, + 46, 47, 51, 52, 54, 56, 58, 60, 62, 64, + 0, 150, 244, 0, 0, 0, 0, 287, 0, 269, + 69, 82, 113, 94, 10, 226, 228, 0, 0, 262, + 0, 0, 0, 0, 279, 278, 281, 250, 265, 0, + 245, 0, 0, 0, 280, 0, 0, 261, 0, 0, + 259, 0, 67, 0, 247, 273, 246, 0, 282, 0, + 250, 249, 251, 267, 263, 0, 283, 277, 260, 268, + 0, 275, 266 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -357, -357, -357, -357, -357, -357, -357, -357, -357, -357, - -357, -357, 58, -357, -108, -106, -166, -114, -62, -59, - -56, -60, -55, -61, -357, -123, -357, -138, -357, -145, - -357, 15, -357, -357, -357, 17, -357, -357, -357, 125, - 132, 136, -357, -357, -334, -357, -357, -357, -357, 48, - -79, -84, -357, 0, -107, -357, -357, -357, -357, 169, - -357, -357, -357, -169, -164, -27, -101, -230, -127, -223, - -356, -155, -357, -357, -165, -160, -357, -357, 140, -286, - -119, -357, -357, -357, -134, -357, -357, -357, -357, -357, - -357, -357, -357, -357, -357, -357, -357, -357, -357, -357, - 158, -357, -357 + -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, + -362, -362, 37, -362, -110, -105, -166, -116, -61, -57, + -56, -60, -55, -53, -362, -120, -362, -137, -362, -148, + -362, 10, -362, -362, -362, 13, -362, -362, -362, 136, + 125, 138, -362, -362, -342, -362, -362, -362, -362, 46, + -80, -86, -362, 0, -104, -362, -362, -362, -362, 170, + -362, -362, -362, -167, -172, -27, -99, -232, -125, -222, + -361, -157, -362, -362, -165, -164, -362, -362, 145, -288, + -122, -362, -362, -362, -135, -362, -362, -362, -362, -362, + -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, + 158, -362, -362 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 160, 161, 162, 330, 163, 164, 165, 166, 167, - 168, 169, 214, 171, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 215, 359, 216, 319, 217, - 269, 218, 76, 241, 147, 219, 78, 79, 80, 107, - 108, 109, 81, 82, 83, 84, 85, 86, 129, 130, - 87, 88, 89, 172, 133, 120, 121, 173, 91, 92, - 93, 180, 125, 178, 179, 263, 264, 239, 221, 222, - 223, 224, 295, 377, 404, 396, 397, 398, 405, 225, - 226, 227, 228, 399, 381, 229, 230, 400, 419, 231, - 232, 233, 362, 299, 364, 385, 394, 395, 234, 94, - 95, 96, 104 + -1, 161, 162, 163, 331, 164, 165, 166, 167, 168, + 169, 170, 215, 172, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 216, 360, 217, 320, 218, + 270, 219, 77, 242, 148, 220, 79, 80, 81, 108, + 109, 110, 82, 83, 84, 85, 86, 87, 130, 131, + 88, 89, 90, 173, 134, 121, 122, 174, 92, 93, + 94, 181, 126, 179, 180, 264, 265, 240, 222, 223, + 224, 225, 296, 378, 405, 397, 398, 399, 406, 226, + 227, 228, 229, 400, 382, 230, 231, 401, 420, 232, + 233, 234, 363, 300, 365, 386, 395, 396, 235, 95, + 96, 97, 105 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -920,573 +920,379 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 90, 110, 323, 117, 238, 247, 324, 143, 197, 361, - 326, 267, 289, 174, 266, 75, 98, 77, 278, 279, - 248, 249, 127, 101, 259, 100, 117, 110, 379, 141, - 256, 131, 235, 237, 144, 403, 260, 145, 142, -26, - 146, 250, 411, 128, 103, 251, 176, 290, 99, 102, - 131, 379, 403, 280, 281, 131, 198, 236, 268, 198, - 119, 198, 105, 132, 199, 304, 240, 306, 325, 276, - 277, 182, 327, 253, 106, 293, 363, 183, 329, 254, - 111, 114, 386, 112, 320, 387, 113, 118, 320, 126, - 414, 320, 117, 131, 90, 371, 320, 124, 238, 176, - 134, 176, 238, 266, 139, 331, 111, 282, 283, 75, - 111, 77, 347, 348, 349, 350, 333, 243, 320, 337, - 244, 321, 338, 140, 320, 177, 418, 366, 337, 175, - 274, 374, 275, 252, 220, 271, 272, 273, 323, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 60, - 61, 62, 320, 368, 257, 336, 365, 181, 318, 242, - 367, 198, 176, 266, 320, 388, 343, 344, 351, 352, - 345, 346, 413, 262, 284, 286, 261, 170, 177, 285, - 177, 369, 370, 287, 288, 291, 294, 238, 176, 185, - 296, 300, 301, 297, 298, 323, 302, 305, -25, 328, - 332, 307, -20, 360, 382, 373, 245, 246, 390, 389, - 320, 391, 392, -247, 376, 402, 408, 378, 407, 409, - 200, 412, 353, 420, 421, 220, 354, 356, 358, 258, - 355, 270, 97, 357, 335, 137, 375, 383, 136, 185, - 378, 177, 410, 416, 135, 384, 138, 406, 176, 417, - 401, 393, 123, 0, 0, 0, 185, 0, 0, 0, - 0, 0, 415, 0, 238, 0, 0, 177, 0, 0, + 91, 111, 118, 248, 324, 325, 239, 267, 362, 327, + 76, 144, 198, 78, 268, 279, 280, 175, 290, 102, + 99, 380, 249, 250, 142, 118, 132, 111, 128, 183, + 260, 404, 257, 143, 254, 184, 236, 238, 412, 101, + 255, -26, 261, 251, 380, 103, 177, 252, 404, 129, + 281, 282, 100, 291, 132, 275, 132, 276, 199, 104, + 199, 237, 269, 305, 133, 307, 200, 241, 145, 199, + 113, 146, 106, 114, 147, 328, 326, 330, 364, 294, + 387, 112, 244, 321, 388, 245, 321, 415, 119, 115, + 321, 118, 107, 321, 372, 91, 267, 127, 125, 177, + 239, 177, 120, 332, 239, 76, 321, 112, 78, 322, + 135, 112, 182, 348, 349, 350, 351, 338, 334, 321, + 339, 338, 367, 140, 375, 419, 178, 60, 61, 62, + 272, 273, 274, 277, 278, 221, 141, 283, 284, 132, + 324, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 321, 369, 176, 366, 258, 267, 171, 368, 337, + 319, 243, 177, 321, 389, 344, 345, 352, 353, 186, + 253, 414, 346, 347, 199, 263, 288, 262, 286, 178, + 285, 178, 287, 370, 371, 289, 246, 247, 177, 239, + 292, 295, 297, 298, 299, 301, 308, 324, 302, 306, + 303, -25, 329, 333, -20, 361, 391, 374, 383, 259, + 390, 392, 377, 321, 393, 379, -248, 403, 409, 186, + 201, 408, 410, 413, 354, 421, 221, 422, 357, 355, + 271, 356, 137, 98, 358, 336, 186, 359, 379, 376, + 384, 411, 178, 385, 417, 407, 418, 138, 177, 139, + 136, 394, 402, 124, 0, 0, 0, 0, 0, 0, + 416, 0, 0, 0, 0, 0, 239, 0, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 380, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 220, 117, 0, 0, 220, - 0, 0, 0, 0, 0, 0, 380, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 334, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 177, 0, 340, - 341, 342, 185, 185, 185, 185, 185, 185, 185, 185, - 185, 185, 185, 185, 185, 185, 185, 185, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 220, 220, 0, 220, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 118, 0, 0, 0, 0, 220, 0, 0, 0, 0, - 0, 220, 0, 0, 0, 0, 0, 0, 220, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, - 0, 0, 220, 0, 0, 0, 122, 0, 220, 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, 0, + 0, 0, 0, 381, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 118, 221, 335, 0, 0, + 221, 0, 0, 0, 0, 0, 381, 0, 0, 341, + 342, 343, 186, 186, 186, 186, 186, 186, 186, 186, + 186, 186, 186, 186, 186, 186, 186, 186, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 221, 221, 0, 221, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 59, 60, 61, 62, 63, 0, 0, 0, - 0, 0, 0, 0, 0, 64, 65, 66, 67, 68, - 69, 70, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 71, 0, 72, 73, 74, 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, 148, - 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 150, 0, - 0, 0, 200, 201, 0, 0, 0, 0, 202, 151, - 152, 153, 154, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 59, 60, 61, 62, 63, 0, 0, 0, - 155, 156, 157, 158, 159, 64, 65, 66, 67, 68, - 69, 70, 203, 204, 205, 206, 0, 207, 208, 209, - 210, 211, 212, 213, 71, 0, 72, 73, 74, 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, 148, - 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 150, 0, - 0, 0, 200, 322, 0, 0, 0, 0, 202, 151, - 152, 153, 154, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 59, 60, 61, 62, 63, 0, 0, 0, - 155, 156, 157, 158, 159, 64, 65, 66, 67, 68, - 69, 70, 203, 204, 205, 206, 0, 207, 208, 209, - 210, 211, 212, 213, 71, 0, 72, 73, 74, 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, 148, - 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 150, 0, - 0, 0, 200, 0, 0, 0, 0, 0, 202, 151, - 152, 153, 154, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 59, 60, 61, 62, 63, 0, 0, 0, - 155, 156, 157, 158, 159, 64, 65, 66, 67, 68, - 69, 70, 203, 204, 205, 206, 0, 207, 208, 209, - 210, 211, 212, 213, 71, 0, 72, 73, 74, 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, 148, - 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 150, 0, - 0, 0, 134, 0, 0, 0, 0, 0, 202, 151, - 152, 153, 154, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 59, 60, 61, 62, 63, 0, 0, 0, - 155, 156, 157, 158, 159, 64, 65, 66, 67, 68, - 69, 70, 203, 204, 205, 206, 0, 207, 208, 209, - 210, 211, 212, 213, 71, 0, 72, 73, 74, 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, 148, - 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 150, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 202, 151, - 152, 153, 154, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 59, 60, 61, 62, 63, 0, 0, 0, - 155, 156, 157, 158, 159, 64, 65, 66, 67, 68, - 69, 70, 203, 204, 205, 206, 0, 207, 208, 209, - 210, 211, 212, 213, 71, 0, 72, 73, 74, 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, 148, - 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 150, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 202, 151, - 152, 153, 154, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 59, 60, 61, 62, 63, 0, 0, 0, - 155, 156, 157, 158, 159, 64, 65, 66, 67, 68, - 69, 70, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 71, 0, 72, 73, 74, 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, 148, - 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 150, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, - 152, 153, 154, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 59, 60, 61, 62, 0, 0, 0, 0, - 155, 156, 157, 158, 159, 64, 65, 66, 67, 68, - 69, 70, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 71, 0, 72, 73, 74, 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, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 115, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 59, 60, 61, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 116, 64, 65, 66, 67, 68, - 69, 70, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 71, 0, 72, 73, 74, 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, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 59, 60, 61, 62, 63, 0, 0, 0, - 0, 0, 0, 0, 0, 64, 65, 66, 67, 68, - 69, 70, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 71, 0, 72, 73, 74, 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, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 265, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 59, 60, 61, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 64, 65, 66, 67, 68, - 69, 70, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 71, 0, 72, 73, 74, 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, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 339, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 59, 60, 61, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 64, 65, 66, 67, 68, - 69, 70, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 71, 0, 72, 73, 74, 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, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 372, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 59, 60, 61, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 64, 65, 66, 67, 68, - 69, 70, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 71, 0, 72, 73, 74, 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, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 59, 60, 61, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 64, 65, 66, 67, 68, - 69, 70, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 71, 0, 72, 73, 74, 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, 148, 149, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, - 184, 0, 0, 0, 0, 0, 0, 0, 151, 152, - 153, 154, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, - 156, 157, 158, 159, 64, 0, 0, 0, 0, 69, - 70, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 0, 119, 0, 0, 0, 0, 221, 0, 0, 0, + 0, 0, 221, 0, 0, 0, 0, 0, 0, 221, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 221, + 0, 0, 0, 221, 0, 0, 0, 123, 0, 221, + 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, - 148, 149, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, - 0, 0, 292, 0, 0, 0, 0, 0, 0, 0, - 151, 152, 153, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 155, 156, 157, 158, 159, 64, 0, 0, 0, - 0, 69, 70, 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, 148, 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 150, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 303, 151, 152, 153, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 155, 156, 157, 158, 159, 64, 0, - 0, 0, 0, 69, 70, 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, 148, 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 150, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 151, 152, 153, 154, 0, 0, + 0, 0, 0, 59, 60, 61, 62, 63, 0, 0, + 0, 0, 0, 0, 0, 0, 64, 65, 66, 67, + 68, 69, 70, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 71, 72, 73, 74, 75, + 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, + 149, 150, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, + 0, 0, 0, 201, 202, 0, 0, 0, 0, 203, + 152, 153, 154, 155, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 59, 60, 61, 62, 63, 0, 0, + 0, 156, 157, 158, 159, 160, 64, 65, 66, 67, + 68, 69, 70, 204, 205, 206, 207, 0, 208, 209, + 210, 211, 212, 213, 214, 71, 72, 73, 74, 75, + 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, + 149, 150, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, + 0, 0, 0, 201, 323, 0, 0, 0, 0, 203, + 152, 153, 154, 155, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 59, 60, 61, 62, 63, 0, 0, + 0, 156, 157, 158, 159, 160, 64, 65, 66, 67, + 68, 69, 70, 204, 205, 206, 207, 0, 208, 209, + 210, 211, 212, 213, 214, 71, 72, 73, 74, 75, + 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, + 149, 150, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, + 0, 0, 0, 201, 0, 0, 0, 0, 0, 203, + 152, 153, 154, 155, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 59, 60, 61, 62, 63, 0, 0, + 0, 156, 157, 158, 159, 160, 64, 65, 66, 67, + 68, 69, 70, 204, 205, 206, 207, 0, 208, 209, + 210, 211, 212, 213, 214, 71, 72, 73, 74, 75, + 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, + 149, 150, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, + 0, 0, 0, 135, 0, 0, 0, 0, 0, 203, + 152, 153, 154, 155, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 59, 60, 61, 62, 63, 0, 0, + 0, 156, 157, 158, 159, 160, 64, 65, 66, 67, + 68, 69, 70, 204, 205, 206, 207, 0, 208, 209, + 210, 211, 212, 213, 214, 71, 72, 73, 74, 75, + 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, + 149, 150, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 203, + 152, 153, 154, 155, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 59, 60, 61, 62, 63, 0, 0, + 0, 156, 157, 158, 159, 160, 64, 65, 66, 67, + 68, 69, 70, 204, 205, 206, 207, 0, 208, 209, + 210, 211, 212, 213, 214, 71, 72, 73, 74, 75, + 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, + 149, 150, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 203, + 152, 153, 154, 155, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 59, 60, 61, 62, 63, 0, 0, + 0, 156, 157, 158, 159, 160, 64, 65, 66, 67, + 68, 69, 70, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 71, 72, 73, 74, 75, + 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, + 149, 150, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 155, 156, 157, 158, 159, - 64, 0, 0, 0, 0, 69, 70, 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, 148, 149, 0, 0, + 152, 153, 154, 155, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 59, 60, 61, 62, 0, 0, 0, + 0, 156, 157, 158, 159, 160, 64, 65, 66, 67, + 68, 69, 70, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 71, 72, 73, 74, 75, + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 150, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 151, 152, 153, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 155, 156, 157, - 158, 159, 64, 0, 0, 0, 0, 69, 255, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 59, 60, 61, 62, 0, 0, 0, + 0, 0, 0, 0, 0, 117, 64, 65, 66, 67, + 68, 69, 70, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 71, 72, 73, 74, 75, + 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 59, 60, 61, 62, 63, 0, 0, + 0, 0, 0, 0, 0, 0, 64, 65, 66, 67, + 68, 69, 70, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 71, 72, 73, 74, 75, + 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 266, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 59, 60, 61, 62, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 64, 65, 66, 67, + 68, 69, 70, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 71, 72, 73, 74, 75, + 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 340, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 59, 60, 61, 62, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 64, 65, 66, 67, + 68, 69, 70, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 71, 72, 73, 74, 75, + 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 373, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 59, 60, 61, 62, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 64, 65, 66, 67, + 68, 69, 70, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 71, 72, 73, 74, 75, + 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 59, 60, 61, 62, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 64, 65, 66, 67, + 68, 69, 70, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 71, 72, 73, 74, 75, + 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, 149, + 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 151, 0, + 0, 185, 0, 0, 0, 0, 0, 0, 0, 152, + 153, 154, 155, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 156, 157, 158, 159, 160, 64, 0, 0, 0, 0, + 69, 70, 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, 149, 150, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 151, 0, 0, 293, 0, 0, 0, 0, 0, 0, + 0, 152, 153, 154, 155, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 156, 157, 158, 159, 160, 64, 0, 0, + 0, 0, 69, 70, 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, 149, 150, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 151, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 304, 152, 153, 154, 155, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 156, 157, 158, 159, 160, 64, + 0, 0, 0, 0, 69, 70, 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, 149, 150, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 151, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 152, 153, 154, 155, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 156, 157, 158, 159, + 160, 64, 0, 0, 0, 0, 69, 70, 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, 149, 150, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 151, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 152, 153, 154, + 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 156, 157, + 158, 159, 160, 64, 0, 0, 0, 0, 69, 256, + 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, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, + 69, 70 +}; + +static const yytype_int16 yycheck[] = +{ + 0, 81, 88, 151, 226, 237, 143, 179, 296, 241, + 0, 115, 132, 0, 181, 65, 66, 121, 70, 92, + 86, 363, 63, 64, 82, 111, 84, 107, 118, 83, + 89, 392, 169, 91, 83, 89, 140, 141, 399, 82, + 89, 82, 101, 84, 386, 118, 126, 88, 409, 139, + 100, 101, 118, 105, 84, 94, 84, 96, 84, 92, + 84, 91, 182, 211, 92, 213, 92, 91, 86, 84, + 89, 89, 83, 92, 92, 242, 91, 83, 300, 199, + 83, 81, 89, 89, 83, 92, 89, 83, 88, 118, + 89, 177, 89, 89, 326, 95, 268, 86, 98, 179, + 237, 181, 100, 251, 241, 95, 89, 107, 95, 92, + 86, 111, 91, 279, 280, 281, 282, 89, 255, 89, + 92, 89, 92, 118, 92, 413, 126, 107, 108, 109, + 97, 98, 99, 61, 62, 135, 118, 67, 68, 84, + 362, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 89, 90, 92, 302, 82, 328, 120, 306, 263, + 91, 118, 242, 89, 90, 275, 276, 283, 284, 132, + 83, 403, 277, 278, 84, 118, 69, 177, 103, 179, + 104, 181, 102, 320, 321, 71, 149, 150, 268, 326, + 85, 87, 82, 92, 92, 82, 90, 419, 82, 82, + 92, 82, 118, 118, 83, 85, 118, 85, 126, 172, + 87, 83, 360, 89, 82, 363, 86, 91, 83, 182, + 86, 92, 130, 86, 285, 92, 226, 87, 288, 286, + 184, 287, 107, 63, 289, 262, 199, 290, 386, 338, + 365, 398, 242, 365, 409, 393, 410, 111, 328, 111, + 105, 386, 389, 95, -1, -1, -1, -1, -1, -1, + 408, -1, -1, -1, -1, -1, 403, -1, 268, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 363, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 381, 296, 260, -1, -1, + 300, -1, -1, -1, -1, -1, 386, -1, -1, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 328, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 362, 363, -1, 365, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 381, -1, -1, -1, -1, 386, -1, -1, -1, + -1, -1, 392, -1, -1, -1, -1, -1, -1, 399, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 409, + -1, -1, -1, 413, -1, -1, -1, 0, -1, 419, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 64, 0, 0, 0, 0, 69, - 70 -}; - -static const yytype_int16 yycheck[] = -{ - 0, 80, 225, 87, 142, 150, 236, 114, 131, 295, - 240, 180, 70, 120, 178, 0, 86, 0, 65, 66, - 63, 64, 118, 92, 89, 82, 110, 106, 362, 82, - 168, 84, 139, 140, 86, 391, 101, 89, 91, 82, - 92, 84, 398, 139, 92, 88, 125, 105, 118, 118, - 84, 385, 408, 100, 101, 84, 84, 91, 181, 84, - 100, 84, 83, 92, 92, 210, 91, 212, 91, 61, - 62, 83, 241, 83, 89, 198, 299, 89, 83, 89, - 80, 118, 83, 89, 89, 83, 92, 87, 89, 86, - 83, 89, 176, 84, 94, 325, 89, 97, 236, 178, - 86, 180, 240, 267, 118, 250, 106, 67, 68, 94, - 110, 94, 278, 279, 280, 281, 254, 89, 89, 89, - 92, 92, 92, 118, 89, 125, 412, 92, 89, 92, - 94, 92, 96, 83, 134, 97, 98, 99, 361, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 107, - 108, 109, 89, 90, 82, 262, 301, 91, 91, 118, - 305, 84, 241, 327, 89, 90, 274, 275, 282, 283, - 276, 277, 402, 118, 104, 102, 176, 119, 178, 103, - 180, 319, 320, 69, 71, 85, 87, 325, 267, 131, - 82, 82, 82, 92, 92, 418, 92, 82, 82, 118, - 118, 90, 83, 85, 126, 85, 148, 149, 118, 87, - 89, 83, 82, 86, 359, 91, 83, 362, 92, 130, - 86, 86, 284, 92, 87, 225, 285, 287, 289, 171, - 286, 183, 63, 288, 261, 110, 337, 364, 106, 181, - 385, 241, 397, 408, 104, 364, 110, 392, 327, 409, - 388, 385, 94, -1, -1, -1, 198, -1, -1, -1, - -1, -1, 407, -1, 402, -1, -1, 267, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 362, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 295, 380, -1, -1, 299, - -1, -1, -1, -1, -1, -1, 385, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 259, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 327, -1, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 361, 362, -1, 364, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 380, -1, -1, -1, -1, 385, -1, -1, -1, -1, - -1, 391, -1, -1, -1, -1, -1, -1, 398, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 408, -1, - -1, -1, 412, -1, -1, -1, 0, -1, 418, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 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, -1, + 53, 54, 55, 56, 57, 58, 59, 60, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 106, 107, 108, 109, 110, -1, -1, -1, - -1, -1, -1, -1, -1, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 138, -1, 140, 141, 142, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, - -1, -1, 86, 87, -1, -1, -1, -1, 92, 93, - 94, 95, 96, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 106, 107, 108, 109, 110, -1, -1, -1, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, - 134, 135, 136, 137, 138, -1, 140, 141, 142, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, - -1, -1, 86, 87, -1, -1, -1, -1, 92, 93, - 94, 95, 96, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 106, 107, 108, 109, 110, -1, -1, -1, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, - 134, 135, 136, 137, 138, -1, 140, 141, 142, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, - -1, -1, 86, -1, -1, -1, -1, -1, 92, 93, - 94, 95, 96, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 106, 107, 108, 109, 110, -1, -1, -1, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, - 134, 135, 136, 137, 138, -1, 140, 141, 142, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, - -1, -1, 86, -1, -1, -1, -1, -1, 92, 93, - 94, 95, 96, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 106, 107, 108, 109, 110, -1, -1, -1, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, - 134, 135, 136, 137, 138, -1, 140, 141, 142, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 92, 93, - 94, 95, 96, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 106, 107, 108, 109, 110, -1, -1, -1, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, -1, 131, 132, 133, - 134, 135, 136, 137, 138, -1, 140, 141, 142, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 92, 93, - 94, 95, 96, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 106, 107, 108, 109, 110, -1, -1, -1, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 138, -1, 140, 141, 142, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, - 94, 95, 96, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 106, 107, 108, 109, -1, -1, -1, -1, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 138, -1, 140, 141, 142, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 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, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 92, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 106, 107, 108, 109, -1, -1, -1, -1, - -1, -1, -1, -1, 118, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 138, -1, 140, 141, 142, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 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, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 106, 107, 108, 109, 110, -1, -1, -1, - -1, -1, -1, -1, -1, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 138, -1, 140, 141, 142, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 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, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 87, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 106, 107, 108, 109, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 138, -1, 140, 141, 142, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 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, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 87, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 106, 107, 108, 109, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 138, -1, 140, 141, 142, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 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, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 87, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 106, 107, 108, 109, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 138, -1, 140, 141, 142, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 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, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 106, 107, 108, 109, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 138, -1, 140, 141, 142, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 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, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, - 85, -1, -1, -1, -1, -1, -1, -1, 93, 94, - 95, 96, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 114, - 115, 116, 117, 118, 119, -1, -1, -1, -1, 124, - 125, 4, 5, 6, 7, 8, 9, 10, 11, 12, + -1, -1, -1, 106, 107, 108, 109, 110, -1, -1, + -1, -1, -1, -1, -1, -1, 119, 120, 121, 122, + 123, 124, 125, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 138, 139, 140, 141, 142, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, @@ -1494,60 +1300,254 @@ static const yytype_int16 yycheck[] = 53, 54, 55, 56, 57, 58, 59, 60, -1, -1, 63, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, - -1, -1, 85, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 86, 87, -1, -1, -1, -1, 92, 93, 94, 95, 96, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 106, 107, 108, 109, 110, -1, -1, + -1, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, + -1, -1, -1, 86, 87, -1, -1, -1, -1, 92, + 93, 94, 95, 96, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 106, 107, 108, 109, 110, -1, -1, + -1, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, + -1, -1, -1, 86, -1, -1, -1, -1, -1, 92, + 93, 94, 95, 96, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 106, 107, 108, 109, 110, -1, -1, + -1, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, + -1, -1, -1, 86, -1, -1, -1, -1, -1, 92, + 93, 94, 95, 96, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 106, 107, 108, 109, 110, -1, -1, + -1, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 92, + 93, 94, 95, 96, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 106, 107, 108, 109, 110, -1, -1, + -1, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 92, + 93, 94, 95, 96, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 106, 107, 108, 109, 110, -1, -1, + -1, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 138, 139, 140, 141, 142, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 114, 115, 116, 117, 118, 119, -1, -1, -1, - -1, 124, 125, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, + 93, 94, 95, 96, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 106, 107, 108, 109, -1, -1, -1, + -1, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 138, 139, 140, 141, 142, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 92, 93, 94, 95, 96, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 114, 115, 116, 117, 118, 119, -1, - -1, -1, -1, 124, 125, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 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, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 92, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 93, 94, 95, 96, -1, -1, + -1, -1, -1, 106, 107, 108, 109, -1, -1, -1, + -1, -1, -1, -1, -1, 118, 119, 120, 121, 122, + 123, 124, 125, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 138, 139, 140, 141, 142, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 114, 115, 116, 117, 118, - 119, -1, -1, -1, -1, 124, 125, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 82, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 93, 94, 95, 96, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 114, 115, 116, - 117, 118, 119, -1, -1, -1, -1, 124, 125, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 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, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 106, 107, 108, 109, 110, -1, -1, + -1, -1, -1, -1, -1, -1, 119, 120, 121, 122, + 123, 124, 125, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 138, 139, 140, 141, 142, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 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, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 87, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 106, 107, 108, 109, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 119, 120, 121, 122, + 123, 124, 125, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 138, 139, 140, 141, 142, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 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, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 87, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 106, 107, 108, 109, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 119, 120, 121, 122, + 123, 124, 125, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 138, 139, 140, 141, 142, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 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, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 87, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 106, 107, 108, 109, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 119, 120, 121, 122, + 123, 124, 125, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 138, 139, 140, 141, 142, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 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, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 106, 107, 108, 109, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 119, 120, 121, 122, + 123, 124, 125, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 138, 139, 140, 141, 142, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, + -1, 85, -1, -1, -1, -1, -1, -1, -1, 93, + 94, 95, 96, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 114, 115, 116, 117, 118, 119, -1, -1, -1, -1, + 124, 125, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 82, -1, -1, 85, -1, -1, -1, -1, -1, -1, + -1, 93, 94, 95, 96, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 114, 115, 116, 117, 118, 119, -1, -1, + -1, -1, 124, 125, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 92, 93, 94, 95, 96, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 114, 115, 116, 117, 118, 119, + -1, -1, -1, -1, 124, 125, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 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, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 82, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 93, 94, 95, 96, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 114, 115, 116, 117, + 118, 119, -1, -1, -1, -1, 124, 125, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 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, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 82, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 93, 94, 95, + 96, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 114, 115, + 116, 117, 118, 119, -1, -1, -1, -1, 124, 125, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 119, -1, -1, -1, -1, 124, - 125 + -1, -1, -1, -1, -1, 119, -1, -1, -1, -1, + 124, 125 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1561,42 +1561,42 @@ static const yytype_uint8 yystos[] = 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 106, 107, 108, 109, 110, 119, 120, 121, 122, 123, 124, - 125, 138, 140, 141, 142, 174, 175, 178, 179, 180, - 181, 185, 186, 187, 188, 189, 190, 193, 194, 195, - 196, 201, 202, 203, 242, 243, 244, 202, 86, 118, - 82, 92, 118, 92, 245, 83, 89, 182, 183, 184, - 193, 196, 89, 92, 118, 92, 118, 194, 196, 100, - 198, 199, 0, 243, 196, 205, 86, 118, 139, 191, - 192, 84, 92, 197, 86, 221, 183, 182, 184, 118, - 118, 82, 91, 197, 86, 89, 92, 177, 63, 64, - 82, 93, 94, 95, 96, 114, 115, 116, 117, 118, - 144, 145, 146, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 196, 200, 197, 92, 193, 196, 206, 207, - 204, 91, 83, 89, 85, 155, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 84, 92, - 86, 87, 92, 126, 127, 128, 129, 131, 132, 133, - 134, 135, 136, 137, 155, 168, 170, 172, 174, 178, - 196, 211, 212, 213, 214, 222, 223, 224, 225, 228, - 229, 232, 233, 234, 241, 197, 91, 197, 170, 210, - 91, 176, 118, 89, 92, 155, 155, 172, 63, 64, - 84, 88, 83, 83, 89, 125, 170, 82, 155, 89, - 101, 196, 118, 208, 209, 87, 207, 206, 168, 173, - 192, 97, 98, 99, 94, 96, 61, 62, 65, 66, - 100, 101, 67, 68, 104, 103, 102, 69, 71, 70, - 105, 85, 85, 168, 87, 215, 82, 92, 92, 236, - 82, 82, 92, 92, 172, 82, 172, 90, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 91, 171, - 89, 92, 87, 212, 210, 91, 210, 206, 118, 83, - 147, 172, 118, 170, 155, 208, 197, 89, 92, 87, - 155, 155, 155, 157, 157, 158, 158, 159, 159, 159, - 159, 160, 160, 161, 162, 163, 164, 165, 166, 169, - 85, 222, 235, 212, 237, 172, 92, 172, 90, 170, - 170, 210, 87, 85, 92, 209, 172, 216, 172, 187, - 193, 227, 126, 211, 223, 238, 83, 83, 90, 87, - 118, 83, 82, 227, 239, 240, 218, 219, 220, 226, - 230, 170, 91, 213, 217, 221, 172, 92, 83, 130, - 214, 213, 86, 210, 83, 172, 217, 218, 222, 231, - 92, 87 + 125, 138, 139, 140, 141, 142, 174, 175, 178, 179, + 180, 181, 185, 186, 187, 188, 189, 190, 193, 194, + 195, 196, 201, 202, 203, 242, 243, 244, 202, 86, + 118, 82, 92, 118, 92, 245, 83, 89, 182, 183, + 184, 193, 196, 89, 92, 118, 92, 118, 194, 196, + 100, 198, 199, 0, 243, 196, 205, 86, 118, 139, + 191, 192, 84, 92, 197, 86, 221, 183, 182, 184, + 118, 118, 82, 91, 197, 86, 89, 92, 177, 63, + 64, 82, 93, 94, 95, 96, 114, 115, 116, 117, + 118, 144, 145, 146, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 196, 200, 197, 92, 193, 196, 206, + 207, 204, 91, 83, 89, 85, 155, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 84, + 92, 86, 87, 92, 126, 127, 128, 129, 131, 132, + 133, 134, 135, 136, 137, 155, 168, 170, 172, 174, + 178, 196, 211, 212, 213, 214, 222, 223, 224, 225, + 228, 229, 232, 233, 234, 241, 197, 91, 197, 170, + 210, 91, 176, 118, 89, 92, 155, 155, 172, 63, + 64, 84, 88, 83, 83, 89, 125, 170, 82, 155, + 89, 101, 196, 118, 208, 209, 87, 207, 206, 168, + 173, 192, 97, 98, 99, 94, 96, 61, 62, 65, + 66, 100, 101, 67, 68, 104, 103, 102, 69, 71, + 70, 105, 85, 85, 168, 87, 215, 82, 92, 92, + 236, 82, 82, 92, 92, 172, 82, 172, 90, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 91, + 171, 89, 92, 87, 212, 210, 91, 210, 206, 118, + 83, 147, 172, 118, 170, 155, 208, 197, 89, 92, + 87, 155, 155, 155, 157, 157, 158, 158, 159, 159, + 159, 159, 160, 160, 161, 162, 163, 164, 165, 166, + 169, 85, 222, 235, 212, 237, 172, 92, 172, 90, + 170, 170, 210, 87, 85, 92, 209, 172, 216, 172, + 187, 193, 227, 126, 211, 223, 238, 83, 83, 90, + 87, 118, 83, 82, 227, 239, 240, 218, 219, 220, + 226, 230, 170, 91, 213, 217, 221, 172, 92, 83, + 130, 214, 213, 86, 210, 83, 172, 217, 218, 222, + 231, 92, 87 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ @@ -1616,22 +1616,22 @@ static const yytype_uint8 yyr1[] = 185, 185, 185, 185, 185, 186, 186, 186, 186, 186, 187, 187, 188, 189, 189, 190, 191, 191, 192, 192, 192, 193, 193, 194, 194, 194, 194, 194, 195, 195, - 195, 195, 195, 195, 196, 196, 197, 197, 197, 197, - 198, 198, 199, 200, 200, 201, 201, 201, 201, 201, + 195, 195, 195, 195, 195, 196, 196, 197, 197, 197, + 197, 198, 198, 199, 200, 200, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 202, 202, 202, 204, 203, - 205, 203, 206, 206, 207, 207, 208, 208, 209, 209, - 210, 211, 212, 212, 213, 213, 213, 213, 213, 213, - 213, 214, 215, 216, 214, 217, 217, 219, 218, 220, - 218, 221, 221, 222, 222, 223, 223, 224, 225, 226, - 226, 227, 227, 228, 230, 229, 231, 231, 232, 232, - 233, 235, 234, 236, 234, 237, 234, 238, 238, 239, - 239, 240, 240, 241, 241, 241, 241, 241, 242, 242, - 243, 243, 245, 244 + 201, 201, 201, 201, 201, 201, 202, 202, 202, 204, + 203, 205, 203, 206, 206, 207, 207, 208, 208, 209, + 209, 210, 211, 212, 212, 213, 213, 213, 213, 213, + 213, 213, 214, 215, 216, 214, 217, 217, 219, 218, + 220, 218, 221, 221, 222, 222, 223, 223, 224, 225, + 226, 226, 227, 227, 228, 230, 229, 231, 231, 232, + 232, 233, 235, 234, 236, 234, 237, 234, 238, 238, + 239, 239, 240, 240, 241, 241, 241, 241, 241, 242, + 242, 243, 243, 245, 244 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1651,22 +1651,22 @@ static const yytype_uint8 yyr2[] = 1, 3, 4, 6, 5, 1, 2, 3, 5, 4, 1, 2, 1, 1, 1, 4, 1, 3, 1, 3, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 3, 2, 3, 3, 4, - 1, 0, 3, 1, 3, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 3, 2, 3, 3, + 4, 1, 0, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 0, 6, - 0, 5, 1, 2, 3, 4, 1, 3, 1, 2, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 0, 0, 5, 1, 1, 0, 2, 0, - 2, 2, 3, 1, 2, 1, 2, 1, 5, 3, - 1, 1, 4, 1, 0, 8, 0, 1, 3, 2, - 1, 0, 6, 0, 8, 0, 7, 1, 1, 1, - 0, 2, 3, 2, 2, 2, 3, 2, 1, 2, - 1, 1, 0, 3 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 6, 0, 5, 1, 2, 3, 4, 1, 3, 1, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 0, 0, 5, 1, 1, 0, 2, + 0, 2, 2, 3, 1, 2, 1, 2, 1, 5, + 3, 1, 1, 4, 1, 0, 8, 0, 1, 3, + 2, 1, 0, 6, 0, 8, 0, 7, 1, 1, + 1, 0, 2, 3, 2, 2, 2, 3, 2, 1, + 2, 1, 1, 0, 3 }; @@ -3802,17 +3802,30 @@ yyreduce: break; case 144: -#line 1165 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1159 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.globalCheck((yyvsp[0].lex).loc, "shared"); + parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared"); + parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 310, 0, "shared"); + parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangComputeMask | EShLangMeshNVMask | EShLangTaskNVMask), "shared"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.storage = EvqShared; + } +#line 3815 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 145: +#line 1173 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[-1].interm.type); (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); (yyval.interm.type).typeParameters = (yyvsp[0].interm.typeParameters); } -#line 3812 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3825 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 145: -#line 1170 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 146: +#line 1178 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.arrayOfArrayVersionCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes); (yyval.interm.type) = (yyvsp[-2].interm.type); @@ -3820,21 +3833,21 @@ yyreduce: (yyval.interm.type).typeParameters = (yyvsp[-1].interm.typeParameters); (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes; } -#line 3824 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3837 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 146: -#line 1180 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 147: +#line 1188 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).arraySizes = new TArraySizes; (yyval.interm).arraySizes->addInnerSize(); } -#line 3834 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3847 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 147: -#line 1185 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 148: +#line 1193 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[-2].lex).loc; (yyval.interm).arraySizes = new TArraySizes; @@ -3843,20 +3856,20 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 3847 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3860 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 148: -#line 1193 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 149: +#line 1201 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-2].interm); (yyval.interm).arraySizes->addInnerSize(); } -#line 3856 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3869 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 149: -#line 1197 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 150: +#line 1205 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-3].interm); @@ -3864,35 +3877,35 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 3868 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 150: -#line 1207 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.typeParameters) = (yyvsp[0].interm.typeParameters); - } -#line 3876 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3881 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 151: -#line 1210 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1215 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - (yyval.interm.typeParameters) = 0; + (yyval.interm.typeParameters) = (yyvsp[0].interm.typeParameters); } -#line 3884 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3889 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 152: -#line 1216 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1218 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - (yyval.interm.typeParameters) = (yyvsp[-1].interm.typeParameters); + (yyval.interm.typeParameters) = 0; } -#line 3892 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3897 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 153: -#line 1222 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1224 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.typeParameters) = (yyvsp[-1].interm.typeParameters); + } +#line 3905 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 154: +#line 1230 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeParameters) = new TArraySizes; @@ -3900,11 +3913,11 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); (yyval.interm.typeParameters)->addInnerSize(size); } -#line 3904 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3917 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 154: -#line 1229 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 155: +#line 1237 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeParameters) = (yyvsp[-2].interm.typeParameters); @@ -3912,600 +3925,600 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); (yyval.interm.typeParameters)->addInnerSize(size); } -#line 3916 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3929 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 155: -#line 1239 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 156: +#line 1247 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtVoid; } -#line 3925 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3938 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 156: -#line 1243 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 157: +#line 1251 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 3934 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3947 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 157: -#line 1247 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 158: +#line 1255 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 3943 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3956 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 158: -#line 1251 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 159: +#line 1259 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 3953 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 159: -#line 1256 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtBool; - } -#line 3962 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3966 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 160: -#line 1260 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1264 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setVector(2); + (yyval.interm.type).basicType = EbtBool; } -#line 3972 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3975 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 161: -#line 1265 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1268 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setVector(3); + (yyval.interm.type).setVector(2); } -#line 3982 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3985 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 162: -#line 1270 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1273 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setVector(3); + } +#line 3995 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 163: +#line 1278 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 3992 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 163: -#line 1275 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtBool; - (yyval.interm.type).setVector(2); - } -#line 4002 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4005 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 164: -#line 1280 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1283 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; - (yyval.interm.type).setVector(3); + (yyval.interm.type).setVector(2); } -#line 4012 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4015 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 165: -#line 1285 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1288 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtBool; + (yyval.interm.type).setVector(3); + } +#line 4025 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 166: +#line 1293 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(4); } -#line 4022 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 166: -#line 1290 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt; - (yyval.interm.type).setVector(2); - } -#line 4032 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4035 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 167: -#line 1295 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1298 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).setVector(2); + } +#line 4045 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 168: +#line 1303 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 4042 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4055 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 168: -#line 1300 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 169: +#line 1308 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 4052 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4065 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 169: -#line 1305 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 170: +#line 1313 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 4063 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4076 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 170: -#line 1311 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 171: +#line 1319 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 4074 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4087 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 171: -#line 1317 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 172: +#line 1325 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 4085 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4098 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 172: -#line 1323 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 173: +#line 1331 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 4095 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4108 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 173: -#line 1328 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 174: +#line 1336 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 4105 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4118 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 174: -#line 1333 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 175: +#line 1341 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 4115 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4128 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 175: -#line 1338 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 176: +#line 1346 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 4125 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4138 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 176: -#line 1343 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 177: +#line 1351 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 4135 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4148 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 177: -#line 1348 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 178: +#line 1356 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 4145 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4158 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 178: -#line 1353 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 179: +#line 1361 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 4155 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4168 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 179: -#line 1358 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 180: +#line 1366 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 4165 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4178 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 180: -#line 1363 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 181: +#line 1371 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 4175 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4188 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 181: -#line 1368 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 182: +#line 1376 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 4185 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4198 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 182: -#line 1373 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 183: +#line 1381 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 4195 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4208 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 183: -#line 1378 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 184: +#line 1386 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 4205 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4218 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 184: -#line 1384 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 185: +#line 1392 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); } -#line 4215 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4228 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 185: -#line 1389 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 186: +#line 1397 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd3D); } -#line 4225 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4238 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 186: -#line 1394 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 187: +#line 1402 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube); } -#line 4235 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4248 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 187: -#line 1399 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 188: +#line 1407 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true); } -#line 4245 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4258 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 188: -#line 1404 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 189: +#line 1412 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true); } -#line 4255 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4268 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 189: -#line 1409 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 190: +#line 1417 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true); } -#line 4265 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4278 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 190: -#line 1414 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 191: +#line 1422 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true); } -#line 4275 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4288 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 191: -#line 1420 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 192: +#line 1428 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D); } -#line 4285 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4298 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 192: -#line 1425 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 193: +#line 1433 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd3D); } -#line 4295 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4308 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 193: -#line 1430 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 194: +#line 1438 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube); } -#line 4305 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4318 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 194: -#line 1435 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 195: +#line 1443 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true); } -#line 4315 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4328 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 195: -#line 1440 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 196: +#line 1448 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D); } -#line 4325 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4338 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 196: -#line 1445 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 197: +#line 1453 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd3D); } -#line 4335 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4348 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 197: -#line 1450 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 198: +#line 1458 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube); } -#line 4345 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4358 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 198: -#line 1456 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 199: +#line 1464 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true); } -#line 4355 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4368 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 199: -#line 1461 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 200: +#line 1469 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D); } -#line 4365 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4378 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 200: -#line 1466 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 201: +#line 1474 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D); } -#line 4375 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4388 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 201: -#line 1471 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 202: +#line 1479 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true); } -#line 4385 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4398 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 202: -#line 1476 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 203: +#line 1484 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube); } -#line 4395 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4408 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 203: -#line 1481 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 204: +#line 1489 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D); } -#line 4405 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4418 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 204: -#line 1486 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 205: +#line 1494 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D); } -#line 4415 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4428 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 205: -#line 1491 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 206: +#line 1499 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube); } -#line 4425 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4438 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 206: -#line 1496 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 207: +#line 1504 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true); } -#line 4435 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4448 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 207: -#line 1501 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 208: +#line 1509 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D); } -#line 4445 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4458 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 208: -#line 1506 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 209: +#line 1514 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D); } -#line 4455 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4468 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 209: -#line 1511 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 210: +#line 1519 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube); } -#line 4465 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4478 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 210: -#line 1516 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 211: +#line 1524 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true); } -#line 4475 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4488 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 211: -#line 1521 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 212: +#line 1529 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(false); } -#line 4485 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4498 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 212: -#line 1526 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 213: +#line 1534 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(true); } -#line 4495 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4508 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 213: -#line 1532 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 214: +#line 1540 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type)); } -#line 4505 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4518 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 214: -#line 1537 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 215: +#line 1545 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // // This is for user defined type names. The lexical phase looked up the @@ -4519,47 +4532,47 @@ yyreduce: } else parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), ""); } -#line 4523 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4536 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 215: -#line 1553 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 216: +#line 1561 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "highp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh); } -#line 4533 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4546 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 216: -#line 1558 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 217: +#line 1566 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium); } -#line 4543 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4556 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 217: -#line 1563 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 218: +#line 1571 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow); } -#line 4553 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 218: -#line 1571 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); } -#line 4559 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4566 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 219: -#line 1571 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1579 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); } +#line 4572 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 220: +#line 1579 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { TType* structure = new TType((yyvsp[-1].interm.typeList), *(yyvsp[-4].lex).string); parseContext.structArrayCheck((yyvsp[-4].lex).loc, *structure); @@ -4571,17 +4584,17 @@ yyreduce: (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 4575 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 220: -#line 1582 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); } -#line 4581 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4588 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 221: -#line 1582 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1590 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); } +#line 4594 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 222: +#line 1590 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { TType* structure = new TType((yyvsp[-1].interm.typeList), TString("")); (yyval.interm.type).init((yyvsp[-4].lex).loc); @@ -4589,19 +4602,19 @@ yyreduce: (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 4593 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 222: -#line 1592 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.typeList) = (yyvsp[0].interm.typeList); - } -#line 4601 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4606 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 223: -#line 1595 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1600 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.typeList) = (yyvsp[0].interm.typeList); + } +#line 4614 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 224: +#line 1603 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeList) = (yyvsp[-1].interm.typeList); for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) { @@ -4612,11 +4625,11 @@ yyreduce: (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]); } } -#line 4616 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4629 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 224: -#line 1608 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 225: +#line 1616 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -4639,11 +4652,11 @@ yyreduce: (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 4643 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4656 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 225: -#line 1630 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 226: +#line 1638 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -4668,38 +4681,38 @@ yyreduce: (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 4672 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4685 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 226: -#line 1657 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 227: +#line 1665 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeList) = new TTypeList; (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 4681 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 227: -#line 1661 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); - } -#line 4689 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4694 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 228: -#line 1667 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1669 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); + } +#line 4702 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 229: +#line 1675 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeLine).type = new TType(EbtVoid); (yyval.interm.typeLine).loc = (yyvsp[0].lex).loc; (yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string); } -#line 4699 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4712 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 229: -#line 1672 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 230: +#line 1680 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes); @@ -4708,181 +4721,181 @@ yyreduce: (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string); (yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes); } -#line 4712 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 230: -#line 1683 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); - } -#line 4720 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4725 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 231: -#line 1692 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4726 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 1691 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + } +#line 4733 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 232: -#line 1696 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1700 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4732 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4739 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 233: -#line 1697 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1704 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4738 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4745 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 234: -#line 1703 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1705 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4744 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4751 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 235: -#line 1704 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1711 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4750 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4757 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 236: -#line 1705 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1712 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4756 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4763 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 237: -#line 1706 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1713 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4762 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4769 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 238: -#line 1707 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1714 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4768 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4775 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 239: -#line 1708 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1715 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4774 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4781 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 240: -#line 1709 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1716 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4780 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4787 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 241: -#line 1716 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = 0; } -#line 4786 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 1717 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 4793 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 242: -#line 1717 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1724 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermNode) = 0; } +#line 4799 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 243: +#line 1725 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; } -#line 4795 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4808 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 243: -#line 1721 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 244: +#line 1729 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; } -#line 4804 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4817 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 244: -#line 1725 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 245: +#line 1733 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate()) (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode); } -#line 4814 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 245: -#line 1733 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4820 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4827 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 246: -#line 1734 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1741 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4826 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4833 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 247: -#line 1738 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - ++parseContext.controlFlowNestingLevel; - } -#line 4834 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 1742 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 4839 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 248: -#line 1741 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1746 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + ++parseContext.controlFlowNestingLevel; + } +#line 4847 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 249: +#line 1749 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4843 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4856 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 249: -#line 1745 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 250: +#line 1753 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 4853 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4866 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 250: -#line 1750 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 251: +#line 1758 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4864 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 251: -#line 1759 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = 0; - } -#line 4872 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4877 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 252: -#line 1762 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1767 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.intermNode) = 0; + } +#line 4885 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 253: +#line 1770 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate()) (yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode); } -#line 4882 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4895 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 253: -#line 1770 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 254: +#line 1778 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || @@ -4891,11 +4904,11 @@ yyreduce: (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case } } -#line 4895 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4908 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 254: -#line 1778 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 255: +#line 1786 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { @@ -4904,67 +4917,67 @@ yyreduce: } else (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 4908 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 255: -#line 1789 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = 0; } -#line 4914 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4921 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 256: -#line 1790 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = static_cast((yyvsp[-1].interm.intermTypedNode)); } -#line 4920 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 1797 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermNode) = 0; } +#line 4927 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 257: -#line 1794 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); - } -#line 4928 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 1798 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermNode) = static_cast((yyvsp[-1].interm.intermTypedNode)); } +#line 4933 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 258: -#line 1800 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1802 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + } +#line 4941 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 259: +#line 1808 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode)); (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc); } -#line 4937 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4950 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 259: -#line 1807 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 260: +#line 1815 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode); } -#line 4946 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 260: -#line 1811 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode); - (yyval.interm.nodePair).node2 = 0; - } -#line 4955 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4959 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 261: #line 1819 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); - parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)); + (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode); + (yyval.interm.nodePair).node2 = 0; } -#line 4964 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4968 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 262: -#line 1823 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1827 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)); + } +#line 4977 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 263: +#line 1831 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type)); @@ -4975,19 +4988,19 @@ yyreduce: else (yyval.interm.intermTypedNode) = 0; } -#line 4979 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 263: -#line 1836 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); - } -#line 4987 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4992 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 264: -#line 1842 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1844 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + } +#line 5000 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 265: +#line 1850 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // start new switch sequence on the switch stack ++parseContext.controlFlowNestingLevel; @@ -4996,11 +5009,11 @@ yyreduce: parseContext.switchLevel.push_back(parseContext.statementNestingLevel); parseContext.symbolTable.push(); } -#line 5000 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5013 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 265: -#line 1850 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 266: +#line 1858 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0); delete parseContext.switchSequenceStack.back(); @@ -5010,27 +5023,27 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 5014 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 266: -#line 1862 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = 0; - } -#line 5022 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5027 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 267: -#line 1865 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1870 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + (yyval.interm.intermNode) = 0; } -#line 5030 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5035 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 268: -#line 1871 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1873 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + } +#line 5043 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 269: +#line 1879 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -5043,11 +5056,11 @@ yyreduce: (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc); } } -#line 5047 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5060 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 269: -#line 1883 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 270: +#line 1891 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -5057,19 +5070,19 @@ yyreduce: else (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc); } -#line 5061 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 270: -#line 1895 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); - } -#line 5069 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5074 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 271: -#line 1901 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1903 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + } +#line 5082 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 272: +#line 1909 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", ""); @@ -5078,11 +5091,11 @@ yyreduce: ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 5082 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5095 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 272: -#line 1909 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 273: +#line 1917 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc); @@ -5090,21 +5103,21 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 5094 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5107 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 273: -#line 1916 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 274: +#line 1924 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 5104 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5117 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 274: -#line 1921 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 275: +#line 1929 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", ""); @@ -5116,22 +5129,22 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 5120 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5133 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 275: -#line 1932 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 276: +#line 1940 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 5131 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5144 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 276: -#line 1938 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 277: +#line 1946 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc); @@ -5144,81 +5157,81 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 5148 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 277: -#line 1953 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); - } -#line 5156 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5161 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 278: -#line 1956 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1961 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 5164 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5169 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 279: -#line 1962 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1964 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 5172 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5177 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 280: -#line 1965 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1970 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - (yyval.interm.intermTypedNode) = 0; + (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5180 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5185 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 281: -#line 1971 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1973 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.intermTypedNode) = 0; + } +#line 5193 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 282: +#line 1979 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); (yyval.interm.nodePair).node2 = 0; } -#line 5189 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5202 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 282: -#line 1975 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 283: +#line 1983 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode); } -#line 5198 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5211 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 283: -#line 1982 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 284: +#line 1990 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if (parseContext.loopNestingLevel <= 0) parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc); } -#line 5208 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5221 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 284: -#line 1987 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 285: +#line 1995 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0) parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc); } -#line 5218 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5231 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 285: -#line 1992 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 286: +#line 2000 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc); if (parseContext.currentFunctionType->getBasicType() != EbtVoid) @@ -5226,73 +5239,73 @@ yyreduce: if (parseContext.inMain) parseContext.postEntryPointReturn = true; } -#line 5230 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 286: -#line 1999 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); - } -#line 5238 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5243 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 287: -#line 2002 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2007 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); + } +#line 5251 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 288: +#line 2010 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc); } -#line 5247 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5260 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 288: -#line 2011 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 289: +#line 2019 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } -#line 5256 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5269 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 289: -#line 2015 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 290: +#line 2023 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[0].interm.intermNode) != nullptr) { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } } -#line 5267 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 290: -#line 2024 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); - } -#line 5275 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5280 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 291: -#line 2027 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2032 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 5283 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5288 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 292: -#line 2034 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2035 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + } +#line 5296 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 293: +#line 2042 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyvsp[0].interm).function = parseContext.handleFunctionDeclarator((yyvsp[0].interm).loc, *(yyvsp[0].interm).function, false /* not prototype */); (yyvsp[0].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[0].interm).loc, *(yyvsp[0].interm).function); } -#line 5292 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5305 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 293: -#line 2038 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 294: +#line 2046 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // May be best done as post process phase on intermediate code if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) @@ -5308,11 +5321,11 @@ yyreduce: (yyval.interm.intermNode)->getAsAggregate()->setDebug(parseContext.contextPragma.debug); (yyval.interm.intermNode)->getAsAggregate()->setPragmaTable(parseContext.contextPragma.pragmaTable); } -#line 5312 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5325 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; -#line 5316 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5329 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -5540,5 +5553,5 @@ yyreturn: #endif return yyresult; } -#line 2057 "MachineIndependent/glslang.y" /* yacc.c:1906 */ +#line 2065 "MachineIndependent/glslang.y" /* yacc.c:1906 */ diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index 13b0f6c2..4d00d396 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -267,7 +267,6 @@ public: uniformLocationBase(0) #endif { -#ifndef GLSLANG_WEB localSize[0] = 1; localSize[1] = 1; localSize[2] = 1; @@ -277,6 +276,7 @@ public: localSizeSpecId[0] = TQualifier::layoutNotSet; localSizeSpecId[1] = TQualifier::layoutNotSet; localSizeSpecId[2] = TQualifier::layoutNotSet; +#ifndef GLSLANG_WEB xfbBuffers.resize(TQualifier::layoutXfbBufferEnd); shiftBinding.fill(0); #endif @@ -492,6 +492,23 @@ public: bool usingVariablePointers() const { return false; } unsigned getXfbStride(int buffer) const { return 0; } bool hasLayoutDerivativeModeNone() const { return false; } + bool setLocalSize(int dim, int size) + { + if (localSizeNotDefault[dim]) + return size == localSize[dim]; + localSizeNotDefault[dim] = true; + localSize[dim] = size; + return true; + } + unsigned int getLocalSize(int dim) const { return localSize[dim]; } + bool setLocalSizeSpecId(int dim, int id) + { + if (localSizeSpecId[dim] != TQualifier::layoutNotSet) + return id == localSizeSpecId[dim]; + localSizeSpecId[dim] = id; + return true; + } + int getLocalSizeSpecId(int dim) const { return localSizeSpecId[dim]; } #else void output(TInfoSink&, bool tree); @@ -655,24 +672,6 @@ public: } TInterlockOrdering getInterlockOrdering() const { return interlockOrdering; } - bool setLocalSize(int dim, int size) - { - if (localSizeNotDefault[dim]) - return size == localSize[dim]; - localSizeNotDefault[dim] = true; - localSize[dim] = size; - return true; - } - unsigned int getLocalSize(int dim) const { return localSize[dim]; } - - bool setLocalSizeSpecId(int dim, int id) - { - if (localSizeSpecId[dim] != TQualifier::layoutNotSet) - return id == localSizeSpecId[dim]; - localSizeSpecId[dim] = id; - return true; - } - int getLocalSizeSpecId(int dim) const { return localSizeSpecId[dim]; } void setXfbMode() { xfbMode = true; } bool getXfbMode() const { return xfbMode; } void setMultiStream() { multiStream = true; } @@ -920,6 +919,9 @@ protected: bool useStorageBuffer; bool nanMinMaxClamp; // true if desiring min/max/clamp to favor non-NaN over NaN bool depthReplacing; + int localSize[3]; + bool localSizeNotDefault[3]; + int localSizeSpecId[3]; #ifndef GLSLANG_WEB bool useVulkanMemoryModel; int invocations; @@ -932,9 +934,6 @@ protected: TVertexOrder vertexOrder; TInterlockOrdering interlockOrdering; bool pointMode; - int localSize[3]; - bool localSizeNotDefault[3]; - int localSizeSpecId[3]; bool earlyFragmentTests; bool postDepthCoverage; TLayoutDepth depthLayout; From 3dd1ce5b54d9ff7d2652f6792dbbdf6ab3599e1f Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Thu, 17 Oct 2019 07:08:40 -0600 Subject: [PATCH 58/94] Web: Add SSBOs and a few other missing compute features. --- SPIRV/GlslangToSpv.cpp | 130 +- Test/baseResults/size | 2 +- Test/baseResults/web.comp.out | 157 +- Test/web.comp | 19 +- glslang/MachineIndependent/Initialize.cpp | 8 +- glslang/MachineIndependent/ParseHelper.cpp | 18 +- glslang/MachineIndependent/Scan.cpp | 15 +- glslang/MachineIndependent/glslang.m4 | 10 +- glslang/MachineIndependent/glslang.y | 11 +- glslang/MachineIndependent/glslang_tab.cpp | 2735 +++++++++--------- glslang/MachineIndependent/glslang_tab.cpp.h | 9 +- 11 files changed, 1612 insertions(+), 1502 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 762a292e..c6dcef5e 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -673,6 +673,13 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI case glslang::EbvFace: return spv::BuiltInFrontFacing; case glslang::EbvFragDepth: return spv::BuiltInFragDepth; + case glslang::EbvNumWorkGroups: return spv::BuiltInNumWorkgroups; + case glslang::EbvWorkGroupSize: return spv::BuiltInWorkgroupSize; + case glslang::EbvWorkGroupId: return spv::BuiltInWorkgroupId; + case glslang::EbvLocalInvocationId: return spv::BuiltInLocalInvocationId; + case glslang::EbvLocalInvocationIndex: return spv::BuiltInLocalInvocationIndex; + case glslang::EbvGlobalInvocationId: return spv::BuiltInGlobalInvocationId; + #ifndef GLSLANG_WEB // These *Distance capabilities logically belong here, but if the member is declared and // then never used, consumers of SPIR-V prefer the capability not be declared. @@ -757,12 +764,6 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI case glslang::EbvTessCoord: return spv::BuiltInTessCoord; case glslang::EbvPatchVertices: return spv::BuiltInPatchVertices; case glslang::EbvHelperInvocation: return spv::BuiltInHelperInvocation; - case glslang::EbvNumWorkGroups: return spv::BuiltInNumWorkgroups; - case glslang::EbvWorkGroupSize: return spv::BuiltInWorkgroupSize; - case glslang::EbvWorkGroupId: return spv::BuiltInWorkgroupId; - case glslang::EbvLocalInvocationId: return spv::BuiltInLocalInvocationId; - case glslang::EbvLocalInvocationIndex: return spv::BuiltInLocalInvocationIndex; - case glslang::EbvGlobalInvocationId: return spv::BuiltInGlobalInvocationId; case glslang::EbvSubGroupSize: builder.addExtension(spv::E_SPV_KHR_shader_ballot); @@ -1200,11 +1201,11 @@ spv::StorageClass TGlslangToSpvTraverser::TranslateStorageClass(const glslang::T } switch (type.getQualifier().storage) { - case glslang::EvqGlobal: return spv::StorageClassPrivate; - case glslang::EvqConstReadOnly: return spv::StorageClassFunction; - case glslang::EvqTemporary: return spv::StorageClassFunction; -#ifndef GLSLANG_WEB + case glslang::EvqGlobal: return spv::StorageClassPrivate; + case glslang::EvqConstReadOnly: return spv::StorageClassFunction; + case glslang::EvqTemporary: return spv::StorageClassFunction; case glslang::EvqShared: return spv::StorageClassWorkgroup; +#ifndef GLSLANG_WEB case glslang::EvqPayloadNV: return spv::StorageClassRayPayloadNV; case glslang::EvqPayloadInNV: return spv::StorageClassIncomingRayPayloadNV; case glslang::EvqHitAttrNV: return spv::StorageClassHitAttributeNV; @@ -2548,7 +2549,6 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt binOp = glslang::EOpMod; break; -#ifndef GLSLANG_WEB case glslang::EOpEmitVertex: case glslang::EOpEndPrimitive: case glslang::EOpBarrier: @@ -2572,6 +2572,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt // These all have 0 operands and will naturally finish up in the code below for 0 operands break; +#ifndef GLSLANG_WEB case glslang::EOpAtomicStore: noReturnValue = true; // fallthrough @@ -3537,8 +3538,8 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty builder.addIncorporatedExtension("SPV_EXT_descriptor_indexing", spv::Spv_1_5); builder.addCapability(spv::CapabilityRuntimeDescriptorArrayEXT); } - spvType = builder.makeRuntimeArray(spvType); #endif + spvType = builder.makeRuntimeArray(spvType); } if (stride > 0) builder.addDecoration(spvType, spv::DecorationArrayStride, stride); @@ -7172,6 +7173,48 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: case glslang::EOpRefract: libCall = spv::GLSLstd450Refract; break; + case glslang::EOpBarrier: + { + // This is for the extended controlBarrier function, with four operands. + // The unextended barrier() goes through createNoArgOperation. + assert(operands.size() == 4); + unsigned int executionScope = builder.getConstantScalar(operands[0]); + unsigned int memoryScope = builder.getConstantScalar(operands[1]); + unsigned int semantics = builder.getConstantScalar(operands[2]) | builder.getConstantScalar(operands[3]); + builder.createControlBarrier((spv::Scope)executionScope, (spv::Scope)memoryScope, (spv::MemorySemanticsMask)semantics); + if (semantics & (spv::MemorySemanticsMakeAvailableKHRMask | + spv::MemorySemanticsMakeVisibleKHRMask | + spv::MemorySemanticsOutputMemoryKHRMask | + spv::MemorySemanticsVolatileMask)) { + builder.addCapability(spv::CapabilityVulkanMemoryModelKHR); + } + if (glslangIntermediate->usingVulkanMemoryModel() && (executionScope == spv::ScopeDevice || memoryScope == spv::ScopeDevice)) { + builder.addCapability(spv::CapabilityVulkanMemoryModelDeviceScopeKHR); + } + return 0; + } + break; + case glslang::EOpMemoryBarrier: + { + // This is for the extended memoryBarrier function, with three operands. + // The unextended memoryBarrier() goes through createNoArgOperation. + assert(operands.size() == 3); + unsigned int memoryScope = builder.getConstantScalar(operands[0]); + unsigned int semantics = builder.getConstantScalar(operands[1]) | builder.getConstantScalar(operands[2]); + builder.createMemoryBarrier((spv::Scope)memoryScope, (spv::MemorySemanticsMask)semantics); + if (semantics & (spv::MemorySemanticsMakeAvailableKHRMask | + spv::MemorySemanticsMakeVisibleKHRMask | + spv::MemorySemanticsOutputMemoryKHRMask | + spv::MemorySemanticsVolatileMask)) { + builder.addCapability(spv::CapabilityVulkanMemoryModelKHR); + } + if (glslangIntermediate->usingVulkanMemoryModel() && memoryScope == spv::ScopeDevice) { + builder.addCapability(spv::CapabilityVulkanMemoryModelDeviceScopeKHR); + } + return 0; + } + break; + #ifndef GLSLANG_WEB case glslang::EOpInterpolateAtSample: if (typeProxy == glslang::EbtFloat16) @@ -7330,47 +7373,6 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: extBuiltins = getExtBuiltins(spv::E_SPV_AMD_shader_explicit_vertex_parameter); libCall = spv::InterpolateAtVertexAMD; break; - case glslang::EOpBarrier: - { - // This is for the extended controlBarrier function, with four operands. - // The unextended barrier() goes through createNoArgOperation. - assert(operands.size() == 4); - unsigned int executionScope = builder.getConstantScalar(operands[0]); - unsigned int memoryScope = builder.getConstantScalar(operands[1]); - unsigned int semantics = builder.getConstantScalar(operands[2]) | builder.getConstantScalar(operands[3]); - builder.createControlBarrier((spv::Scope)executionScope, (spv::Scope)memoryScope, (spv::MemorySemanticsMask)semantics); - if (semantics & (spv::MemorySemanticsMakeAvailableKHRMask | - spv::MemorySemanticsMakeVisibleKHRMask | - spv::MemorySemanticsOutputMemoryKHRMask | - spv::MemorySemanticsVolatileMask)) { - builder.addCapability(spv::CapabilityVulkanMemoryModelKHR); - } - if (glslangIntermediate->usingVulkanMemoryModel() && (executionScope == spv::ScopeDevice || memoryScope == spv::ScopeDevice)) { - builder.addCapability(spv::CapabilityVulkanMemoryModelDeviceScopeKHR); - } - return 0; - } - break; - case glslang::EOpMemoryBarrier: - { - // This is for the extended memoryBarrier function, with three operands. - // The unextended memoryBarrier() goes through createNoArgOperation. - assert(operands.size() == 3); - unsigned int memoryScope = builder.getConstantScalar(operands[0]); - unsigned int semantics = builder.getConstantScalar(operands[1]) | builder.getConstantScalar(operands[2]); - builder.createMemoryBarrier((spv::Scope)memoryScope, (spv::MemorySemanticsMask)semantics); - if (semantics & (spv::MemorySemanticsMakeAvailableKHRMask | - spv::MemorySemanticsMakeVisibleKHRMask | - spv::MemorySemanticsOutputMemoryKHRMask | - spv::MemorySemanticsVolatileMask)) { - builder.addCapability(spv::CapabilityVulkanMemoryModelKHR); - } - if (glslangIntermediate->usingVulkanMemoryModel() && memoryScope == spv::ScopeDevice) { - builder.addCapability(spv::CapabilityVulkanMemoryModelDeviceScopeKHR); - } - return 0; - } - break; case glslang::EOpReportIntersectionNV: { @@ -7478,17 +7480,18 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: // Intrinsics with no arguments (or no return value, and no precision). spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId) { -#ifndef GLSLANG_WEB // GLSL memory barriers use queuefamily scope in new model, device scope in old model spv::Scope memoryBarrierScope = glslangIntermediate->usingVulkanMemoryModel() ? spv::ScopeQueueFamilyKHR : spv::ScopeDevice; switch (op) { +#ifndef GLSLANG_WEB case glslang::EOpEmitVertex: builder.createNoResultOp(spv::OpEmitVertex); return 0; case glslang::EOpEndPrimitive: builder.createNoResultOp(spv::OpEndPrimitive); return 0; +#endif case glslang::EOpBarrier: if (glslangIntermediate->getStage() == EShLangTessControl) { if (glslangIntermediate->usingVulkanMemoryModel()) { @@ -7509,18 +7512,10 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op, spv: builder.createMemoryBarrier(memoryBarrierScope, spv::MemorySemanticsAllMemory | spv::MemorySemanticsAcquireReleaseMask); return 0; - case glslang::EOpMemoryBarrierAtomicCounter: - builder.createMemoryBarrier(memoryBarrierScope, spv::MemorySemanticsAtomicCounterMemoryMask | - spv::MemorySemanticsAcquireReleaseMask); - return 0; case glslang::EOpMemoryBarrierBuffer: builder.createMemoryBarrier(memoryBarrierScope, spv::MemorySemanticsUniformMemoryMask | spv::MemorySemanticsAcquireReleaseMask); return 0; - case glslang::EOpMemoryBarrierImage: - builder.createMemoryBarrier(memoryBarrierScope, spv::MemorySemanticsImageMemoryMask | - spv::MemorySemanticsAcquireReleaseMask); - return 0; case glslang::EOpMemoryBarrierShared: builder.createMemoryBarrier(memoryBarrierScope, spv::MemorySemanticsWorkgroupMemoryMask | spv::MemorySemanticsAcquireReleaseMask); @@ -7529,6 +7524,15 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op, spv: builder.createMemoryBarrier(spv::ScopeWorkgroup, spv::MemorySemanticsAllMemory | spv::MemorySemanticsAcquireReleaseMask); return 0; +#ifndef GLSLANG_WEB + case glslang::EOpMemoryBarrierAtomicCounter: + builder.createMemoryBarrier(memoryBarrierScope, spv::MemorySemanticsAtomicCounterMemoryMask | + spv::MemorySemanticsAcquireReleaseMask); + return 0; + case glslang::EOpMemoryBarrierImage: + builder.createMemoryBarrier(memoryBarrierScope, spv::MemorySemanticsImageMemoryMask | + spv::MemorySemanticsAcquireReleaseMask); + return 0; case glslang::EOpAllMemoryBarrierWithGroupSync: builder.createControlBarrier(spv::ScopeWorkgroup, spv::ScopeDevice, spv::MemorySemanticsAllMemory | @@ -7620,10 +7624,10 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op, spv: builder.addCapability(spv::CapabilityShaderClockKHR); return builder.createOp(spv::OpReadClockKHR, typeId, args); } +#endif default: break; } -#endif logger->missingFunctionality("unknown operation with no arguments"); diff --git a/Test/baseResults/size b/Test/baseResults/size index 48487765..a7b99b96 100644 --- a/Test/baseResults/size +++ b/Test/baseResults/size @@ -1 +1 @@ -388096 ../build/install/bin/glslangValidator.exe +399360 ../build/install/bin/glslangValidator.exe diff --git a/Test/baseResults/web.comp.out b/Test/baseResults/web.comp.out index e69de88c..711c7203 100644 --- a/Test/baseResults/web.comp.out +++ b/Test/baseResults/web.comp.out @@ -1,75 +1,140 @@ ; SPIR-V ; Version: 1.0 ; Generator: Khronos Glslang Reference Front End; 7 -; Bound: 55 +; Bound: 91 ; Schema: 0 OpCapability Shader %1 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 - OpEntryPoint GLCompute %main "main" + OpEntryPoint GLCompute %main "main" %gl_NumWorkGroups %gl_WorkGroupID %gl_LocalInvocationID %gl_GlobalInvocationID %gl_LocalInvocationIndex OpExecutionMode %main LocalSize 2 5 7 OpSource ESSL 310 OpName %main "main" + OpName %bName "bName" + OpMemberName %bName 0 "size" + OpMemberName %bName 1 "count" + OpMemberName %bName 2 "data" + OpName %bInst "bInst" OpName %s "s" OpName %arrX "arrX" OpName %arrY "arrY" OpName %arrZ "arrZ" - OpDecorate %19 SpecId 18 - OpDecorate %21 SpecId 19 + OpName %gl_NumWorkGroups "gl_NumWorkGroups" + OpName %gl_WorkGroupID "gl_WorkGroupID" + OpName %gl_LocalInvocationID "gl_LocalInvocationID" + OpName %gl_GlobalInvocationID "gl_GlobalInvocationID" + OpName %gl_LocalInvocationIndex "gl_LocalInvocationIndex" + OpDecorate %_runtimearr_v4float ArrayStride 16 + OpMemberDecorate %bName 0 Offset 0 + OpMemberDecorate %bName 1 Offset 16 + OpMemberDecorate %bName 2 Offset 32 + OpDecorate %bName BufferBlock + OpDecorate %bInst DescriptorSet 0 + OpDecorate %bInst Binding 0 + OpDecorate %39 SpecId 18 + OpDecorate %41 SpecId 19 + OpDecorate %gl_WorkGroupSize BuiltIn WorkgroupSize + OpDecorate %gl_NumWorkGroups BuiltIn NumWorkgroups + OpDecorate %gl_WorkGroupID BuiltIn WorkgroupId + OpDecorate %gl_LocalInvocationID BuiltIn LocalInvocationId + OpDecorate %gl_GlobalInvocationID BuiltIn GlobalInvocationId + OpDecorate %gl_LocalInvocationIndex BuiltIn LocalInvocationIndex %void = OpTypeVoid %3 = OpTypeFunction %void + %uint = OpTypeInt 32 0 + %uint_2 = OpConstant %uint 2 + %uint_264 = OpConstant %uint 264 + %int = OpTypeInt 32 1 + %v3uint = OpTypeVector %uint 3 %float = OpTypeFloat 32 %v4float = OpTypeVector %float 4 - %uint = OpTypeInt 32 0 +%_runtimearr_v4float = OpTypeRuntimeArray %v4float + %bName = OpTypeStruct %int %v3uint %_runtimearr_v4float +%_ptr_Uniform_bName = OpTypePointer Uniform %bName + %bInst = OpVariable %_ptr_Uniform_bName Uniform + %int_2 = OpConstant %int 2 + %int_0 = OpConstant %int 0 +%_ptr_Uniform_int = OpTypePointer Uniform %int + %float_7 = OpConstant %float 7 + %24 = OpConstantComposite %v4float %float_7 %float_7 %float_7 %float_7 +%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float + %uint_1 = OpConstant %uint 1 + %uint_3400 = OpConstant %uint 3400 + %uint_72 = OpConstant %uint 72 %uint_197645 = OpConstant %uint 197645 %_arr_v4float_uint_197645 = OpTypeArray %v4float %uint_197645 -%_ptr_Function__arr_v4float_uint_197645 = OpTypePointer Function %_arr_v4float_uint_197645 - %int = OpTypeInt 32 1 +%_ptr_Workgroup__arr_v4float_uint_197645 = OpTypePointer Workgroup %_arr_v4float_uint_197645 + %s = OpVariable %_ptr_Workgroup__arr_v4float_uint_197645 Workgroup %int_3 = OpConstant %int 3 - %float_1 = OpConstant %float 1 - %16 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 -%_ptr_Function_v4float = OpTypePointer Function %v4float - %19 = OpSpecConstant %uint 2 + %float_0 = OpConstant %float 0 + %39 = OpSpecConstant %uint 2 %uint_5 = OpConstant %uint 5 - %21 = OpSpecConstant %uint 7 - %v3uint = OpTypeVector %uint 3 - %23 = OpSpecConstantComposite %v3uint %19 %uint_5 %21 + %41 = OpSpecConstant %uint 7 +%gl_WorkGroupSize = OpSpecConstantComposite %v3uint %39 %uint_5 %41 %uint_0 = OpConstant %uint 0 -%_arr_int_25 = OpTypeArray %int %25 -%_ptr_Private__arr_int_25 = OpTypePointer Private %_arr_int_25 - %arrX = OpVariable %_ptr_Private__arr_int_25 Private - %int_0 = OpConstant %int 0 +%_arr_int_44 = OpTypeArray %int %44 +%_ptr_Private__arr_int_44 = OpTypePointer Private %_arr_int_44 + %arrX = OpVariable %_ptr_Private__arr_int_44 Private %_ptr_Private_int = OpTypePointer Private %int - %uint_1 = OpConstant %uint 1 -%_arr_int_34 = OpTypeArray %int %34 -%_ptr_Private__arr_int_34 = OpTypePointer Private %_arr_int_34 - %arrY = OpVariable %_ptr_Private__arr_int_34 Private - %uint_2 = OpConstant %uint 2 -%_arr_int_42 = OpTypeArray %int %42 -%_ptr_Private__arr_int_42 = OpTypePointer Private %_arr_int_42 - %arrZ = OpVariable %_ptr_Private__arr_int_42 Private +%_arr_int_52 = OpTypeArray %int %52 +%_ptr_Private__arr_int_52 = OpTypePointer Private %_arr_int_52 + %arrY = OpVariable %_ptr_Private__arr_int_52 Private +%_arr_int_59 = OpTypeArray %int %59 +%_ptr_Private__arr_int_59 = OpTypePointer Private %_arr_int_59 + %arrZ = OpVariable %_ptr_Private__arr_int_59 Private +%_ptr_Workgroup_v4float = OpTypePointer Workgroup %v4float + %int_1 = OpConstant %int 1 +%_ptr_Input_v3uint = OpTypePointer Input %v3uint +%gl_NumWorkGroups = OpVariable %_ptr_Input_v3uint Input +%gl_WorkGroupID = OpVariable %_ptr_Input_v3uint Input +%gl_LocalInvocationID = OpVariable %_ptr_Input_v3uint Input +%gl_GlobalInvocationID = OpVariable %_ptr_Input_v3uint Input +%_ptr_Input_uint = OpTypePointer Input %uint +%gl_LocalInvocationIndex = OpVariable %_ptr_Input_uint Input +%_ptr_Uniform_v3uint = OpTypePointer Uniform %v3uint %int_197645 = OpConstant %int 197645 %main = OpFunction %void None %3 %5 = OpLabel - %s = OpVariable %_ptr_Function__arr_v4float_uint_197645 Function - %18 = OpAccessChain %_ptr_Function_v4float %s %int_3 - OpStore %18 %16 - %25 = OpCompositeExtract %uint %23 0 - %31 = OpAccessChain %_ptr_Private_int %arrX %int_0 - %32 = OpLoad %int %31 - %34 = OpCompositeExtract %uint %23 1 - %38 = OpAccessChain %_ptr_Private_int %arrY %int_0 - %39 = OpLoad %int %38 - %40 = OpIMul %int %32 %39 - %42 = OpCompositeExtract %uint %23 2 - %46 = OpAccessChain %_ptr_Private_int %arrZ %int_0 - %47 = OpLoad %int %46 - %48 = OpIMul %int %40 %47 - %49 = OpConvertSToF %float %48 - %50 = OpAccessChain %_ptr_Function_v4float %s %int_3 - %51 = OpLoad %v4float %50 - %52 = OpVectorTimesScalar %v4float %51 %49 - %53 = OpAccessChain %_ptr_Function_v4float %s %int_3 - OpStore %53 %52 + OpControlBarrier %uint_2 %uint_2 %uint_264 + %20 = OpAccessChain %_ptr_Uniform_int %bInst %int_0 + %21 = OpLoad %int %20 + %22 = OpSDiv %int %21 %int_2 + %26 = OpAccessChain %_ptr_Uniform_v4float %bInst %int_2 %22 + %27 = OpLoad %v4float %26 + %28 = OpFMul %v4float %27 %24 + %29 = OpAccessChain %_ptr_Uniform_v4float %bInst %int_2 %22 + OpStore %29 %28 + OpMemoryBarrier %uint_1 %uint_3400 + OpMemoryBarrier %uint_2 %uint_3400 + OpMemoryBarrier %uint_1 %uint_264 + OpMemoryBarrier %uint_1 %uint_72 + %44 = OpCompositeExtract %uint %gl_WorkGroupSize 0 + %49 = OpAccessChain %_ptr_Private_int %arrX %int_0 + %50 = OpLoad %int %49 + %51 = OpConvertSToF %float %50 + %52 = OpCompositeExtract %uint %gl_WorkGroupSize 1 + %56 = OpAccessChain %_ptr_Private_int %arrY %int_0 + %57 = OpLoad %int %56 + %58 = OpConvertSToF %float %57 + %59 = OpCompositeExtract %uint %gl_WorkGroupSize 2 + %63 = OpAccessChain %_ptr_Private_int %arrZ %int_0 + %64 = OpLoad %int %63 + %65 = OpConvertSToF %float %64 + %66 = OpCompositeConstruct %v4float %float_0 %51 %58 %65 + %68 = OpAccessChain %_ptr_Workgroup_v4float %s %int_3 + OpStore %68 %66 + %72 = OpLoad %v3uint %gl_NumWorkGroups + %73 = OpIAdd %v3uint %72 %gl_WorkGroupSize + %75 = OpLoad %v3uint %gl_WorkGroupID + %76 = OpIAdd %v3uint %73 %75 + %78 = OpLoad %v3uint %gl_LocalInvocationID + %79 = OpIAdd %v3uint %76 %78 + %81 = OpLoad %v3uint %gl_GlobalInvocationID + %84 = OpLoad %uint %gl_LocalInvocationIndex + %85 = OpCompositeConstruct %v3uint %84 %84 %84 + %86 = OpIMul %v3uint %81 %85 + %87 = OpIAdd %v3uint %79 %86 + %89 = OpAccessChain %_ptr_Uniform_v3uint %bInst %int_1 + OpStore %89 %87 OpReturn OpFunctionEnd diff --git a/Test/web.comp b/Test/web.comp index 9cc23bff..24ef43c8 100644 --- a/Test/web.comp +++ b/Test/web.comp @@ -5,6 +5,7 @@ layout(local_size_x_id = 18, local_size_z_id = 19) in; layout(local_size_x = 2) in; layout(local_size_y = 5) in; layout(local_size_z = 7) in; + const int total = gl_MaxComputeWorkGroupCount.x + gl_MaxComputeWorkGroupCount.y + gl_MaxComputeWorkGroupCount.z @@ -17,12 +18,24 @@ int arrX[gl_WorkGroupSize.x]; int arrY[gl_WorkGroupSize.y]; int arrZ[gl_WorkGroupSize.z]; +layout(binding = 0, set = 0) buffer bName { + int size; + uvec3 count; + vec4 data[]; +} bInst; + void main() { barrier(); + + bInst.data[bInst.size / 2] *= vec4(7.0); + memoryBarrier(); - memoryBarrierShared(); groupMemoryBarrier(); - s[3] = vec4(1.0); - s[3] *= arrX[0] * arrY[0] * arrZ[0]; + memoryBarrierShared(); + memoryBarrierBuffer(); + + s[3] = vec4(0, arrX[0], arrY[0], arrZ[0]); + bInst.count = gl_NumWorkGroups + gl_WorkGroupSize + gl_WorkGroupID + gl_LocalInvocationID + + gl_GlobalInvocationID * gl_LocalInvocationIndex; } diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index cb3baf18..18590af1 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -3819,13 +3819,13 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV stageBuiltins[EShLangCompute].append( "void memoryBarrierShared();" "void groupMemoryBarrier();" + "void memoryBarrierBuffer();" ); } #ifndef GLSLANG_WEB if ((profile != EEsProfile && version >= 420) || esBarrier) { commonBuiltins.append( "void memoryBarrierAtomicCounter();" - "void memoryBarrierBuffer();" "void memoryBarrierImage();" ); } @@ -7692,8 +7692,10 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("dFdyCoarse", 1, &E_GL_NV_compute_shader_derivatives); symbolTable.setFunctionExtensions("fwidthCoarse", 1, &E_GL_NV_compute_shader_derivatives); } - +#endif break; + +#ifndef GLSLANG_WEB case EShLangRayGenNV: case EShLangIntersectNV: case EShLangAnyHitNV: @@ -8108,6 +8110,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("barrier", EOpBarrier); symbolTable.relateToOperator("memoryBarrier", EOpMemoryBarrier); + symbolTable.relateToOperator("memoryBarrierBuffer", EOpMemoryBarrierBuffer); #ifndef GLSLANG_WEB symbolTable.relateToOperator("packInt2x16", EOpPackInt2x16); @@ -8132,7 +8135,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("controlBarrier", EOpBarrier); symbolTable.relateToOperator("memoryBarrierAtomicCounter", EOpMemoryBarrierAtomicCounter); - symbolTable.relateToOperator("memoryBarrierBuffer", EOpMemoryBarrierBuffer); symbolTable.relateToOperator("memoryBarrierImage", EOpMemoryBarrierImage); symbolTable.relateToOperator("atomicLoad", EOpAtomicLoad); diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 786da187..f4c8b160 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -3813,10 +3813,6 @@ void TParseContext::arraySizesCheck(const TSourceLoc& loc, const TQualifier& qua // for ES, if size isn't coming from an initializer, it has to be explicitly declared now, // with very few exceptions - // last member of ssbo block exception: - if (qualifier.storage == EvqBuffer && lastMember) - return; - // implicitly-sized io exceptions: switch (language) { case EShLangGeometry: @@ -3851,6 +3847,10 @@ void TParseContext::arraySizesCheck(const TSourceLoc& loc, const TQualifier& qua #endif + // last member of ssbo block exception: + if (qualifier.storage == EvqBuffer && lastMember) + return; + arraySizeRequiredCheck(loc, *arraySizes); } @@ -5384,6 +5384,7 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi #endif case EShLangCompute: if (id.compare(0, 11, "local_size_") == 0) { +#ifndef GLSLANG_WEB if (language == EShLangMeshNV || language == EShLangTaskNV) { requireExtensions(loc, 1, &E_GL_NV_mesh_shader, "gl_WorkGroupSize"); } @@ -5392,6 +5393,7 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi profileRequires(loc, EEsProfile, 310, 0, "gl_WorkGroupSize"); profileRequires(loc, ~EEsProfile, 430, E_GL_ARB_compute_shader, "gl_WorkGroupSize"); } +#endif if (nonLiteral) error(loc, "needs a literal integer", "local_size", ""); if (id.size() == 12 && value == 0) { @@ -8017,7 +8019,9 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con } if (intermediate.getLocalSize(i) > (unsigned int)max) error(loc, "too large; see gl_MaxComputeWorkGroupSize", "local_size", ""); - } else if (language == EShLangMeshNV) { + } +#ifndef GLSLANG_WEB + else if (language == EShLangMeshNV) { switch (i) { case 0: max = resources.maxMeshWorkGroupSizeX_NV; break; case 1: max = resources.maxMeshWorkGroupSizeY_NV; break; @@ -8035,7 +8039,9 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con } if (intermediate.getLocalSize(i) > (unsigned int)max) error(loc, "too large; see gl_MaxTaskWorkGroupSizeNV", "local_size", ""); - } else { + } +#endif + else { assert(0); } diff --git a/glslang/MachineIndependent/Scan.cpp b/glslang/MachineIndependent/Scan.cpp index 459e49a3..7b0093d7 100644 --- a/glslang/MachineIndependent/Scan.cpp +++ b/glslang/MachineIndependent/Scan.cpp @@ -343,6 +343,7 @@ void TScanContext::fillInKeywordMap() (*KeywordMap)["const"] = CONST; (*KeywordMap)["uniform"] = UNIFORM; + (*KeywordMap)["buffer"] = BUFFER; (*KeywordMap)["in"] = IN; (*KeywordMap)["out"] = OUT; (*KeywordMap)["smooth"] = SMOOTH; @@ -410,7 +411,6 @@ void TScanContext::fillInKeywordMap() (*KeywordMap)["attribute"] = ATTRIBUTE; (*KeywordMap)["varying"] = VARYING; (*KeywordMap)["noperspective"] = NOPERSPECTIVE; - (*KeywordMap)["buffer"] = BUFFER; (*KeywordMap)["coherent"] = COHERENT; (*KeywordMap)["devicecoherent"] = DEVICECOHERENT; (*KeywordMap)["queuefamilycoherent"] = QUEUEFAMILYCOHERENT; @@ -905,6 +905,13 @@ int TScanContext::tokenizeIdentifier() case CASE: return keyword; + case BUFFER: + afterBuffer = true; + if ((parseContext.isEsProfile() && parseContext.version < 310) || + (!parseContext.isEsProfile() && parseContext.version < 430)) + return identifierOrType(); + return keyword; + case STRUCT: afterStruct = true; return keyword; @@ -998,12 +1005,6 @@ int TScanContext::tokenizeIdentifier() if (parseContext.isEsProfile() && parseContext.version >= 300) reservedWord(); return keyword; - case BUFFER: - afterBuffer = true; - if ((parseContext.isEsProfile() && parseContext.version < 310) || - (!parseContext.isEsProfile() && parseContext.version < 430)) - return identifierOrType(); - return keyword; case PAYLOADNV: case PAYLOADINNV: case HITATTRNV: diff --git a/glslang/MachineIndependent/glslang.m4 b/glslang/MachineIndependent/glslang.m4 index e9780e2a..20f2ba40 100644 --- a/glslang/MachineIndependent/glslang.m4 +++ b/glslang/MachineIndependent/glslang.m4 @@ -38,7 +38,7 @@ // // Do not edit the .y file, only edit the .m4 file. -// The .y bison file is not a source file, it is a derivitive of the .m4 file. +// The .y bison file is not a source file, it is a derivative of the .m4 file. // The m4 file needs to be processed by m4 to generate the .y bison file. // // Code sandwiched between a pair: @@ -49,7 +49,7 @@ // ... // GLSLANG_WEB_EXCLUDE_OFF // -// Will be exluded from the grammar when m4 is executed as: +// Will be excluded from the grammar when m4 is executed as: // // m4 -P -DGLSLANG_WEB // @@ -277,7 +277,7 @@ GLSLANG_WEB_EXCLUDE_OFF %token CENTROID IN OUT INOUT %token STRUCT VOID WHILE %token BREAK CONTINUE DO ELSE FOR IF DISCARD RETURN SWITCH CASE DEFAULT -%token UNIFORM SHARED +%token UNIFORM SHARED BUFFER %token FLAT SMOOTH LAYOUT GLSLANG_WEB_EXCLUDE_ON @@ -285,7 +285,7 @@ GLSLANG_WEB_EXCLUDE_ON %token INT64CONSTANT UINT64CONSTANT %token SUBROUTINE DEMOTE %token PAYLOADNV PAYLOADINNV HITATTRNV CALLDATANV CALLDATAINNV -%token PATCH SAMPLE BUFFER NONUNIFORM +%token PATCH SAMPLE NONUNIFORM %token COHERENT VOLATILE RESTRICT READONLY WRITEONLY DEVICECOHERENT QUEUEFAMILYCOHERENT WORKGROUPCOHERENT %token SUBGROUPCOHERENT NONPRIVATE %token NOPERSPECTIVE EXPLICITINTERPAMD PERVERTEXNV PERPRIMITIVENV PERVIEWNV PERTASKNV @@ -1368,12 +1368,12 @@ storage_qualifier $$.init($1.loc); $$.qualifier.storage = EvqShared; } -GLSLANG_WEB_EXCLUDE_ON | BUFFER { parseContext.globalCheck($1.loc, "buffer"); $$.init($1.loc); $$.qualifier.storage = EvqBuffer; } +GLSLANG_WEB_EXCLUDE_ON | ATTRIBUTE { parseContext.requireStage($1.loc, EShLangVertex, "attribute"); parseContext.checkDeprecated($1.loc, ECoreProfile, 130, "attribute"); diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index 5001f60f..1b8e9519 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -38,7 +38,7 @@ // // Do not edit the .y file, only edit the .m4 file. -// The .y bison file is not a source file, it is a derivitive of the .m4 file. +// The .y bison file is not a source file, it is a derivative of the .m4 file. // The m4 file needs to be processed by m4 to generate the .y bison file. // // Code sandwiched between a pair: @@ -49,7 +49,7 @@ // ... // GLSLANG_WEB_EXCLUDE_OFF // -// Will be exluded from the grammar when m4 is executed as: +// Will be excluded from the grammar when m4 is executed as: // // m4 -P -DGLSLANG_WEB // @@ -194,7 +194,7 @@ extern int yylex(YYSTYPE*, TParseContext&); %token CENTROID IN OUT INOUT %token STRUCT VOID WHILE %token BREAK CONTINUE DO ELSE FOR IF DISCARD RETURN SWITCH CASE DEFAULT -%token UNIFORM SHARED +%token UNIFORM SHARED BUFFER %token FLAT SMOOTH LAYOUT @@ -1164,6 +1164,11 @@ storage_qualifier $$.init($1.loc); $$.qualifier.storage = EvqShared; } + | BUFFER { + parseContext.globalCheck($1.loc, "buffer"); + $$.init($1.loc); + $$.qualifier.storage = EvqBuffer; + } ; diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp index 4488b699..6292a4cc 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -260,9 +260,10 @@ extern int yydebug; DEFAULT = 392, UNIFORM = 393, SHARED = 394, - FLAT = 395, - SMOOTH = 396, - LAYOUT = 397 + BUFFER = 395, + FLAT = 396, + SMOOTH = 397, + LAYOUT = 398 }; #endif @@ -307,7 +308,7 @@ union YYSTYPE glslang::TArraySizes* typeParameters; } interm; -#line 311 "MachineIndependent/glslang_tab.cpp" /* yacc.c:355 */ +#line 312 "MachineIndependent/glslang_tab.cpp" /* yacc.c:355 */ }; typedef union YYSTYPE YYSTYPE; @@ -338,7 +339,7 @@ int yyparse (glslang::TParseContext* pParseContext); extern int yylex(YYSTYPE*, TParseContext&); -#line 342 "MachineIndependent/glslang_tab.cpp" /* yacc.c:358 */ +#line 343 "MachineIndependent/glslang_tab.cpp" /* yacc.c:358 */ #ifdef short # undef short @@ -578,23 +579,23 @@ union yyalloc #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 123 +#define YYFINAL 124 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 3111 +#define YYLAST 3126 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 143 +#define YYNTOKENS 144 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 103 /* YYNRULES -- Number of rules. */ -#define YYNRULES 294 +#define YYNRULES 295 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 423 +#define YYNSTATES 424 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 397 +#define YYMAXUTOK 398 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -642,7 +643,7 @@ static const yytype_uint8 yytranslate[] = 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142 + 135, 136, 137, 138, 139, 140, 141, 142, 143 }; #if YYDEBUG @@ -663,22 +664,22 @@ static const yytype_uint16 yyrline[] = 939, 942, 946, 950, 955, 963, 968, 973, 978, 983, 992, 1002, 1029, 1038, 1045, 1056, 1062, 1065, 1072, 1076, 1080, 1090, 1093, 1104, 1107, 1110, 1114, 1118, 1126, 1130, - 1135, 1141, 1147, 1154, 1159, 1173, 1178, 1188, 1193, 1201, - 1205, 1215, 1218, 1224, 1230, 1237, 1247, 1251, 1255, 1259, - 1264, 1268, 1273, 1278, 1283, 1288, 1293, 1298, 1303, 1308, - 1313, 1319, 1325, 1331, 1336, 1341, 1346, 1351, 1356, 1361, - 1366, 1371, 1376, 1381, 1386, 1392, 1397, 1402, 1407, 1412, - 1417, 1422, 1428, 1433, 1438, 1443, 1448, 1453, 1458, 1464, + 1135, 1141, 1147, 1154, 1159, 1167, 1178, 1183, 1193, 1198, + 1206, 1210, 1220, 1223, 1229, 1235, 1242, 1252, 1256, 1260, + 1264, 1269, 1273, 1278, 1283, 1288, 1293, 1298, 1303, 1308, + 1313, 1318, 1324, 1330, 1336, 1341, 1346, 1351, 1356, 1361, + 1366, 1371, 1376, 1381, 1386, 1391, 1397, 1402, 1407, 1412, + 1417, 1422, 1427, 1433, 1438, 1443, 1448, 1453, 1458, 1463, 1469, 1474, 1479, 1484, 1489, 1494, 1499, 1504, 1509, 1514, - 1519, 1524, 1529, 1534, 1540, 1545, 1561, 1566, 1571, 1579, - 1579, 1590, 1590, 1600, 1603, 1616, 1638, 1665, 1669, 1675, - 1680, 1691, 1700, 1704, 1705, 1711, 1712, 1713, 1714, 1715, - 1716, 1717, 1724, 1725, 1729, 1725, 1741, 1742, 1746, 1746, - 1753, 1753, 1767, 1770, 1778, 1786, 1797, 1798, 1802, 1808, - 1815, 1819, 1827, 1831, 1844, 1850, 1850, 1870, 1873, 1879, - 1891, 1903, 1909, 1909, 1924, 1924, 1940, 1940, 1961, 1964, - 1970, 1973, 1979, 1983, 1990, 1995, 2000, 2007, 2010, 2019, - 2023, 2032, 2035, 2042, 2042 + 1519, 1524, 1529, 1534, 1539, 1545, 1550, 1566, 1571, 1576, + 1584, 1584, 1595, 1595, 1605, 1608, 1621, 1643, 1670, 1674, + 1680, 1685, 1696, 1705, 1709, 1710, 1716, 1717, 1718, 1719, + 1720, 1721, 1722, 1729, 1730, 1734, 1730, 1746, 1747, 1751, + 1751, 1758, 1758, 1772, 1775, 1783, 1791, 1802, 1803, 1807, + 1813, 1820, 1824, 1832, 1836, 1849, 1855, 1855, 1875, 1878, + 1884, 1896, 1908, 1914, 1914, 1929, 1929, 1945, 1945, 1966, + 1969, 1975, 1978, 1984, 1988, 1995, 2000, 2005, 2012, 2015, + 2024, 2028, 2037, 2040, 2047, 2047 }; #endif @@ -711,8 +712,8 @@ static const char *const yytname[] = "INTCONSTANT", "UINTCONSTANT", "BOOLCONSTANT", "IDENTIFIER", "TYPE_NAME", "CENTROID", "IN", "OUT", "INOUT", "STRUCT", "VOID", "WHILE", "BREAK", "CONTINUE", "DO", "ELSE", "FOR", "IF", "DISCARD", "RETURN", "SWITCH", - "CASE", "DEFAULT", "UNIFORM", "SHARED", "FLAT", "SMOOTH", "LAYOUT", - "$accept", "variable_identifier", "primary_expression", + "CASE", "DEFAULT", "UNIFORM", "SHARED", "BUFFER", "FLAT", "SMOOTH", + "LAYOUT", "$accept", "variable_identifier", "primary_expression", "postfix_expression", "integer_expression", "function_call", "function_call_or_method", "function_call_generic", "function_call_header_no_parameters", @@ -770,7 +771,7 @@ static const yytype_uint16 yytoknum[] = 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397 + 395, 396, 397, 398 }; # endif @@ -779,7 +780,7 @@ static const yytype_uint16 yytoknum[] = #define yypact_value_is_default(Yystate) \ (!!((Yystate) == (-362))) -#define YYTABLE_NINF -249 +#define YYTABLE_NINF -250 #define yytable_value_is_error(Yytable_value) \ 0 @@ -788,49 +789,49 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - 1677, -362, -362, -362, -362, -362, -362, -362, -362, -362, + 1687, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, - -362, -362, -362, 20, -362, -362, -362, -362, -362, -66, - -362, -362, -362, -362, -362, -43, -362, -73, -33, -11, - 3, 2237, -19, -362, -29, -362, -362, -362, 1537, -362, - -362, -362, 2, -362, -362, 417, -362, -362, 2986, -362, - 11, -90, -362, -28, -362, 24, -362, 2237, -362, -362, - -362, 2237, 5, 18, -362, -58, -362, -18, -362, -362, - 2742, 55, -362, -362, -362, 61, 2237, -362, 21, -362, - -54, -362, 2376, -362, -26, 557, -362, -362, -362, -362, - 55, -30, -362, 2742, -24, -362, 43, -362, -7, 2742, - 2742, 2742, -362, -362, -362, -362, -362, -362, -362, -362, - -362, -362, -362, -41, -362, -362, -362, 87, -49, 2864, - 73, -362, 2742, -362, -59, 90, -362, 2237, 57, 1817, - -362, 2237, 2742, -362, -90, -362, -362, 33, -39, 72, - -50, 70, 76, 75, 80, 107, 114, -52, 105, 2498, - -362, 104, -362, -362, 110, 101, 102, -362, 113, 116, - 108, 2620, 117, 2742, 106, 69, -362, -362, 17, -362, - -33, 119, -362, -362, -362, -362, 697, -362, -362, -362, - -362, -362, -362, -362, -362, -362, 90, 2742, -15, -362, - -362, 2742, 2237, -362, 84, -362, -362, -362, -6, -362, - -362, 2742, 85, -362, -362, 2742, 121, -362, -362, -362, - 2742, -362, 57, 55, 28, -362, -362, -362, 1957, -362, - -362, -362, 2742, 2742, 2742, 2742, 2742, 2742, 2742, 2742, - 2742, 2742, 2742, 2742, 2742, 2742, 2742, 2742, 2742, 2742, - 2742, -362, -362, -362, 120, -362, 837, -362, -362, -362, - 837, -362, 2742, -362, -362, 30, 2742, 62, -362, -362, + -362, -362, -362, 22, -362, -362, -362, -362, -362, -66, + -362, -362, -362, -362, -362, -362, -10, -362, -73, -8, + 5, 4, 2251, -58, -362, -21, -362, -362, -362, 1546, + -362, -362, -362, 7, -362, -362, 418, -362, -362, 3001, + -362, 25, -95, -362, -57, -362, 36, -362, 2251, -362, + -362, -362, 2251, 6, 17, -362, -27, -362, -18, -362, + -362, 2757, 44, -362, -362, -362, 47, 2251, -362, 77, + -362, -6, -362, 2391, -362, -26, 559, -362, -362, -362, + -362, 44, -30, -362, 2757, -24, -362, 51, -362, -33, + 2757, 2757, 2757, -362, -362, -362, -362, -362, -362, -362, + -362, -362, -362, -362, -42, -362, -362, -362, 87, -3, + 2879, 71, -362, 2757, -362, -63, 88, -362, 2251, 55, + 1828, -362, 2251, 2757, -362, -95, -362, -362, 35, -53, + -32, -50, 70, 72, 74, 73, 105, 110, -52, 98, + 2513, -362, 99, -362, -362, 106, 95, 100, -362, 111, + 112, 103, 2635, 114, 2757, 108, 69, -362, -362, -19, + -362, -8, 117, -362, -362, -362, -362, 700, -362, -362, + -362, -362, -362, -362, -362, -362, -362, 88, 2757, -15, + -362, -362, 2757, 2251, -362, 82, -362, -362, -362, -2, + -362, -362, 2757, 83, -362, -362, 2757, 119, -362, -362, + -362, 2757, -362, 55, 44, 28, -362, -362, -362, 1969, + -362, -362, -362, 2757, 2757, 2757, 2757, 2757, 2757, 2757, + 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, + 2757, 2757, -362, -362, -362, 118, -362, 841, -362, -362, + -362, 841, -362, 2757, -362, -362, 29, 2757, 62, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, - 2742, 2742, -362, -362, -362, -362, 2742, -362, 2097, -362, - -362, 122, 124, -362, -362, -362, 32, 90, 57, -362, - -362, -362, -362, -362, 33, 33, -39, -39, 72, 72, - 72, 72, -50, -50, 70, 76, 75, 80, 107, 114, - 2742, -362, 837, 1397, 82, 1257, -3, -362, 1, -362, - -362, -362, -362, -362, -362, -362, -362, 74, 123, 124, - 88, 2237, 128, 132, -362, -362, 1397, 130, -362, 2742, - -362, 126, 977, 2742, -362, 129, 135, 92, 134, 1117, - -362, 137, -362, 2742, -362, -362, -362, 4, 2742, 977, - 130, -362, -362, 837, -362, 133, 124, -362, -362, 837, - 140, -362, -362 + -362, 2757, 2757, -362, -362, -362, -362, 2757, -362, 2110, + -362, -362, 120, 115, -362, -362, -362, 34, 88, 55, + -362, -362, -362, -362, -362, 35, 35, -53, -53, -32, + -32, -32, -32, -50, -50, 70, 72, 74, 73, 105, + 110, 2757, -362, 841, 1405, 80, 1264, 2, -362, 9, + -362, -362, -362, -362, -362, -362, -362, -362, 67, 123, + 115, 89, 2251, 128, 131, -362, -362, 1405, 130, -362, + 2757, -362, 126, 982, 2757, -362, 122, 135, 90, 133, + 1123, -362, 136, -362, 2757, -362, -362, -362, 21, 2757, + 982, 130, -362, -362, 841, -362, 129, 115, -362, -362, + 841, 137, -362, -362 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -838,81 +839,81 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 0, 138, 160, 158, 159, 157, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 161, 162, 163, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 212, 213, 200, 201, 203, - 202, 204, 205, 206, 207, 208, 209, 210, 211, 122, - 216, 217, 218, 0, 215, 142, 140, 141, 139, 0, - 156, 143, 144, 124, 123, 0, 292, 0, 293, 0, - 99, 98, 0, 110, 115, 137, 136, 134, 0, 131, - 133, 120, 152, 135, 214, 0, 289, 291, 0, 221, - 0, 0, 87, 0, 84, 0, 97, 0, 106, 100, - 108, 0, 109, 0, 85, 116, 90, 0, 132, 121, - 0, 145, 151, 1, 290, 0, 0, 219, 128, 130, - 0, 126, 0, 88, 0, 0, 294, 101, 105, 107, - 103, 111, 102, 0, 117, 93, 0, 91, 0, 0, - 0, 0, 33, 32, 34, 31, 5, 6, 7, 8, - 2, 3, 9, 27, 11, 16, 17, 0, 0, 21, - 0, 154, 0, 25, 0, 146, 86, 0, 0, 0, - 223, 0, 0, 125, 0, 147, 35, 39, 42, 45, - 50, 53, 55, 57, 59, 61, 63, 65, 0, 0, - 89, 243, 252, 256, 0, 0, 0, 274, 0, 0, - 0, 0, 0, 0, 0, 35, 68, 81, 0, 232, - 0, 120, 235, 254, 234, 233, 0, 236, 237, 258, - 238, 264, 239, 240, 271, 241, 104, 0, 112, 231, - 119, 0, 0, 95, 0, 92, 28, 29, 0, 13, - 14, 0, 0, 19, 18, 0, 156, 22, 24, 30, - 0, 153, 0, 229, 0, 227, 222, 224, 0, 83, - 129, 127, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 138, 161, 159, 160, 158, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 162, 163, 164, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 213, 214, 201, 202, 204, + 203, 205, 206, 207, 208, 209, 210, 211, 212, 122, + 217, 218, 219, 0, 216, 142, 140, 141, 139, 0, + 157, 143, 144, 145, 124, 123, 0, 293, 0, 294, + 0, 99, 98, 0, 110, 115, 137, 136, 134, 0, + 131, 133, 120, 153, 135, 215, 0, 290, 292, 0, + 222, 0, 0, 87, 0, 84, 0, 97, 0, 106, + 100, 108, 0, 109, 0, 85, 116, 90, 0, 132, + 121, 0, 146, 152, 1, 291, 0, 0, 220, 128, + 130, 0, 126, 0, 88, 0, 0, 295, 101, 105, + 107, 103, 111, 102, 0, 117, 93, 0, 91, 0, + 0, 0, 0, 33, 32, 34, 31, 5, 6, 7, + 8, 2, 3, 9, 27, 11, 16, 17, 0, 0, + 21, 0, 155, 0, 25, 0, 147, 86, 0, 0, + 0, 224, 0, 0, 125, 0, 148, 35, 39, 42, + 45, 50, 53, 55, 57, 59, 61, 63, 65, 0, + 0, 89, 244, 253, 257, 0, 0, 0, 275, 0, + 0, 0, 0, 0, 0, 0, 35, 68, 81, 0, + 233, 0, 120, 236, 255, 235, 234, 0, 237, 238, + 259, 239, 265, 240, 241, 272, 242, 104, 0, 112, + 232, 119, 0, 0, 95, 0, 92, 28, 29, 0, + 13, 14, 0, 0, 19, 18, 0, 157, 22, 24, + 30, 0, 154, 0, 230, 0, 228, 223, 225, 0, + 83, 129, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 66, 148, 149, 0, 242, 0, 272, 285, 284, - 0, 276, 0, 288, 286, 0, 0, 0, 270, 71, - 72, 74, 73, 76, 77, 78, 79, 80, 75, 70, - 0, 0, 257, 253, 255, 114, 0, 118, 0, 96, - 4, 0, 15, 12, 23, 155, 0, 230, 0, 225, - 220, 36, 37, 38, 41, 40, 43, 44, 48, 49, - 46, 47, 51, 52, 54, 56, 58, 60, 62, 64, - 0, 150, 244, 0, 0, 0, 0, 287, 0, 269, - 69, 82, 113, 94, 10, 226, 228, 0, 0, 262, - 0, 0, 0, 0, 279, 278, 281, 250, 265, 0, - 245, 0, 0, 0, 280, 0, 0, 261, 0, 0, - 259, 0, 67, 0, 247, 273, 246, 0, 282, 0, - 250, 249, 251, 267, 263, 0, 283, 277, 260, 268, - 0, 275, 266 + 0, 0, 66, 149, 150, 0, 243, 0, 273, 286, + 285, 0, 277, 0, 289, 287, 0, 0, 0, 271, + 71, 72, 74, 73, 76, 77, 78, 79, 80, 75, + 70, 0, 0, 258, 254, 256, 114, 0, 118, 0, + 96, 4, 0, 15, 12, 23, 156, 0, 231, 0, + 226, 221, 36, 37, 38, 41, 40, 43, 44, 48, + 49, 46, 47, 51, 52, 54, 56, 58, 60, 62, + 64, 0, 151, 245, 0, 0, 0, 0, 288, 0, + 270, 69, 82, 113, 94, 10, 227, 229, 0, 0, + 263, 0, 0, 0, 0, 280, 279, 282, 251, 266, + 0, 246, 0, 0, 0, 281, 0, 0, 262, 0, + 0, 260, 0, 67, 0, 248, 274, 247, 0, 283, + 0, 251, 250, 252, 268, 264, 0, 284, 278, 261, + 269, 0, 276, 267 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, - -362, -362, 37, -362, -110, -105, -166, -116, -61, -57, - -56, -60, -55, -53, -362, -120, -362, -137, -362, -148, - -362, 10, -362, -362, -362, 13, -362, -362, -362, 136, - 125, 138, -362, -362, -342, -362, -362, -362, -362, 46, - -80, -86, -362, 0, -104, -362, -362, -362, -362, 170, - -362, -362, -362, -167, -172, -27, -99, -232, -125, -222, - -361, -157, -362, -362, -165, -164, -362, -362, 145, -288, - -122, -362, -362, -362, -135, -362, -362, -362, -362, -362, + -362, -362, 58, -362, -115, -114, -167, -118, -61, -64, + -62, -60, -56, -59, -362, -121, -362, -137, -362, -149, + -362, 10, -362, -362, -362, 13, -362, -362, -362, 116, + 125, 124, -362, -362, -339, -362, -362, -362, -362, 45, + -80, -88, -362, 0, -105, -362, -362, -362, -362, 172, + -362, -362, -362, -168, -174, -23, -102, -233, -127, -223, + -361, -157, -362, -362, -166, -165, -362, -362, 141, -289, + -116, -362, -362, -362, -139, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, - 158, -362, -362 + 155, -362, -362 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 161, 162, 163, 331, 164, 165, 166, 167, 168, - 169, 170, 215, 172, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 216, 360, 217, 320, 218, - 270, 219, 77, 242, 148, 220, 79, 80, 81, 108, - 109, 110, 82, 83, 84, 85, 86, 87, 130, 131, - 88, 89, 90, 173, 134, 121, 122, 174, 92, 93, - 94, 181, 126, 179, 180, 264, 265, 240, 222, 223, - 224, 225, 296, 378, 405, 397, 398, 399, 406, 226, - 227, 228, 229, 400, 382, 230, 231, 401, 420, 232, - 233, 234, 363, 300, 365, 386, 395, 396, 235, 95, - 96, 97, 105 + -1, 162, 163, 164, 332, 165, 166, 167, 168, 169, + 170, 171, 216, 173, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 217, 361, 218, 321, 219, + 271, 220, 78, 243, 149, 221, 80, 81, 82, 109, + 110, 111, 83, 84, 85, 86, 87, 88, 131, 132, + 89, 90, 91, 174, 135, 122, 123, 175, 93, 94, + 95, 182, 127, 180, 181, 265, 266, 241, 223, 224, + 225, 226, 297, 379, 406, 398, 399, 400, 407, 227, + 228, 229, 230, 401, 383, 231, 232, 402, 421, 233, + 234, 235, 364, 301, 366, 387, 396, 397, 236, 96, + 97, 98, 106 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -920,305 +921,161 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 91, 111, 118, 248, 324, 325, 239, 267, 362, 327, - 76, 144, 198, 78, 268, 279, 280, 175, 290, 102, - 99, 380, 249, 250, 142, 118, 132, 111, 128, 183, - 260, 404, 257, 143, 254, 184, 236, 238, 412, 101, - 255, -26, 261, 251, 380, 103, 177, 252, 404, 129, - 281, 282, 100, 291, 132, 275, 132, 276, 199, 104, - 199, 237, 269, 305, 133, 307, 200, 241, 145, 199, - 113, 146, 106, 114, 147, 328, 326, 330, 364, 294, - 387, 112, 244, 321, 388, 245, 321, 415, 119, 115, - 321, 118, 107, 321, 372, 91, 267, 127, 125, 177, - 239, 177, 120, 332, 239, 76, 321, 112, 78, 322, - 135, 112, 182, 348, 349, 350, 351, 338, 334, 321, - 339, 338, 367, 140, 375, 419, 178, 60, 61, 62, - 272, 273, 274, 277, 278, 221, 141, 283, 284, 132, - 324, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 321, 369, 176, 366, 258, 267, 171, 368, 337, - 319, 243, 177, 321, 389, 344, 345, 352, 353, 186, - 253, 414, 346, 347, 199, 263, 288, 262, 286, 178, - 285, 178, 287, 370, 371, 289, 246, 247, 177, 239, - 292, 295, 297, 298, 299, 301, 308, 324, 302, 306, - 303, -25, 329, 333, -20, 361, 391, 374, 383, 259, - 390, 392, 377, 321, 393, 379, -248, 403, 409, 186, - 201, 408, 410, 413, 354, 421, 221, 422, 357, 355, - 271, 356, 137, 98, 358, 336, 186, 359, 379, 376, - 384, 411, 178, 385, 417, 407, 418, 138, 177, 139, - 136, 394, 402, 124, 0, 0, 0, 0, 0, 0, - 416, 0, 0, 0, 0, 0, 239, 0, 178, 0, + 92, 119, 112, 249, 325, 326, 268, 240, 363, 328, + 77, 145, 199, 79, 269, 280, 281, 176, 291, 103, + 100, 250, 251, 129, 119, 381, 261, 133, 112, 278, + 279, 114, 405, 258, 115, 134, 237, 239, 262, 413, + -26, 276, 252, 277, 130, 104, 253, 178, 381, 405, + 282, 283, 101, 292, 133, 143, 245, 133, 200, 246, + 200, 238, 270, 306, 144, 308, 201, 242, 146, 200, + 322, 147, 102, 323, 148, 329, 327, 184, 365, 295, + 255, 331, 113, 185, 105, 388, 256, 322, 107, 120, + 119, 322, 389, 108, 373, 268, 92, 116, 322, 126, + 178, 240, 178, 333, 416, 240, 77, 121, 113, 79, + 322, 128, 113, 349, 350, 351, 352, 339, 322, 335, + 340, 368, 136, 339, 141, 420, 376, 179, 133, 60, + 61, 62, 273, 274, 275, 142, 222, 284, 285, 177, + 325, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 322, 370, 259, 367, 268, 322, 390, 369, 338, + 320, 345, 346, 178, 347, 348, 353, 354, 183, 244, + 254, 415, 200, 264, 289, 288, 286, 287, 263, 172, + 179, 290, 179, 293, 371, 372, 296, 299, 298, 178, + 240, 187, 300, 302, 303, 304, 307, 325, 309, -25, + 330, 334, -20, 362, 322, 375, 384, 392, 247, 248, + 391, 393, 378, 394, 409, 380, -249, 404, 410, 202, + 411, 422, 414, 356, 423, 355, 357, 222, 139, 358, + 272, 260, 360, 138, 359, 99, 140, 377, 380, 385, + 337, 187, 412, 179, 418, 408, 419, 137, 395, 178, + 386, 125, 0, 403, 0, 0, 0, 0, 187, 0, + 417, 0, 0, 0, 0, 0, 0, 240, 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 381, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 118, 221, 335, 0, 0, - 221, 0, 0, 0, 0, 0, 381, 0, 0, 341, - 342, 343, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 178, 0, + 0, 0, 0, 0, 382, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 119, 0, 0, 222, 0, 0, + 0, 222, 0, 0, 0, 0, 0, 382, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 336, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, + 0, 342, 343, 344, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 222, 222, 0, 222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 221, 221, 0, 221, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 119, 0, 0, 0, 0, 221, 0, 0, 0, - 0, 0, 221, 0, 0, 0, 0, 0, 0, 221, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 221, - 0, 0, 0, 221, 0, 0, 0, 123, 0, 221, - 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 59, 60, 61, 62, 63, 0, 0, - 0, 0, 0, 0, 0, 0, 64, 65, 66, 67, - 68, 69, 70, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 71, 72, 73, 74, 75, - 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, - 149, 150, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, - 0, 0, 0, 201, 202, 0, 0, 0, 0, 203, - 152, 153, 154, 155, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 59, 60, 61, 62, 63, 0, 0, - 0, 156, 157, 158, 159, 160, 64, 65, 66, 67, - 68, 69, 70, 204, 205, 206, 207, 0, 208, 209, - 210, 211, 212, 213, 214, 71, 72, 73, 74, 75, - 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, - 149, 150, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, - 0, 0, 0, 201, 323, 0, 0, 0, 0, 203, - 152, 153, 154, 155, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 59, 60, 61, 62, 63, 0, 0, - 0, 156, 157, 158, 159, 160, 64, 65, 66, 67, - 68, 69, 70, 204, 205, 206, 207, 0, 208, 209, - 210, 211, 212, 213, 214, 71, 72, 73, 74, 75, - 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, - 149, 150, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, - 0, 0, 0, 201, 0, 0, 0, 0, 0, 203, - 152, 153, 154, 155, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 59, 60, 61, 62, 63, 0, 0, - 0, 156, 157, 158, 159, 160, 64, 65, 66, 67, - 68, 69, 70, 204, 205, 206, 207, 0, 208, 209, - 210, 211, 212, 213, 214, 71, 72, 73, 74, 75, - 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, - 149, 150, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, - 0, 0, 0, 135, 0, 0, 0, 0, 0, 203, - 152, 153, 154, 155, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 59, 60, 61, 62, 63, 0, 0, - 0, 156, 157, 158, 159, 160, 64, 65, 66, 67, - 68, 69, 70, 204, 205, 206, 207, 0, 208, 209, - 210, 211, 212, 213, 214, 71, 72, 73, 74, 75, - 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, - 149, 150, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 203, - 152, 153, 154, 155, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 59, 60, 61, 62, 63, 0, 0, - 0, 156, 157, 158, 159, 160, 64, 65, 66, 67, - 68, 69, 70, 204, 205, 206, 207, 0, 208, 209, - 210, 211, 212, 213, 214, 71, 72, 73, 74, 75, - 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, - 149, 150, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 203, - 152, 153, 154, 155, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 59, 60, 61, 62, 63, 0, 0, - 0, 156, 157, 158, 159, 160, 64, 65, 66, 67, - 68, 69, 70, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 71, 72, 73, 74, 75, - 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, - 149, 150, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 152, 153, 154, 155, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 59, 60, 61, 62, 0, 0, 0, - 0, 156, 157, 158, 159, 160, 64, 65, 66, 67, - 68, 69, 70, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 71, 72, 73, 74, 75, - 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 59, 60, 61, 62, 0, 0, 0, - 0, 0, 0, 0, 0, 117, 64, 65, 66, 67, - 68, 69, 70, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 71, 72, 73, 74, 75, - 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 59, 60, 61, 62, 63, 0, 0, - 0, 0, 0, 0, 0, 0, 64, 65, 66, 67, - 68, 69, 70, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 71, 72, 73, 74, 75, - 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 266, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 59, 60, 61, 62, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 64, 65, 66, 67, - 68, 69, 70, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 71, 72, 73, 74, 75, - 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 340, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 59, 60, 61, 62, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 64, 65, 66, 67, - 68, 69, 70, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 71, 72, 73, 74, 75, - 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 373, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 59, 60, 61, 62, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 64, 65, 66, 67, - 68, 69, 70, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 71, 72, 73, 74, 75, - 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 59, 60, 61, 62, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 64, 65, 66, 67, - 68, 69, 70, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 71, 72, 73, 74, 75, - 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, 149, - 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 151, 0, - 0, 185, 0, 0, 0, 0, 0, 0, 0, 152, - 153, 154, 155, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 156, 157, 158, 159, 160, 64, 0, 0, 0, 0, - 69, 70, 2, 3, 4, 5, 6, 7, 8, 9, + 0, 0, 120, 0, 0, 0, 0, 222, 0, 0, + 0, 0, 0, 222, 0, 0, 0, 0, 0, 0, + 222, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 222, 0, 0, 0, 222, 0, 0, 0, 124, 0, + 222, 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, 149, 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 151, 0, 0, 293, 0, 0, 0, 0, 0, 0, - 0, 152, 153, 154, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 156, 157, 158, 159, 160, 64, 0, 0, - 0, 0, 69, 70, 2, 3, 4, 5, 6, 7, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 59, 60, 61, 62, 63, 0, + 0, 0, 0, 0, 0, 0, 0, 64, 65, 66, + 67, 68, 69, 70, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 71, 72, 73, 74, + 75, 76, 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, 150, 151, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 152, 0, 0, 0, 202, 203, 0, 0, 0, + 0, 204, 153, 154, 155, 156, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 59, 60, 61, 62, 63, + 0, 0, 0, 157, 158, 159, 160, 161, 64, 65, + 66, 67, 68, 69, 70, 205, 206, 207, 208, 0, + 209, 210, 211, 212, 213, 214, 215, 71, 72, 73, + 74, 75, 76, 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, 149, 150, 0, 0, 0, 0, 0, + 58, 0, 0, 150, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 151, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 304, 152, 153, 154, 155, 0, 0, 0, + 0, 0, 152, 0, 0, 0, 202, 324, 0, 0, + 0, 0, 204, 153, 154, 155, 156, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 59, 60, 61, 62, + 63, 0, 0, 0, 157, 158, 159, 160, 161, 64, + 65, 66, 67, 68, 69, 70, 205, 206, 207, 208, + 0, 209, 210, 211, 212, 213, 214, 215, 71, 72, + 73, 74, 75, 76, 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, 150, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 156, 157, 158, 159, 160, 64, - 0, 0, 0, 0, 69, 70, 2, 3, 4, 5, + 0, 0, 0, 152, 0, 0, 0, 202, 0, 0, + 0, 0, 0, 204, 153, 154, 155, 156, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 59, 60, 61, + 62, 63, 0, 0, 0, 157, 158, 159, 160, 161, + 64, 65, 66, 67, 68, 69, 70, 205, 206, 207, + 208, 0, 209, 210, 211, 212, 213, 214, 215, 71, + 72, 73, 74, 75, 76, 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, 149, 150, 0, 0, 0, + 56, 57, 58, 0, 0, 150, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 151, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 152, 153, 154, 155, 0, + 0, 0, 0, 0, 152, 0, 0, 0, 136, 0, + 0, 0, 0, 0, 204, 153, 154, 155, 156, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 59, 60, + 61, 62, 63, 0, 0, 0, 157, 158, 159, 160, + 161, 64, 65, 66, 67, 68, 69, 70, 205, 206, + 207, 208, 0, 209, 210, 211, 212, 213, 214, 215, + 71, 72, 73, 74, 75, 76, 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, 150, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 156, 157, 158, 159, - 160, 64, 0, 0, 0, 0, 69, 70, 2, 3, + 0, 0, 0, 0, 0, 152, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 204, 153, 154, 155, 156, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, + 60, 61, 62, 63, 0, 0, 0, 157, 158, 159, + 160, 161, 64, 65, 66, 67, 68, 69, 70, 205, + 206, 207, 208, 0, 209, 210, 211, 212, 213, 214, + 215, 71, 72, 73, 74, 75, 76, 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, 149, 150, 0, + 54, 55, 56, 57, 58, 0, 0, 150, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 151, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 152, 153, 154, - 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 156, 157, - 158, 159, 160, 64, 0, 0, 0, 0, 69, 256, + 0, 0, 0, 0, 0, 0, 152, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 204, 153, 154, 155, + 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 59, 60, 61, 62, 63, 0, 0, 0, 157, 158, + 159, 160, 161, 64, 65, 66, 67, 68, 69, 70, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 71, 72, 73, 74, 75, 76, 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, 150, 151, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 152, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 153, 154, + 155, 156, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 59, 60, 61, 62, 0, 0, 0, 0, 157, + 158, 159, 160, 161, 64, 65, 66, 67, 68, 69, + 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 71, 72, 73, 74, 75, 76, 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, @@ -1227,278 +1084,231 @@ static const yytype_int16 yytable[] = 52, 53, 54, 55, 56, 57, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 117, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 59, 60, 61, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 118, 64, 65, 66, 67, 68, + 69, 70, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 71, 72, 73, 74, 75, 76, + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, - 69, 70 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 59, 60, 61, 62, 63, 0, 0, + 0, 0, 0, 0, 0, 0, 64, 65, 66, 67, + 68, 69, 70, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 71, 72, 73, 74, 75, + 76, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 267, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 59, 60, 61, 62, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 64, 65, 66, + 67, 68, 69, 70, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 71, 72, 73, 74, + 75, 76, 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, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 341, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 59, 60, 61, 62, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 64, 65, + 66, 67, 68, 69, 70, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 71, 72, 73, + 74, 75, 76, 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 374, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 59, 60, 61, 62, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, + 65, 66, 67, 68, 69, 70, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 71, 72, + 73, 74, 75, 76, 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, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 59, 60, 61, + 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 64, 65, 66, 67, 68, 69, 70, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, + 72, 73, 74, 75, 76, 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, 150, 151, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 152, 0, 0, 186, 0, 0, 0, + 0, 0, 0, 0, 153, 154, 155, 156, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 157, 158, 159, 160, 161, + 64, 0, 0, 0, 0, 69, 70, 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, 150, 151, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 152, 0, 0, 294, 0, + 0, 0, 0, 0, 0, 0, 153, 154, 155, 156, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 157, 158, 159, + 160, 161, 64, 0, 0, 0, 0, 69, 70, 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, 150, 151, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 152, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 305, 153, 154, + 155, 156, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, + 158, 159, 160, 161, 64, 0, 0, 0, 0, 69, + 70, 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, + 150, 151, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 152, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 153, 154, 155, 156, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 157, 158, 159, 160, 161, 64, 0, 0, 0, + 0, 69, 70, 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, 150, 151, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 153, 154, 155, 156, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 157, 158, 159, 160, 161, 64, 0, + 0, 0, 0, 69, 257, 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, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 64, 0, 0, 0, 0, 69, 70 }; static const yytype_int16 yycheck[] = { - 0, 81, 88, 151, 226, 237, 143, 179, 296, 241, - 0, 115, 132, 0, 181, 65, 66, 121, 70, 92, - 86, 363, 63, 64, 82, 111, 84, 107, 118, 83, - 89, 392, 169, 91, 83, 89, 140, 141, 399, 82, - 89, 82, 101, 84, 386, 118, 126, 88, 409, 139, - 100, 101, 118, 105, 84, 94, 84, 96, 84, 92, - 84, 91, 182, 211, 92, 213, 92, 91, 86, 84, - 89, 89, 83, 92, 92, 242, 91, 83, 300, 199, - 83, 81, 89, 89, 83, 92, 89, 83, 88, 118, - 89, 177, 89, 89, 326, 95, 268, 86, 98, 179, - 237, 181, 100, 251, 241, 95, 89, 107, 95, 92, - 86, 111, 91, 279, 280, 281, 282, 89, 255, 89, - 92, 89, 92, 118, 92, 413, 126, 107, 108, 109, - 97, 98, 99, 61, 62, 135, 118, 67, 68, 84, - 362, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 89, 90, 92, 302, 82, 328, 120, 306, 263, - 91, 118, 242, 89, 90, 275, 276, 283, 284, 132, - 83, 403, 277, 278, 84, 118, 69, 177, 103, 179, - 104, 181, 102, 320, 321, 71, 149, 150, 268, 326, - 85, 87, 82, 92, 92, 82, 90, 419, 82, 82, - 92, 82, 118, 118, 83, 85, 118, 85, 126, 172, - 87, 83, 360, 89, 82, 363, 86, 91, 83, 182, - 86, 92, 130, 86, 285, 92, 226, 87, 288, 286, - 184, 287, 107, 63, 289, 262, 199, 290, 386, 338, - 365, 398, 242, 365, 409, 393, 410, 111, 328, 111, - 105, 386, 389, 95, -1, -1, -1, -1, -1, -1, - 408, -1, -1, -1, -1, -1, 403, -1, 268, -1, + 0, 89, 82, 152, 227, 238, 180, 144, 297, 242, + 0, 116, 133, 0, 182, 65, 66, 122, 70, 92, + 86, 63, 64, 118, 112, 364, 89, 84, 108, 61, + 62, 89, 393, 170, 92, 92, 141, 142, 101, 400, + 82, 94, 84, 96, 139, 118, 88, 127, 387, 410, + 100, 101, 118, 105, 84, 82, 89, 84, 84, 92, + 84, 91, 183, 212, 91, 214, 92, 91, 86, 84, + 89, 89, 82, 92, 92, 243, 91, 83, 301, 200, + 83, 83, 82, 89, 92, 83, 89, 89, 83, 89, + 178, 89, 83, 89, 327, 269, 96, 118, 89, 99, + 180, 238, 182, 252, 83, 242, 96, 100, 108, 96, + 89, 86, 112, 280, 281, 282, 283, 89, 89, 256, + 92, 92, 86, 89, 118, 414, 92, 127, 84, 107, + 108, 109, 97, 98, 99, 118, 136, 67, 68, 92, + 363, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 89, 90, 82, 303, 329, 89, 90, 307, 264, + 91, 276, 277, 243, 278, 279, 284, 285, 91, 118, + 83, 404, 84, 118, 69, 102, 104, 103, 178, 121, + 180, 71, 182, 85, 321, 322, 87, 92, 82, 269, + 327, 133, 92, 82, 82, 92, 82, 420, 90, 82, + 118, 118, 83, 85, 89, 85, 126, 118, 150, 151, + 87, 83, 361, 82, 92, 364, 86, 91, 83, 86, + 130, 92, 86, 287, 87, 286, 288, 227, 112, 289, + 185, 173, 291, 108, 290, 63, 112, 339, 387, 366, + 263, 183, 399, 243, 410, 394, 411, 106, 387, 329, + 366, 96, -1, 390, -1, -1, -1, -1, 200, -1, + 409, -1, -1, -1, -1, -1, -1, 404, -1, 269, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 363, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 381, 296, 260, -1, -1, - 300, -1, -1, -1, -1, -1, 386, -1, -1, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 328, -1, + -1, -1, -1, -1, 364, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 382, -1, -1, 297, -1, -1, + -1, 301, -1, -1, -1, -1, -1, 387, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 261, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 329, + -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 363, 364, -1, 366, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 362, 363, -1, 365, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 381, -1, -1, -1, -1, 386, -1, -1, -1, - -1, -1, 392, -1, -1, -1, -1, -1, -1, 399, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 409, - -1, -1, -1, 413, -1, -1, -1, 0, -1, 419, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 106, 107, 108, 109, 110, -1, -1, - -1, -1, -1, -1, -1, -1, 119, 120, 121, 122, - 123, 124, 125, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 138, 139, 140, 141, 142, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, - -1, -1, -1, 86, 87, -1, -1, -1, -1, 92, - 93, 94, 95, 96, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 106, 107, 108, 109, 110, -1, -1, - -1, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, - -1, -1, -1, 86, 87, -1, -1, -1, -1, 92, - 93, 94, 95, 96, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 106, 107, 108, 109, 110, -1, -1, - -1, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, - -1, -1, -1, 86, -1, -1, -1, -1, -1, 92, - 93, 94, 95, 96, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 106, 107, 108, 109, 110, -1, -1, - -1, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, - -1, -1, -1, 86, -1, -1, -1, -1, -1, 92, - 93, 94, 95, 96, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 106, 107, 108, 109, 110, -1, -1, - -1, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 92, - 93, 94, 95, 96, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 106, 107, 108, 109, 110, -1, -1, - -1, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, -1, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 92, - 93, 94, 95, 96, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 106, 107, 108, 109, 110, -1, -1, - -1, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 138, 139, 140, 141, 142, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 93, 94, 95, 96, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 106, 107, 108, 109, -1, -1, -1, - -1, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 138, 139, 140, 141, 142, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 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, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 92, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 106, 107, 108, 109, -1, -1, -1, - -1, -1, -1, -1, -1, 118, 119, 120, 121, 122, - 123, 124, 125, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 138, 139, 140, 141, 142, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 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, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 106, 107, 108, 109, 110, -1, -1, - -1, -1, -1, -1, -1, -1, 119, 120, 121, 122, - 123, 124, 125, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 138, 139, 140, 141, 142, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 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, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 87, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 106, 107, 108, 109, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 119, 120, 121, 122, - 123, 124, 125, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 138, 139, 140, 141, 142, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 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, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 87, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 106, 107, 108, 109, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 119, 120, 121, 122, - 123, 124, 125, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 138, 139, 140, 141, 142, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 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, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 87, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 106, 107, 108, 109, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 119, 120, 121, 122, - 123, 124, 125, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 138, 139, 140, 141, 142, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 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, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 106, 107, 108, 109, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 119, 120, 121, 122, - 123, 124, 125, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 138, 139, 140, 141, 142, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, - -1, 85, -1, -1, -1, -1, -1, -1, -1, 93, - 94, 95, 96, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 114, 115, 116, 117, 118, 119, -1, -1, -1, -1, - 124, 125, 4, 5, 6, 7, 8, 9, 10, 11, + -1, -1, 382, -1, -1, -1, -1, 387, -1, -1, + -1, -1, -1, 393, -1, -1, -1, -1, -1, -1, + 400, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 410, -1, -1, -1, 414, -1, -1, -1, 0, -1, + 420, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 82, -1, -1, 85, -1, -1, -1, -1, -1, -1, - -1, 93, 94, 95, 96, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 114, 115, 116, 117, 118, 119, -1, -1, - -1, -1, 124, 125, 4, 5, 6, 7, 8, 9, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 106, 107, 108, 109, 110, -1, + -1, -1, -1, -1, -1, -1, -1, 119, 120, 121, + 122, 123, 124, 125, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 138, 139, 140, 141, + 142, 143, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 82, -1, -1, -1, 86, 87, -1, -1, -1, + -1, 92, 93, 94, 95, 96, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 106, 107, 108, 109, 110, + -1, -1, -1, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, -1, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, @@ -1506,11 +1316,27 @@ static const yytype_int16 yycheck[] = 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, -1, -1, 63, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 82, -1, -1, -1, 86, 87, -1, -1, -1, -1, 92, 93, 94, 95, 96, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 106, 107, 108, 109, + 110, -1, -1, -1, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + -1, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 114, 115, 116, 117, 118, 119, - -1, -1, -1, -1, 124, 125, 4, 5, 6, 7, + -1, -1, -1, 82, -1, -1, -1, 86, -1, -1, + -1, -1, -1, 92, 93, 94, 95, 96, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 106, 107, 108, + 109, 110, -1, -1, -1, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, -1, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, @@ -1518,11 +1344,27 @@ static const yytype_int16 yycheck[] = 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, -1, -1, 63, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 82, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 93, 94, 95, 96, -1, + -1, -1, -1, -1, 82, -1, -1, -1, 86, -1, + -1, -1, -1, -1, 92, 93, 94, 95, 96, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, + 108, 109, 110, -1, -1, -1, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, -1, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 114, 115, 116, 117, - 118, 119, -1, -1, -1, -1, 124, 125, 4, 5, + -1, -1, -1, -1, -1, 82, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 92, 93, 94, 95, 96, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, + 107, 108, 109, 110, -1, -1, -1, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, -1, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, @@ -1531,10 +1373,26 @@ static const yytype_int16 yycheck[] = 56, 57, 58, 59, 60, -1, -1, 63, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 93, 94, 95, + -1, -1, -1, -1, -1, -1, 92, 93, 94, 95, 96, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 114, 115, - 116, 117, 118, 119, -1, -1, -1, -1, 124, 125, + 106, 107, 108, 109, 110, -1, -1, -1, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 138, 139, 140, 141, 142, 143, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 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, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, + 95, 96, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 106, 107, 108, 109, -1, -1, -1, -1, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 138, 139, 140, 141, 142, 143, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, @@ -1543,11 +1401,156 @@ static const yytype_int16 yycheck[] = 54, 55, 56, 57, 58, 59, 60, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 92, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 106, 107, 108, 109, -1, -1, -1, -1, + -1, -1, -1, -1, 118, 119, 120, 121, 122, 123, + 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 138, 139, 140, 141, 142, 143, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 119, -1, -1, -1, -1, - 124, 125 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 106, 107, 108, 109, 110, -1, -1, + -1, -1, -1, -1, -1, -1, 119, 120, 121, 122, + 123, 124, 125, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 138, 139, 140, 141, 142, + 143, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 87, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 106, 107, 108, 109, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 119, 120, 121, + 122, 123, 124, 125, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 138, 139, 140, 141, + 142, 143, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 87, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 106, 107, 108, 109, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 119, 120, + 121, 122, 123, 124, 125, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 138, 139, 140, + 141, 142, 143, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 87, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 106, 107, 108, 109, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 119, + 120, 121, 122, 123, 124, 125, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, + 140, 141, 142, 143, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 106, 107, 108, + 109, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 119, 120, 121, 122, 123, 124, 125, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, + 139, 140, 141, 142, 143, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 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, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 82, -1, -1, 85, -1, -1, -1, + -1, -1, -1, -1, 93, 94, 95, 96, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 114, 115, 116, 117, 118, + 119, -1, -1, -1, -1, 124, 125, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 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, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 82, -1, -1, 85, -1, + -1, -1, -1, -1, -1, -1, 93, 94, 95, 96, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 114, 115, 116, + 117, 118, 119, -1, -1, -1, -1, 124, 125, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 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, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 92, 93, 94, + 95, 96, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 114, + 115, 116, 117, 118, 119, -1, -1, -1, -1, 124, + 125, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 93, 94, 95, 96, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 114, 115, 116, 117, 118, 119, -1, -1, -1, + -1, 124, 125, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 93, 94, 95, 96, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 114, 115, 116, 117, 118, 119, -1, + -1, -1, -1, 124, 125, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 119, -1, -1, -1, -1, 124, 125 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1561,77 +1564,77 @@ static const yytype_uint8 yystos[] = 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 106, 107, 108, 109, 110, 119, 120, 121, 122, 123, 124, - 125, 138, 139, 140, 141, 142, 174, 175, 178, 179, - 180, 181, 185, 186, 187, 188, 189, 190, 193, 194, - 195, 196, 201, 202, 203, 242, 243, 244, 202, 86, - 118, 82, 92, 118, 92, 245, 83, 89, 182, 183, - 184, 193, 196, 89, 92, 118, 92, 118, 194, 196, - 100, 198, 199, 0, 243, 196, 205, 86, 118, 139, - 191, 192, 84, 92, 197, 86, 221, 183, 182, 184, - 118, 118, 82, 91, 197, 86, 89, 92, 177, 63, - 64, 82, 93, 94, 95, 96, 114, 115, 116, 117, - 118, 144, 145, 146, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 196, 200, 197, 92, 193, 196, 206, - 207, 204, 91, 83, 89, 85, 155, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 84, - 92, 86, 87, 92, 126, 127, 128, 129, 131, 132, - 133, 134, 135, 136, 137, 155, 168, 170, 172, 174, - 178, 196, 211, 212, 213, 214, 222, 223, 224, 225, - 228, 229, 232, 233, 234, 241, 197, 91, 197, 170, - 210, 91, 176, 118, 89, 92, 155, 155, 172, 63, - 64, 84, 88, 83, 83, 89, 125, 170, 82, 155, - 89, 101, 196, 118, 208, 209, 87, 207, 206, 168, - 173, 192, 97, 98, 99, 94, 96, 61, 62, 65, - 66, 100, 101, 67, 68, 104, 103, 102, 69, 71, - 70, 105, 85, 85, 168, 87, 215, 82, 92, 92, - 236, 82, 82, 92, 92, 172, 82, 172, 90, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 91, - 171, 89, 92, 87, 212, 210, 91, 210, 206, 118, - 83, 147, 172, 118, 170, 155, 208, 197, 89, 92, - 87, 155, 155, 155, 157, 157, 158, 158, 159, 159, - 159, 159, 160, 160, 161, 162, 163, 164, 165, 166, - 169, 85, 222, 235, 212, 237, 172, 92, 172, 90, - 170, 170, 210, 87, 85, 92, 209, 172, 216, 172, - 187, 193, 227, 126, 211, 223, 238, 83, 83, 90, - 87, 118, 83, 82, 227, 239, 240, 218, 219, 220, - 226, 230, 170, 91, 213, 217, 221, 172, 92, 83, - 130, 214, 213, 86, 210, 83, 172, 217, 218, 222, - 231, 92, 87 + 125, 138, 139, 140, 141, 142, 143, 175, 176, 179, + 180, 181, 182, 186, 187, 188, 189, 190, 191, 194, + 195, 196, 197, 202, 203, 204, 243, 244, 245, 203, + 86, 118, 82, 92, 118, 92, 246, 83, 89, 183, + 184, 185, 194, 197, 89, 92, 118, 92, 118, 195, + 197, 100, 199, 200, 0, 244, 197, 206, 86, 118, + 139, 192, 193, 84, 92, 198, 86, 222, 184, 183, + 185, 118, 118, 82, 91, 198, 86, 89, 92, 178, + 63, 64, 82, 93, 94, 95, 96, 114, 115, 116, + 117, 118, 145, 146, 147, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 197, 201, 198, 92, 194, 197, + 207, 208, 205, 91, 83, 89, 85, 156, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 84, 92, 86, 87, 92, 126, 127, 128, 129, 131, + 132, 133, 134, 135, 136, 137, 156, 169, 171, 173, + 175, 179, 197, 212, 213, 214, 215, 223, 224, 225, + 226, 229, 230, 233, 234, 235, 242, 198, 91, 198, + 171, 211, 91, 177, 118, 89, 92, 156, 156, 173, + 63, 64, 84, 88, 83, 83, 89, 125, 171, 82, + 156, 89, 101, 197, 118, 209, 210, 87, 208, 207, + 169, 174, 193, 97, 98, 99, 94, 96, 61, 62, + 65, 66, 100, 101, 67, 68, 104, 103, 102, 69, + 71, 70, 105, 85, 85, 169, 87, 216, 82, 92, + 92, 237, 82, 82, 92, 92, 173, 82, 173, 90, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 91, 172, 89, 92, 87, 213, 211, 91, 211, 207, + 118, 83, 148, 173, 118, 171, 156, 209, 198, 89, + 92, 87, 156, 156, 156, 158, 158, 159, 159, 160, + 160, 160, 160, 161, 161, 162, 163, 164, 165, 166, + 167, 170, 85, 223, 236, 213, 238, 173, 92, 173, + 90, 171, 171, 211, 87, 85, 92, 210, 173, 217, + 173, 188, 194, 228, 126, 212, 224, 239, 83, 83, + 90, 87, 118, 83, 82, 228, 240, 241, 219, 220, + 221, 227, 231, 171, 91, 214, 218, 222, 173, 92, + 83, 130, 215, 214, 86, 211, 83, 173, 218, 219, + 223, 232, 92, 87 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 143, 144, 145, 145, 145, 145, 145, 145, 146, - 146, 146, 146, 146, 146, 147, 148, 149, 150, 150, - 151, 151, 152, 152, 153, 154, 154, 155, 155, 155, - 155, 156, 156, 156, 156, 157, 157, 157, 157, 158, - 158, 158, 159, 159, 159, 160, 160, 160, 160, 160, - 161, 161, 161, 162, 162, 163, 163, 164, 164, 165, - 165, 166, 166, 167, 167, 168, 169, 168, 170, 170, - 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, - 171, 172, 172, 173, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 176, 175, 177, 177, 178, 179, 179, - 180, 180, 181, 182, 182, 183, 183, 183, 183, 184, - 185, 185, 185, 185, 185, 186, 186, 186, 186, 186, - 187, 187, 188, 189, 189, 190, 191, 191, 192, 192, - 192, 193, 193, 194, 194, 194, 194, 194, 195, 195, - 195, 195, 195, 195, 195, 196, 196, 197, 197, 197, - 197, 198, 198, 199, 200, 200, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 202, 202, 202, 204, - 203, 205, 203, 206, 206, 207, 207, 208, 208, 209, - 209, 210, 211, 212, 212, 213, 213, 213, 213, 213, - 213, 213, 214, 215, 216, 214, 217, 217, 219, 218, - 220, 218, 221, 221, 222, 222, 223, 223, 224, 225, - 226, 226, 227, 227, 228, 230, 229, 231, 231, 232, - 232, 233, 235, 234, 236, 234, 237, 234, 238, 238, - 239, 239, 240, 240, 241, 241, 241, 241, 241, 242, - 242, 243, 243, 245, 244 + 0, 144, 145, 146, 146, 146, 146, 146, 146, 147, + 147, 147, 147, 147, 147, 148, 149, 150, 151, 151, + 152, 152, 153, 153, 154, 155, 155, 156, 156, 156, + 156, 157, 157, 157, 157, 158, 158, 158, 158, 159, + 159, 159, 160, 160, 160, 161, 161, 161, 161, 161, + 162, 162, 162, 163, 163, 164, 164, 165, 165, 166, + 166, 167, 167, 168, 168, 169, 170, 169, 171, 171, + 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, + 172, 173, 173, 174, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 177, 176, 178, 178, 179, 180, 180, + 181, 181, 182, 183, 183, 184, 184, 184, 184, 185, + 186, 186, 186, 186, 186, 187, 187, 187, 187, 187, + 188, 188, 189, 190, 190, 191, 192, 192, 193, 193, + 193, 194, 194, 195, 195, 195, 195, 195, 196, 196, + 196, 196, 196, 196, 196, 196, 197, 197, 198, 198, + 198, 198, 199, 199, 200, 201, 201, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 203, 203, 203, + 205, 204, 206, 204, 207, 207, 208, 208, 209, 209, + 210, 210, 211, 212, 213, 213, 214, 214, 214, 214, + 214, 214, 214, 215, 216, 217, 215, 218, 218, 220, + 219, 221, 219, 222, 222, 223, 223, 224, 224, 225, + 226, 227, 227, 228, 228, 229, 231, 230, 232, 232, + 233, 233, 234, 236, 235, 237, 235, 238, 235, 239, + 239, 240, 240, 241, 241, 242, 242, 242, 242, 242, + 243, 243, 244, 244, 246, 245 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1651,22 +1654,22 @@ static const yytype_uint8 yyr2[] = 1, 3, 4, 6, 5, 1, 2, 3, 5, 4, 1, 2, 1, 1, 1, 4, 1, 3, 1, 3, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 3, 2, 3, 3, - 4, 1, 0, 3, 1, 3, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 3, 2, 3, + 3, 4, 1, 0, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, - 6, 0, 5, 1, 2, 3, 4, 1, 3, 1, - 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 0, 0, 5, 1, 1, 0, 2, - 0, 2, 2, 3, 1, 2, 1, 2, 1, 5, - 3, 1, 1, 4, 1, 0, 8, 0, 1, 3, - 2, 1, 0, 6, 0, 8, 0, 7, 1, 1, - 1, 0, 2, 3, 2, 2, 2, 3, 2, 1, - 2, 1, 1, 0, 3 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 6, 0, 5, 1, 2, 3, 4, 1, 3, + 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 0, 0, 5, 1, 1, 0, + 2, 0, 2, 2, 3, 1, 2, 1, 2, 1, + 5, 3, 1, 1, 4, 1, 0, 8, 0, 1, + 3, 2, 1, 0, 6, 0, 8, 0, 7, 1, + 1, 1, 0, 2, 3, 2, 2, 2, 3, 2, + 1, 2, 1, 1, 0, 3 }; @@ -2353,7 +2356,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string); } -#line 2357 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2360 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 3: @@ -2361,7 +2364,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 2365 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2368 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 4: @@ -2371,7 +2374,7 @@ yyreduce: if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } -#line 2375 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2378 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 5: @@ -2379,7 +2382,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 2383 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2386 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 6: @@ -2387,7 +2390,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 2391 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2394 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 7: @@ -2396,7 +2399,7 @@ yyreduce: parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 2400 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2403 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 8: @@ -2404,7 +2407,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 2408 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2411 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 9: @@ -2412,7 +2415,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 2416 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2419 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 10: @@ -2420,7 +2423,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode)); } -#line 2424 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2427 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 11: @@ -2428,7 +2431,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 2432 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2435 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 12: @@ -2436,7 +2439,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string); } -#line 2440 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2443 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 13: @@ -2446,7 +2449,7 @@ yyreduce: parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "++", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "++", EOpPostIncrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 2450 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2453 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 14: @@ -2456,7 +2459,7 @@ yyreduce: parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "--", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "--", EOpPostDecrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 2460 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2463 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 15: @@ -2465,7 +2468,7 @@ yyreduce: parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]"); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 2469 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2472 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 16: @@ -2474,7 +2477,7 @@ yyreduce: (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode); delete (yyvsp[0].interm).function; } -#line 2478 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2481 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 17: @@ -2482,7 +2485,7 @@ yyreduce: { (yyval.interm) = (yyvsp[0].interm); } -#line 2486 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2489 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 18: @@ -2491,7 +2494,7 @@ yyreduce: (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 2495 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2498 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 19: @@ -2500,7 +2503,7 @@ yyreduce: (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 2504 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2507 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 20: @@ -2508,7 +2511,7 @@ yyreduce: { (yyval.interm) = (yyvsp[-1].interm); } -#line 2512 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2515 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 21: @@ -2516,7 +2519,7 @@ yyreduce: { (yyval.interm) = (yyvsp[0].interm); } -#line 2520 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2523 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 22: @@ -2528,7 +2531,7 @@ yyreduce: (yyval.interm).function = (yyvsp[-1].interm).function; (yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode); } -#line 2532 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2535 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 23: @@ -2540,7 +2543,7 @@ yyreduce: (yyval.interm).function = (yyvsp[-2].interm).function; (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); } -#line 2544 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2547 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 24: @@ -2548,7 +2551,7 @@ yyreduce: { (yyval.interm) = (yyvsp[-1].interm); } -#line 2552 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2555 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 25: @@ -2558,7 +2561,7 @@ yyreduce: (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 2562 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2565 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 26: @@ -2590,7 +2593,7 @@ yyreduce: (yyval.interm).function = new TFunction(empty, TType(EbtVoid), EOpNull); } } -#line 2594 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2597 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 27: @@ -2601,7 +2604,7 @@ yyreduce: if (TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode()) parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), ""); } -#line 2605 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2608 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 28: @@ -2610,7 +2613,7 @@ yyreduce: parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "++", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "++", EOpPreIncrement, (yyvsp[0].interm.intermTypedNode)); } -#line 2614 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2617 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 29: @@ -2619,7 +2622,7 @@ yyreduce: parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "--", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "--", EOpPreDecrement, (yyvsp[0].interm.intermTypedNode)); } -#line 2623 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2626 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 30: @@ -2640,38 +2643,38 @@ yyreduce: (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } } -#line 2644 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2647 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 31: #line 444 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; } -#line 2650 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2653 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 32: #line 445 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; } -#line 2656 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2659 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 33: #line 446 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; } -#line 2662 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2665 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 34: #line 447 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot; parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); } -#line 2669 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2672 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 35: #line 453 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 2675 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2678 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 36: @@ -2681,7 +2684,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 2685 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2688 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 37: @@ -2691,7 +2694,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 2695 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2698 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 38: @@ -2702,13 +2705,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 2706 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2709 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 39: #line 473 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 2712 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2715 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 40: @@ -2718,7 +2721,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 2722 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2725 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 41: @@ -2728,13 +2731,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 2732 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2735 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 42: #line 487 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 2738 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2741 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 43: @@ -2745,7 +2748,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 2749 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2752 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 44: @@ -2756,13 +2759,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 2760 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2763 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 45: #line 503 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 2766 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2769 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 46: @@ -2772,7 +2775,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 2776 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2779 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 47: @@ -2782,7 +2785,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 2786 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2789 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 48: @@ -2792,7 +2795,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 2796 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2799 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 49: @@ -2802,13 +2805,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 2806 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2809 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 50: #line 527 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 2812 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2815 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 51: @@ -2822,7 +2825,7 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 2826 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2829 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 52: @@ -2836,13 +2839,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 2840 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2843 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 53: #line 549 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 2846 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2849 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 54: @@ -2853,13 +2856,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 2857 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2860 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 55: #line 559 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 2863 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2866 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 56: @@ -2870,13 +2873,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 2874 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2877 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 57: #line 569 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 2880 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2883 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 58: @@ -2887,13 +2890,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 2891 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2894 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 59: #line 579 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 2897 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2900 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 60: @@ -2903,13 +2906,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 2907 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2910 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 61: #line 588 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 2913 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2916 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 62: @@ -2919,13 +2922,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 2923 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2926 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 63: #line 597 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 2929 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2932 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 64: @@ -2935,13 +2938,13 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 2939 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2942 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 65: #line 606 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 2945 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2948 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 66: @@ -2949,7 +2952,7 @@ yyreduce: { ++parseContext.controlFlowNestingLevel; } -#line 2953 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2956 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 67: @@ -2966,13 +2969,13 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 2970 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2973 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 68: #line 625 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 2976 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2979 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 69: @@ -2990,7 +2993,7 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } } -#line 2994 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 2997 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 70: @@ -2999,7 +3002,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAssign; } -#line 3003 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3006 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 71: @@ -3008,7 +3011,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpMulAssign; } -#line 3012 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3015 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 72: @@ -3017,7 +3020,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpDivAssign; } -#line 3021 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3024 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 73: @@ -3027,7 +3030,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpModAssign; } -#line 3031 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3034 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 74: @@ -3036,7 +3039,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAddAssign; } -#line 3040 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3043 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 75: @@ -3045,7 +3048,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpSubAssign; } -#line 3049 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3052 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 76: @@ -3054,7 +3057,7 @@ yyreduce: parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign; } -#line 3058 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3061 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 77: @@ -3063,7 +3066,7 @@ yyreduce: parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign; } -#line 3067 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3070 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 78: @@ -3072,7 +3075,7 @@ yyreduce: parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign; } -#line 3076 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3079 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 79: @@ -3081,7 +3084,7 @@ yyreduce: parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign; } -#line 3085 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3088 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 80: @@ -3090,7 +3093,7 @@ yyreduce: parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign; } -#line 3094 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3097 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 81: @@ -3098,7 +3101,7 @@ yyreduce: { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3102 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3105 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 82: @@ -3111,7 +3114,7 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 3115 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3118 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 83: @@ -3120,7 +3123,7 @@ yyreduce: parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), ""); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3124 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3127 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 84: @@ -3130,7 +3133,7 @@ yyreduce: (yyval.interm.intermNode) = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 3134 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3137 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 85: @@ -3140,7 +3143,7 @@ yyreduce: (yyvsp[-1].interm).intermNode->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm).intermNode; } -#line 3144 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3147 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 86: @@ -3152,7 +3155,7 @@ yyreduce: parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision); (yyval.interm.intermNode) = 0; } -#line 3156 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3159 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 87: @@ -3161,7 +3164,7 @@ yyreduce: parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList); (yyval.interm.intermNode) = 0; } -#line 3165 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3168 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 88: @@ -3170,7 +3173,7 @@ yyreduce: parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 3174 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3177 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 89: @@ -3179,7 +3182,7 @@ yyreduce: parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes); (yyval.interm.intermNode) = 0; } -#line 3183 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3186 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 90: @@ -3189,7 +3192,7 @@ yyreduce: parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type)); (yyval.interm.intermNode) = 0; } -#line 3193 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3196 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 91: @@ -3199,7 +3202,7 @@ yyreduce: parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 3203 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3206 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 92: @@ -3210,13 +3213,13 @@ yyreduce: parseContext.addQualifierToExisting((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier, *(yyvsp[-1].interm.identifierList)); (yyval.interm.intermNode) = 0; } -#line 3214 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3217 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 93: #line 759 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); } -#line 3220 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3223 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 94: @@ -3230,7 +3233,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[-5].interm.type).loc; (yyval.interm).typeList = (yyvsp[-1].interm.typeList); } -#line 3234 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3237 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 95: @@ -3239,7 +3242,7 @@ yyreduce: (yyval.interm.identifierList) = new TIdentifierList; (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 3243 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3246 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 96: @@ -3248,7 +3251,7 @@ yyreduce: (yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList); (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 3252 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3255 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 97: @@ -3257,7 +3260,7 @@ yyreduce: (yyval.interm).function = (yyvsp[-1].interm.function); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 3261 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3264 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 98: @@ -3265,7 +3268,7 @@ yyreduce: { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 3269 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3272 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 99: @@ -3273,7 +3276,7 @@ yyreduce: { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 3277 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3280 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 100: @@ -3286,7 +3289,7 @@ yyreduce: else delete (yyvsp[0].interm).param.type; } -#line 3290 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3293 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 101: @@ -3308,7 +3311,7 @@ yyreduce: (yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param); } } -#line 3312 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3315 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 102: @@ -3332,7 +3335,7 @@ yyreduce: function = new TFunction((yyvsp[-1].lex).string, type); (yyval.interm.function) = function; } -#line 3336 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3339 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 103: @@ -3352,7 +3355,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).param = param; } -#line 3356 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3359 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 104: @@ -3376,7 +3379,7 @@ yyreduce: (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).param = param; } -#line 3380 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3383 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 105: @@ -3392,7 +3395,7 @@ yyreduce: parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 3396 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3399 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 106: @@ -3404,7 +3407,7 @@ yyreduce: parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); } -#line 3408 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3411 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 107: @@ -3419,7 +3422,7 @@ yyreduce: parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type); parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 3423 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3426 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 108: @@ -3431,7 +3434,7 @@ yyreduce: parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); } -#line 3435 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3438 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 109: @@ -3442,7 +3445,7 @@ yyreduce: if ((yyvsp[0].interm.type).arraySizes) parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes); } -#line 3446 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3449 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 110: @@ -3450,7 +3453,7 @@ yyreduce: { (yyval.interm) = (yyvsp[0].interm); } -#line 3454 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3457 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 111: @@ -3459,7 +3462,7 @@ yyreduce: (yyval.interm) = (yyvsp[-2].interm); parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type); } -#line 3463 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3466 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 112: @@ -3468,7 +3471,7 @@ yyreduce: (yyval.interm) = (yyvsp[-3].interm); parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes); } -#line 3472 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3475 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 113: @@ -3478,7 +3481,7 @@ yyreduce: TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-5].interm).type, (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-5].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 3482 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3485 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 114: @@ -3488,7 +3491,7 @@ yyreduce: TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 3492 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3495 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 115: @@ -3498,7 +3501,7 @@ yyreduce: (yyval.interm).intermNode = 0; } -#line 3502 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3505 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 116: @@ -3508,7 +3511,7 @@ yyreduce: (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type)); } -#line 3512 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3515 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 117: @@ -3518,7 +3521,7 @@ yyreduce: (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes); } -#line 3522 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3525 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 118: @@ -3528,7 +3531,7 @@ yyreduce: TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-4].interm.type), (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 3532 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3535 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 119: @@ -3538,7 +3541,7 @@ yyreduce: TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 3542 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3545 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 120: @@ -3553,7 +3556,7 @@ yyreduce: } parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier); } -#line 3557 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3560 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 121: @@ -3582,7 +3585,7 @@ yyreduce: (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn))) (yyval.interm.type).qualifier.smooth = true; } -#line 3586 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3589 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 122: @@ -3593,7 +3596,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.invariant = true; } -#line 3597 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3600 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 123: @@ -3605,7 +3608,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.smooth = true; } -#line 3609 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3612 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 124: @@ -3617,7 +3620,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.flat = true; } -#line 3621 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3624 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 125: @@ -3625,7 +3628,7 @@ yyreduce: { (yyval.interm.type) = (yyvsp[-1].interm.type); } -#line 3629 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3632 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 126: @@ -3633,7 +3636,7 @@ yyreduce: { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 3637 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3640 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 127: @@ -3643,7 +3646,7 @@ yyreduce: (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 3647 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3650 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 128: @@ -3652,7 +3655,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string); } -#line 3656 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3659 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 129: @@ -3661,7 +3664,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[-2].lex).loc); parseContext.setLayoutQualifier((yyvsp[-2].lex).loc, (yyval.interm.type), *(yyvsp[-2].lex).string, (yyvsp[0].interm.intermTypedNode)); } -#line 3665 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3668 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 130: @@ -3671,7 +3674,7 @@ yyreduce: TString strShared("shared"); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), strShared); } -#line 3675 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3678 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 131: @@ -3679,7 +3682,7 @@ yyreduce: { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 3683 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3686 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 132: @@ -3692,7 +3695,7 @@ yyreduce: (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeQualifiers((yyval.interm.type).loc, (yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 3696 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3699 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 133: @@ -3700,7 +3703,7 @@ yyreduce: { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 3704 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3707 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 134: @@ -3708,7 +3711,7 @@ yyreduce: { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 3712 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3715 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 135: @@ -3717,7 +3720,7 @@ yyreduce: parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 3721 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3724 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 136: @@ -3726,7 +3729,7 @@ yyreduce: // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 3730 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3733 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 137: @@ -3735,7 +3738,7 @@ yyreduce: // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 3739 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3742 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 138: @@ -3744,7 +3747,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqConst; // will later turn into EvqConstReadOnly, if the initializer is not constant } -#line 3748 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3751 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 139: @@ -3754,7 +3757,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqInOut; } -#line 3758 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3761 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 140: @@ -3765,7 +3768,7 @@ yyreduce: // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqIn; } -#line 3769 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3772 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 141: @@ -3776,7 +3779,7 @@ yyreduce: // whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqOut; } -#line 3780 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3783 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 142: @@ -3788,7 +3791,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.centroid = true; } -#line 3792 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3795 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 143: @@ -3798,7 +3801,7 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqUniform; } -#line 3802 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3805 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 144: @@ -3811,21 +3814,31 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqShared; } -#line 3815 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3818 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 145: -#line 1173 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1167 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.globalCheck((yyvsp[0].lex).loc, "buffer"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.storage = EvqBuffer; + } +#line 3828 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 146: +#line 1178 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[-1].interm.type); (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); (yyval.interm.type).typeParameters = (yyvsp[0].interm.typeParameters); } -#line 3825 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3838 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 146: -#line 1178 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 147: +#line 1183 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.arrayOfArrayVersionCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes); (yyval.interm.type) = (yyvsp[-2].interm.type); @@ -3833,21 +3846,21 @@ yyreduce: (yyval.interm.type).typeParameters = (yyvsp[-1].interm.typeParameters); (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes; } -#line 3837 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3850 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 147: -#line 1188 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 148: +#line 1193 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).arraySizes = new TArraySizes; (yyval.interm).arraySizes->addInnerSize(); } -#line 3847 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3860 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 148: -#line 1193 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 149: +#line 1198 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[-2].lex).loc; (yyval.interm).arraySizes = new TArraySizes; @@ -3856,20 +3869,20 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 3860 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3873 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 149: -#line 1201 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 150: +#line 1206 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-2].interm); (yyval.interm).arraySizes->addInnerSize(); } -#line 3869 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3882 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 150: -#line 1205 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 151: +#line 1210 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-3].interm); @@ -3877,35 +3890,35 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 3881 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 151: -#line 1215 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.typeParameters) = (yyvsp[0].interm.typeParameters); - } -#line 3889 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3894 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 152: -#line 1218 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1220 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - (yyval.interm.typeParameters) = 0; + (yyval.interm.typeParameters) = (yyvsp[0].interm.typeParameters); } -#line 3897 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3902 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 153: -#line 1224 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1223 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - (yyval.interm.typeParameters) = (yyvsp[-1].interm.typeParameters); + (yyval.interm.typeParameters) = 0; } -#line 3905 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3910 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 154: -#line 1230 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1229 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.typeParameters) = (yyvsp[-1].interm.typeParameters); + } +#line 3918 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 155: +#line 1235 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeParameters) = new TArraySizes; @@ -3913,11 +3926,11 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); (yyval.interm.typeParameters)->addInnerSize(size); } -#line 3917 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3930 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 155: -#line 1237 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 156: +#line 1242 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeParameters) = (yyvsp[-2].interm.typeParameters); @@ -3925,63 +3938,53 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); (yyval.interm.typeParameters)->addInnerSize(size); } -#line 3929 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3942 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 156: -#line 1247 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 157: +#line 1252 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtVoid; } -#line 3938 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3951 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 157: -#line 1251 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 158: +#line 1256 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 3947 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3960 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 158: -#line 1255 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 159: +#line 1260 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 3956 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 159: -#line 1259 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtUint; - } -#line 3966 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3969 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 160: #line 1264 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { + parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtBool; + (yyval.interm.type).basicType = EbtUint; } -#line 3975 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3979 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 161: -#line 1268 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1269 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setVector(2); + (yyval.interm.type).basicType = EbtBool; } -#line 3985 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3988 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 162: @@ -3989,9 +3992,9 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setVector(3); + (yyval.interm.type).setVector(2); } -#line 3995 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 3998 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 163: @@ -3999,19 +4002,19 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setVector(4); + (yyval.interm.type).setVector(3); } -#line 4005 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4008 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 164: #line 1283 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtBool; - (yyval.interm.type).setVector(2); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setVector(4); } -#line 4015 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4018 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 165: @@ -4019,9 +4022,9 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; - (yyval.interm.type).setVector(3); + (yyval.interm.type).setVector(2); } -#line 4025 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4028 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 166: @@ -4029,19 +4032,19 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; - (yyval.interm.type).setVector(4); + (yyval.interm.type).setVector(3); } -#line 4035 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4038 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 167: #line 1298 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtInt; - (yyval.interm.type).setVector(2); + (yyval.interm.type).basicType = EbtBool; + (yyval.interm.type).setVector(4); } -#line 4045 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4048 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 168: @@ -4049,9 +4052,9 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; - (yyval.interm.type).setVector(3); + (yyval.interm.type).setVector(2); } -#line 4055 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4058 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 169: @@ -4059,52 +4062,52 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; - (yyval.interm.type).setVector(4); + (yyval.interm.type).setVector(3); } -#line 4065 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4068 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 170: #line 1313 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).setVector(4); + } +#line 4078 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 171: +#line 1318 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 4076 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4089 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 171: -#line 1319 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 172: +#line 1324 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 4087 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4100 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 172: -#line 1325 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 173: +#line 1330 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 4098 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 173: -#line 1331 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 2); - } -#line 4108 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4111 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 174: @@ -4112,9 +4115,9 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(3, 3); + (yyval.interm.type).setMatrix(2, 2); } -#line 4118 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4121 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 175: @@ -4122,9 +4125,9 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(4, 4); + (yyval.interm.type).setMatrix(3, 3); } -#line 4128 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4131 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 176: @@ -4132,9 +4135,9 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 2); + (yyval.interm.type).setMatrix(4, 4); } -#line 4138 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4141 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 177: @@ -4142,9 +4145,9 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 3); + (yyval.interm.type).setMatrix(2, 2); } -#line 4148 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4151 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 178: @@ -4152,9 +4155,9 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(2, 4); + (yyval.interm.type).setMatrix(2, 3); } -#line 4158 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4161 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 179: @@ -4162,9 +4165,9 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(3, 2); + (yyval.interm.type).setMatrix(2, 4); } -#line 4168 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4171 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 180: @@ -4172,9 +4175,9 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(3, 3); + (yyval.interm.type).setMatrix(3, 2); } -#line 4178 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4181 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 181: @@ -4182,9 +4185,9 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(3, 4); + (yyval.interm.type).setMatrix(3, 3); } -#line 4188 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4191 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 182: @@ -4192,9 +4195,9 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(4, 2); + (yyval.interm.type).setMatrix(3, 4); } -#line 4198 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4201 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 183: @@ -4202,9 +4205,9 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(4, 3); + (yyval.interm.type).setMatrix(4, 2); } -#line 4208 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4211 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 184: @@ -4212,19 +4215,19 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).setMatrix(4, 4); + (yyval.interm.type).setMatrix(4, 3); } -#line 4218 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4221 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 185: -#line 1392 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1391 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, Esd2D); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(4, 4); } -#line 4228 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4231 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 186: @@ -4232,9 +4235,9 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, Esd3D); + (yyval.interm.type).sampler.set(EbtFloat, Esd2D); } -#line 4238 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4241 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 187: @@ -4242,9 +4245,9 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, EsdCube); + (yyval.interm.type).sampler.set(EbtFloat, Esd3D); } -#line 4248 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4251 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 188: @@ -4252,9 +4255,9 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true); + (yyval.interm.type).sampler.set(EbtFloat, EsdCube); } -#line 4258 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4261 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 189: @@ -4262,9 +4265,9 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true); + (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true); } -#line 4268 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4271 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 190: @@ -4272,9 +4275,9 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true); + (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true); } -#line 4278 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4281 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 191: @@ -4282,19 +4285,19 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true); + (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true); } -#line 4288 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4291 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 192: -#line 1428 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1427 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, Esd2D); + (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true); } -#line 4298 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4301 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 193: @@ -4302,9 +4305,9 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, Esd3D); + (yyval.interm.type).sampler.set(EbtInt, Esd2D); } -#line 4308 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4311 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 194: @@ -4312,9 +4315,9 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, EsdCube); + (yyval.interm.type).sampler.set(EbtInt, Esd3D); } -#line 4318 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4321 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 195: @@ -4322,9 +4325,9 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtInt, Esd2D, true); + (yyval.interm.type).sampler.set(EbtInt, EsdCube); } -#line 4328 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4331 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 196: @@ -4332,9 +4335,9 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, Esd2D); + (yyval.interm.type).sampler.set(EbtInt, Esd2D, true); } -#line 4338 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4341 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 197: @@ -4342,9 +4345,9 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, Esd3D); + (yyval.interm.type).sampler.set(EbtUint, Esd2D); } -#line 4348 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4351 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 198: @@ -4352,19 +4355,19 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, EsdCube); + (yyval.interm.type).sampler.set(EbtUint, Esd3D); } -#line 4358 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4361 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 199: -#line 1464 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1463 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.set(EbtUint, Esd2D, true); + (yyval.interm.type).sampler.set(EbtUint, EsdCube); } -#line 4368 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4371 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 200: @@ -4372,9 +4375,9 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D); + (yyval.interm.type).sampler.set(EbtUint, Esd2D, true); } -#line 4378 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4381 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 201: @@ -4382,9 +4385,9 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D); + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D); } -#line 4388 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4391 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 202: @@ -4392,9 +4395,9 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true); + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D); } -#line 4398 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4401 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 203: @@ -4402,9 +4405,9 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube); + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true); } -#line 4408 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4411 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 204: @@ -4412,9 +4415,9 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D); + (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube); } -#line 4418 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4421 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 205: @@ -4422,9 +4425,9 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D); + (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D); } -#line 4428 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4431 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 206: @@ -4432,9 +4435,9 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube); + (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D); } -#line 4438 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 207: @@ -4442,9 +4445,9 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true); + (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube); } -#line 4448 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4451 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 208: @@ -4452,9 +4455,9 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D); + (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true); } -#line 4458 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4461 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 209: @@ -4462,9 +4465,9 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D); + (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D); } -#line 4468 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4471 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 210: @@ -4472,9 +4475,9 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube); + (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D); } -#line 4478 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4481 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 211: @@ -4482,9 +4485,9 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true); + (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube); } -#line 4488 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4491 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 212: @@ -4492,9 +4495,9 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setPureSampler(false); + (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true); } -#line 4498 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4501 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 213: @@ -4502,23 +4505,33 @@ yyreduce: { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; - (yyval.interm.type).sampler.setPureSampler(true); + (yyval.interm.type).sampler.setPureSampler(false); } -#line 4508 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4511 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 214: -#line 1540 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1539 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setPureSampler(true); + } +#line 4521 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 215: +#line 1545 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type)); } -#line 4518 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4531 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 215: -#line 1545 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 216: +#line 1550 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // // This is for user defined type names. The lexical phase looked up the @@ -4532,47 +4545,47 @@ yyreduce: } else parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), ""); } -#line 4536 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 216: -#line 1561 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "highp precision qualifier"); - (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh); - } -#line 4546 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4549 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 217: #line 1566 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier"); + parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "highp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); - parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium); + parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh); } -#line 4556 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4559 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 218: #line 1571 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium); + } +#line 4569 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 219: +#line 1576 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow); } -#line 4566 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 219: -#line 1579 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); } -#line 4572 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4579 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 220: -#line 1579 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1584 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); } +#line 4585 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 221: +#line 1584 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { TType* structure = new TType((yyvsp[-1].interm.typeList), *(yyvsp[-4].lex).string); parseContext.structArrayCheck((yyvsp[-4].lex).loc, *structure); @@ -4584,17 +4597,17 @@ yyreduce: (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 4588 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 221: -#line 1590 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); } -#line 4594 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4601 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 222: -#line 1590 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1595 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); } +#line 4607 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 223: +#line 1595 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { TType* structure = new TType((yyvsp[-1].interm.typeList), TString("")); (yyval.interm.type).init((yyvsp[-4].lex).loc); @@ -4602,19 +4615,19 @@ yyreduce: (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 4606 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 223: -#line 1600 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.typeList) = (yyvsp[0].interm.typeList); - } -#line 4614 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4619 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 224: -#line 1603 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1605 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.typeList) = (yyvsp[0].interm.typeList); + } +#line 4627 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 225: +#line 1608 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeList) = (yyvsp[-1].interm.typeList); for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) { @@ -4625,11 +4638,11 @@ yyreduce: (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]); } } -#line 4629 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4642 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 225: -#line 1616 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 226: +#line 1621 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -4652,11 +4665,11 @@ yyreduce: (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 4656 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4669 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 226: -#line 1638 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 227: +#line 1643 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -4681,38 +4694,38 @@ yyreduce: (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 4685 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4698 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 227: -#line 1665 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 228: +#line 1670 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeList) = new TTypeList; (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 4694 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 228: -#line 1669 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); - } -#line 4702 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4707 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 229: -#line 1675 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1674 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); + } +#line 4715 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 230: +#line 1680 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeLine).type = new TType(EbtVoid); (yyval.interm.typeLine).loc = (yyvsp[0].lex).loc; (yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string); } -#line 4712 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4725 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 230: -#line 1680 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 231: +#line 1685 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes); @@ -4721,181 +4734,181 @@ yyreduce: (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string); (yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes); } -#line 4725 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 231: -#line 1691 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); - } -#line 4733 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4738 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 232: -#line 1700 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4739 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 1696 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + } +#line 4746 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 233: -#line 1704 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1705 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4745 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4752 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 234: -#line 1705 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1709 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4751 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4758 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 235: -#line 1711 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1710 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4757 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4764 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 236: -#line 1712 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1716 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4763 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4770 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 237: -#line 1713 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1717 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4769 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4776 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 238: -#line 1714 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1718 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4775 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4782 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 239: -#line 1715 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1719 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4781 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4788 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 240: -#line 1716 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1720 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4787 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4794 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 241: -#line 1717 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1721 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4793 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4800 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 242: -#line 1724 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = 0; } -#line 4799 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 1722 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 4806 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 243: -#line 1725 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1729 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermNode) = 0; } +#line 4812 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 244: +#line 1730 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; } -#line 4808 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4821 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 244: -#line 1729 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 245: +#line 1734 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; } -#line 4817 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4830 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 245: -#line 1733 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 246: +#line 1738 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate()) (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode); } -#line 4827 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 246: -#line 1741 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4833 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4840 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 247: -#line 1742 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1746 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4839 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4846 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 248: -#line 1746 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - ++parseContext.controlFlowNestingLevel; - } -#line 4847 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 1747 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 4852 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 249: -#line 1749 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1751 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + ++parseContext.controlFlowNestingLevel; + } +#line 4860 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 250: +#line 1754 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4856 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4869 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 250: -#line 1753 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 251: +#line 1758 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 4866 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4879 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 251: -#line 1758 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 252: +#line 1763 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4877 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 252: -#line 1767 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = 0; - } -#line 4885 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4890 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 253: -#line 1770 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1772 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.intermNode) = 0; + } +#line 4898 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 254: +#line 1775 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate()) (yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode); } -#line 4895 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4908 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 254: -#line 1778 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 255: +#line 1783 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || @@ -4904,11 +4917,11 @@ yyreduce: (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case } } -#line 4908 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4921 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 255: -#line 1786 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 256: +#line 1791 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { @@ -4917,67 +4930,67 @@ yyreduce: } else (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 4921 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 256: -#line 1797 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = 0; } -#line 4927 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4934 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 257: -#line 1798 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { (yyval.interm.intermNode) = static_cast((yyvsp[-1].interm.intermTypedNode)); } -#line 4933 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 1802 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermNode) = 0; } +#line 4940 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 258: -#line 1802 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); - } -#line 4941 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 1803 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermNode) = static_cast((yyvsp[-1].interm.intermTypedNode)); } +#line 4946 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 259: -#line 1808 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1807 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + } +#line 4954 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 260: +#line 1813 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode)); (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc); } -#line 4950 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4963 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 260: -#line 1815 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 261: +#line 1820 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode); } -#line 4959 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4972 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 261: -#line 1819 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 262: +#line 1824 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode); (yyval.interm.nodePair).node2 = 0; } -#line 4968 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4981 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 262: -#line 1827 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 263: +#line 1832 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)); } -#line 4977 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4990 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 263: -#line 1831 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 264: +#line 1836 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type)); @@ -4988,19 +5001,19 @@ yyreduce: else (yyval.interm.intermTypedNode) = 0; } -#line 4992 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 264: -#line 1844 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); - } -#line 5000 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5005 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 265: -#line 1850 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1849 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + } +#line 5013 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 266: +#line 1855 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // start new switch sequence on the switch stack ++parseContext.controlFlowNestingLevel; @@ -5009,11 +5022,11 @@ yyreduce: parseContext.switchLevel.push_back(parseContext.statementNestingLevel); parseContext.symbolTable.push(); } -#line 5013 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5026 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 266: -#line 1858 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 267: +#line 1863 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0); delete parseContext.switchSequenceStack.back(); @@ -5023,27 +5036,27 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 5027 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 267: -#line 1870 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = 0; - } -#line 5035 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5040 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 268: -#line 1873 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1875 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + (yyval.interm.intermNode) = 0; } -#line 5043 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5048 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 269: -#line 1879 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1878 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + } +#line 5056 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 270: +#line 1884 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -5056,11 +5069,11 @@ yyreduce: (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc); } } -#line 5060 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5073 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 270: -#line 1891 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 271: +#line 1896 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -5070,19 +5083,19 @@ yyreduce: else (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc); } -#line 5074 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 271: -#line 1903 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); - } -#line 5082 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5087 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 272: -#line 1909 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1908 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + } +#line 5095 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 273: +#line 1914 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", ""); @@ -5091,11 +5104,11 @@ yyreduce: ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 5095 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5108 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 273: -#line 1917 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 274: +#line 1922 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc); @@ -5103,21 +5116,21 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 5107 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5120 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 274: -#line 1924 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 275: +#line 1929 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 5117 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5130 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 275: -#line 1929 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 276: +#line 1934 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", ""); @@ -5129,22 +5142,22 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 5133 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5146 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 276: -#line 1940 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 277: +#line 1945 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 5144 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5157 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 277: -#line 1946 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 278: +#line 1951 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc); @@ -5157,81 +5170,81 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 5161 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 278: -#line 1961 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); - } -#line 5169 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5174 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 279: -#line 1964 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1966 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 5177 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5182 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 280: -#line 1970 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1969 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 5185 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5190 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 281: -#line 1973 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1975 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - (yyval.interm.intermTypedNode) = 0; + (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5193 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5198 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 282: -#line 1979 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 1978 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.intermTypedNode) = 0; + } +#line 5206 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 283: +#line 1984 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); (yyval.interm.nodePair).node2 = 0; } -#line 5202 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5215 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 283: -#line 1983 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 284: +#line 1988 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode); } -#line 5211 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 284: -#line 1990 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - if (parseContext.loopNestingLevel <= 0) - parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", ""); - (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc); - } -#line 5221 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5224 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 285: #line 1995 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0) - parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", ""); - (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc); + 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 5231 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5234 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 286: #line 2000 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0) + parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", ""); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc); + } +#line 5244 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 287: +#line 2005 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc); if (parseContext.currentFunctionType->getBasicType() != EbtVoid) @@ -5239,73 +5252,73 @@ yyreduce: if (parseContext.inMain) parseContext.postEntryPointReturn = true; } -#line 5243 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 287: -#line 2007 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); - } -#line 5251 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5256 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 288: -#line 2010 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2012 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); + } +#line 5264 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 289: +#line 2015 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc); } -#line 5260 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5273 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 289: -#line 2019 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 290: +#line 2024 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } -#line 5269 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5282 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 290: -#line 2023 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 291: +#line 2028 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[0].interm.intermNode) != nullptr) { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } } -#line 5280 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ - break; - - case 291: -#line 2032 "MachineIndependent/glslang.y" /* yacc.c:1646 */ - { - (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); - } -#line 5288 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5293 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 292: -#line 2035 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2037 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 5296 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5301 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 293: -#line 2042 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 2040 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + } +#line 5309 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 294: +#line 2047 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyvsp[0].interm).function = parseContext.handleFunctionDeclarator((yyvsp[0].interm).loc, *(yyvsp[0].interm).function, false /* not prototype */); (yyvsp[0].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[0].interm).loc, *(yyvsp[0].interm).function); } -#line 5305 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5318 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 294: -#line 2046 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 295: +#line 2051 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // May be best done as post process phase on intermediate code if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) @@ -5321,11 +5334,11 @@ yyreduce: (yyval.interm.intermNode)->getAsAggregate()->setDebug(parseContext.contextPragma.debug); (yyval.interm.intermNode)->getAsAggregate()->setPragmaTable(parseContext.contextPragma.pragmaTable); } -#line 5325 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5338 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; -#line 5329 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5342 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -5553,5 +5566,5 @@ yyreturn: #endif return yyresult; } -#line 2065 "MachineIndependent/glslang.y" /* yacc.c:1906 */ +#line 2070 "MachineIndependent/glslang.y" /* yacc.c:1906 */ diff --git a/glslang/MachineIndependent/glslang_tab.cpp.h b/glslang/MachineIndependent/glslang_tab.cpp.h index 5b9a17ee..1a2ec999 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp.h +++ b/glslang/MachineIndependent/glslang_tab.cpp.h @@ -182,9 +182,10 @@ extern int yydebug; DEFAULT = 392, UNIFORM = 393, SHARED = 394, - FLAT = 395, - SMOOTH = 396, - LAYOUT = 397 + BUFFER = 395, + FLAT = 396, + SMOOTH = 397, + LAYOUT = 398 }; #endif @@ -229,7 +230,7 @@ union YYSTYPE glslang::TArraySizes* typeParameters; } interm; -#line 233 "MachineIndependent/glslang_tab.cpp.h" /* yacc.c:1909 */ +#line 234 "MachineIndependent/glslang_tab.cpp.h" /* yacc.c:1909 */ }; typedef union YYSTYPE YYSTYPE; From e5eee8fb035a3d2b9d81cc64f015c49bd5bf8d42 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Fri, 18 Oct 2019 01:03:11 -0600 Subject: [PATCH 59/94] Web: Add basic atomics for SSBOs. --- SPIRV/GlslangToSpv.cpp | 42 ++++++++++++++--------- Test/baseResults/web.comp.out | 19 +++++++++- Test/web.comp | 9 +++++ glslang/MachineIndependent/Initialize.cpp | 14 ++++---- 4 files changed, 60 insertions(+), 24 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index c6dcef5e..f1ca0155 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -2572,11 +2572,6 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt // These all have 0 operands and will naturally finish up in the code below for 0 operands break; -#ifndef GLSLANG_WEB - case glslang::EOpAtomicStore: - noReturnValue = true; - // fallthrough - case glslang::EOpAtomicLoad: case glslang::EOpAtomicAdd: case glslang::EOpAtomicMin: case glslang::EOpAtomicMax: @@ -2588,6 +2583,14 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt atomic = true; break; +#ifndef GLSLANG_WEB + case glslang::EOpAtomicStore: + noReturnValue = true; + // fallthrough + case glslang::EOpAtomicLoad: + atomic = true; + break; + case glslang::EOpAtomicCounterAdd: case glslang::EOpAtomicCounterSubtract: case glslang::EOpAtomicCounterMin: @@ -2670,6 +2673,19 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt if (arg == 1) lvalue = true; break; + + case glslang::EOpAtomicAdd: + case glslang::EOpAtomicMin: + case glslang::EOpAtomicMax: + case glslang::EOpAtomicAnd: + case glslang::EOpAtomicOr: + case glslang::EOpAtomicXor: + case glslang::EOpAtomicExchange: + case glslang::EOpAtomicCompSwap: + if (arg == 0) + lvalue = true; + break; + #ifndef GLSLANG_WEB case glslang::EOpFrexp: if (arg == 1) @@ -2688,14 +2704,6 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt invertedType = convertGlslangToSpvType(glslangOperands[0]->getAsBinaryNode()->getLeft()->getType()); } break; - case glslang::EOpAtomicAdd: - case glslang::EOpAtomicMin: - case glslang::EOpAtomicMax: - case glslang::EOpAtomicAnd: - case glslang::EOpAtomicOr: - case glslang::EOpAtomicXor: - case glslang::EOpAtomicExchange: - case glslang::EOpAtomicCompSwap: case glslang::EOpAtomicLoad: case glslang::EOpAtomicStore: case glslang::EOpAtomicCounterAdd: @@ -2821,12 +2829,12 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt builder.createNoResultOp(spv::OpCooperativeMatrixStoreNV, idImmOps); result = 0; - } else if (atomic) { - // Handle all atomics - result = createAtomicOperation(node->getOp(), precision, resultType(), operands, node->getBasicType(), lvalueCoherentFlags); } else #endif - { + if (atomic) { + // Handle all atomics + result = createAtomicOperation(node->getOp(), precision, resultType(), operands, node->getBasicType(), lvalueCoherentFlags); + } else { // Pass through to generic operations. switch (glslangOperands.size()) { case 0: diff --git a/Test/baseResults/web.comp.out b/Test/baseResults/web.comp.out index 711c7203..79a30729 100644 --- a/Test/baseResults/web.comp.out +++ b/Test/baseResults/web.comp.out @@ -1,7 +1,7 @@ ; SPIR-V ; Version: 1.0 ; Generator: Khronos Glslang Reference Front End; 7 -; Bound: 91 +; Bound: 108 ; Schema: 0 OpCapability Shader %1 = OpExtInstImport "GLSL.std.450" @@ -92,6 +92,7 @@ %_ptr_Input_uint = OpTypePointer Input %uint %gl_LocalInvocationIndex = OpVariable %_ptr_Input_uint Input %_ptr_Uniform_v3uint = OpTypePointer Uniform %v3uint + %int_5 = OpConstant %int 5 %int_197645 = OpConstant %int 197645 %main = OpFunction %void None %3 %5 = OpLabel @@ -136,5 +137,21 @@ %87 = OpIAdd %v3uint %79 %86 %89 = OpAccessChain %_ptr_Uniform_v3uint %bInst %int_1 OpStore %89 %87 + %90 = OpAccessChain %_ptr_Uniform_int %bInst %int_0 + %91 = OpAtomicIAdd %int %90 %uint_1 %uint_0 %int_2 + %92 = OpAccessChain %_ptr_Uniform_int %bInst %int_0 + %93 = OpAtomicSMin %int %92 %uint_1 %uint_0 %int_2 + %94 = OpAccessChain %_ptr_Uniform_int %bInst %int_0 + %95 = OpAtomicSMax %int %94 %uint_1 %uint_0 %int_2 + %96 = OpAccessChain %_ptr_Uniform_int %bInst %int_0 + %97 = OpAtomicAnd %int %96 %uint_1 %uint_0 %int_2 + %98 = OpAccessChain %_ptr_Uniform_int %bInst %int_0 + %99 = OpAtomicOr %int %98 %uint_1 %uint_0 %int_2 + %100 = OpAccessChain %_ptr_Uniform_int %bInst %int_0 + %101 = OpAtomicXor %int %100 %uint_1 %uint_0 %int_2 + %102 = OpAccessChain %_ptr_Uniform_int %bInst %int_0 + %103 = OpAtomicExchange %int %102 %uint_1 %uint_0 %int_2 + %104 = OpAccessChain %_ptr_Uniform_int %bInst %int_0 + %106 = OpAtomicCompareExchange %int %104 %uint_1 %uint_0 %uint_0 %int_2 %int_5 OpReturn OpFunctionEnd diff --git a/Test/web.comp b/Test/web.comp index 24ef43c8..07847b42 100644 --- a/Test/web.comp +++ b/Test/web.comp @@ -38,4 +38,13 @@ void main() s[3] = vec4(0, arrX[0], arrY[0], arrZ[0]); bInst.count = gl_NumWorkGroups + gl_WorkGroupSize + gl_WorkGroupID + gl_LocalInvocationID + gl_GlobalInvocationID * gl_LocalInvocationIndex; + + atomicAdd(bInst.size, 2); + atomicMin(bInst.size, 2); + atomicMax(bInst.size, 2); + atomicAnd(bInst.size, 2); + atomicOr(bInst.size, 2); + atomicXor(bInst.size, 2); + atomicExchange(bInst.size, 2); + atomicCompSwap(bInst.size, 5, 2); } diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 18590af1..7f20ee8b 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -147,16 +147,16 @@ EProfile EDesktopProfile = static_cast(ENoProfile | ECoreProfile | ECo // Declare pointers to put into the table for versioning. #ifdef GLSLANG_WEB const Versioning* Es300Desktop130 = nullptr; -#else - const Versioning Es300Desktop130Version[] = { { EEsProfile, 0, 300, 0, nullptr }, - { EDesktopProfile, 0, 130, 0, nullptr }, - { EBadProfile } }; - const Versioning* Es300Desktop130 = &Es300Desktop130Version[0]; const Versioning Es310Desktop430Version[] = { { EEsProfile, 0, 310, 0, nullptr }, { EDesktopProfile, 0, 430, 0, nullptr }, { EBadProfile } }; const Versioning* Es310Desktop430 = &Es310Desktop430Version[0]; +#else + const Versioning Es300Desktop130Version[] = { { EEsProfile, 0, 300, 0, nullptr }, + { EDesktopProfile, 0, 130, 0, nullptr }, + { EBadProfile } }; + const Versioning* Es300Desktop130 = &Es300Desktop130Version[0]; const Versioning Es310Desktop450Version[] = { { EEsProfile, 0, 310, 0, nullptr }, { EDesktopProfile, 0, 450, 0, nullptr }, @@ -256,7 +256,6 @@ const BuiltInFunction BaseFunctions[] = { { EOpGreaterThanEqual, "greaterThanEqual", 2, TypeU, ClassBNS, Es300Desktop130 }, { EOpVectorEqual, "equal", 2, TypeU, ClassBNS, Es300Desktop130 }, { EOpVectorNotEqual, "notEqual", 2, TypeU, ClassBNS, Es300Desktop130 }, -#ifndef GLSLANG_WEB { EOpAtomicAdd, "atomicAdd", 2, TypeIU, ClassV1FIOCV, Es310Desktop430 }, { EOpAtomicMin, "atomicMin", 2, TypeIU, ClassV1FIOCV, Es310Desktop430 }, { EOpAtomicMax, "atomicMax", 2, TypeIU, ClassV1FIOCV, Es310Desktop430 }, @@ -265,6 +264,7 @@ const BuiltInFunction BaseFunctions[] = { { EOpAtomicXor, "atomicXor", 2, TypeIU, ClassV1FIOCV, Es310Desktop430 }, { EOpAtomicExchange, "atomicExchange", 2, TypeIU, ClassV1FIOCV, Es310Desktop430 }, { EOpAtomicCompSwap, "atomicCompSwap", 3, TypeIU, ClassV1FIOCV, Es310Desktop430 }, +#ifndef GLSLANG_WEB { EOpMix, "mix", 3, TypeB, ClassRegular, Es310Desktop450 }, { EOpMix, "mix", 3, TypeIU, ClassLB, Es310Desktop450 }, #endif @@ -331,8 +331,10 @@ void AddTabledBuiltin(TString& decls, const BuiltInFunction& function) if (arg == function.numArguments - 1 && (function.classes & ClassLO)) decls.append("out "); if (arg == 0) { +#ifndef GLSLANG_WEB if (function.classes & ClassCV) decls.append("coherent volatile "); +#endif if (function.classes & ClassFIO) decls.append("inout "); if (function.classes & ClassFO) From f8d1d7442b869e8e7e61cdcfdb1b6a07a00ddde2 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Mon, 21 Oct 2019 06:55:11 -0600 Subject: [PATCH 60/94] Web: Reclaim more space and make all work w/wo GLSLANG_WEB. --- SPIRV/GlslangToSpv.cpp | 62 +- Test/baseResults/size | 2 +- glslang/Include/Types.h | 34 +- glslang/Include/intermediate.h | 2 + glslang/MachineIndependent/Initialize.cpp | 298 +- glslang/MachineIndependent/Intermediate.cpp | 12 +- glslang/MachineIndependent/ParseHelper.cpp | 16 +- glslang/MachineIndependent/ShaderLang.cpp | 17 +- glslang/MachineIndependent/glslang.y | 1723 ++++ glslang/MachineIndependent/glslang_tab.cpp | 8439 +++++++++++++---- glslang/MachineIndependent/glslang_tab.cpp.h | 435 +- glslang/MachineIndependent/linkValidate.cpp | 6 +- .../MachineIndependent/localintermediate.h | 40 +- 13 files changed, 8983 insertions(+), 2103 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index f1ca0155..99c4c3f4 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -374,22 +374,20 @@ spv::Decoration TranslateBlockDecoration(const glslang::TType& type, bool useSto // Translate glslang type to SPIR-V memory decorations. void TranslateMemoryDecoration(const glslang::TQualifier& qualifier, std::vector& memory, bool useVulkanMemoryModel) { -#ifndef GLSLANG_WEB if (!useVulkanMemoryModel) { - if (qualifier.coherent) + if (qualifier.isCoherent()) memory.push_back(spv::DecorationCoherent); - if (qualifier.volatil) { + if (qualifier.isVolatile()) { memory.push_back(spv::DecorationVolatile); memory.push_back(spv::DecorationCoherent); } } - if (qualifier.restrict) + if (qualifier.isRestrict()) memory.push_back(spv::DecorationRestrict); if (qualifier.isReadOnly()) memory.push_back(spv::DecorationNonWritable); if (qualifier.isWriteOnly()) memory.push_back(spv::DecorationNonReadable); -#endif } // Translate glslang type to SPIR-V layout decorations. @@ -1201,9 +1199,9 @@ spv::StorageClass TGlslangToSpvTraverser::TranslateStorageClass(const glslang::T } switch (type.getQualifier().storage) { - case glslang::EvqGlobal: return spv::StorageClassPrivate; - case glslang::EvqConstReadOnly: return spv::StorageClassFunction; - case glslang::EvqTemporary: return spv::StorageClassFunction; + case glslang::EvqGlobal: return spv::StorageClassPrivate; + case glslang::EvqConstReadOnly: return spv::StorageClassFunction; + case glslang::EvqTemporary: return spv::StorageClassFunction; case glslang::EvqShared: return spv::StorageClassWorkgroup; #ifndef GLSLANG_WEB case glslang::EvqPayloadNV: return spv::StorageClassRayPayloadNV; @@ -1466,13 +1464,20 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, const gl if (mode != spv::ExecutionModeMax) builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode); switch (glslangIntermediate->getInterlockOrdering()) { - case glslang::EioPixelInterlockOrdered: mode = spv::ExecutionModePixelInterlockOrderedEXT; break; - case glslang::EioPixelInterlockUnordered: mode = spv::ExecutionModePixelInterlockUnorderedEXT; break; - case glslang::EioSampleInterlockOrdered: mode = spv::ExecutionModeSampleInterlockOrderedEXT; break; - case glslang::EioSampleInterlockUnordered: mode = spv::ExecutionModeSampleInterlockUnorderedEXT; break; - case glslang::EioShadingRateInterlockOrdered: mode = spv::ExecutionModeShadingRateInterlockOrderedEXT; break; - case glslang::EioShadingRateInterlockUnordered: mode = spv::ExecutionModeShadingRateInterlockUnorderedEXT; break; - default: mode = spv::ExecutionModeMax; break; + case glslang::EioPixelInterlockOrdered: mode = spv::ExecutionModePixelInterlockOrderedEXT; + break; + case glslang::EioPixelInterlockUnordered: mode = spv::ExecutionModePixelInterlockUnorderedEXT; + break; + case glslang::EioSampleInterlockOrdered: mode = spv::ExecutionModeSampleInterlockOrderedEXT; + break; + case glslang::EioSampleInterlockUnordered: mode = spv::ExecutionModeSampleInterlockUnorderedEXT; + break; + case glslang::EioShadingRateInterlockOrdered: mode = spv::ExecutionModeShadingRateInterlockOrderedEXT; + break; + case glslang::EioShadingRateInterlockUnordered: mode = spv::ExecutionModeShadingRateInterlockUnorderedEXT; + break; + default: mode = spv::ExecutionModeMax; + break; } if (mode != spv::ExecutionModeMax) { builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode); @@ -1495,7 +1500,6 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, const gl builder.addExecutionMode(shaderEntry, spv::ExecutionModeLocalSize, glslangIntermediate->getLocalSize(0), glslangIntermediate->getLocalSize(1), glslangIntermediate->getLocalSize(2)); -#ifndef GLSLANG_WEB if (glslangIntermediate->getLayoutDerivativeModeNone() == glslang::LayoutDerivativeGroupQuads) { builder.addCapability(spv::CapabilityComputeDerivativeGroupQuadsNV); builder.addExecutionMode(shaderEntry, spv::ExecutionModeDerivativeGroupQuadsNV); @@ -1505,7 +1509,6 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, const gl builder.addExecutionMode(shaderEntry, spv::ExecutionModeDerivativeGroupLinearNV); builder.addExtension(spv::E_SPV_NV_compute_shader_derivatives); } -#endif break; #ifndef GLSLANG_WEB case EShLangTessEvaluation: @@ -3712,6 +3715,7 @@ void TGlslangToSpvTraverser::decorateStructType(const glslang::TType& type, for (unsigned int i = 0; i < memory.size(); ++i) builder.addMemberDecoration(spvType, member, memory[i]); } + #endif // Location assignment was already completed correctly by the front end, @@ -4170,9 +4174,11 @@ void TGlslangToSpvTraverser::makeFunctions(const glslang::TIntermSequence& glslF // memory and use RestrictPointer/AliasedPointer. if (originalParam(type.getQualifier().storage, type, false) || !writableParam(type.getQualifier().storage)) { - decorations.push_back(type.getQualifier().restrict ? spv::DecorationRestrict : spv::DecorationAliased); + decorations.push_back(type.getQualifier().isRestrict() ? spv::DecorationRestrict : + spv::DecorationAliased); } else { - decorations.push_back(type.getQualifier().restrict ? spv::DecorationRestrictPointerEXT : spv::DecorationAliasedPointerEXT); + decorations.push_back(type.getQualifier().isRestrict() ? spv::DecorationRestrictPointerEXT : + spv::DecorationAliasedPointerEXT); } } }; @@ -4980,6 +4986,7 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO } } +#ifndef GLSLANG_WEB // nonprivate if (imageType.getQualifier().nonprivate) { params.nonprivate = true; @@ -4989,6 +4996,7 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO if (imageType.getQualifier().volatil) { params.volatil = true; } +#endif std::vector result( 1, builder.createTextureCall(precision, resultType(), sparse, cracked.fetch, cracked.proj, cracked.gather, @@ -7492,14 +7500,6 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op, spv: spv::Scope memoryBarrierScope = glslangIntermediate->usingVulkanMemoryModel() ? spv::ScopeQueueFamilyKHR : spv::ScopeDevice; switch (op) { -#ifndef GLSLANG_WEB - case glslang::EOpEmitVertex: - builder.createNoResultOp(spv::OpEmitVertex); - return 0; - case glslang::EOpEndPrimitive: - builder.createNoResultOp(spv::OpEndPrimitive); - return 0; -#endif case glslang::EOpBarrier: if (glslangIntermediate->getStage() == EShLangTessControl) { if (glslangIntermediate->usingVulkanMemoryModel()) { @@ -7585,6 +7585,14 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op, spv: builder.createMemoryBarrier(spv::ScopeSubgroup, spv::MemorySemanticsWorkgroupMemoryMask | spv::MemorySemanticsAcquireReleaseMask); return spv::NoResult; + + case glslang::EOpEmitVertex: + builder.createNoResultOp(spv::OpEmitVertex); + return 0; + case glslang::EOpEndPrimitive: + builder.createNoResultOp(spv::OpEndPrimitive); + return 0; + case glslang::EOpSubgroupElect: { std::vector operands; return createSubgroupOperation(op, typeId, operands, glslang::EbtVoid); diff --git a/Test/baseResults/size b/Test/baseResults/size index a7b99b96..47364a58 100644 --- a/Test/baseResults/size +++ b/Test/baseResults/size @@ -1 +1 @@ -399360 ../build/install/bin/glslangValidator.exe +396288 ../build/install/bin/glslangValidator.exe diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index 385ee406..3ed402d4 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -528,6 +528,7 @@ public: void clearMemory() { +#ifndef GLSLANG_WEB coherent = false; devicecoherent = false; queuefamilycoherent = false; @@ -538,6 +539,7 @@ public: restrict = false; readonly = false; writeonly = false; +#endif } const char* semanticName; @@ -550,16 +552,6 @@ public: bool centroid : 1; bool smooth : 1; bool flat : 1; - bool coherent : 1; - bool devicecoherent : 1; - bool queuefamilycoherent : 1; - bool workgroupcoherent : 1; - bool subgroupcoherent : 1; - bool nonprivate : 1; - bool volatil : 1; - bool restrict : 1; - bool readonly : 1; - bool writeonly : 1; // having a constant_id is not sufficient: expressions have no id, but are still specConstant bool specConstant : 1; bool nonUniform : 1; @@ -567,6 +559,9 @@ public: #ifdef GLSLANG_WEB bool isWriteOnly() const { return false; } bool isReadOnly() const { return false; } + bool isRestrict() const { return false; } + bool isCoherent() const { return false; } + bool isVolatile() const { return false; } bool isSample() const { return false; } bool isMemory() const { return false; } bool isMemoryQualifierImageAndSSBOOnly() const { return false; } @@ -588,8 +583,21 @@ public: bool perTaskNV : 1; bool patch : 1; bool sample : 1; + bool restrict : 1; + bool readonly : 1; + bool writeonly : 1; + bool coherent : 1; + bool volatil : 1; + bool devicecoherent : 1; + bool queuefamilycoherent : 1; + bool workgroupcoherent : 1; + bool subgroupcoherent : 1; + bool nonprivate : 1; bool isWriteOnly() const { return writeonly; } bool isReadOnly() const { return readonly; } + bool isRestrict() const { return restrict; } + bool isCoherent() const { return coherent; } + bool isVolatile() const { return volatil; } bool isSample() const { return sample; } bool isMemory() const { @@ -780,8 +788,8 @@ public: { layoutLocation = layoutLocationEnd; layoutComponent = layoutComponentEnd; - layoutIndex = layoutIndexEnd; #ifndef GLSLANG_WEB + layoutIndex = layoutIndexEnd; clearStreamLayout(); clearXfbLayout(); #endif @@ -886,7 +894,9 @@ public: layoutSet = layoutSetEnd; layoutBinding = layoutBindingEnd; +#ifndef GLSLANG_WEB layoutAttachment = layoutAttachmentEnd; +#endif } bool hasMatrix() const @@ -923,6 +933,7 @@ public: bool hasOffset() const { return false; } bool isNonPerspective() const { return false; } bool hasIndex() const { return false; } + unsigned getIndex() const { return 0; } bool hasComponent() const { return false; } bool hasStream() const { return false; } bool hasFormat() const { return false; } @@ -947,6 +958,7 @@ public: { return layoutIndex != layoutIndexEnd; } + unsigned getIndex() const { return layoutIndex; } bool hasComponent() const { return layoutComponent != layoutComponentEnd; diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index f966899f..4bddf1c2 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -1310,11 +1310,13 @@ public: bool isSparseTexture() const { return false; } bool isImageFootprint() const { return false; } bool isSparseImage() const { return false; } + bool isSubgroup() const { return false; } #else bool isImage() const { return op > EOpImageGuardBegin && op < EOpImageGuardEnd; } bool isSparseTexture() const { return op > EOpSparseTextureGuardBegin && op < EOpSparseTextureGuardEnd; } bool isImageFootprint() const { return op > EOpImageFootprintGuardBegin && op < EOpImageFootprintGuardEnd; } bool isSparseImage() const { return op == EOpSparseImageLoad; } + bool isSubgroup() const { return op > EOpSubgroupGuardStart && op < EOpSubgroupGuardStop; } #endif void setOperationPrecision(TPrecisionQualifier p) { operationPrecision = p; } diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 7f20ee8b..6bf847ba 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -85,18 +85,18 @@ const int TypeStringScalarMask = ~TypeStringColumnMask; // take type to enum ArgType { // numbers hardcoded to correspond to 'TypeString'; order and value matter - TypeB = 1 << 0, // Boolean - TypeF = 1 << 1, // float 32 - TypeI = 1 << 2, // int 32 - TypeU = 1 << 3, // uint 32 - TypeF16 = 1 << 4, // float 16 - TypeF64 = 1 << 5, // float 64 - TypeI8 = 1 << 6, // int 8 - TypeI16 = 1 << 7, // int 16 - TypeI64 = 1 << 8, // int 64 - TypeU8 = 1 << 9, // uint 8 - TypeU16 = 1 << 10, // uint 16 - TypeU64 = 1 << 11, // uint 64 + TypeB = 1 << 0, // Boolean + TypeF = 1 << 1, // float 32 + TypeI = 1 << 2, // int 32 + TypeU = 1 << 3, // uint 32 + TypeF16 = 1 << 4, // float 16 + TypeF64 = 1 << 5, // float 64 + TypeI8 = 1 << 6, // int 8 + TypeI16 = 1 << 7, // int 16 + TypeI64 = 1 << 8, // int 64 + TypeU8 = 1 << 9, // uint 8 + TypeU16 = 1 << 10, // uint 16 + TypeU64 = 1 << 11, // uint 64 }; // Mixtures of the above, to help the function tables const ArgType TypeFI = static_cast(TypeF | TypeI); @@ -106,22 +106,22 @@ const ArgType TypeIU = static_cast(TypeI | TypeU); // The relationships between arguments and return type, whether anything is // output, or other unusual situations. enum ArgClass { - ClassRegular = 0, // nothing special, just all vector widths with matching return type; traditional arithmetic - ClassLS = 1 << 0, // the last argument is also held fixed as a (type-matched) scalar while the others cycle - ClassXLS = 1 << 1, // the last argument is exclusively a (type-matched) scalar while the others cycle - ClassLS2 = 1 << 2, // the last two arguments are held fixed as a (type-matched) scalar while the others cycle - ClassFS = 1 << 3, // the first argument is held fixed as a (type-matched) scalar while the others cycle - ClassFS2 = 1 << 4, // the first two arguments are held fixed as a (type-matched) scalar while the others cycle - ClassLO = 1 << 5, // the last argument is an output - ClassB = 1 << 6, // return type cycles through only bool/bvec, matching vector width of args - ClassLB = 1 << 7, // last argument cycles through only bool/bvec, matching vector width of args - ClassV1 = 1 << 8, // scalar only - ClassFIO = 1 << 9, // first argument is inout - ClassRS = 1 << 10, // the return is held scalar as the arguments cycle - ClassNS = 1 << 11, // no scalar prototype - ClassCV = 1 << 12, // first argument is 'coherent volatile' - ClassFO = 1 << 13, // first argument is output - ClassV3 = 1 << 14, // vec3 only + ClassRegular = 0, // nothing special, just all vector widths with matching return type; traditional arithmetic + ClassLS = 1 << 0, // the last argument is also held fixed as a (type-matched) scalar while the others cycle + ClassXLS = 1 << 1, // the last argument is exclusively a (type-matched) scalar while the others cycle + ClassLS2 = 1 << 2, // the last two arguments are held fixed as a (type-matched) scalar while the others cycle + ClassFS = 1 << 3, // the first argument is held fixed as a (type-matched) scalar while the others cycle + ClassFS2 = 1 << 4, // the first two arguments are held fixed as a (type-matched) scalar while the others cycle + ClassLO = 1 << 5, // the last argument is an output + ClassB = 1 << 6, // return type cycles through only bool/bvec, matching vector width of args + ClassLB = 1 << 7, // last argument cycles through only bool/bvec, matching vector width of args + ClassV1 = 1 << 8, // scalar only + ClassFIO = 1 << 9, // first argument is inout + ClassRS = 1 << 10, // the return is held scalar as the arguments cycle + ClassNS = 1 << 11, // no scalar prototype + ClassCV = 1 << 12, // first argument is 'coherent volatile' + ClassFO = 1 << 13, // first argument is output + ClassV3 = 1 << 14, // vec3 only }; // Mixtures of the above, to help the function tables const ArgClass ClassV1FIOCV = (ArgClass)(ClassV1 | ClassFIO | ClassCV); @@ -147,17 +147,18 @@ EProfile EDesktopProfile = static_cast(ENoProfile | ECoreProfile | ECo // Declare pointers to put into the table for versioning. #ifdef GLSLANG_WEB const Versioning* Es300Desktop130 = nullptr; - - const Versioning Es310Desktop430Version[] = { { EEsProfile, 0, 310, 0, nullptr }, - { EDesktopProfile, 0, 430, 0, nullptr }, - { EBadProfile } }; - const Versioning* Es310Desktop430 = &Es310Desktop430Version[0]; + const Versioning* Es310Desktop430 = nullptr; #else const Versioning Es300Desktop130Version[] = { { EEsProfile, 0, 300, 0, nullptr }, { EDesktopProfile, 0, 130, 0, nullptr }, { EBadProfile } }; const Versioning* Es300Desktop130 = &Es300Desktop130Version[0]; + const Versioning Es310Desktop430Version[] = { { EEsProfile, 0, 310, 0, nullptr }, + { EDesktopProfile, 0, 430, 0, nullptr }, + { EBadProfile } }; + const Versioning* Es310Desktop430 = &Es310Desktop430Version[0]; + const Versioning Es310Desktop450Version[] = { { EEsProfile, 0, 310, 0, nullptr }, { EDesktopProfile, 0, 450, 0, nullptr }, { EBadProfile } }; @@ -268,6 +269,7 @@ const BuiltInFunction BaseFunctions[] = { { EOpMix, "mix", 3, TypeB, ClassRegular, Es310Desktop450 }, { EOpMix, "mix", 3, TypeIU, ClassLB, Es310Desktop450 }, #endif + { EOpNull } }; @@ -278,6 +280,59 @@ const BuiltInFunction DerivativeFunctions[] = { { EOpNull } }; +// For functions declared some other way, but still use the table to relate to operator. +struct CustomFunction { + TOperator op; // operator to map the name to + const char* name; // function name + const Versioning* versioning; // nullptr means always a valid version +}; + +const CustomFunction CustomFunctions[] = { + { EOpBarrier, "barrier", nullptr }, + { EOpMemoryBarrierShared, "memoryBarrierShared", nullptr }, + { EOpGroupMemoryBarrier, "groupMemoryBarrier", nullptr }, + { EOpMemoryBarrier, "memoryBarrier", nullptr }, + { EOpMemoryBarrierBuffer, "memoryBarrierBuffer", nullptr }, + + { EOpPackSnorm2x16, "packSnorm2x16", nullptr }, + { EOpUnpackSnorm2x16, "unpackSnorm2x16", nullptr }, + { EOpPackUnorm2x16, "packUnorm2x16", nullptr }, + { EOpUnpackUnorm2x16, "unpackUnorm2x16", nullptr }, + { EOpPackHalf2x16, "packHalf2x16", nullptr }, + { EOpUnpackHalf2x16, "unpackHalf2x16", nullptr }, + + { EOpMul, "matrixCompMult", nullptr }, + { EOpOuterProduct, "outerProduct", nullptr }, + { EOpTranspose, "transpose", nullptr }, + { EOpDeterminant, "determinant", nullptr }, + { EOpMatrixInverse, "inverse", nullptr }, + { EOpFloatBitsToInt, "floatBitsToInt", nullptr }, + { EOpFloatBitsToUint, "floatBitsToUint", nullptr }, + { EOpIntBitsToFloat, "intBitsToFloat", nullptr }, + { EOpUintBitsToFloat, "uintBitsToFloat", nullptr }, + + { EOpTextureQuerySize, "textureSize", nullptr }, + { EOpTextureQueryLod, "textureQueryLod", nullptr }, + { EOpTextureQueryLevels, "textureQueryLevels", nullptr }, + { EOpTextureQuerySamples, "textureSamples", nullptr }, + { EOpTexture, "texture", nullptr }, + { EOpTextureProj, "textureProj", nullptr }, + { EOpTextureLod, "textureLod", nullptr }, + { EOpTextureOffset, "textureOffset", nullptr }, + { EOpTextureFetch, "texelFetch", nullptr }, + { EOpTextureFetchOffset, "texelFetchOffset", nullptr }, + { EOpTextureProjOffset, "textureProjOffset", nullptr }, + { EOpTextureLodOffset, "textureLodOffset", nullptr }, + { EOpTextureProjLod, "textureProjLod", nullptr }, + { EOpTextureProjLodOffset, "textureProjLodOffset", nullptr }, + { EOpTextureGrad, "textureGrad", nullptr }, + { EOpTextureGradOffset, "textureGradOffset", nullptr }, + { EOpTextureProjGrad, "textureProjGrad", nullptr }, + { EOpTextureProjGradOffset, "textureProjGradOffset", nullptr }, + + { EOpNull } +}; + // For the given table of functions, add all the indicated prototypes for each // one, to be returned in the passed in decls. void AddTabledBuiltin(TString& decls, const BuiltInFunction& function) @@ -384,9 +439,10 @@ bool ValidVersion(const BuiltInFunction& function, int version, EProfile profile // Relate a single table of built-ins to their AST operator. // This can get called redundantly (especially for the common built-ins, when // called once per stage). This is a performance issue only, not a correctness -// concern. It is done for quality arising from simplicity, as there are subtlies +// concern. It is done for quality arising from simplicity, as there are subtleties // to get correct if instead trying to do it surgically. -void RelateTabledBuiltins(const BuiltInFunction* functions, TSymbolTable& symbolTable) +template +void RelateTabledBuiltins(const FunctionT* functions, TSymbolTable& symbolTable) { while (functions->op != EOpNull) { symbolTable.relateToOperator(functions->name, functions->op); @@ -410,10 +466,6 @@ void TBuiltIns::addTabledBuiltins(int version, EProfile profile, const SpvVersio forEachFunction(commonBuiltins, BaseFunctions); forEachFunction(stageBuiltins[EShLangFragment], DerivativeFunctions); -#ifdef GLSLANG_WEB - return; -#endif - if ((profile == EEsProfile && version >= 320) || (profile != EEsProfile && version >= 450)) forEachFunction(stageBuiltins[EShLangCompute], DerivativeFunctions); } @@ -423,6 +475,7 @@ void TBuiltIns::relateTabledBuiltins(int /* version */, EProfile /* profile */, { RelateTabledBuiltins(BaseFunctions, symbolTable); RelateTabledBuiltins(DerivativeFunctions, symbolTable); + RelateTabledBuiltins(CustomFunctions, symbolTable); } inline bool IncludeLegacy(int version, EProfile profile, const SpvVersion& spvVersion) @@ -467,7 +520,7 @@ TBuiltIns::TBuiltIns() dimMap[Esd1D] = 1; dimMap[EsdRect] = 2; dimMap[EsdBuffer] = 1; - dimMap[EsdSubpass] = 2; // potientially unused for now + dimMap[EsdSubpass] = 2; // potentially unused for now #endif } @@ -486,6 +539,10 @@ TBuiltIns::~TBuiltIns() // void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvVersion) { +#ifdef GLSLANG_WEB + version = 310; + profile = EEsProfile; +#endif addTabledBuiltins(version, profile, spvVersion); //============================================================================ @@ -1308,14 +1365,13 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV commonBuiltins.append( "mediump vec2 unpackHalf2x16(highp uint);" "\n"); - } -#ifndef GLSLANG_WEB - else if (profile != EEsProfile && version >= 420) { + } else if (profile != EEsProfile && version >= 420) { commonBuiltins.append( " vec2 unpackHalf2x16(highp uint);" "\n"); } +#ifndef GLSLANG_WEB if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 400)) { commonBuiltins.append( @@ -3804,37 +3860,15 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV // Prototypes for all control functions. // //============================================================================ -#ifdef GLSLANG_WEB - bool esBarrier = true; -#else bool esBarrier = (profile == EEsProfile && version >= 310); -#endif - if ((profile != EEsProfile && version >= 420) || esBarrier) - stageBuiltins[EShLangCompute].append( - "void barrier();" - ); - if ((profile != EEsProfile && version >= 130) || esBarrier) - commonBuiltins.append( - "void memoryBarrier();" - ); - if ((profile != EEsProfile && version >= 420) || esBarrier) { - stageBuiltins[EShLangCompute].append( - "void memoryBarrierShared();" - "void groupMemoryBarrier();" - "void memoryBarrierBuffer();" - ); - } -#ifndef GLSLANG_WEB - if ((profile != EEsProfile && version >= 420) || esBarrier) { - commonBuiltins.append( - "void memoryBarrierAtomicCounter();" - "void memoryBarrierImage();" - ); - } if ((profile != EEsProfile && version >= 150) || esBarrier) stageBuiltins[EShLangTessControl].append( "void barrier();" ); + if ((profile != EEsProfile && version >= 420) || esBarrier) + stageBuiltins[EShLangCompute].append( + "void barrier();" + ); if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { stageBuiltins[EShLangMeshNV].append( "void barrier();" @@ -3843,6 +3877,26 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "void barrier();" ); } + if ((profile != EEsProfile && version >= 130) || esBarrier) + commonBuiltins.append( + "void memoryBarrier();" + ); + if ((profile != EEsProfile && version >= 420) || esBarrier) { + commonBuiltins.append( + "void memoryBarrierBuffer();" + ); + stageBuiltins[EShLangCompute].append( + "void memoryBarrierShared();" + "void groupMemoryBarrier();" + ); + } +#ifndef GLSLANG_WEB + if ((profile != EEsProfile && version >= 420) || esBarrier) { + commonBuiltins.append( + "void memoryBarrierAtomicCounter();" + "void memoryBarrierImage();" + ); + } if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { stageBuiltins[EShLangMeshNV].append( "void memoryBarrierShared();" @@ -5329,7 +5383,6 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c for (int ms = 0; ms <= 1; ++ms) // loop over "bool" multisample or not #endif { -#ifndef GLSLANG_WEB if ((ms || image) && shadow) continue; if (ms && profile != EEsProfile && version < 150) @@ -5338,7 +5391,6 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c continue; if (ms && profile == EEsProfile && version < 310) continue; -#endif for (int arrayed = 0; arrayed <= 1; ++arrayed) { // loop over "bool" arrayed or not #ifdef GLSLANG_WEB @@ -5443,14 +5495,12 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c } } -#ifndef GLSLANG_WEB // // sparseTexelsResidentARB() // if (profile != EEsProfile && version >= 450) { commonBuiltins.append("bool sparseTexelsResidentARB(int code);\n"); } -#endif } // @@ -5737,6 +5787,11 @@ void TBuiltIns::addSubpassSampling(TSampler sampler, const TString& typeName, in // void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName, int version, EProfile profile) { +#ifdef GLSLANG_WEB + profile = EEsProfile; + version = 310; +#endif + // // texturing // @@ -6017,6 +6072,11 @@ void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName, // void TBuiltIns::addGatherFunctions(TSampler sampler, const TString& typeName, int version, EProfile profile) { +#ifdef GLSLANG_WEB + profile = EEsProfile; + version = 310; +#endif + switch (sampler.dim) { case Esd2D: case EsdRect: @@ -6255,6 +6315,11 @@ void TBuiltIns::addGatherFunctions(TSampler sampler, const TString& typeName, in // void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language) { +#ifdef GLSLANG_WEB + version = 310; + profile = EEsProfile; +#endif + // // Initialize the context-dependent (resource-dependent) built-in strings for parsing. // @@ -6799,6 +6864,11 @@ static void BuiltInVariable(const char* blockName, const char* name, TBuiltInVar // void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TSymbolTable& symbolTable) { +#ifdef GLSLANG_WEB + version = 310; + profile = EEsProfile; +#endif + // // Tag built-in variables and functions with additional qualifier and extension information // that cannot be declared with the text strings. @@ -7572,8 +7642,16 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_LocalInvocationID", EbvLocalInvocationId, symbolTable); BuiltInVariable("gl_GlobalInvocationID", EbvGlobalInvocationId, symbolTable); BuiltInVariable("gl_LocalInvocationIndex", EbvLocalInvocationIndex, symbolTable); + BuiltInVariable("gl_DeviceIndex", EbvDeviceIndex, symbolTable); + BuiltInVariable("gl_ViewIndex", EbvViewIndex, symbolTable); #ifndef GLSLANG_WEB + if ((profile != EEsProfile && version >= 140) || + (profile == EEsProfile && version >= 310)) { + symbolTable.setVariableExtensions("gl_DeviceIndex", 1, &E_GL_EXT_device_group); + symbolTable.setVariableExtensions("gl_ViewIndex", 1, &E_GL_EXT_multiview); + } + if (profile != EEsProfile && version < 430) { symbolTable.setVariableExtensions("gl_NumWorkGroups", 1, &E_GL_ARB_compute_shader); symbolTable.setVariableExtensions("gl_WorkGroupSize", 1, &E_GL_ARB_compute_shader); @@ -7653,17 +7731,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_WarpIDNV", EbvWarpID, symbolTable); BuiltInVariable("gl_SMIDNV", EbvSMID, symbolTable); } -#endif - if ((profile != EEsProfile && version >= 140) || - (profile == EEsProfile && version >= 310)) { - symbolTable.setVariableExtensions("gl_DeviceIndex", 1, &E_GL_EXT_device_group); - BuiltInVariable("gl_DeviceIndex", EbvDeviceIndex, symbolTable); - symbolTable.setVariableExtensions("gl_ViewIndex", 1, &E_GL_EXT_multiview); - BuiltInVariable("gl_ViewIndex", EbvViewIndex, symbolTable); - } - -#ifndef GLSLANG_WEB // GL_KHR_shader_subgroup if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 140)) { @@ -8056,21 +8124,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion relateTabledBuiltins(version, profile, spvVersion, language, symbolTable); - symbolTable.relateToOperator("matrixCompMult", EOpMul); - // 120 and 150 are correct for both ES and desktop - if (version >= 120) { - symbolTable.relateToOperator("outerProduct", EOpOuterProduct); - symbolTable.relateToOperator("transpose", EOpTranspose); - if (version >= 150) { - symbolTable.relateToOperator("determinant", EOpDeterminant); - symbolTable.relateToOperator("inverse", EOpMatrixInverse); - } - } - - symbolTable.relateToOperator("floatBitsToInt", EOpFloatBitsToInt); - symbolTable.relateToOperator("floatBitsToUint", EOpFloatBitsToUint); - symbolTable.relateToOperator("intBitsToFloat", EOpIntBitsToFloat); - symbolTable.relateToOperator("uintBitsToFloat", EOpUintBitsToFloat); #ifndef GLSLANG_WEB symbolTable.relateToOperator("doubleBitsToInt64", EOpDoubleBitsToInt64); symbolTable.relateToOperator("doubleBitsToUint64", EOpDoubleBitsToUint64); @@ -8085,14 +8138,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("int16BitsToHalf", EOpInt16BitsToFloat16); symbolTable.relateToOperator("uint16BitsToHalf", EOpUint16BitsToFloat16); -#endif - symbolTable.relateToOperator("packSnorm2x16", EOpPackSnorm2x16); - symbolTable.relateToOperator("unpackSnorm2x16", EOpUnpackSnorm2x16); - symbolTable.relateToOperator("packUnorm2x16", EOpPackUnorm2x16); - symbolTable.relateToOperator("unpackUnorm2x16", EOpUnpackUnorm2x16); - -#ifndef GLSLANG_WEB symbolTable.relateToOperator("packSnorm4x8", EOpPackSnorm4x8); symbolTable.relateToOperator("unpackSnorm4x8", EOpUnpackSnorm4x8); symbolTable.relateToOperator("packUnorm4x8", EOpPackUnorm4x8); @@ -8100,21 +8146,12 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("packDouble2x32", EOpPackDouble2x32); symbolTable.relateToOperator("unpackDouble2x32", EOpUnpackDouble2x32); -#endif - - symbolTable.relateToOperator("packHalf2x16", EOpPackHalf2x16); - symbolTable.relateToOperator("unpackHalf2x16", EOpUnpackHalf2x16); symbolTable.relateToOperator("packInt2x32", EOpPackInt2x32); symbolTable.relateToOperator("unpackInt2x32", EOpUnpackInt2x32); symbolTable.relateToOperator("packUint2x32", EOpPackUint2x32); symbolTable.relateToOperator("unpackUint2x32", EOpUnpackUint2x32); - symbolTable.relateToOperator("barrier", EOpBarrier); - symbolTable.relateToOperator("memoryBarrier", EOpMemoryBarrier); - symbolTable.relateToOperator("memoryBarrierBuffer", EOpMemoryBarrierBuffer); - -#ifndef GLSLANG_WEB symbolTable.relateToOperator("packInt2x16", EOpPackInt2x16); symbolTable.relateToOperator("unpackInt2x16", EOpUnpackInt2x16); symbolTable.relateToOperator("packUint2x16", EOpPackUint2x16); @@ -8179,10 +8216,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("findMSB", EOpFindMSB); symbolTable.relateToOperator("helperInvocationEXT", EOpIsHelperInvocation); -#endif if (PureOperatorBuiltins) { -#ifndef GLSLANG_WEB symbolTable.relateToOperator("imageSize", EOpImageQuerySize); symbolTable.relateToOperator("imageSamples", EOpImageQuerySamples); symbolTable.relateToOperator("imageLoad", EOpImageLoad); @@ -8200,28 +8235,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("subpassLoad", EOpSubpassLoad); symbolTable.relateToOperator("subpassLoadMS", EOpSubpassLoadMS); -#endif - symbolTable.relateToOperator("textureSize", EOpTextureQuerySize); - symbolTable.relateToOperator("textureQueryLod", EOpTextureQueryLod); - symbolTable.relateToOperator("textureQueryLevels", EOpTextureQueryLevels); - symbolTable.relateToOperator("textureSamples", EOpTextureQuerySamples); - symbolTable.relateToOperator("texture", EOpTexture); - symbolTable.relateToOperator("textureProj", EOpTextureProj); - symbolTable.relateToOperator("textureLod", EOpTextureLod); - symbolTable.relateToOperator("textureOffset", EOpTextureOffset); - symbolTable.relateToOperator("texelFetch", EOpTextureFetch); - symbolTable.relateToOperator("texelFetchOffset", EOpTextureFetchOffset); - symbolTable.relateToOperator("textureProjOffset", EOpTextureProjOffset); - symbolTable.relateToOperator("textureLodOffset", EOpTextureLodOffset); - symbolTable.relateToOperator("textureProjLod", EOpTextureProjLod); - symbolTable.relateToOperator("textureProjLodOffset", EOpTextureProjLodOffset); - symbolTable.relateToOperator("textureGrad", EOpTextureGrad); - symbolTable.relateToOperator("textureGradOffset", EOpTextureGradOffset); - symbolTable.relateToOperator("textureProjGrad", EOpTextureProjGrad); - symbolTable.relateToOperator("textureProjGradOffset", EOpTextureProjGradOffset); - -#ifndef GLSLANG_WEB symbolTable.relateToOperator("textureGather", EOpTextureGather); symbolTable.relateToOperator("textureGatherOffset", EOpTextureGatherOffset); symbolTable.relateToOperator("textureGatherOffsets", EOpTextureGatherOffsets); @@ -8463,11 +8477,9 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("shadow2DEXT", EOpTexture); symbolTable.relateToOperator("shadow2DProjEXT", EOpTextureProj); } -#endif } switch(language) { -#ifndef GLSLANG_WEB case EShLangVertex: break; @@ -8502,12 +8514,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("endInvocationInterlockARB", EOpEndInvocationInterlock); break; -#endif case EShLangCompute: - symbolTable.relateToOperator("memoryBarrierShared", EOpMemoryBarrierShared); - symbolTable.relateToOperator("groupMemoryBarrier", EOpGroupMemoryBarrier); -#ifndef GLSLANG_WEB symbolTable.relateToOperator("subgroupMemoryBarrierShared", EOpSubgroupMemoryBarrierShared); if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { @@ -8524,10 +8532,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("coopMatLoadNV", EOpCooperativeMatrixLoad); symbolTable.relateToOperator("coopMatStoreNV", EOpCooperativeMatrixStore); symbolTable.relateToOperator("coopMatMulAddNV", EOpCooperativeMatrixMulAdd); -#endif break; -#ifndef GLSLANG_WEB case EShLangRayGenNV: case EShLangClosestHitNV: case EShLangMissNV: @@ -8566,8 +8572,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion default: assert(false && "Language not supported"); -#endif } +#endif } // diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index 429e1e8d..fcf3e715 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -801,10 +801,8 @@ TIntermTyped* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped // // Add a new newNode for the conversion. // - TIntermUnary* newNode = nullptr; - - TOperator newOp = EOpNull; +#ifndef GLSLANG_WEB bool convertToIntTypes = (convertTo == EbtInt8 || convertTo == EbtUint8 || convertTo == EbtInt16 || convertTo == EbtUint16 || convertTo == EbtInt || convertTo == EbtUint || @@ -838,7 +836,10 @@ TIntermTyped* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped (node->getBasicType() == EbtFloat16 && ! convertToFloatTypes)) return nullptr; } +#endif + TIntermUnary* newNode = nullptr; + TOperator newOp = EOpNull; if (!buildConvertOp(convertTo, node->getBasicType(), newOp)) { return nullptr; } @@ -847,11 +848,14 @@ TIntermTyped* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped newNode = addUnaryNode(newOp, node, node->getLoc(), newType); if (node->getAsConstantUnion()) { +#ifndef GLSLANG_WEB // 8/16-bit storage extensions don't support 8/16-bit constants, so don't fold conversions // to those types if ((getArithemeticInt8Enabled() || !(convertTo == EbtInt8 || convertTo == EbtUint8)) && (getArithemeticInt16Enabled() || !(convertTo == EbtInt16 || convertTo == EbtUint16)) && - (getArithemeticFloat16Enabled() || !(convertTo == EbtFloat16))) { + (getArithemeticFloat16Enabled() || !(convertTo == EbtFloat16))) +#endif + { TIntermTyped* folded = node->getAsConstantUnion()->fold(newOp, newType); if (folded) return folded; diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index f4c8b160..619bf81d 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -1160,6 +1160,7 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction const TQualifier& argQualifier = argType.getQualifier(); if (argQualifier.isMemory() && (argType.containsOpaque() || argType.isReference())) { const char* message = "argument cannot drop memory qualifier when passed to formal parameter"; +#ifndef GLSLANG_WEB if (argQualifier.volatil && ! formalQualifier.volatil) error(arguments->getLoc(), message, "volatile", ""); if (argQualifier.coherent && ! (formalQualifier.devicecoherent || formalQualifier.coherent)) @@ -1179,6 +1180,7 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction // Don't check 'restrict', it is different than the rest: // "...but only restrict can be taken away from a calling argument, by a formal parameter that // lacks the restrict qualifier..." +#endif } if (!builtIn && argQualifier.getFormat() != formalQualifier.getFormat()) { // we have mismatched formats, which should only be allowed if writeonly @@ -2201,7 +2203,7 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan break; } - if (callNode.getOp() > EOpSubgroupGuardStart && callNode.getOp() < EOpSubgroupGuardStop) { + if (callNode.isSubgroup()) { // these require SPIR-V 1.3 if (spvVersion.spv > 0 && spvVersion.spv < EShTargetSpv_1_3) error(loc, "requires SPIR-V 1.3", "subgroup op", ""); @@ -2779,6 +2781,7 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T // it, in which case the type comes from the argument instead of from the // constructor function. switch (op) { +#ifndef GLSLANG_WEB case EOpConstructNonuniform: if (node != nullptr && node->getAsTyped() != nullptr) { type.shallowCopy(node->getAsTyped()->getType()); @@ -2786,6 +2789,7 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T type.getQualifier().nonUniform = true; } break; +#endif default: type.shallowCopy(function.getType()); break; @@ -4475,6 +4479,7 @@ void TParseContext::paramCheckFixStorage(const TSourceLoc& loc, const TStorageQu void TParseContext::paramCheckFix(const TSourceLoc& loc, const TQualifier& qualifier, TType& type) { +#ifndef GLSLANG_WEB if (qualifier.isMemory()) { type.getQualifier().volatil = qualifier.volatil; type.getQualifier().coherent = qualifier.coherent; @@ -4487,6 +4492,7 @@ void TParseContext::paramCheckFix(const TSourceLoc& loc, const TQualifier& quali type.getQualifier().writeonly = qualifier.writeonly; type.getQualifier().restrict = qualifier.restrict; } +#endif if (qualifier.isAuxiliary() || qualifier.isInterpolation()) @@ -5387,9 +5393,7 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi #ifndef GLSLANG_WEB if (language == EShLangMeshNV || language == EShLangTaskNV) { requireExtensions(loc, 1, &E_GL_NV_mesh_shader, "gl_WorkGroupSize"); - } - else - { + } else { profileRequires(loc, EEsProfile, 310, 0, "gl_WorkGroupSize"); profileRequires(loc, ~EEsProfile, 430, E_GL_ARB_compute_shader, "gl_WorkGroupSize"); } @@ -7382,6 +7386,7 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con for (unsigned int member = 0; member < typeList.size(); ++member) { TQualifier& memberQualifier = typeList[member].type->getQualifier(); const TSourceLoc& memberLoc = typeList[member].loc; +#ifndef GLSLANG_WEB if (memberQualifier.hasStream()) { if (defaultQualification.layoutStream != memberQualifier.layoutStream) error(memberLoc, "member cannot contradict block", "stream", ""); @@ -7395,6 +7400,7 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con if (defaultQualification.layoutXfbBuffer != memberQualifier.layoutXfbBuffer) error(memberLoc, "member cannot contradict block (or what block inherited from global)", "xfb_buffer", ""); } +#endif if (memberQualifier.hasPacking()) error(memberLoc, "member of block cannot have a packing layout qualifier", typeList[member].type->getFieldName().c_str(), ""); @@ -7437,6 +7443,7 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con layoutMemberLocationArrayCheck(loc, memberWithLocation, arraySizes); +#ifndef GLSLANG_WEB // Ensure that the block has an XfbBuffer assigned. This is needed // because if the block has a XfbOffset assigned, then it is // assumed that it has implicitly assigned the current global @@ -7446,6 +7453,7 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con if (!currentBlockQualifier.hasXfbBuffer() && currentBlockQualifier.hasXfbOffset()) currentBlockQualifier.layoutXfbBuffer = globalOutputDefaults.layoutXfbBuffer; } +#endif // Process the members fixBlockLocations(loc, currentBlockQualifier, typeList, memberWithLocation, memberWithoutLocation); diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index f14d442a..44ce1c19 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -288,6 +288,11 @@ void InitializeStageSymbolTable(TBuiltInParseables& builtInParseables, int versi EShLanguage language, EShSource source, TInfoSink& infoSink, TSymbolTable** commonTable, TSymbolTable** symbolTables) { +#ifdef GLSLANG_WEB + profile = EEsProfile; + version = 310; +#endif + (*symbolTables[language]).adoptLevels(*commonTable[CommonIndex(profile, language)]); InitializeSymbolTable(builtInParseables.getStageString(language), version, profile, spvVersion, language, source, infoSink, *symbolTables[language]); @@ -304,6 +309,11 @@ void InitializeStageSymbolTable(TBuiltInParseables& builtInParseables, int versi // bool InitializeSymbolTables(TInfoSink& infoSink, TSymbolTable** commonTable, TSymbolTable** symbolTables, int version, EProfile profile, const SpvVersion& spvVersion, EShSource source) { +#ifdef GLSLANG_WEB + profile = EEsProfile; + version = 310; +#endif + std::unique_ptr builtInParseables(CreateBuiltInParseables(infoSink, source)); if (builtInParseables == nullptr) @@ -349,7 +359,6 @@ bool InitializeSymbolTables(TInfoSink& infoSink, TSymbolTable** commonTable, TS InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangCompute, source, infoSink, commonTable, symbolTables); -#ifndef GLSLANG_WEB // check for ray tracing stages if (profile != EEsProfile && version >= 450) { InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangRayGenNV, source, @@ -377,7 +386,6 @@ bool InitializeSymbolTables(TInfoSink& infoSink, TSymbolTable** commonTable, TS (profile == EEsProfile && version >= 320)) InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangTaskNV, source, infoSink, commonTable, symbolTables); -#endif return true; } @@ -873,6 +881,11 @@ bool ProcessDeferred( bool goodVersion = DeduceVersionProfile(compiler->infoSink, stage, versionNotFirst, defaultVersion, source, version, profile, spvVersion); +#ifdef GLSLANG_WEB + profile = EEsProfile; + version = 310; +#endif + bool versionWillBeError = (versionNotFound || (profile == EEsProfile && version >= 300 && versionNotFirst)); #ifndef GLSLANG_WEB bool warnVersionNotFirst = false; diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index 1b8e9519..e263f3d7 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -175,6 +175,89 @@ extern int yylex(YYSTYPE*, TParseContext&); +%token ATTRIBUTE VARYING +%token FLOAT16_T FLOAT32_T DOUBLE FLOAT64_T +%token INT64_T UINT64_T INT32_T UINT32_T INT16_T UINT16_T INT8_T UINT8_T +%token I64VEC2 I64VEC3 I64VEC4 +%token U64VEC2 U64VEC3 U64VEC4 +%token I32VEC2 I32VEC3 I32VEC4 +%token U32VEC2 U32VEC3 U32VEC4 +%token I16VEC2 I16VEC3 I16VEC4 +%token U16VEC2 U16VEC3 U16VEC4 +%token I8VEC2 I8VEC3 I8VEC4 +%token U8VEC2 U8VEC3 U8VEC4 +%token DVEC2 DVEC3 DVEC4 DMAT2 DMAT3 DMAT4 +%token F16VEC2 F16VEC3 F16VEC4 F16MAT2 F16MAT3 F16MAT4 +%token F32VEC2 F32VEC3 F32VEC4 F32MAT2 F32MAT3 F32MAT4 +%token F64VEC2 F64VEC3 F64VEC4 F64MAT2 F64MAT3 F64MAT4 +%token DMAT2X2 DMAT2X3 DMAT2X4 +%token DMAT3X2 DMAT3X3 DMAT3X4 +%token DMAT4X2 DMAT4X3 DMAT4X4 +%token F16MAT2X2 F16MAT2X3 F16MAT2X4 +%token F16MAT3X2 F16MAT3X3 F16MAT3X4 +%token F16MAT4X2 F16MAT4X3 F16MAT4X4 +%token F32MAT2X2 F32MAT2X3 F32MAT2X4 +%token F32MAT3X2 F32MAT3X3 F32MAT3X4 +%token F32MAT4X2 F32MAT4X3 F32MAT4X4 +%token F64MAT2X2 F64MAT2X3 F64MAT2X4 +%token F64MAT3X2 F64MAT3X3 F64MAT3X4 +%token F64MAT4X2 F64MAT4X3 F64MAT4X4 +%token ATOMIC_UINT +%token ACCSTRUCTNV +%token FCOOPMATNV ICOOPMATNV UCOOPMATNV + +// combined image/sampler +%token SAMPLERCUBEARRAY SAMPLERCUBEARRAYSHADOW +%token ISAMPLERCUBEARRAY USAMPLERCUBEARRAY +%token SAMPLER1D SAMPLER1DARRAY SAMPLER1DARRAYSHADOW ISAMPLER1D SAMPLER1DSHADOW +%token SAMPLER2DRECT SAMPLER2DRECTSHADOW ISAMPLER2DRECT USAMPLER2DRECT +%token SAMPLERBUFFER ISAMPLERBUFFER USAMPLERBUFFER +%token SAMPLER2DMS ISAMPLER2DMS USAMPLER2DMS +%token SAMPLER2DMSARRAY ISAMPLER2DMSARRAY USAMPLER2DMSARRAY +%token SAMPLEREXTERNALOES +%token SAMPLEREXTERNAL2DY2YEXT +%token ISAMPLER1DARRAY USAMPLER1D USAMPLER1DARRAY +%token F16SAMPLER1D F16SAMPLER2D F16SAMPLER3D F16SAMPLER2DRECT F16SAMPLERCUBE +%token F16SAMPLER1DARRAY F16SAMPLER2DARRAY F16SAMPLERCUBEARRAY +%token F16SAMPLERBUFFER F16SAMPLER2DMS F16SAMPLER2DMSARRAY +%token F16SAMPLER1DSHADOW F16SAMPLER2DSHADOW F16SAMPLER1DARRAYSHADOW F16SAMPLER2DARRAYSHADOW +%token F16SAMPLER2DRECTSHADOW F16SAMPLERCUBESHADOW F16SAMPLERCUBEARRAYSHADOW + +// images +%token IMAGE1D IIMAGE1D UIMAGE1D IMAGE2D IIMAGE2D +%token UIMAGE2D IMAGE3D IIMAGE3D UIMAGE3D +%token IMAGE2DRECT IIMAGE2DRECT UIMAGE2DRECT +%token IMAGECUBE IIMAGECUBE UIMAGECUBE +%token IMAGEBUFFER IIMAGEBUFFER UIMAGEBUFFER +%token IMAGE1DARRAY IIMAGE1DARRAY UIMAGE1DARRAY +%token IMAGE2DARRAY IIMAGE2DARRAY UIMAGE2DARRAY +%token IMAGECUBEARRAY IIMAGECUBEARRAY UIMAGECUBEARRAY +%token IMAGE2DMS IIMAGE2DMS UIMAGE2DMS +%token IMAGE2DMSARRAY IIMAGE2DMSARRAY UIMAGE2DMSARRAY + +%token F16IMAGE1D F16IMAGE2D F16IMAGE3D F16IMAGE2DRECT +%token F16IMAGECUBE F16IMAGE1DARRAY F16IMAGE2DARRAY F16IMAGECUBEARRAY +%token F16IMAGEBUFFER F16IMAGE2DMS F16IMAGE2DMSARRAY + +// texture without sampler +%token TEXTURECUBEARRAY ITEXTURECUBEARRAY UTEXTURECUBEARRAY +%token TEXTURE1D ITEXTURE1D UTEXTURE1D +%token TEXTURE1DARRAY ITEXTURE1DARRAY UTEXTURE1DARRAY +%token TEXTURE2DRECT ITEXTURE2DRECT UTEXTURE2DRECT +%token TEXTUREBUFFER ITEXTUREBUFFER UTEXTUREBUFFER +%token TEXTURE2DMS ITEXTURE2DMS UTEXTURE2DMS +%token TEXTURE2DMSARRAY ITEXTURE2DMSARRAY UTEXTURE2DMSARRAY + +%token F16TEXTURE1D F16TEXTURE2D F16TEXTURE3D F16TEXTURE2DRECT F16TEXTURECUBE +%token F16TEXTURE1DARRAY F16TEXTURE2DARRAY F16TEXTURECUBEARRAY +%token F16TEXTUREBUFFER F16TEXTURE2DMS F16TEXTURE2DMSARRAY + +// input attachments +%token SUBPASSINPUT SUBPASSINPUTMS ISUBPASSINPUT ISUBPASSINPUTMS USUBPASSINPUT USUBPASSINPUTMS +%token F16SUBPASSINPUT F16SUBPASSINPUTMS + + + %token LEFT_OP RIGHT_OP %token INC_OP DEC_OP LE_OP GE_OP EQ_OP NE_OP %token AND_OP OR_OP XOR_OP MUL_ASSIGN DIV_ASSIGN ADD_ASSIGN @@ -198,6 +281,16 @@ extern int yylex(YYSTYPE*, TParseContext&); %token FLAT SMOOTH LAYOUT +%token DOUBLECONSTANT INT16CONSTANT UINT16CONSTANT FLOAT16CONSTANT INT32CONSTANT UINT32CONSTANT +%token INT64CONSTANT UINT64CONSTANT +%token SUBROUTINE DEMOTE +%token PAYLOADNV PAYLOADINNV HITATTRNV CALLDATANV CALLDATAINNV +%token PATCH SAMPLE NONUNIFORM +%token COHERENT VOLATILE RESTRICT READONLY WRITEONLY DEVICECOHERENT QUEUEFAMILYCOHERENT WORKGROUPCOHERENT +%token SUBGROUPCOHERENT NONPRIVATE +%token NOPERSPECTIVE EXPLICITINTERPAMD PERVERTEXNV PERPRIMITIVENV PERVIEWNV PERTASKNV +%token PRECISE + %type assignment_operator unary_operator %type variable_identifier primary_expression postfix_expression @@ -245,6 +338,12 @@ extern int yylex(YYSTYPE*, TParseContext&); %type identifier_list +%type precise_qualifier non_uniform_qualifier +%type type_name_list +%type attribute attribute_list single_attribute +%type demote_statement +%type initializer_list + %start translation_unit %% @@ -278,6 +377,39 @@ primary_expression $$ = parseContext.intermediate.addConstantUnion($1.b, $1.loc, true); } + | INT32CONSTANT { + parseContext.explicitInt32Check($1.loc, "32-bit signed literal"); + $$ = parseContext.intermediate.addConstantUnion($1.i, $1.loc, true); + } + | UINT32CONSTANT { + parseContext.explicitInt32Check($1.loc, "32-bit signed literal"); + $$ = parseContext.intermediate.addConstantUnion($1.u, $1.loc, true); + } + | INT64CONSTANT { + parseContext.int64Check($1.loc, "64-bit integer literal"); + $$ = parseContext.intermediate.addConstantUnion($1.i64, $1.loc, true); + } + | UINT64CONSTANT { + parseContext.int64Check($1.loc, "64-bit unsigned integer literal"); + $$ = parseContext.intermediate.addConstantUnion($1.u64, $1.loc, true); + } + | INT16CONSTANT { + parseContext.explicitInt16Check($1.loc, "16-bit integer literal"); + $$ = parseContext.intermediate.addConstantUnion((short)$1.i, $1.loc, true); + } + | UINT16CONSTANT { + parseContext.explicitInt16Check($1.loc, "16-bit unsigned integer literal"); + $$ = parseContext.intermediate.addConstantUnion((unsigned short)$1.u, $1.loc, true); + } + | DOUBLECONSTANT { + parseContext.doubleCheck($1.loc, "double literal"); + $$ = parseContext.intermediate.addConstantUnion($1.d, EbtDouble, $1.loc, true); + } + | FLOAT16CONSTANT { + parseContext.float16Check($1.loc, "half float literal"); + $$ = parseContext.intermediate.addConstantUnion($1.d, EbtFloat16, $1.loc, true); + } + ; postfix_expression @@ -404,6 +536,12 @@ function_identifier } } + | non_uniform_qualifier { + // Constructor + $$.intermNode = 0; + $$.function = parseContext.handleConstructorCall($1.loc, $1); + } + ; unary_expression @@ -964,6 +1102,8 @@ single_declaration $$.type = $1; $$.intermNode = 0; + parseContext.declareTypeDefaults($$.loc, $$.type); + } | fully_specified_type IDENTIFIER { $$.type = $1; @@ -1050,6 +1190,53 @@ interpolation_qualifier $$.qualifier.flat = true; } + | NOPERSPECTIVE { + parseContext.globalCheck($1.loc, "noperspective"); + parseContext.profileRequires($1.loc, EEsProfile, 0, E_GL_NV_shader_noperspective_interpolation, "noperspective"); + parseContext.profileRequires($1.loc, ENoProfile, 130, 0, "noperspective"); + $$.init($1.loc); + $$.qualifier.nopersp = true; + } + | EXPLICITINTERPAMD { + parseContext.globalCheck($1.loc, "__explicitInterpAMD"); + parseContext.profileRequires($1.loc, ECoreProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); + parseContext.profileRequires($1.loc, ECompatibilityProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); + $$.init($1.loc); + $$.qualifier.explicitInterp = true; + } + | PERVERTEXNV { + parseContext.globalCheck($1.loc, "pervertexNV"); + parseContext.profileRequires($1.loc, ECoreProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); + parseContext.profileRequires($1.loc, ECompatibilityProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); + parseContext.profileRequires($1.loc, EEsProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); + $$.init($1.loc); + $$.qualifier.pervertexNV = true; + } + | PERPRIMITIVENV { + // No need for profile version or extension check. Shader stage already checks both. + parseContext.globalCheck($1.loc, "perprimitiveNV"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangFragmentMask | EShLangMeshNVMask), "perprimitiveNV"); + // Fragment shader stage doesn't check for extension. So we explicitly add below extension check. + if (parseContext.language == EShLangFragment) + parseContext.requireExtensions($1.loc, 1, &E_GL_NV_mesh_shader, "perprimitiveNV"); + $$.init($1.loc); + $$.qualifier.perPrimitiveNV = true; + } + | PERVIEWNV { + // No need for profile version or extension check. Shader stage already checks both. + parseContext.globalCheck($1.loc, "perviewNV"); + parseContext.requireStage($1.loc, EShLangMeshNV, "perviewNV"); + $$.init($1.loc); + $$.qualifier.perViewNV = true; + } + | PERTASKNV { + // No need for profile version or extension check. Shader stage already checks both. + parseContext.globalCheck($1.loc, "taskNV"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangTaskNVMask | EShLangMeshNVMask), "taskNV"); + $$.init($1.loc); + $$.qualifier.perTaskNV = true; + } + ; layout_qualifier @@ -1085,6 +1272,15 @@ layout_qualifier_id ; +precise_qualifier + : PRECISE { + parseContext.profileRequires($$.loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise"); + parseContext.profileRequires($1.loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "precise"); + $$.init($1.loc); + $$.qualifier.noContraction = true; + } + ; + type_qualifier : single_type_qualifier { @@ -1120,6 +1316,14 @@ single_type_qualifier $$ = $1; } + | precise_qualifier { + // allow inheritance of storage qualifier from block declaration + $$ = $1; + } + | non_uniform_qualifier { + $$ = $1; + } + ; storage_qualifier @@ -1170,9 +1374,161 @@ storage_qualifier $$.qualifier.storage = EvqBuffer; } + | ATTRIBUTE { + parseContext.requireStage($1.loc, EShLangVertex, "attribute"); + parseContext.checkDeprecated($1.loc, ECoreProfile, 130, "attribute"); + parseContext.checkDeprecated($1.loc, ENoProfile, 130, "attribute"); + parseContext.requireNotRemoved($1.loc, ECoreProfile, 420, "attribute"); + parseContext.requireNotRemoved($1.loc, EEsProfile, 300, "attribute"); + + parseContext.globalCheck($1.loc, "attribute"); + + $$.init($1.loc); + $$.qualifier.storage = EvqVaryingIn; + } + | VARYING { + parseContext.checkDeprecated($1.loc, ENoProfile, 130, "varying"); + parseContext.checkDeprecated($1.loc, ECoreProfile, 130, "varying"); + parseContext.requireNotRemoved($1.loc, ECoreProfile, 420, "varying"); + parseContext.requireNotRemoved($1.loc, EEsProfile, 300, "varying"); + + parseContext.globalCheck($1.loc, "varying"); + + $$.init($1.loc); + if (parseContext.language == EShLangVertex) + $$.qualifier.storage = EvqVaryingOut; + else + $$.qualifier.storage = EvqVaryingIn; + } + | PATCH { + parseContext.globalCheck($1.loc, "patch"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch"); + $$.init($1.loc); + $$.qualifier.patch = true; + } + | SAMPLE { + parseContext.globalCheck($1.loc, "sample"); + $$.init($1.loc); + $$.qualifier.sample = true; + } + | HITATTRNV { + parseContext.globalCheck($1.loc, "hitAttributeNV"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangIntersectNVMask | EShLangClosestHitNVMask + | EShLangAnyHitNVMask), "hitAttributeNV"); + parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "hitAttributeNV"); + $$.init($1.loc); + $$.qualifier.storage = EvqHitAttrNV; + } + | PAYLOADNV { + parseContext.globalCheck($1.loc, "rayPayloadNV"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenNVMask | EShLangClosestHitNVMask | + EShLangAnyHitNVMask | EShLangMissNVMask), "rayPayloadNV"); + parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "rayPayloadNV"); + $$.init($1.loc); + $$.qualifier.storage = EvqPayloadNV; + } + | PAYLOADINNV { + parseContext.globalCheck($1.loc, "rayPayloadInNV"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangClosestHitNVMask | + EShLangAnyHitNVMask | EShLangMissNVMask), "rayPayloadInNV"); + parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "rayPayloadInNV"); + $$.init($1.loc); + $$.qualifier.storage = EvqPayloadInNV; + } + | CALLDATANV { + parseContext.globalCheck($1.loc, "callableDataNV"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenNVMask | + EShLangClosestHitNVMask | EShLangMissNVMask | EShLangCallableNVMask), "callableDataNV"); + parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "callableDataNV"); + $$.init($1.loc); + $$.qualifier.storage = EvqCallableDataNV; + } + | CALLDATAINNV { + parseContext.globalCheck($1.loc, "callableDataInNV"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangCallableNVMask), "callableDataInNV"); + parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "callableDataInNV"); + $$.init($1.loc); + $$.qualifier.storage = EvqCallableDataInNV; + } + | COHERENT { + $$.init($1.loc); + $$.qualifier.coherent = true; + } + | DEVICECOHERENT { + $$.init($1.loc); + parseContext.requireExtensions($1.loc, 1, &E_GL_KHR_memory_scope_semantics, "devicecoherent"); + $$.qualifier.devicecoherent = true; + } + | QUEUEFAMILYCOHERENT { + $$.init($1.loc); + parseContext.requireExtensions($1.loc, 1, &E_GL_KHR_memory_scope_semantics, "queuefamilycoherent"); + $$.qualifier.queuefamilycoherent = true; + } + | WORKGROUPCOHERENT { + $$.init($1.loc); + parseContext.requireExtensions($1.loc, 1, &E_GL_KHR_memory_scope_semantics, "workgroupcoherent"); + $$.qualifier.workgroupcoherent = true; + } + | SUBGROUPCOHERENT { + $$.init($1.loc); + parseContext.requireExtensions($1.loc, 1, &E_GL_KHR_memory_scope_semantics, "subgroupcoherent"); + $$.qualifier.subgroupcoherent = true; + } + | NONPRIVATE { + $$.init($1.loc); + parseContext.requireExtensions($1.loc, 1, &E_GL_KHR_memory_scope_semantics, "nonprivate"); + $$.qualifier.nonprivate = true; + } + | VOLATILE { + $$.init($1.loc); + $$.qualifier.volatil = true; + } + | RESTRICT { + $$.init($1.loc); + $$.qualifier.restrict = true; + } + | READONLY { + $$.init($1.loc); + $$.qualifier.readonly = true; + } + | WRITEONLY { + $$.init($1.loc); + $$.qualifier.writeonly = true; + } + | SUBROUTINE { + parseContext.spvRemoved($1.loc, "subroutine"); + parseContext.globalCheck($1.loc, "subroutine"); + parseContext.unimplemented($1.loc, "subroutine"); + $$.init($1.loc); + } + | SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN { + parseContext.spvRemoved($1.loc, "subroutine"); + parseContext.globalCheck($1.loc, "subroutine"); + parseContext.unimplemented($1.loc, "subroutine"); + $$.init($1.loc); + } + ; +non_uniform_qualifier + : NONUNIFORM { + $$.init($1.loc); + $$.qualifier.nonUniform = true; + } + ; + +type_name_list + : IDENTIFIER { + // TODO + } + | type_name_list COMMA IDENTIFIER { + // TODO: 4.0 semantics: subroutines + // 1) make sure each identifier is a type declared earlier with SUBROUTINE + // 2) save all of the identifiers for future comparison with the declared function + } + ; + type_specifier : type_specifier_nonarray type_parameter_specifier_opt { @@ -1394,6 +1750,585 @@ type_specifier_nonarray $$.setMatrix(4, 4); } + | DOUBLE { + parseContext.doubleCheck($1.loc, "double"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtDouble; + } + | FLOAT16_T { + parseContext.float16ScalarVectorCheck($1.loc, "float16_t", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + } + | FLOAT32_T { + parseContext.explicitFloat32Check($1.loc, "float32_t", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + } + | FLOAT64_T { + parseContext.explicitFloat64Check($1.loc, "float64_t", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtDouble; + } + | INT8_T { + parseContext.int8ScalarVectorCheck($1.loc, "8-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtInt8; + } + | UINT8_T { + parseContext.int8ScalarVectorCheck($1.loc, "8-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtUint8; + } + | INT16_T { + parseContext.int16ScalarVectorCheck($1.loc, "16-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtInt16; + } + | UINT16_T { + parseContext.int16ScalarVectorCheck($1.loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtUint16; + } + | INT32_T { + parseContext.explicitInt32Check($1.loc, "32-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtInt; + } + | UINT32_T { + parseContext.explicitInt32Check($1.loc, "32-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtUint; + } + | INT64_T { + parseContext.int64Check($1.loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtInt64; + } + | UINT64_T { + parseContext.int64Check($1.loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtUint64; + } + | DVEC2 { + parseContext.doubleCheck($1.loc, "double vector"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtDouble; + $$.setVector(2); + } + | DVEC3 { + parseContext.doubleCheck($1.loc, "double vector"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtDouble; + $$.setVector(3); + } + | DVEC4 { + parseContext.doubleCheck($1.loc, "double vector"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtDouble; + $$.setVector(4); + } + | F16VEC2 { + parseContext.float16ScalarVectorCheck($1.loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setVector(2); + } + | F16VEC3 { + parseContext.float16ScalarVectorCheck($1.loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setVector(3); + } + | F16VEC4 { + parseContext.float16ScalarVectorCheck($1.loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setVector(4); + } + | F32VEC2 { + parseContext.explicitFloat32Check($1.loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setVector(2); + } + | F32VEC3 { + parseContext.explicitFloat32Check($1.loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setVector(3); + } + | F32VEC4 { + parseContext.explicitFloat32Check($1.loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setVector(4); + } + | F64VEC2 { + parseContext.explicitFloat64Check($1.loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtDouble; + $$.setVector(2); + } + | F64VEC3 { + parseContext.explicitFloat64Check($1.loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtDouble; + $$.setVector(3); + } + | F64VEC4 { + parseContext.explicitFloat64Check($1.loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtDouble; + $$.setVector(4); + } + | I8VEC2 { + parseContext.int8ScalarVectorCheck($1.loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtInt8; + $$.setVector(2); + } + | I8VEC3 { + parseContext.int8ScalarVectorCheck($1.loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtInt8; + $$.setVector(3); + } + | I8VEC4 { + parseContext.int8ScalarVectorCheck($1.loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtInt8; + $$.setVector(4); + } + | I16VEC2 { + parseContext.int16ScalarVectorCheck($1.loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtInt16; + $$.setVector(2); + } + | I16VEC3 { + parseContext.int16ScalarVectorCheck($1.loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtInt16; + $$.setVector(3); + } + | I16VEC4 { + parseContext.int16ScalarVectorCheck($1.loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtInt16; + $$.setVector(4); + } + | I32VEC2 { + parseContext.explicitInt32Check($1.loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtInt; + $$.setVector(2); + } + | I32VEC3 { + parseContext.explicitInt32Check($1.loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtInt; + $$.setVector(3); + } + | I32VEC4 { + parseContext.explicitInt32Check($1.loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtInt; + $$.setVector(4); + } + | I64VEC2 { + parseContext.int64Check($1.loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtInt64; + $$.setVector(2); + } + | I64VEC3 { + parseContext.int64Check($1.loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtInt64; + $$.setVector(3); + } + | I64VEC4 { + parseContext.int64Check($1.loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtInt64; + $$.setVector(4); + } + | U8VEC2 { + parseContext.int8ScalarVectorCheck($1.loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtUint8; + $$.setVector(2); + } + | U8VEC3 { + parseContext.int8ScalarVectorCheck($1.loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtUint8; + $$.setVector(3); + } + | U8VEC4 { + parseContext.int8ScalarVectorCheck($1.loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtUint8; + $$.setVector(4); + } + | U16VEC2 { + parseContext.int16ScalarVectorCheck($1.loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtUint16; + $$.setVector(2); + } + | U16VEC3 { + parseContext.int16ScalarVectorCheck($1.loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtUint16; + $$.setVector(3); + } + | U16VEC4 { + parseContext.int16ScalarVectorCheck($1.loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtUint16; + $$.setVector(4); + } + | U32VEC2 { + parseContext.explicitInt32Check($1.loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtUint; + $$.setVector(2); + } + | U32VEC3 { + parseContext.explicitInt32Check($1.loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtUint; + $$.setVector(3); + } + | U32VEC4 { + parseContext.explicitInt32Check($1.loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtUint; + $$.setVector(4); + } + | U64VEC2 { + parseContext.int64Check($1.loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtUint64; + $$.setVector(2); + } + | U64VEC3 { + parseContext.int64Check($1.loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtUint64; + $$.setVector(3); + } + | U64VEC4 { + parseContext.int64Check($1.loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtUint64; + $$.setVector(4); + } + | DMAT2 { + parseContext.doubleCheck($1.loc, "double matrix"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtDouble; + $$.setMatrix(2, 2); + } + | DMAT3 { + parseContext.doubleCheck($1.loc, "double matrix"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtDouble; + $$.setMatrix(3, 3); + } + | DMAT4 { + parseContext.doubleCheck($1.loc, "double matrix"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtDouble; + $$.setMatrix(4, 4); + } + | DMAT2X2 { + parseContext.doubleCheck($1.loc, "double matrix"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtDouble; + $$.setMatrix(2, 2); + } + | DMAT2X3 { + parseContext.doubleCheck($1.loc, "double matrix"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtDouble; + $$.setMatrix(2, 3); + } + | DMAT2X4 { + parseContext.doubleCheck($1.loc, "double matrix"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtDouble; + $$.setMatrix(2, 4); + } + | DMAT3X2 { + parseContext.doubleCheck($1.loc, "double matrix"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtDouble; + $$.setMatrix(3, 2); + } + | DMAT3X3 { + parseContext.doubleCheck($1.loc, "double matrix"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtDouble; + $$.setMatrix(3, 3); + } + | DMAT3X4 { + parseContext.doubleCheck($1.loc, "double matrix"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtDouble; + $$.setMatrix(3, 4); + } + | DMAT4X2 { + parseContext.doubleCheck($1.loc, "double matrix"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtDouble; + $$.setMatrix(4, 2); + } + | DMAT4X3 { + parseContext.doubleCheck($1.loc, "double matrix"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtDouble; + $$.setMatrix(4, 3); + } + | DMAT4X4 { + parseContext.doubleCheck($1.loc, "double matrix"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtDouble; + $$.setMatrix(4, 4); + } + | F16MAT2 { + parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setMatrix(2, 2); + } + | F16MAT3 { + parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setMatrix(3, 3); + } + | F16MAT4 { + parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setMatrix(4, 4); + } + | F16MAT2X2 { + parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setMatrix(2, 2); + } + | F16MAT2X3 { + parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setMatrix(2, 3); + } + | F16MAT2X4 { + parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setMatrix(2, 4); + } + | F16MAT3X2 { + parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setMatrix(3, 2); + } + | F16MAT3X3 { + parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setMatrix(3, 3); + } + | F16MAT3X4 { + parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setMatrix(3, 4); + } + | F16MAT4X2 { + parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setMatrix(4, 2); + } + | F16MAT4X3 { + parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setMatrix(4, 3); + } + | F16MAT4X4 { + parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat16; + $$.setMatrix(4, 4); + } + | F32MAT2 { + parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setMatrix(2, 2); + } + | F32MAT3 { + parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setMatrix(3, 3); + } + | F32MAT4 { + parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setMatrix(4, 4); + } + | F32MAT2X2 { + parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setMatrix(2, 2); + } + | F32MAT2X3 { + parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setMatrix(2, 3); + } + | F32MAT2X4 { + parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setMatrix(2, 4); + } + | F32MAT3X2 { + parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setMatrix(3, 2); + } + | F32MAT3X3 { + parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setMatrix(3, 3); + } + | F32MAT3X4 { + parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setMatrix(3, 4); + } + | F32MAT4X2 { + parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setMatrix(4, 2); + } + | F32MAT4X3 { + parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setMatrix(4, 3); + } + | F32MAT4X4 { + parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.setMatrix(4, 4); + } + | F64MAT2 { + parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtDouble; + $$.setMatrix(2, 2); + } + | F64MAT3 { + parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtDouble; + $$.setMatrix(3, 3); + } + | F64MAT4 { + parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtDouble; + $$.setMatrix(4, 4); + } + | F64MAT2X2 { + parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtDouble; + $$.setMatrix(2, 2); + } + | F64MAT2X3 { + parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtDouble; + $$.setMatrix(2, 3); + } + | F64MAT2X4 { + parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtDouble; + $$.setMatrix(2, 4); + } + | F64MAT3X2 { + parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtDouble; + $$.setMatrix(3, 2); + } + | F64MAT3X3 { + parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtDouble; + $$.setMatrix(3, 3); + } + | F64MAT3X4 { + parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtDouble; + $$.setMatrix(3, 4); + } + | F64MAT4X2 { + parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtDouble; + $$.setMatrix(4, 2); + } + | F64MAT4X3 { + parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtDouble; + $$.setMatrix(4, 3); + } + | F64MAT4X4 { + parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtDouble; + $$.setMatrix(4, 4); + } + | ACCSTRUCTNV { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtAccStructNV; + } + | ATOMIC_UINT { + parseContext.vulkanRemoved($1.loc, "atomic counter types"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtAtomicUint; + } + | SAMPLER1D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat, Esd1D); + } + | SAMPLER2D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; @@ -1430,6 +2365,115 @@ type_specifier_nonarray $$.sampler.set(EbtFloat, Esd2D, true, true); } + | SAMPLER1DSHADOW { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat, Esd1D, false, true); + } + | SAMPLER1DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat, Esd1D, true); + } + | SAMPLER1DARRAYSHADOW { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat, Esd1D, true, true); + } + | SAMPLERCUBEARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat, EsdCube, true); + } + | SAMPLERCUBEARRAYSHADOW { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat, EsdCube, true, true); + } + | F16SAMPLER1D { + parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat16, Esd1D); + } + | F16SAMPLER2D { + parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat16, Esd2D); + } + | F16SAMPLER3D { + parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat16, Esd3D); + } + | F16SAMPLERCUBE { + parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat16, EsdCube); + } + | F16SAMPLER1DSHADOW { + parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat16, Esd1D, false, true); + } + | F16SAMPLER2DSHADOW { + parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat16, Esd2D, false, true); + } + | F16SAMPLERCUBESHADOW { + parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat16, EsdCube, false, true); + } + | F16SAMPLER1DARRAY { + parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat16, Esd1D, true); + } + | F16SAMPLER2DARRAY { + parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat16, Esd2D, true); + } + | F16SAMPLER1DARRAYSHADOW { + parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat16, Esd1D, true, true); + } + | F16SAMPLER2DARRAYSHADOW { + parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat16, Esd2D, true, true); + } + | F16SAMPLERCUBEARRAY { + parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat16, EsdCube, true); + } + | F16SAMPLERCUBEARRAYSHADOW { + parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat16, EsdCube, true, true); + } + | ISAMPLER1D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtInt, Esd1D); + } + | ISAMPLER2D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; @@ -1466,6 +2510,47 @@ type_specifier_nonarray $$.sampler.set(EbtUint, EsdCube); } + | ISAMPLER1DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtInt, Esd1D, true); + } + | ISAMPLERCUBEARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtInt, EsdCube, true); + } + | USAMPLER1D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtUint, Esd1D); + } + | USAMPLER1DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtUint, Esd1D, true); + } + | USAMPLERCUBEARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtUint, EsdCube, true); + } + | TEXTURECUBEARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtFloat, EsdCube, true); + } + | ITEXTURECUBEARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtInt, EsdCube, true); + } + | UTEXTURECUBEARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtUint, EsdCube, true); + } + | USAMPLER2DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; @@ -1542,6 +2627,569 @@ type_specifier_nonarray $$.sampler.setPureSampler(true); } + | SAMPLER2DRECT { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat, EsdRect); + } + | SAMPLER2DRECTSHADOW { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat, EsdRect, false, true); + } + | F16SAMPLER2DRECT { + parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat16, EsdRect); + } + | F16SAMPLER2DRECTSHADOW { + parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat16, EsdRect, false, true); + } + | ISAMPLER2DRECT { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtInt, EsdRect); + } + | USAMPLER2DRECT { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtUint, EsdRect); + } + | SAMPLERBUFFER { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat, EsdBuffer); + } + | F16SAMPLERBUFFER { + parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat16, EsdBuffer); + } + | ISAMPLERBUFFER { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtInt, EsdBuffer); + } + | USAMPLERBUFFER { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtUint, EsdBuffer); + } + | SAMPLER2DMS { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat, Esd2D, false, false, true); + } + | F16SAMPLER2DMS { + parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat16, Esd2D, false, false, true); + } + | ISAMPLER2DMS { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtInt, Esd2D, false, false, true); + } + | USAMPLER2DMS { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtUint, Esd2D, false, false, true); + } + | SAMPLER2DMSARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat, Esd2D, true, false, true); + } + | F16SAMPLER2DMSARRAY { + parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat16, Esd2D, true, false, true); + } + | ISAMPLER2DMSARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtInt, Esd2D, true, false, true); + } + | USAMPLER2DMSARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtUint, Esd2D, true, false, true); + } + | TEXTURE1D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtFloat, Esd1D); + } + | F16TEXTURE1D { + parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtFloat16, Esd1D); + } + | F16TEXTURE2D { + parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtFloat16, Esd2D); + } + | F16TEXTURE3D { + parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtFloat16, Esd3D); + } + | F16TEXTURECUBE { + parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtFloat16, EsdCube); + } + | TEXTURE1DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtFloat, Esd1D, true); + } + | F16TEXTURE1DARRAY { + parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtFloat16, Esd1D, true); + } + | F16TEXTURE2DARRAY { + parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtFloat16, Esd2D, true); + } + | F16TEXTURECUBEARRAY { + parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtFloat16, EsdCube, true); + } + | ITEXTURE1D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtInt, Esd1D); + } + | ITEXTURE1DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtInt, Esd1D, true); + } + | UTEXTURE1D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtUint, Esd1D); + } + | UTEXTURE1DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtUint, Esd1D, true); + } + | TEXTURE2DRECT { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtFloat, EsdRect); + } + | F16TEXTURE2DRECT { + parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtFloat16, EsdRect); + } + | ITEXTURE2DRECT { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtInt, EsdRect); + } + | UTEXTURE2DRECT { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtUint, EsdRect); + } + | TEXTUREBUFFER { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtFloat, EsdBuffer); + } + | F16TEXTUREBUFFER { + parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtFloat16, EsdBuffer); + } + | ITEXTUREBUFFER { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtInt, EsdBuffer); + } + | UTEXTUREBUFFER { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtUint, EsdBuffer); + } + | TEXTURE2DMS { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtFloat, Esd2D, false, false, true); + } + | F16TEXTURE2DMS { + parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtFloat16, Esd2D, false, false, true); + } + | ITEXTURE2DMS { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtInt, Esd2D, false, false, true); + } + | UTEXTURE2DMS { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtUint, Esd2D, false, false, true); + } + | TEXTURE2DMSARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtFloat, Esd2D, true, false, true); + } + | F16TEXTURE2DMSARRAY { + parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtFloat16, Esd2D, true, false, true); + } + | ITEXTURE2DMSARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtInt, Esd2D, true, false, true); + } + | UTEXTURE2DMSARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setTexture(EbtUint, Esd2D, true, false, true); + } + | IMAGE1D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtFloat, Esd1D); + } + | F16IMAGE1D { + parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtFloat16, Esd1D); + } + | IIMAGE1D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt, Esd1D); + } + | UIMAGE1D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint, Esd1D); + } + | IMAGE2D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtFloat, Esd2D); + } + | F16IMAGE2D { + parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtFloat16, Esd2D); + } + | IIMAGE2D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt, Esd2D); + } + | UIMAGE2D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint, Esd2D); + } + | IMAGE3D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtFloat, Esd3D); + } + | F16IMAGE3D { + parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtFloat16, Esd3D); + } + | IIMAGE3D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt, Esd3D); + } + | UIMAGE3D { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint, Esd3D); + } + | IMAGE2DRECT { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtFloat, EsdRect); + } + | F16IMAGE2DRECT { + parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtFloat16, EsdRect); + } + | IIMAGE2DRECT { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt, EsdRect); + } + | UIMAGE2DRECT { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint, EsdRect); + } + | IMAGECUBE { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtFloat, EsdCube); + } + | F16IMAGECUBE { + parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtFloat16, EsdCube); + } + | IIMAGECUBE { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt, EsdCube); + } + | UIMAGECUBE { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint, EsdCube); + } + | IMAGEBUFFER { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtFloat, EsdBuffer); + } + | F16IMAGEBUFFER { + parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtFloat16, EsdBuffer); + } + | IIMAGEBUFFER { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt, EsdBuffer); + } + | UIMAGEBUFFER { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint, EsdBuffer); + } + | IMAGE1DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtFloat, Esd1D, true); + } + | F16IMAGE1DARRAY { + parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtFloat16, Esd1D, true); + } + | IIMAGE1DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt, Esd1D, true); + } + | UIMAGE1DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint, Esd1D, true); + } + | IMAGE2DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtFloat, Esd2D, true); + } + | F16IMAGE2DARRAY { + parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtFloat16, Esd2D, true); + } + | IIMAGE2DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt, Esd2D, true); + } + | UIMAGE2DARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint, Esd2D, true); + } + | IMAGECUBEARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtFloat, EsdCube, true); + } + | F16IMAGECUBEARRAY { + parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtFloat16, EsdCube, true); + } + | IIMAGECUBEARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt, EsdCube, true); + } + | UIMAGECUBEARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint, EsdCube, true); + } + | IMAGE2DMS { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtFloat, Esd2D, false, false, true); + } + | F16IMAGE2DMS { + parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtFloat16, Esd2D, false, false, true); + } + | IIMAGE2DMS { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt, Esd2D, false, false, true); + } + | UIMAGE2DMS { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint, Esd2D, false, false, true); + } + | IMAGE2DMSARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtFloat, Esd2D, true, false, true); + } + | F16IMAGE2DMSARRAY { + parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtFloat16, Esd2D, true, false, true); + } + | IIMAGE2DMSARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtInt, Esd2D, true, false, true); + } + | UIMAGE2DMSARRAY { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setImage(EbtUint, Esd2D, true, false, true); + } + | SAMPLEREXTERNALOES { // GL_OES_EGL_image_external + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat, Esd2D); + $$.sampler.external = true; + } + | SAMPLEREXTERNAL2DY2YEXT { // GL_EXT_YUV_target + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.set(EbtFloat, Esd2D); + $$.sampler.yuv = true; + } + | SUBPASSINPUT { + parseContext.requireStage($1.loc, EShLangFragment, "subpass input"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setSubpass(EbtFloat); + } + | SUBPASSINPUTMS { + parseContext.requireStage($1.loc, EShLangFragment, "subpass input"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setSubpass(EbtFloat, true); + } + | F16SUBPASSINPUT { + parseContext.float16OpaqueCheck($1.loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); + parseContext.requireStage($1.loc, EShLangFragment, "subpass input"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setSubpass(EbtFloat16); + } + | F16SUBPASSINPUTMS { + parseContext.float16OpaqueCheck($1.loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); + parseContext.requireStage($1.loc, EShLangFragment, "subpass input"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setSubpass(EbtFloat16, true); + } + | ISUBPASSINPUT { + parseContext.requireStage($1.loc, EShLangFragment, "subpass input"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setSubpass(EbtInt); + } + | ISUBPASSINPUTMS { + parseContext.requireStage($1.loc, EShLangFragment, "subpass input"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setSubpass(EbtInt, true); + } + | USUBPASSINPUT { + parseContext.requireStage($1.loc, EShLangFragment, "subpass input"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setSubpass(EbtUint); + } + | USUBPASSINPUTMS { + parseContext.requireStage($1.loc, EShLangFragment, "subpass input"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setSubpass(EbtUint, true); + } + | FCOOPMATNV { + parseContext.fcoopmatCheck($1.loc, "fcoopmatNV", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtFloat; + $$.coopmat = true; + } + | ICOOPMATNV { + parseContext.intcoopmatCheck($1.loc, "icoopmatNV", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtInt; + $$.coopmat = true; + } + | UCOOPMATNV { + parseContext.intcoopmatCheck($1.loc, "ucoopmatNV", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtUint; + $$.coopmat = true; + } + | struct_specifier { $$ = $1; $$.qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; @@ -1697,9 +3345,31 @@ initializer $$ = $1; } + | LEFT_BRACE initializer_list RIGHT_BRACE { + const char* initFeature = "{ } style initializers"; + parseContext.requireProfile($1.loc, ~EEsProfile, initFeature); + parseContext.profileRequires($1.loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); + $$ = $2; + } + | LEFT_BRACE initializer_list COMMA RIGHT_BRACE { + const char* initFeature = "{ } style initializers"; + parseContext.requireProfile($1.loc, ~EEsProfile, initFeature); + parseContext.profileRequires($1.loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); + $$ = $2; + } + ; +initializer_list + : initializer { + $$ = parseContext.intermediate.growAggregate(0, $1, $1->getLoc()); + } + | initializer_list COMMA initializer { + $$ = parseContext.intermediate.growAggregate($1, $3); + } + ; + declaration_statement : declaration { $$ = $1; } @@ -1721,9 +3391,19 @@ simple_statement | iteration_statement { $$ = $1; } | jump_statement { $$ = $1; } + | demote_statement { $$ = $1; } + ; +demote_statement + : DEMOTE SEMICOLON { + parseContext.requireStage($1.loc, EShLangFragment, "demote"); + parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_demote_to_helper_invocation, "demote"); + $$ = parseContext.intermediate.addBranch(EOpDemote, $1.loc); + } + ; + compound_statement : LEFT_BRACE RIGHT_BRACE { $$ = 0; } @@ -1808,6 +3488,11 @@ selection_statement $$ = $1; } + | attribute selection_statement_nonattributed { + parseContext.handleSelectionAttributes(*$1, $2); + $$ = $2; + } + selection_statement_nonattributed : IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement { @@ -1850,6 +3535,11 @@ switch_statement $$ = $1; } + | attribute switch_statement_nonattributed { + parseContext.handleSwitchAttributes(*$1, $2); + $$ = $2; + } + switch_statement_nonattributed : SWITCH LEFT_PAREN expression RIGHT_PAREN { @@ -1909,6 +3599,11 @@ iteration_statement $$ = $1; } + | attribute iteration_statement_nonattributed { + parseContext.handleLoopAttributes(*$1, $2); + $$ = $2; + } + iteration_statement_nonattributed : WHILE LEFT_PAREN { @@ -2041,6 +3736,12 @@ external_declaration $$ = $1; } + | SEMICOLON { + parseContext.requireProfile($1.loc, ~EEsProfile, "extraneous semicolon"); + parseContext.profileRequires($1.loc, ~EEsProfile, 460, nullptr, "extraneous semicolon"); + $$ = nullptr; + } + ; function_definition @@ -2066,5 +3767,27 @@ function_definition ; +attribute + : LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET { + $$ = $3; + parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_control_flow_attributes, "attribute"); + } + +attribute_list + : single_attribute { + $$ = $1; + } + | attribute_list COMMA single_attribute { + $$ = parseContext.mergeAttributes($1, $3); + } + +single_attribute + : IDENTIFIER { + $$ = parseContext.makeAttributes(*$1.string); + } + | IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN { + $$ = parseContext.makeAttributes(*$1.string, $3); + } + %% diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp index 6292a4cc..d2967973 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -181,89 +181,356 @@ extern int yydebug; UTEXTURE3D = 313, UTEXTURECUBE = 314, UTEXTURE2DARRAY = 315, - LEFT_OP = 316, - RIGHT_OP = 317, - INC_OP = 318, - DEC_OP = 319, - LE_OP = 320, - GE_OP = 321, - EQ_OP = 322, - NE_OP = 323, - AND_OP = 324, - OR_OP = 325, - XOR_OP = 326, - MUL_ASSIGN = 327, - DIV_ASSIGN = 328, - ADD_ASSIGN = 329, - MOD_ASSIGN = 330, - LEFT_ASSIGN = 331, - RIGHT_ASSIGN = 332, - AND_ASSIGN = 333, - XOR_ASSIGN = 334, - OR_ASSIGN = 335, - SUB_ASSIGN = 336, - LEFT_PAREN = 337, - RIGHT_PAREN = 338, - LEFT_BRACKET = 339, - RIGHT_BRACKET = 340, - LEFT_BRACE = 341, - RIGHT_BRACE = 342, - DOT = 343, - COMMA = 344, - COLON = 345, - EQUAL = 346, - SEMICOLON = 347, - BANG = 348, - DASH = 349, - TILDE = 350, - PLUS = 351, - STAR = 352, - SLASH = 353, - PERCENT = 354, - LEFT_ANGLE = 355, - RIGHT_ANGLE = 356, - VERTICAL_BAR = 357, - CARET = 358, - AMPERSAND = 359, - QUESTION = 360, - INVARIANT = 361, - HIGH_PRECISION = 362, - MEDIUM_PRECISION = 363, - LOW_PRECISION = 364, - PRECISION = 365, - PACKED = 366, - RESOURCE = 367, - SUPERP = 368, - FLOATCONSTANT = 369, - INTCONSTANT = 370, - UINTCONSTANT = 371, - BOOLCONSTANT = 372, - IDENTIFIER = 373, - TYPE_NAME = 374, - CENTROID = 375, - IN = 376, - OUT = 377, - INOUT = 378, - STRUCT = 379, - VOID = 380, - WHILE = 381, - BREAK = 382, - CONTINUE = 383, - DO = 384, - ELSE = 385, - FOR = 386, - IF = 387, - DISCARD = 388, - RETURN = 389, - SWITCH = 390, - CASE = 391, - DEFAULT = 392, - UNIFORM = 393, - SHARED = 394, - BUFFER = 395, - FLAT = 396, - SMOOTH = 397, - LAYOUT = 398 + ATTRIBUTE = 316, + VARYING = 317, + FLOAT16_T = 318, + FLOAT32_T = 319, + DOUBLE = 320, + FLOAT64_T = 321, + INT64_T = 322, + UINT64_T = 323, + INT32_T = 324, + UINT32_T = 325, + INT16_T = 326, + UINT16_T = 327, + INT8_T = 328, + UINT8_T = 329, + I64VEC2 = 330, + I64VEC3 = 331, + I64VEC4 = 332, + U64VEC2 = 333, + U64VEC3 = 334, + U64VEC4 = 335, + I32VEC2 = 336, + I32VEC3 = 337, + I32VEC4 = 338, + U32VEC2 = 339, + U32VEC3 = 340, + U32VEC4 = 341, + I16VEC2 = 342, + I16VEC3 = 343, + I16VEC4 = 344, + U16VEC2 = 345, + U16VEC3 = 346, + U16VEC4 = 347, + I8VEC2 = 348, + I8VEC3 = 349, + I8VEC4 = 350, + U8VEC2 = 351, + U8VEC3 = 352, + U8VEC4 = 353, + DVEC2 = 354, + DVEC3 = 355, + DVEC4 = 356, + DMAT2 = 357, + DMAT3 = 358, + DMAT4 = 359, + F16VEC2 = 360, + F16VEC3 = 361, + F16VEC4 = 362, + F16MAT2 = 363, + F16MAT3 = 364, + F16MAT4 = 365, + F32VEC2 = 366, + F32VEC3 = 367, + F32VEC4 = 368, + F32MAT2 = 369, + F32MAT3 = 370, + F32MAT4 = 371, + F64VEC2 = 372, + F64VEC3 = 373, + F64VEC4 = 374, + F64MAT2 = 375, + F64MAT3 = 376, + F64MAT4 = 377, + DMAT2X2 = 378, + DMAT2X3 = 379, + DMAT2X4 = 380, + DMAT3X2 = 381, + DMAT3X3 = 382, + DMAT3X4 = 383, + DMAT4X2 = 384, + DMAT4X3 = 385, + DMAT4X4 = 386, + F16MAT2X2 = 387, + F16MAT2X3 = 388, + F16MAT2X4 = 389, + F16MAT3X2 = 390, + F16MAT3X3 = 391, + F16MAT3X4 = 392, + F16MAT4X2 = 393, + F16MAT4X3 = 394, + F16MAT4X4 = 395, + F32MAT2X2 = 396, + F32MAT2X3 = 397, + F32MAT2X4 = 398, + F32MAT3X2 = 399, + F32MAT3X3 = 400, + F32MAT3X4 = 401, + F32MAT4X2 = 402, + F32MAT4X3 = 403, + F32MAT4X4 = 404, + F64MAT2X2 = 405, + F64MAT2X3 = 406, + F64MAT2X4 = 407, + F64MAT3X2 = 408, + F64MAT3X3 = 409, + F64MAT3X4 = 410, + F64MAT4X2 = 411, + F64MAT4X3 = 412, + F64MAT4X4 = 413, + ATOMIC_UINT = 414, + ACCSTRUCTNV = 415, + FCOOPMATNV = 416, + ICOOPMATNV = 417, + UCOOPMATNV = 418, + SAMPLERCUBEARRAY = 419, + SAMPLERCUBEARRAYSHADOW = 420, + ISAMPLERCUBEARRAY = 421, + USAMPLERCUBEARRAY = 422, + SAMPLER1D = 423, + SAMPLER1DARRAY = 424, + SAMPLER1DARRAYSHADOW = 425, + ISAMPLER1D = 426, + SAMPLER1DSHADOW = 427, + SAMPLER2DRECT = 428, + SAMPLER2DRECTSHADOW = 429, + ISAMPLER2DRECT = 430, + USAMPLER2DRECT = 431, + SAMPLERBUFFER = 432, + ISAMPLERBUFFER = 433, + USAMPLERBUFFER = 434, + SAMPLER2DMS = 435, + ISAMPLER2DMS = 436, + USAMPLER2DMS = 437, + SAMPLER2DMSARRAY = 438, + ISAMPLER2DMSARRAY = 439, + USAMPLER2DMSARRAY = 440, + SAMPLEREXTERNALOES = 441, + SAMPLEREXTERNAL2DY2YEXT = 442, + ISAMPLER1DARRAY = 443, + USAMPLER1D = 444, + USAMPLER1DARRAY = 445, + F16SAMPLER1D = 446, + F16SAMPLER2D = 447, + F16SAMPLER3D = 448, + F16SAMPLER2DRECT = 449, + F16SAMPLERCUBE = 450, + F16SAMPLER1DARRAY = 451, + F16SAMPLER2DARRAY = 452, + F16SAMPLERCUBEARRAY = 453, + F16SAMPLERBUFFER = 454, + F16SAMPLER2DMS = 455, + F16SAMPLER2DMSARRAY = 456, + F16SAMPLER1DSHADOW = 457, + F16SAMPLER2DSHADOW = 458, + F16SAMPLER1DARRAYSHADOW = 459, + F16SAMPLER2DARRAYSHADOW = 460, + F16SAMPLER2DRECTSHADOW = 461, + F16SAMPLERCUBESHADOW = 462, + F16SAMPLERCUBEARRAYSHADOW = 463, + IMAGE1D = 464, + IIMAGE1D = 465, + UIMAGE1D = 466, + IMAGE2D = 467, + IIMAGE2D = 468, + UIMAGE2D = 469, + IMAGE3D = 470, + IIMAGE3D = 471, + UIMAGE3D = 472, + IMAGE2DRECT = 473, + IIMAGE2DRECT = 474, + UIMAGE2DRECT = 475, + IMAGECUBE = 476, + IIMAGECUBE = 477, + UIMAGECUBE = 478, + IMAGEBUFFER = 479, + IIMAGEBUFFER = 480, + UIMAGEBUFFER = 481, + IMAGE1DARRAY = 482, + IIMAGE1DARRAY = 483, + UIMAGE1DARRAY = 484, + IMAGE2DARRAY = 485, + IIMAGE2DARRAY = 486, + UIMAGE2DARRAY = 487, + IMAGECUBEARRAY = 488, + IIMAGECUBEARRAY = 489, + UIMAGECUBEARRAY = 490, + IMAGE2DMS = 491, + IIMAGE2DMS = 492, + UIMAGE2DMS = 493, + IMAGE2DMSARRAY = 494, + IIMAGE2DMSARRAY = 495, + UIMAGE2DMSARRAY = 496, + F16IMAGE1D = 497, + F16IMAGE2D = 498, + F16IMAGE3D = 499, + F16IMAGE2DRECT = 500, + F16IMAGECUBE = 501, + F16IMAGE1DARRAY = 502, + F16IMAGE2DARRAY = 503, + F16IMAGECUBEARRAY = 504, + F16IMAGEBUFFER = 505, + F16IMAGE2DMS = 506, + F16IMAGE2DMSARRAY = 507, + TEXTURECUBEARRAY = 508, + ITEXTURECUBEARRAY = 509, + UTEXTURECUBEARRAY = 510, + TEXTURE1D = 511, + ITEXTURE1D = 512, + UTEXTURE1D = 513, + TEXTURE1DARRAY = 514, + ITEXTURE1DARRAY = 515, + UTEXTURE1DARRAY = 516, + TEXTURE2DRECT = 517, + ITEXTURE2DRECT = 518, + UTEXTURE2DRECT = 519, + TEXTUREBUFFER = 520, + ITEXTUREBUFFER = 521, + UTEXTUREBUFFER = 522, + TEXTURE2DMS = 523, + ITEXTURE2DMS = 524, + UTEXTURE2DMS = 525, + TEXTURE2DMSARRAY = 526, + ITEXTURE2DMSARRAY = 527, + UTEXTURE2DMSARRAY = 528, + F16TEXTURE1D = 529, + F16TEXTURE2D = 530, + F16TEXTURE3D = 531, + F16TEXTURE2DRECT = 532, + F16TEXTURECUBE = 533, + F16TEXTURE1DARRAY = 534, + F16TEXTURE2DARRAY = 535, + F16TEXTURECUBEARRAY = 536, + F16TEXTUREBUFFER = 537, + F16TEXTURE2DMS = 538, + F16TEXTURE2DMSARRAY = 539, + SUBPASSINPUT = 540, + SUBPASSINPUTMS = 541, + ISUBPASSINPUT = 542, + ISUBPASSINPUTMS = 543, + USUBPASSINPUT = 544, + USUBPASSINPUTMS = 545, + F16SUBPASSINPUT = 546, + F16SUBPASSINPUTMS = 547, + LEFT_OP = 548, + RIGHT_OP = 549, + INC_OP = 550, + DEC_OP = 551, + LE_OP = 552, + GE_OP = 553, + EQ_OP = 554, + NE_OP = 555, + AND_OP = 556, + OR_OP = 557, + XOR_OP = 558, + MUL_ASSIGN = 559, + DIV_ASSIGN = 560, + ADD_ASSIGN = 561, + MOD_ASSIGN = 562, + LEFT_ASSIGN = 563, + RIGHT_ASSIGN = 564, + AND_ASSIGN = 565, + XOR_ASSIGN = 566, + OR_ASSIGN = 567, + SUB_ASSIGN = 568, + LEFT_PAREN = 569, + RIGHT_PAREN = 570, + LEFT_BRACKET = 571, + RIGHT_BRACKET = 572, + LEFT_BRACE = 573, + RIGHT_BRACE = 574, + DOT = 575, + COMMA = 576, + COLON = 577, + EQUAL = 578, + SEMICOLON = 579, + BANG = 580, + DASH = 581, + TILDE = 582, + PLUS = 583, + STAR = 584, + SLASH = 585, + PERCENT = 586, + LEFT_ANGLE = 587, + RIGHT_ANGLE = 588, + VERTICAL_BAR = 589, + CARET = 590, + AMPERSAND = 591, + QUESTION = 592, + INVARIANT = 593, + HIGH_PRECISION = 594, + MEDIUM_PRECISION = 595, + LOW_PRECISION = 596, + PRECISION = 597, + PACKED = 598, + RESOURCE = 599, + SUPERP = 600, + FLOATCONSTANT = 601, + INTCONSTANT = 602, + UINTCONSTANT = 603, + BOOLCONSTANT = 604, + IDENTIFIER = 605, + TYPE_NAME = 606, + CENTROID = 607, + IN = 608, + OUT = 609, + INOUT = 610, + STRUCT = 611, + VOID = 612, + WHILE = 613, + BREAK = 614, + CONTINUE = 615, + DO = 616, + ELSE = 617, + FOR = 618, + IF = 619, + DISCARD = 620, + RETURN = 621, + SWITCH = 622, + CASE = 623, + DEFAULT = 624, + UNIFORM = 625, + SHARED = 626, + BUFFER = 627, + FLAT = 628, + SMOOTH = 629, + LAYOUT = 630, + DOUBLECONSTANT = 631, + INT16CONSTANT = 632, + UINT16CONSTANT = 633, + FLOAT16CONSTANT = 634, + INT32CONSTANT = 635, + UINT32CONSTANT = 636, + INT64CONSTANT = 637, + UINT64CONSTANT = 638, + SUBROUTINE = 639, + DEMOTE = 640, + PAYLOADNV = 641, + PAYLOADINNV = 642, + HITATTRNV = 643, + CALLDATANV = 644, + CALLDATAINNV = 645, + PATCH = 646, + SAMPLE = 647, + NONUNIFORM = 648, + COHERENT = 649, + VOLATILE = 650, + RESTRICT = 651, + READONLY = 652, + WRITEONLY = 653, + DEVICECOHERENT = 654, + QUEUEFAMILYCOHERENT = 655, + WORKGROUPCOHERENT = 656, + SUBGROUPCOHERENT = 657, + NONPRIVATE = 658, + NOPERSPECTIVE = 659, + EXPLICITINTERPAMD = 660, + PERVERTEXNV = 661, + PERPRIMITIVENV = 662, + PERVIEWNV = 663, + PERTASKNV = 664, + PRECISE = 665 }; #endif @@ -308,7 +575,7 @@ union YYSTYPE glslang::TArraySizes* typeParameters; } interm; -#line 312 "MachineIndependent/glslang_tab.cpp" /* yacc.c:355 */ +#line 579 "MachineIndependent/glslang_tab.cpp" /* yacc.c:355 */ }; typedef union YYSTYPE YYSTYPE; @@ -339,7 +606,7 @@ int yyparse (glslang::TParseContext* pParseContext); extern int yylex(YYSTYPE*, TParseContext&); -#line 343 "MachineIndependent/glslang_tab.cpp" /* yacc.c:358 */ +#line 610 "MachineIndependent/glslang_tab.cpp" /* yacc.c:358 */ #ifdef short # undef short @@ -579,30 +846,30 @@ union yyalloc #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 124 +#define YYFINAL 386 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 3126 +#define YYLAST 9369 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 144 +#define YYNTOKENS 411 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 103 +#define YYNNTS 111 /* YYNRULES -- Number of rules. */ -#define YYNRULES 295 +#define YYNRULES 582 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 424 +#define YYNSTATES 727 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 398 +#define YYMAXUTOK 665 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM as returned by yylex, without out-of-bounds checking. */ -static const yytype_uint8 yytranslate[] = +static const yytype_uint16 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -643,43 +910,99 @@ static const yytype_uint8 yytranslate[] = 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143 + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 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, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 253, 253, 259, 262, 267, 270, 273, 277, 284, - 287, 290, 293, 296, 301, 309, 316, 323, 329, 333, - 340, 343, 349, 356, 366, 374, 379, 410, 416, 420, - 424, 444, 445, 446, 447, 453, 454, 459, 464, 473, - 474, 479, 487, 488, 494, 503, 504, 509, 514, 519, - 527, 528, 537, 549, 550, 559, 560, 569, 570, 579, - 580, 588, 589, 597, 598, 606, 607, 607, 625, 626, - 642, 646, 650, 654, 659, 663, 667, 671, 675, 679, - 683, 690, 693, 704, 711, 716, 721, 728, 732, 736, - 740, 745, 750, 759, 759, 770, 774, 781, 788, 791, - 798, 806, 826, 849, 864, 889, 900, 910, 920, 930, - 939, 942, 946, 950, 955, 963, 968, 973, 978, 983, - 992, 1002, 1029, 1038, 1045, 1056, 1062, 1065, 1072, 1076, - 1080, 1090, 1093, 1104, 1107, 1110, 1114, 1118, 1126, 1130, - 1135, 1141, 1147, 1154, 1159, 1167, 1178, 1183, 1193, 1198, - 1206, 1210, 1220, 1223, 1229, 1235, 1242, 1252, 1256, 1260, - 1264, 1269, 1273, 1278, 1283, 1288, 1293, 1298, 1303, 1308, - 1313, 1318, 1324, 1330, 1336, 1341, 1346, 1351, 1356, 1361, - 1366, 1371, 1376, 1381, 1386, 1391, 1397, 1402, 1407, 1412, - 1417, 1422, 1427, 1433, 1438, 1443, 1448, 1453, 1458, 1463, - 1469, 1474, 1479, 1484, 1489, 1494, 1499, 1504, 1509, 1514, - 1519, 1524, 1529, 1534, 1539, 1545, 1550, 1566, 1571, 1576, - 1584, 1584, 1595, 1595, 1605, 1608, 1621, 1643, 1670, 1674, - 1680, 1685, 1696, 1705, 1709, 1710, 1716, 1717, 1718, 1719, - 1720, 1721, 1722, 1729, 1730, 1734, 1730, 1746, 1747, 1751, - 1751, 1758, 1758, 1772, 1775, 1783, 1791, 1802, 1803, 1807, - 1813, 1820, 1824, 1832, 1836, 1849, 1855, 1855, 1875, 1878, - 1884, 1896, 1908, 1914, 1914, 1929, 1929, 1945, 1945, 1966, - 1969, 1975, 1978, 1984, 1988, 1995, 2000, 2005, 2012, 2015, - 2024, 2028, 2037, 2040, 2047, 2047 + 0, 352, 352, 358, 361, 366, 369, 372, 376, 380, + 384, 388, 392, 396, 400, 404, 408, 416, 419, 422, + 425, 428, 433, 441, 448, 455, 461, 465, 472, 475, + 481, 488, 498, 506, 511, 539, 548, 554, 558, 562, + 582, 583, 584, 585, 591, 592, 597, 602, 611, 612, + 617, 625, 626, 632, 641, 642, 647, 652, 657, 665, + 666, 675, 687, 688, 697, 698, 707, 708, 717, 718, + 726, 727, 735, 736, 744, 745, 745, 763, 764, 780, + 784, 788, 792, 797, 801, 805, 809, 813, 817, 821, + 828, 831, 842, 849, 854, 859, 866, 870, 874, 878, + 883, 888, 897, 897, 908, 912, 919, 926, 929, 936, + 944, 964, 987, 1002, 1027, 1038, 1048, 1058, 1068, 1077, + 1080, 1084, 1088, 1093, 1101, 1108, 1113, 1118, 1123, 1132, + 1142, 1169, 1178, 1185, 1193, 1200, 1207, 1215, 1225, 1232, + 1243, 1249, 1252, 1259, 1263, 1267, 1276, 1286, 1289, 1300, + 1303, 1306, 1310, 1314, 1319, 1323, 1330, 1334, 1339, 1345, + 1351, 1358, 1363, 1371, 1377, 1389, 1403, 1409, 1414, 1422, + 1430, 1438, 1446, 1453, 1457, 1462, 1467, 1472, 1477, 1482, + 1486, 1490, 1494, 1498, 1504, 1515, 1522, 1525, 1534, 1539, + 1549, 1554, 1562, 1566, 1576, 1579, 1585, 1591, 1598, 1608, + 1612, 1616, 1620, 1625, 1629, 1634, 1639, 1644, 1649, 1654, + 1659, 1664, 1669, 1674, 1680, 1686, 1692, 1697, 1702, 1707, + 1712, 1717, 1722, 1727, 1732, 1737, 1742, 1747, 1753, 1758, + 1763, 1768, 1773, 1778, 1783, 1788, 1793, 1798, 1803, 1808, + 1813, 1819, 1825, 1831, 1837, 1843, 1849, 1855, 1861, 1867, + 1873, 1879, 1885, 1891, 1897, 1903, 1909, 1915, 1921, 1927, + 1933, 1939, 1945, 1951, 1957, 1963, 1969, 1975, 1981, 1987, + 1993, 1999, 2005, 2011, 2017, 2023, 2029, 2035, 2041, 2047, + 2053, 2059, 2065, 2071, 2077, 2083, 2089, 2095, 2101, 2107, + 2113, 2119, 2125, 2131, 2137, 2143, 2149, 2155, 2161, 2167, + 2173, 2179, 2185, 2191, 2197, 2203, 2209, 2215, 2221, 2227, + 2233, 2239, 2245, 2251, 2257, 2263, 2269, 2275, 2281, 2287, + 2293, 2299, 2305, 2311, 2317, 2321, 2326, 2332, 2337, 2342, + 2347, 2352, 2357, 2362, 2368, 2373, 2378, 2383, 2388, 2393, + 2399, 2405, 2411, 2417, 2423, 2429, 2435, 2441, 2447, 2453, + 2459, 2465, 2471, 2477, 2482, 2487, 2492, 2497, 2502, 2507, + 2513, 2518, 2523, 2528, 2533, 2538, 2543, 2548, 2554, 2559, + 2564, 2569, 2574, 2579, 2584, 2589, 2594, 2599, 2604, 2609, + 2614, 2619, 2624, 2630, 2635, 2640, 2646, 2652, 2657, 2662, + 2667, 2673, 2678, 2683, 2688, 2694, 2699, 2704, 2709, 2715, + 2720, 2725, 2730, 2736, 2742, 2748, 2754, 2759, 2765, 2771, + 2777, 2782, 2787, 2792, 2797, 2802, 2808, 2813, 2818, 2823, + 2829, 2834, 2839, 2844, 2850, 2855, 2860, 2865, 2871, 2876, + 2881, 2886, 2892, 2897, 2902, 2907, 2913, 2918, 2923, 2928, + 2934, 2939, 2944, 2949, 2955, 2960, 2965, 2970, 2976, 2981, + 2986, 2991, 2997, 3002, 3007, 3012, 3018, 3023, 3028, 3033, + 3039, 3044, 3049, 3054, 3060, 3065, 3070, 3075, 3081, 3086, + 3091, 3096, 3102, 3107, 3112, 3118, 3124, 3130, 3136, 3143, + 3150, 3156, 3162, 3168, 3174, 3180, 3186, 3193, 3198, 3214, + 3219, 3224, 3232, 3232, 3243, 3243, 3253, 3256, 3269, 3291, + 3318, 3322, 3328, 3333, 3344, 3348, 3354, 3365, 3368, 3375, + 3379, 3380, 3386, 3387, 3388, 3389, 3390, 3391, 3392, 3394, + 3400, 3409, 3410, 3414, 3410, 3426, 3427, 3431, 3431, 3438, + 3438, 3452, 3455, 3463, 3471, 3482, 3483, 3487, 3491, 3498, + 3505, 3509, 3517, 3521, 3534, 3538, 3545, 3545, 3565, 3568, + 3574, 3586, 3598, 3602, 3609, 3609, 3624, 3624, 3640, 3640, + 3661, 3664, 3670, 3673, 3679, 3683, 3690, 3695, 3700, 3707, + 3710, 3719, 3723, 3732, 3735, 3739, 3748, 3748, 3771, 3777, + 3780, 3785, 3788 }; #endif @@ -699,7 +1022,60 @@ static const char *const yytname[] = "SAMPLERSHADOW", "TEXTURE2D", "TEXTURE3D", "TEXTURECUBE", "TEXTURE2DARRAY", "ITEXTURE2D", "ITEXTURE3D", "ITEXTURECUBE", "ITEXTURE2DARRAY", "UTEXTURE2D", "UTEXTURE3D", "UTEXTURECUBE", - "UTEXTURE2DARRAY", "LEFT_OP", "RIGHT_OP", "INC_OP", "DEC_OP", "LE_OP", + "UTEXTURE2DARRAY", "ATTRIBUTE", "VARYING", "FLOAT16_T", "FLOAT32_T", + "DOUBLE", "FLOAT64_T", "INT64_T", "UINT64_T", "INT32_T", "UINT32_T", + "INT16_T", "UINT16_T", "INT8_T", "UINT8_T", "I64VEC2", "I64VEC3", + "I64VEC4", "U64VEC2", "U64VEC3", "U64VEC4", "I32VEC2", "I32VEC3", + "I32VEC4", "U32VEC2", "U32VEC3", "U32VEC4", "I16VEC2", "I16VEC3", + "I16VEC4", "U16VEC2", "U16VEC3", "U16VEC4", "I8VEC2", "I8VEC3", "I8VEC4", + "U8VEC2", "U8VEC3", "U8VEC4", "DVEC2", "DVEC3", "DVEC4", "DMAT2", + "DMAT3", "DMAT4", "F16VEC2", "F16VEC3", "F16VEC4", "F16MAT2", "F16MAT3", + "F16MAT4", "F32VEC2", "F32VEC3", "F32VEC4", "F32MAT2", "F32MAT3", + "F32MAT4", "F64VEC2", "F64VEC3", "F64VEC4", "F64MAT2", "F64MAT3", + "F64MAT4", "DMAT2X2", "DMAT2X3", "DMAT2X4", "DMAT3X2", "DMAT3X3", + "DMAT3X4", "DMAT4X2", "DMAT4X3", "DMAT4X4", "F16MAT2X2", "F16MAT2X3", + "F16MAT2X4", "F16MAT3X2", "F16MAT3X3", "F16MAT3X4", "F16MAT4X2", + "F16MAT4X3", "F16MAT4X4", "F32MAT2X2", "F32MAT2X3", "F32MAT2X4", + "F32MAT3X2", "F32MAT3X3", "F32MAT3X4", "F32MAT4X2", "F32MAT4X3", + "F32MAT4X4", "F64MAT2X2", "F64MAT2X3", "F64MAT2X4", "F64MAT3X2", + "F64MAT3X3", "F64MAT3X4", "F64MAT4X2", "F64MAT4X3", "F64MAT4X4", + "ATOMIC_UINT", "ACCSTRUCTNV", "FCOOPMATNV", "ICOOPMATNV", "UCOOPMATNV", + "SAMPLERCUBEARRAY", "SAMPLERCUBEARRAYSHADOW", "ISAMPLERCUBEARRAY", + "USAMPLERCUBEARRAY", "SAMPLER1D", "SAMPLER1DARRAY", + "SAMPLER1DARRAYSHADOW", "ISAMPLER1D", "SAMPLER1DSHADOW", "SAMPLER2DRECT", + "SAMPLER2DRECTSHADOW", "ISAMPLER2DRECT", "USAMPLER2DRECT", + "SAMPLERBUFFER", "ISAMPLERBUFFER", "USAMPLERBUFFER", "SAMPLER2DMS", + "ISAMPLER2DMS", "USAMPLER2DMS", "SAMPLER2DMSARRAY", "ISAMPLER2DMSARRAY", + "USAMPLER2DMSARRAY", "SAMPLEREXTERNALOES", "SAMPLEREXTERNAL2DY2YEXT", + "ISAMPLER1DARRAY", "USAMPLER1D", "USAMPLER1DARRAY", "F16SAMPLER1D", + "F16SAMPLER2D", "F16SAMPLER3D", "F16SAMPLER2DRECT", "F16SAMPLERCUBE", + "F16SAMPLER1DARRAY", "F16SAMPLER2DARRAY", "F16SAMPLERCUBEARRAY", + "F16SAMPLERBUFFER", "F16SAMPLER2DMS", "F16SAMPLER2DMSARRAY", + "F16SAMPLER1DSHADOW", "F16SAMPLER2DSHADOW", "F16SAMPLER1DARRAYSHADOW", + "F16SAMPLER2DARRAYSHADOW", "F16SAMPLER2DRECTSHADOW", + "F16SAMPLERCUBESHADOW", "F16SAMPLERCUBEARRAYSHADOW", "IMAGE1D", + "IIMAGE1D", "UIMAGE1D", "IMAGE2D", "IIMAGE2D", "UIMAGE2D", "IMAGE3D", + "IIMAGE3D", "UIMAGE3D", "IMAGE2DRECT", "IIMAGE2DRECT", "UIMAGE2DRECT", + "IMAGECUBE", "IIMAGECUBE", "UIMAGECUBE", "IMAGEBUFFER", "IIMAGEBUFFER", + "UIMAGEBUFFER", "IMAGE1DARRAY", "IIMAGE1DARRAY", "UIMAGE1DARRAY", + "IMAGE2DARRAY", "IIMAGE2DARRAY", "UIMAGE2DARRAY", "IMAGECUBEARRAY", + "IIMAGECUBEARRAY", "UIMAGECUBEARRAY", "IMAGE2DMS", "IIMAGE2DMS", + "UIMAGE2DMS", "IMAGE2DMSARRAY", "IIMAGE2DMSARRAY", "UIMAGE2DMSARRAY", + "F16IMAGE1D", "F16IMAGE2D", "F16IMAGE3D", "F16IMAGE2DRECT", + "F16IMAGECUBE", "F16IMAGE1DARRAY", "F16IMAGE2DARRAY", + "F16IMAGECUBEARRAY", "F16IMAGEBUFFER", "F16IMAGE2DMS", + "F16IMAGE2DMSARRAY", "TEXTURECUBEARRAY", "ITEXTURECUBEARRAY", + "UTEXTURECUBEARRAY", "TEXTURE1D", "ITEXTURE1D", "UTEXTURE1D", + "TEXTURE1DARRAY", "ITEXTURE1DARRAY", "UTEXTURE1DARRAY", "TEXTURE2DRECT", + "ITEXTURE2DRECT", "UTEXTURE2DRECT", "TEXTUREBUFFER", "ITEXTUREBUFFER", + "UTEXTUREBUFFER", "TEXTURE2DMS", "ITEXTURE2DMS", "UTEXTURE2DMS", + "TEXTURE2DMSARRAY", "ITEXTURE2DMSARRAY", "UTEXTURE2DMSARRAY", + "F16TEXTURE1D", "F16TEXTURE2D", "F16TEXTURE3D", "F16TEXTURE2DRECT", + "F16TEXTURECUBE", "F16TEXTURE1DARRAY", "F16TEXTURE2DARRAY", + "F16TEXTURECUBEARRAY", "F16TEXTUREBUFFER", "F16TEXTURE2DMS", + "F16TEXTURE2DMSARRAY", "SUBPASSINPUT", "SUBPASSINPUTMS", "ISUBPASSINPUT", + "ISUBPASSINPUTMS", "USUBPASSINPUT", "USUBPASSINPUTMS", "F16SUBPASSINPUT", + "F16SUBPASSINPUTMS", "LEFT_OP", "RIGHT_OP", "INC_OP", "DEC_OP", "LE_OP", "GE_OP", "EQ_OP", "NE_OP", "AND_OP", "OR_OP", "XOR_OP", "MUL_ASSIGN", "DIV_ASSIGN", "ADD_ASSIGN", "MOD_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN", "OR_ASSIGN", "SUB_ASSIGN", "LEFT_PAREN", @@ -713,9 +1089,17 @@ static const char *const yytname[] = "CENTROID", "IN", "OUT", "INOUT", "STRUCT", "VOID", "WHILE", "BREAK", "CONTINUE", "DO", "ELSE", "FOR", "IF", "DISCARD", "RETURN", "SWITCH", "CASE", "DEFAULT", "UNIFORM", "SHARED", "BUFFER", "FLAT", "SMOOTH", - "LAYOUT", "$accept", "variable_identifier", "primary_expression", - "postfix_expression", "integer_expression", "function_call", - "function_call_or_method", "function_call_generic", + "LAYOUT", "DOUBLECONSTANT", "INT16CONSTANT", "UINT16CONSTANT", + "FLOAT16CONSTANT", "INT32CONSTANT", "UINT32CONSTANT", "INT64CONSTANT", + "UINT64CONSTANT", "SUBROUTINE", "DEMOTE", "PAYLOADNV", "PAYLOADINNV", + "HITATTRNV", "CALLDATANV", "CALLDATAINNV", "PATCH", "SAMPLE", + "NONUNIFORM", "COHERENT", "VOLATILE", "RESTRICT", "READONLY", + "WRITEONLY", "DEVICECOHERENT", "QUEUEFAMILYCOHERENT", + "WORKGROUPCOHERENT", "SUBGROUPCOHERENT", "NONPRIVATE", "NOPERSPECTIVE", + "EXPLICITINTERPAMD", "PERVERTEXNV", "PERPRIMITIVENV", "PERVIEWNV", + "PERTASKNV", "PRECISE", "$accept", "variable_identifier", + "primary_expression", "postfix_expression", "integer_expression", + "function_call", "function_call_or_method", "function_call_generic", "function_call_header_no_parameters", "function_call_header_with_parameters", "function_call_header", "function_identifier", "unary_expression", "unary_operator", @@ -732,23 +1116,26 @@ static const char *const yytname[] = "parameter_type_specifier", "init_declarator_list", "single_declaration", "fully_specified_type", "invariant_qualifier", "interpolation_qualifier", "layout_qualifier", "layout_qualifier_id_list", "layout_qualifier_id", - "type_qualifier", "single_type_qualifier", "storage_qualifier", + "precise_qualifier", "type_qualifier", "single_type_qualifier", + "storage_qualifier", "non_uniform_qualifier", "type_name_list", "type_specifier", "array_specifier", "type_parameter_specifier_opt", "type_parameter_specifier", "type_parameter_specifier_list", "type_specifier_nonarray", "precision_qualifier", "struct_specifier", "$@3", "$@4", "struct_declaration_list", "struct_declaration", "struct_declarator_list", "struct_declarator", "initializer", - "declaration_statement", "statement", "simple_statement", - "compound_statement", "$@5", "$@6", "statement_no_new_scope", - "statement_scoped", "$@7", "$@8", "compound_statement_no_new_scope", - "statement_list", "expression_statement", "selection_statement", + "initializer_list", "declaration_statement", "statement", + "simple_statement", "demote_statement", "compound_statement", "$@5", + "$@6", "statement_no_new_scope", "statement_scoped", "$@7", "$@8", + "compound_statement_no_new_scope", "statement_list", + "expression_statement", "selection_statement", "selection_statement_nonattributed", "selection_rest_statement", "condition", "switch_statement", "switch_statement_nonattributed", "$@9", "switch_statement_list", "case_label", "iteration_statement", "iteration_statement_nonattributed", "$@10", "$@11", "$@12", "for_init_statement", "conditionopt", "for_rest_statement", "jump_statement", "translation_unit", "external_declaration", - "function_definition", "$@13", YY_NULLPTR + "function_definition", "$@13", "attribute", "attribute_list", + "single_attribute", YY_NULLPTR }; #endif @@ -771,16 +1158,43 @@ static const yytype_uint16 yytoknum[] = 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 398 + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, + 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, + 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, + 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, + 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, + 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, + 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, + 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, + 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, + 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, + 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, + 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, + 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, + 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, + 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, + 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, + 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, + 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, + 665 }; # endif -#define YYPACT_NINF -362 +#define YYPACT_NINF -453 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-362))) + (!!((Yystate) == (-453))) -#define YYTABLE_NINF -250 +#define YYTABLE_NINF -528 #define yytable_value_is_error(Yytable_value) \ 0 @@ -789,49 +1203,79 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - 1687, -362, -362, -362, -362, -362, -362, -362, -362, -362, - -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, - -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, - -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, - -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, - -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, - -362, -362, -362, 22, -362, -362, -362, -362, -362, -66, - -362, -362, -362, -362, -362, -362, -10, -362, -73, -8, - 5, 4, 2251, -58, -362, -21, -362, -362, -362, 1546, - -362, -362, -362, 7, -362, -362, 418, -362, -362, 3001, - -362, 25, -95, -362, -57, -362, 36, -362, 2251, -362, - -362, -362, 2251, 6, 17, -362, -27, -362, -18, -362, - -362, 2757, 44, -362, -362, -362, 47, 2251, -362, 77, - -362, -6, -362, 2391, -362, -26, 559, -362, -362, -362, - -362, 44, -30, -362, 2757, -24, -362, 51, -362, -33, - 2757, 2757, 2757, -362, -362, -362, -362, -362, -362, -362, - -362, -362, -362, -362, -42, -362, -362, -362, 87, -3, - 2879, 71, -362, 2757, -362, -63, 88, -362, 2251, 55, - 1828, -362, 2251, 2757, -362, -95, -362, -362, 35, -53, - -32, -50, 70, 72, 74, 73, 105, 110, -52, 98, - 2513, -362, 99, -362, -362, 106, 95, 100, -362, 111, - 112, 103, 2635, 114, 2757, 108, 69, -362, -362, -19, - -362, -8, 117, -362, -362, -362, -362, 700, -362, -362, - -362, -362, -362, -362, -362, -362, -362, 88, 2757, -15, - -362, -362, 2757, 2251, -362, 82, -362, -362, -362, -2, - -362, -362, 2757, 83, -362, -362, 2757, 119, -362, -362, - -362, 2757, -362, 55, 44, 28, -362, -362, -362, 1969, - -362, -362, -362, 2757, 2757, 2757, 2757, 2757, 2757, 2757, - 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, 2757, - 2757, 2757, -362, -362, -362, 118, -362, 841, -362, -362, - -362, 841, -362, 2757, -362, -362, 29, 2757, 62, -362, - -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, - -362, 2757, 2757, -362, -362, -362, -362, 2757, -362, 2110, - -362, -362, 120, 115, -362, -362, -362, 34, 88, 55, - -362, -362, -362, -362, -362, 35, 35, -53, -53, -32, - -32, -32, -32, -50, -50, 70, 72, 74, 73, 105, - 110, 2757, -362, 841, 1405, 80, 1264, 2, -362, 9, - -362, -362, -362, -362, -362, -362, -362, -362, 67, 123, - 115, 89, 2251, 128, 131, -362, -362, 1405, 130, -362, - 2757, -362, 126, 982, 2757, -362, 122, 135, 90, 133, - 1123, -362, 136, -362, 2757, -362, -362, -362, 21, 2757, - 982, 130, -362, -362, 841, -362, 129, 115, -362, -362, - 841, 137, -362, -362 + 3994, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, 97, -453, -453, -453, + -453, -453, 6, -453, -453, -453, -453, -453, -453, -307, + -241, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -3, 95, 36, + 125, 6034, 82, -453, -22, -453, -453, -453, -453, 4402, + -453, -453, -453, -453, 131, -453, -453, 730, -453, -453, + 11, -453, 153, -28, 127, -453, 7, -453, 157, -453, + 6034, -453, -453, -453, 6034, 129, 134, -453, 13, -453, + 73, -453, -453, 8391, 162, -453, -453, -453, 161, 6034, + -453, 163, -453, -309, -453, -453, 27, 6831, -453, 16, + 1138, -453, -453, -453, -453, 162, 23, -453, 7221, 49, + -453, 138, -453, 87, 8391, 8391, 8391, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, -453, 68, -453, -453, -453, + 174, 60, 8781, 176, -453, 8391, -453, -453, -320, 175, + -453, 6034, 142, 4810, -453, 6034, 8391, -453, -28, -453, + 143, -453, -453, 119, 128, 32, 21, 38, 158, 160, + 165, 195, 194, 18, 183, 7611, -453, 185, 184, -453, + -453, 188, 180, 181, -453, 196, 197, 190, 8001, 198, + 8391, 187, 193, 122, -453, -453, 91, -453, 95, 204, + 205, -453, -453, -453, -453, -453, 1546, -453, -453, -453, + -453, -453, -453, -453, -453, -453, -353, 175, 7221, 69, + 7221, -453, -453, 7221, 6034, -453, 170, -453, -453, -453, + 78, -453, -453, 8391, 171, -453, -453, 8391, 207, -453, + -453, -453, 8391, -453, 142, 162, 93, -453, -453, -453, + 5218, -453, -453, -453, -453, 8391, 8391, 8391, 8391, 8391, + 8391, 8391, 8391, 8391, 8391, 8391, 8391, 8391, 8391, 8391, + 8391, 8391, 8391, 8391, -453, -453, -453, 206, 177, -453, + 1954, -453, -453, -453, 1954, -453, 8391, -453, -453, 100, + 8391, 144, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, -453, -453, -453, 8391, 8391, -453, -453, -453, + -453, -453, -453, -453, 7221, -453, 140, -453, 5626, -453, + -453, 209, 208, -453, -453, -453, 123, 175, 142, -453, + -453, -453, -453, -453, 119, 119, 128, 128, 32, 32, + 32, 32, 21, 21, 38, 158, 160, 165, 195, 194, + 8391, -453, 214, 56, -453, 1954, 3586, 172, 3178, 80, + -453, 81, -453, -453, -453, -453, -453, 6441, -453, -453, + -453, -453, 146, 8391, 215, 177, 212, 208, 186, 6034, + 219, 221, -453, -453, 3586, 220, -453, -453, -453, 8391, + 222, -453, -453, -453, 216, 2362, 8391, -453, 217, 227, + 182, 225, 2770, -453, 229, -453, -453, 7221, -453, -453, + -453, 89, 8391, 2362, 220, -453, -453, 1954, -453, 224, + 208, -453, -453, 1954, 226, -453, -453 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -839,81 +1283,113 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 0, 138, 161, 159, 160, 158, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 162, 163, 164, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 213, 214, 201, 202, 204, - 203, 205, 206, 207, 208, 209, 210, 211, 212, 122, - 217, 218, 219, 0, 216, 142, 140, 141, 139, 0, - 157, 143, 144, 145, 124, 123, 0, 293, 0, 294, - 0, 99, 98, 0, 110, 115, 137, 136, 134, 0, - 131, 133, 120, 153, 135, 215, 0, 290, 292, 0, - 222, 0, 0, 87, 0, 84, 0, 97, 0, 106, - 100, 108, 0, 109, 0, 85, 116, 90, 0, 132, - 121, 0, 146, 152, 1, 291, 0, 0, 220, 128, - 130, 0, 126, 0, 88, 0, 0, 295, 101, 105, - 107, 103, 111, 102, 0, 117, 93, 0, 91, 0, - 0, 0, 0, 33, 32, 34, 31, 5, 6, 7, - 8, 2, 3, 9, 27, 11, 16, 17, 0, 0, - 21, 0, 155, 0, 25, 0, 147, 86, 0, 0, - 0, 224, 0, 0, 125, 0, 148, 35, 39, 42, - 45, 50, 53, 55, 57, 59, 61, 63, 65, 0, - 0, 89, 244, 253, 257, 0, 0, 0, 275, 0, - 0, 0, 0, 0, 0, 0, 35, 68, 81, 0, - 233, 0, 120, 236, 255, 235, 234, 0, 237, 238, - 259, 239, 265, 240, 241, 272, 242, 104, 0, 112, - 232, 119, 0, 0, 95, 0, 92, 28, 29, 0, - 13, 14, 0, 0, 19, 18, 0, 157, 22, 24, - 30, 0, 154, 0, 230, 0, 228, 223, 225, 0, - 83, 129, 127, 0, 0, 0, 0, 0, 0, 0, + 0, 156, 203, 201, 202, 200, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 204, 205, 206, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 327, 328, 329, 330, 331, 332, 333, 353, 354, 355, + 356, 357, 358, 359, 368, 381, 382, 369, 370, 372, + 371, 373, 374, 375, 376, 377, 378, 379, 380, 164, + 165, 229, 230, 228, 231, 238, 239, 236, 237, 234, + 235, 232, 233, 261, 262, 263, 273, 274, 275, 258, + 259, 260, 270, 271, 272, 255, 256, 257, 267, 268, + 269, 252, 253, 254, 264, 265, 266, 240, 241, 242, + 276, 277, 278, 243, 244, 245, 288, 289, 290, 246, + 247, 248, 300, 301, 302, 249, 250, 251, 312, 313, + 314, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 325, 324, 484, + 485, 486, 337, 338, 361, 364, 326, 335, 336, 352, + 334, 383, 384, 387, 388, 389, 391, 392, 393, 395, + 396, 397, 399, 400, 474, 475, 360, 362, 363, 339, + 340, 341, 385, 342, 346, 347, 350, 390, 394, 398, + 343, 344, 348, 349, 386, 345, 351, 430, 432, 433, + 434, 436, 437, 438, 440, 441, 442, 444, 445, 446, + 448, 449, 450, 452, 453, 454, 456, 457, 458, 460, + 461, 462, 464, 465, 466, 468, 469, 470, 472, 473, + 431, 435, 439, 443, 447, 455, 459, 463, 451, 467, + 471, 365, 366, 367, 401, 410, 412, 406, 411, 413, + 414, 416, 417, 418, 420, 421, 422, 424, 425, 426, + 428, 429, 402, 403, 404, 415, 405, 407, 408, 409, + 419, 423, 427, 476, 477, 480, 481, 482, 483, 478, + 479, 575, 131, 489, 490, 491, 0, 488, 160, 158, + 159, 157, 0, 199, 161, 162, 163, 133, 132, 0, + 183, 169, 170, 168, 171, 172, 166, 167, 185, 173, + 179, 180, 181, 182, 174, 175, 176, 177, 178, 134, + 135, 136, 137, 138, 139, 146, 574, 0, 576, 0, + 108, 107, 0, 119, 124, 153, 152, 150, 154, 0, + 147, 149, 155, 129, 195, 151, 487, 0, 571, 573, + 0, 494, 0, 0, 0, 96, 0, 93, 0, 106, + 0, 115, 109, 117, 0, 118, 0, 94, 125, 99, + 0, 148, 130, 0, 188, 194, 1, 572, 0, 0, + 492, 143, 145, 0, 141, 186, 0, 0, 97, 0, + 0, 577, 110, 114, 116, 112, 120, 111, 0, 126, + 102, 0, 100, 0, 0, 0, 0, 42, 41, 43, + 40, 5, 6, 7, 8, 2, 15, 13, 14, 16, + 9, 10, 11, 12, 3, 17, 36, 19, 24, 25, + 0, 0, 29, 0, 197, 0, 35, 33, 0, 189, + 95, 0, 0, 0, 496, 0, 0, 140, 0, 184, + 0, 190, 44, 48, 51, 54, 59, 62, 64, 66, + 68, 70, 72, 74, 0, 0, 98, 0, 522, 531, + 535, 0, 0, 0, 556, 0, 0, 0, 0, 0, + 0, 0, 0, 44, 77, 90, 0, 509, 0, 155, + 129, 512, 533, 511, 519, 510, 0, 513, 514, 537, + 515, 544, 516, 517, 552, 518, 0, 113, 0, 121, + 0, 504, 128, 0, 0, 104, 0, 101, 37, 38, + 0, 21, 22, 0, 0, 27, 26, 0, 199, 30, + 32, 39, 0, 196, 0, 502, 0, 500, 495, 497, + 0, 92, 144, 142, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 66, 149, 150, 0, 243, 0, 273, 286, - 285, 0, 277, 0, 289, 287, 0, 0, 0, 271, - 71, 72, 74, 73, 76, 77, 78, 79, 80, 75, - 70, 0, 0, 258, 254, 256, 114, 0, 118, 0, - 96, 4, 0, 15, 12, 23, 156, 0, 231, 0, - 226, 221, 36, 37, 38, 41, 40, 43, 44, 48, - 49, 46, 47, 51, 52, 54, 56, 58, 60, 62, - 64, 0, 151, 245, 0, 0, 0, 0, 288, 0, - 270, 69, 82, 113, 94, 10, 227, 229, 0, 0, - 263, 0, 0, 0, 0, 280, 279, 282, 251, 266, - 0, 246, 0, 0, 0, 281, 0, 0, 262, 0, - 0, 260, 0, 67, 0, 248, 274, 247, 0, 283, - 0, 251, 250, 252, 268, 264, 0, 284, 278, 261, - 269, 0, 276, 267 + 0, 0, 0, 0, 75, 191, 192, 0, 0, 521, + 0, 554, 567, 566, 0, 558, 0, 570, 568, 0, + 0, 0, 551, 520, 80, 81, 83, 82, 85, 86, + 87, 88, 89, 84, 79, 0, 0, 536, 532, 534, + 538, 545, 553, 123, 0, 507, 0, 127, 0, 105, + 4, 0, 23, 20, 31, 198, 0, 503, 0, 498, + 493, 45, 46, 47, 50, 49, 52, 53, 57, 58, + 55, 56, 60, 61, 63, 65, 67, 69, 71, 73, + 0, 193, 581, 0, 579, 523, 0, 0, 0, 0, + 569, 0, 550, 78, 91, 122, 505, 0, 103, 18, + 499, 501, 0, 0, 0, 0, 0, 542, 0, 0, + 0, 0, 561, 560, 563, 529, 546, 506, 508, 0, + 0, 578, 580, 524, 0, 0, 0, 562, 0, 0, + 541, 0, 0, 539, 0, 76, 582, 0, 526, 555, + 525, 0, 564, 0, 529, 528, 530, 548, 543, 0, + 565, 559, 540, 549, 0, 557, 547 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, - -362, -362, 58, -362, -115, -114, -167, -118, -61, -64, - -62, -60, -56, -59, -362, -121, -362, -137, -362, -149, - -362, 10, -362, -362, -362, 13, -362, -362, -362, 116, - 125, 124, -362, -362, -339, -362, -362, -362, -362, 45, - -80, -88, -362, 0, -105, -362, -362, -362, -362, 172, - -362, -362, -362, -168, -174, -23, -102, -233, -127, -223, - -361, -157, -362, -362, -166, -165, -362, -362, 141, -289, - -116, -362, -362, -362, -139, -362, -362, -362, -362, -362, - -362, -362, -362, -362, -362, -362, -362, -362, -362, -362, - 155, -362, -362 + -453, -453, -453, -453, -453, -453, -453, -453, -453, -453, + -453, -453, 8696, -453, -89, -88, -122, -84, -19, -18, + -17, -16, -20, -15, -453, -85, -453, -98, -453, -110, + -119, 2, -453, -453, -453, 4, -453, -453, -453, 189, + 191, 192, -453, -453, -339, -453, -453, -453, -453, 98, + -453, -37, -44, -453, 9, -453, 0, -71, -453, -453, + -453, -453, 261, -453, -453, -453, -452, -137, 20, -68, + -209, -453, -96, -198, -326, -453, -136, -453, -453, -146, + -144, -453, -453, 200, -265, -87, -453, 57, -453, -112, + -453, 59, -453, -453, -453, -453, 61, -453, -453, -453, + -453, -453, -453, -453, -453, 228, -453, -453, -453, -453, + -99 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 162, 163, 164, 332, 165, 166, 167, 168, 169, - 170, 171, 216, 173, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 217, 361, 218, 321, 219, - 271, 220, 78, 243, 149, 221, 80, 81, 82, 109, - 110, 111, 83, 84, 85, 86, 87, 88, 131, 132, - 89, 90, 91, 174, 135, 122, 123, 175, 93, 94, - 95, 182, 127, 180, 181, 265, 266, 241, 223, 224, - 225, 226, 297, 379, 406, 398, 399, 400, 407, 227, - 228, 229, 230, 401, 383, 231, 232, 402, 421, 233, - 234, 235, 364, 301, 366, 387, 396, 397, 236, 96, - 97, 98, 106 + -1, 434, 435, 436, 621, 437, 438, 439, 440, 441, + 442, 443, 493, 445, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 472, 473, 494, 650, 495, 605, 496, + 552, 497, 337, 524, 413, 498, 339, 340, 341, 371, + 372, 373, 342, 343, 344, 345, 346, 347, 393, 394, + 348, 349, 350, 351, 446, 396, 447, 399, 384, 385, + 448, 354, 355, 356, 455, 389, 453, 454, 546, 547, + 522, 616, 501, 502, 503, 504, 505, 580, 676, 709, + 700, 701, 702, 710, 506, 507, 508, 509, 703, 680, + 510, 511, 704, 724, 512, 513, 514, 656, 584, 658, + 684, 698, 699, 515, 357, 358, 359, 368, 516, 653, + 654 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -921,755 +1397,2091 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 92, 119, 112, 249, 325, 326, 268, 240, 363, 328, - 77, 145, 199, 79, 269, 280, 281, 176, 291, 103, - 100, 250, 251, 129, 119, 381, 261, 133, 112, 278, - 279, 114, 405, 258, 115, 134, 237, 239, 262, 413, - -26, 276, 252, 277, 130, 104, 253, 178, 381, 405, - 282, 283, 101, 292, 133, 143, 245, 133, 200, 246, - 200, 238, 270, 306, 144, 308, 201, 242, 146, 200, - 322, 147, 102, 323, 148, 329, 327, 184, 365, 295, - 255, 331, 113, 185, 105, 388, 256, 322, 107, 120, - 119, 322, 389, 108, 373, 268, 92, 116, 322, 126, - 178, 240, 178, 333, 416, 240, 77, 121, 113, 79, - 322, 128, 113, 349, 350, 351, 352, 339, 322, 335, - 340, 368, 136, 339, 141, 420, 376, 179, 133, 60, - 61, 62, 273, 274, 275, 142, 222, 284, 285, 177, - 325, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 322, 370, 259, 367, 268, 322, 390, 369, 338, - 320, 345, 346, 178, 347, 348, 353, 354, 183, 244, - 254, 415, 200, 264, 289, 288, 286, 287, 263, 172, - 179, 290, 179, 293, 371, 372, 296, 299, 298, 178, - 240, 187, 300, 302, 303, 304, 307, 325, 309, -25, - 330, 334, -20, 362, 322, 375, 384, 392, 247, 248, - 391, 393, 378, 394, 409, 380, -249, 404, 410, 202, - 411, 422, 414, 356, 423, 355, 357, 222, 139, 358, - 272, 260, 360, 138, 359, 99, 140, 377, 380, 385, - 337, 187, 412, 179, 418, 408, 419, 137, 395, 178, - 386, 125, 0, 403, 0, 0, 0, 0, 187, 0, - 417, 0, 0, 0, 0, 0, 0, 240, 0, 179, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 382, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 119, 0, 0, 222, 0, 0, - 0, 222, 0, 0, 0, 0, 0, 382, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 336, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, - 0, 342, 343, 344, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 222, 222, 0, 222, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 120, 0, 0, 0, 0, 222, 0, 0, - 0, 0, 0, 222, 0, 0, 0, 0, 0, 0, - 222, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 222, 0, 0, 0, 222, 0, 0, 0, 124, 0, - 222, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 59, 60, 61, 62, 63, 0, - 0, 0, 0, 0, 0, 0, 0, 64, 65, 66, - 67, 68, 69, 70, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 71, 72, 73, 74, - 75, 76, 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, 150, 151, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 152, 0, 0, 0, 202, 203, 0, 0, 0, - 0, 204, 153, 154, 155, 156, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 59, 60, 61, 62, 63, - 0, 0, 0, 157, 158, 159, 160, 161, 64, 65, - 66, 67, 68, 69, 70, 205, 206, 207, 208, 0, - 209, 210, 211, 212, 213, 214, 215, 71, 72, 73, - 74, 75, 76, 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, 150, 151, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 152, 0, 0, 0, 202, 324, 0, 0, - 0, 0, 204, 153, 154, 155, 156, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 59, 60, 61, 62, - 63, 0, 0, 0, 157, 158, 159, 160, 161, 64, - 65, 66, 67, 68, 69, 70, 205, 206, 207, 208, - 0, 209, 210, 211, 212, 213, 214, 215, 71, 72, - 73, 74, 75, 76, 1, 2, 3, 4, 5, 6, + 353, 542, 336, 550, 338, 481, 457, 363, 484, 352, + 485, 486, 458, 543, 489, 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, 150, 151, 0, 0, 0, 0, + 57, 58, 618, 364, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 374, 381, 530, 409, 609, 613, + 521, 615, 474, 449, 617, 655, 549, 678, 562, 563, + 573, 365, 391, 397, 361, 560, 561, 407, 378, 397, + 381, 398, 475, 374, 517, 519, 408, 566, 567, 397, + 476, 375, 459, 392, 539, 678, 518, 366, 460, 382, + 352, 369, 451, 564, 565, 574, 362, 353, 352, 336, + 388, 338, 297, 531, 532, 475, 352, 302, 303, 708, + 375, 551, 523, 674, 375, 536, 716, 675, 589, 352, + 591, 537, -34, 352, 533, 475, 657, 708, 534, 452, + 577, 410, 614, 620, 411, 685, 686, 412, 352, 606, + 500, 606, 606, 376, 719, 665, 377, 381, 526, 499, + 606, 527, 606, 549, 628, 607, 451, 629, 451, 367, + 521, 606, 521, 622, 660, 521, 594, 595, 596, 597, + 598, 599, 600, 601, 602, 603, 293, 294, 295, 624, + 638, 639, 640, 641, 628, 604, 370, 670, 555, 556, + 557, 544, 723, 452, 558, 452, 559, 609, 688, 666, + 352, 667, 352, 383, 352, 606, 662, 606, 689, 634, + 635, 390, 636, 637, 627, 400, 659, 395, 397, 405, + 661, 549, 642, 643, 406, 450, 456, 451, 525, 535, + 540, 475, 545, 554, 568, 569, 571, 572, 718, 570, + 575, 578, 581, 579, 582, 583, 500, 663, 664, 592, + 585, 586, 590, 451, 587, 499, 521, 593, -35, -33, + 619, 623, -28, 651, 452, 609, 669, 652, 673, 606, + 681, 693, 691, 352, 695, 696, 694, 706, -527, 707, + 672, 712, 713, 478, 714, 726, 677, 717, 725, 644, + 452, 645, 648, 646, 690, 647, 553, 360, 649, 352, + 671, 402, 682, 403, 626, 715, 404, 721, 401, 521, + 722, 683, 697, 610, 677, 611, 692, 612, 0, 0, + 500, 451, 0, 0, 500, 387, 711, 0, 551, 499, + 0, 705, 0, 499, 0, 0, 0, 0, 0, 0, + 0, 0, 720, 0, 0, 0, 0, 0, 0, 521, + 0, 0, 0, 0, 0, 0, 0, 0, 452, 679, + 0, 0, 0, 0, 0, 0, 0, 352, 0, 0, + 0, 0, 0, 0, 0, 381, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 679, 0, 0, + 0, 0, 0, 0, 0, 500, 500, 0, 500, 0, + 0, 0, 0, 0, 499, 499, 0, 499, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 382, + 0, 0, 0, 0, 500, 0, 0, 0, 352, 0, + 0, 0, 0, 499, 0, 500, 0, 0, 0, 0, + 0, 0, 500, 0, 499, 0, 0, 0, 0, 0, + 0, 499, 0, 500, 0, 0, 0, 500, 0, 0, + 0, 0, 499, 500, 0, 0, 499, 0, 0, 0, + 386, 0, 499, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 152, 0, 0, 0, 202, 0, 0, - 0, 0, 0, 204, 153, 154, 155, 156, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 59, 60, 61, - 62, 63, 0, 0, 0, 157, 158, 159, 160, 161, - 64, 65, 66, 67, 68, 69, 70, 205, 206, 207, - 208, 0, 209, 210, 211, 212, 213, 214, 215, 71, - 72, 73, 74, 75, 76, 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, 150, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 152, 0, 0, 0, 136, 0, - 0, 0, 0, 0, 204, 153, 154, 155, 156, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 59, 60, - 61, 62, 63, 0, 0, 0, 157, 158, 159, 160, - 161, 64, 65, 66, 67, 68, 69, 70, 205, 206, - 207, 208, 0, 209, 210, 211, 212, 213, 214, 215, - 71, 72, 73, 74, 75, 76, 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, 150, 151, 0, 0, + 0, 0, 0, 0, 291, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 292, 293, + 294, 295, 296, 0, 0, 0, 0, 0, 0, 0, + 0, 297, 298, 299, 300, 301, 302, 303, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 152, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 204, 153, 154, 155, 156, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, - 60, 61, 62, 63, 0, 0, 0, 157, 158, 159, - 160, 161, 64, 65, 66, 67, 68, 69, 70, 205, - 206, 207, 208, 0, 209, 210, 211, 212, 213, 214, - 215, 71, 72, 73, 74, 75, 76, 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, 150, 151, 0, + 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, + 0, 0, 0, 0, 310, 0, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 1, 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, 0, 0, 414, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 152, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 204, 153, 154, 155, - 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 59, 60, 61, 62, 63, 0, 0, 0, 157, 158, - 159, 160, 161, 64, 65, 66, 67, 68, 69, 70, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 71, 72, 73, 74, 75, 76, 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, 150, 151, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 152, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 153, 154, - 155, 156, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 59, 60, 61, 62, 0, 0, 0, 0, 157, - 158, 159, 160, 161, 64, 65, 66, 67, 68, 69, - 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 71, 72, 73, 74, 75, 76, 1, + 0, 0, 416, 0, 477, 0, 478, 479, 0, 0, + 0, 0, 480, 417, 418, 419, 420, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 292, 293, 294, 295, + 296, 0, 0, 0, 421, 422, 423, 424, 425, 297, + 298, 299, 300, 301, 302, 303, 481, 482, 483, 484, + 0, 485, 486, 487, 488, 489, 490, 491, 304, 305, + 306, 307, 308, 309, 426, 427, 428, 429, 430, 431, + 432, 433, 310, 492, 311, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 1, 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, 0, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 0, + 0, 414, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 117, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 59, 60, 61, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 118, 64, 65, 66, 67, 68, - 69, 70, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 71, 72, 73, 74, 75, 76, - 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 59, 60, 61, 62, 63, 0, 0, - 0, 0, 0, 0, 0, 0, 64, 65, 66, 67, - 68, 69, 70, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 71, 72, 73, 74, 75, - 76, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 267, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 59, 60, 61, 62, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 64, 65, 66, - 67, 68, 69, 70, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 71, 72, 73, 74, - 75, 76, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 341, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 59, 60, 61, 62, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 64, 65, - 66, 67, 68, 69, 70, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 71, 72, 73, - 74, 75, 76, 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, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 374, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 59, 60, 61, 62, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, - 65, 66, 67, 68, 69, 70, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 71, 72, - 73, 74, 75, 76, 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, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 59, 60, 61, - 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 64, 65, 66, 67, 68, 69, 70, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, - 72, 73, 74, 75, 76, 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, 150, 151, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 152, 0, 0, 186, 0, 0, 0, - 0, 0, 0, 0, 153, 154, 155, 156, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 157, 158, 159, 160, 161, - 64, 0, 0, 0, 0, 69, 70, 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, 150, 151, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 152, 0, 0, 294, 0, - 0, 0, 0, 0, 0, 0, 153, 154, 155, 156, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 157, 158, 159, - 160, 161, 64, 0, 0, 0, 0, 69, 70, 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, 150, 151, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 152, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 305, 153, 154, - 155, 156, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, - 158, 159, 160, 161, 64, 0, 0, 0, 0, 69, - 70, 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, - 150, 151, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 152, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 153, 154, 155, 156, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 157, 158, 159, 160, 161, 64, 0, 0, 0, - 0, 69, 70, 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, 150, 151, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 153, 154, 155, 156, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 157, 158, 159, 160, 161, 64, 0, - 0, 0, 0, 69, 257, 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, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 64, 0, 0, 0, 0, 69, 70 -}; - -static const yytype_int16 yycheck[] = -{ - 0, 89, 82, 152, 227, 238, 180, 144, 297, 242, - 0, 116, 133, 0, 182, 65, 66, 122, 70, 92, - 86, 63, 64, 118, 112, 364, 89, 84, 108, 61, - 62, 89, 393, 170, 92, 92, 141, 142, 101, 400, - 82, 94, 84, 96, 139, 118, 88, 127, 387, 410, - 100, 101, 118, 105, 84, 82, 89, 84, 84, 92, - 84, 91, 183, 212, 91, 214, 92, 91, 86, 84, - 89, 89, 82, 92, 92, 243, 91, 83, 301, 200, - 83, 83, 82, 89, 92, 83, 89, 89, 83, 89, - 178, 89, 83, 89, 327, 269, 96, 118, 89, 99, - 180, 238, 182, 252, 83, 242, 96, 100, 108, 96, - 89, 86, 112, 280, 281, 282, 283, 89, 89, 256, - 92, 92, 86, 89, 118, 414, 92, 127, 84, 107, - 108, 109, 97, 98, 99, 118, 136, 67, 68, 92, - 363, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 89, 90, 82, 303, 329, 89, 90, 307, 264, - 91, 276, 277, 243, 278, 279, 284, 285, 91, 118, - 83, 404, 84, 118, 69, 102, 104, 103, 178, 121, - 180, 71, 182, 85, 321, 322, 87, 92, 82, 269, - 327, 133, 92, 82, 82, 92, 82, 420, 90, 82, - 118, 118, 83, 85, 89, 85, 126, 118, 150, 151, - 87, 83, 361, 82, 92, 364, 86, 91, 83, 86, - 130, 92, 86, 287, 87, 286, 288, 227, 112, 289, - 185, 173, 291, 108, 290, 63, 112, 339, 387, 366, - 263, 183, 399, 243, 410, 394, 411, 106, 387, 329, - 366, 96, -1, 390, -1, -1, -1, -1, 200, -1, - 409, -1, -1, -1, -1, -1, -1, 404, -1, 269, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 364, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 382, -1, -1, 297, -1, -1, - -1, 301, -1, -1, -1, -1, -1, 387, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 261, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 329, - -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 363, 364, -1, 366, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 382, -1, -1, -1, -1, 387, -1, -1, - -1, -1, -1, 393, -1, -1, -1, -1, -1, -1, - 400, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 410, -1, -1, -1, 414, -1, -1, -1, 0, -1, - 420, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 106, 107, 108, 109, 110, -1, - -1, -1, -1, -1, -1, -1, -1, 119, 120, 121, - 122, 123, 124, 125, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 138, 139, 140, 141, - 142, 143, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 82, -1, -1, -1, 86, 87, -1, -1, -1, - -1, 92, 93, 94, 95, 96, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 106, 107, 108, 109, 110, - -1, -1, -1, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, -1, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 82, -1, -1, -1, 86, 87, -1, -1, - -1, -1, 92, 93, 94, 95, 96, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 106, 107, 108, 109, - 110, -1, -1, -1, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - -1, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 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, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 82, -1, -1, -1, 86, -1, -1, - -1, -1, -1, 92, 93, 94, 95, 96, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 106, 107, 108, - 109, 110, -1, -1, -1, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, -1, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 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, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 82, -1, -1, -1, 86, -1, - -1, -1, -1, -1, 92, 93, 94, 95, 96, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 106, 107, - 108, 109, 110, -1, -1, -1, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, -1, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 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, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 82, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 92, 93, 94, 95, 96, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, - 107, 108, 109, 110, -1, -1, -1, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, -1, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 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, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 82, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 92, 93, 94, 95, - 96, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 106, 107, 108, 109, 110, -1, -1, -1, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 138, 139, 140, 141, 142, 143, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 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, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 93, 94, - 95, 96, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 106, 107, 108, 109, -1, -1, -1, -1, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 138, 139, 140, 141, 142, 143, 3, + 416, 0, 477, 0, 478, 608, 0, 0, 0, 0, + 480, 417, 418, 419, 420, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 292, 293, 294, 295, 296, 0, + 0, 0, 421, 422, 423, 424, 425, 297, 298, 299, + 300, 301, 302, 303, 481, 482, 483, 484, 0, 485, + 486, 487, 488, 489, 490, 491, 304, 305, 306, 307, + 308, 309, 426, 427, 428, 429, 430, 431, 432, 433, + 310, 492, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 333, 334, 335, 1, 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, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 92, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 106, 107, 108, 109, -1, -1, -1, -1, - -1, -1, -1, -1, 118, 119, 120, 121, 122, 123, - 124, 125, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 138, 139, 140, 141, 142, 143, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 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, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 106, 107, 108, 109, 110, -1, -1, - -1, -1, -1, -1, -1, -1, 119, 120, 121, 122, - 123, 124, 125, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 138, 139, 140, 141, 142, - 143, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 87, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 106, 107, 108, 109, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 119, 120, 121, - 122, 123, 124, 125, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 138, 139, 140, 141, - 142, 143, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 87, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 106, 107, 108, 109, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 119, 120, - 121, 122, 123, 124, 125, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 138, 139, 140, - 141, 142, 143, 3, 4, 5, 6, 7, 8, 9, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 0, 0, 414, + 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 416, 0, + 477, 0, 478, 0, 0, 0, 0, 0, 480, 417, + 418, 419, 420, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 292, 293, 294, 295, 296, 0, 0, 0, + 421, 422, 423, 424, 425, 297, 298, 299, 300, 301, + 302, 303, 481, 482, 483, 484, 0, 485, 486, 487, + 488, 489, 490, 491, 304, 305, 306, 307, 308, 309, + 426, 427, 428, 429, 430, 431, 432, 433, 310, 492, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 333, 334, 335, 1, 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, 0, 0, 414, 415, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 416, 0, 477, 0, + 400, 0, 0, 0, 0, 0, 480, 417, 418, 419, + 420, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 292, 293, 294, 295, 296, 0, 0, 0, 421, 422, + 423, 424, 425, 297, 298, 299, 300, 301, 302, 303, + 481, 482, 483, 484, 0, 485, 486, 487, 488, 489, + 490, 491, 304, 305, 306, 307, 308, 309, 426, 427, + 428, 429, 430, 431, 432, 433, 310, 492, 311, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, + 333, 334, 335, 1, 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, 0, 0, 414, 415, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 416, 0, 477, 0, 0, 0, + 0, 0, 0, 0, 480, 417, 418, 419, 420, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 292, 293, + 294, 295, 296, 0, 0, 0, 421, 422, 423, 424, + 425, 297, 298, 299, 300, 301, 302, 303, 481, 482, + 483, 484, 0, 485, 486, 487, 488, 489, 490, 491, + 304, 305, 306, 307, 308, 309, 426, 427, 428, 429, + 430, 431, 432, 433, 310, 492, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 1, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 87, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 106, 107, 108, 109, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 119, - 120, 121, 122, 123, 124, 125, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, - 140, 141, 142, 143, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 106, 107, 108, - 109, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 119, 120, 121, 122, 123, 124, 125, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, - 139, 140, 141, 142, 143, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 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, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 82, -1, -1, 85, -1, -1, -1, - -1, -1, -1, -1, 93, 94, 95, 96, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 114, 115, 116, 117, 118, - 119, -1, -1, -1, -1, 124, 125, 4, 5, 6, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 0, 0, 414, 415, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 416, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 480, 417, 418, 419, 420, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 292, 293, 294, 295, + 296, 0, 0, 0, 421, 422, 423, 424, 425, 297, + 298, 299, 300, 301, 302, 303, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 304, 305, + 306, 307, 308, 309, 426, 427, 428, 429, 430, 431, + 432, 433, 310, 0, 311, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 1, + 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, 0, + 0, 414, 415, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 416, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 417, 418, 419, 420, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 292, 293, 294, 295, 0, 0, + 0, 0, 421, 422, 423, 424, 425, 297, 298, 299, + 300, 301, 302, 303, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 304, 305, 306, 307, + 308, 309, 426, 427, 428, 429, 430, 431, 432, 433, + 310, 0, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 333, 334, 335, 1, 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, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 291, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 292, 293, 294, 295, 296, 0, 0, 0, + 0, 0, 0, 0, 0, 297, 298, 299, 300, 301, + 302, 303, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 304, 305, 306, 307, 308, 309, + 0, 0, 0, 0, 0, 0, 0, 0, 310, 0, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 333, 334, 335, 1, 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, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 379, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 292, 293, 294, 295, 0, 0, 0, 0, 0, 0, + 0, 0, 380, 297, 298, 299, 300, 301, 302, 303, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 304, 305, 306, 307, 308, 309, 0, 0, + 0, 0, 0, 0, 0, 0, 310, 0, 311, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, + 333, 334, 335, 1, 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 548, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 292, 293, + 294, 295, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 297, 298, 299, 300, 301, 302, 303, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 304, 305, 306, 307, 308, 309, 0, 0, 0, 0, + 0, 0, 0, 0, 310, 0, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 630, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 292, 293, 294, 295, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 297, + 298, 299, 300, 301, 302, 303, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 304, 305, + 306, 307, 308, 309, 0, 0, 0, 0, 0, 0, + 0, 0, 310, 0, 311, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 1, + 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, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 668, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 292, 293, 294, 295, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 297, 298, 299, + 300, 301, 302, 303, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 304, 305, 306, 307, + 308, 309, 0, 0, 0, 0, 0, 0, 0, 0, + 310, 0, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 333, 334, 335, 1, 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, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 292, 293, 294, 295, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 297, 298, 299, 300, 301, + 302, 303, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 304, 305, 306, 307, 308, 309, + 0, 0, 0, 0, 0, 0, 0, 0, 310, 0, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 333, 334, 335, 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, -1, -1, 63, 64, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 82, -1, -1, 85, -1, - -1, -1, -1, -1, -1, -1, 93, 94, 95, 96, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 114, 115, 116, - 117, 118, 119, -1, -1, -1, -1, 124, 125, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 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, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 92, 93, 94, - 95, 96, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 114, - 115, 116, 117, 118, 119, -1, -1, -1, -1, 124, - 125, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 93, 94, 95, 96, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 114, 115, 116, 117, 118, 119, -1, -1, -1, - -1, 124, 125, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 93, 94, 95, 96, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 114, 115, 116, 117, 118, 119, -1, - -1, -1, -1, 124, 125, 4, 5, 6, 7, 8, + 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, 0, 0, 414, 415, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 416, 0, 0, 0, 520, + 687, 0, 0, 0, 0, 0, 417, 418, 419, 420, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 421, 422, 423, + 424, 425, 297, 0, 0, 0, 0, 302, 303, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 426, 427, 428, + 429, 430, 431, 432, 433, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 318, 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, 0, 0, 414, 415, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 416, 0, 0, 461, 0, + 0, 0, 0, 0, 0, 0, 417, 418, 419, 420, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 421, 422, 423, + 424, 425, 297, 0, 0, 0, 0, 302, 303, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 426, 427, 428, + 429, 430, 431, 432, 433, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 318, 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, 0, 0, 414, 415, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 416, 0, 0, 0, 520, + 0, 0, 0, 0, 0, 0, 417, 418, 419, 420, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 421, 422, 423, + 424, 425, 297, 0, 0, 0, 0, 302, 303, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 426, 427, 428, + 429, 430, 431, 432, 433, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 318, 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, 0, 0, 414, 415, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 416, 0, 0, 576, 0, + 0, 0, 0, 0, 0, 0, 417, 418, 419, 420, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 421, 422, 423, + 424, 425, 297, 0, 0, 0, 0, 302, 303, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 426, 427, 428, + 429, 430, 431, 432, 433, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 318, 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, 0, 0, 414, 415, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 416, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 588, 417, 418, 419, 420, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 421, 422, 423, + 424, 425, 297, 0, 0, 0, 0, 302, 303, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 426, 427, 428, + 429, 430, 431, 432, 433, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 318, 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, 0, 0, 414, 415, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 416, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 417, 418, 419, 420, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 421, 422, 423, + 424, 425, 297, 0, 0, 0, 0, 302, 303, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 426, 427, 428, + 429, 430, 431, 432, 433, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 318, 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, 0, 0, 414, 415, 0, 444, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 462, 0, 416, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 417, 418, 419, 420, + 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 421, 422, 423, + 424, 425, 297, 0, 0, 0, 0, 302, 538, 0, + 0, 541, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 462, 0, 0, 0, 0, 426, 427, 428, + 429, 430, 431, 432, 433, 0, 0, 0, 0, 0, + 0, 462, 0, 0, 318, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 625, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 631, 632, 633, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 462, 462, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 462 +}; + +static const yytype_int16 yycheck[] = +{ + 0, 321, 0, 455, 0, 358, 315, 314, 361, 0, + 363, 364, 321, 333, 367, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 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, -1, -1, -1, -1, -1, -1, + 59, 60, 524, 314, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 341, 349, 416, 378, 506, 518, + 408, 520, 397, 384, 523, 580, 453, 656, 297, 298, + 302, 324, 350, 316, 318, 293, 294, 314, 350, 316, + 374, 324, 316, 370, 405, 406, 323, 299, 300, 316, + 324, 341, 315, 371, 442, 684, 323, 350, 321, 349, + 341, 315, 389, 332, 333, 337, 350, 357, 349, 357, + 360, 357, 351, 295, 296, 316, 357, 356, 357, 695, + 370, 456, 323, 317, 374, 315, 702, 321, 488, 370, + 490, 321, 314, 374, 316, 316, 584, 713, 320, 389, + 475, 318, 323, 315, 321, 315, 315, 324, 389, 321, + 400, 321, 321, 321, 315, 614, 324, 451, 321, 400, + 321, 324, 321, 550, 321, 324, 453, 324, 455, 324, + 518, 321, 520, 533, 324, 523, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 339, 340, 341, 537, + 562, 563, 564, 565, 321, 323, 321, 324, 329, 330, + 331, 451, 717, 453, 326, 455, 328, 655, 667, 319, + 451, 321, 453, 332, 455, 321, 322, 321, 322, 558, + 559, 318, 560, 561, 545, 318, 586, 350, 316, 350, + 590, 618, 566, 567, 350, 324, 323, 524, 350, 315, + 314, 316, 350, 350, 336, 335, 301, 303, 707, 334, + 317, 316, 314, 319, 324, 324, 506, 605, 606, 322, + 314, 314, 314, 550, 324, 506, 614, 324, 314, 314, + 350, 350, 315, 317, 524, 723, 317, 350, 314, 321, + 358, 319, 317, 524, 315, 314, 350, 315, 318, 323, + 650, 324, 315, 318, 362, 319, 656, 318, 324, 568, + 550, 569, 572, 570, 673, 571, 458, 296, 573, 550, + 628, 370, 658, 374, 544, 701, 374, 713, 368, 667, + 714, 658, 684, 516, 684, 516, 675, 516, -1, -1, + 580, 618, -1, -1, 584, 357, 696, -1, 673, 580, + -1, 689, -1, 584, -1, -1, -1, -1, -1, -1, + -1, -1, 712, -1, -1, -1, -1, -1, -1, 707, + -1, -1, -1, -1, -1, -1, -1, -1, 618, 656, + -1, -1, -1, -1, -1, -1, -1, 618, -1, -1, + -1, -1, -1, -1, -1, 679, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 684, -1, -1, + -1, -1, -1, -1, -1, 655, 656, -1, 658, -1, + -1, -1, -1, -1, 655, 656, -1, 658, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 679, + -1, -1, -1, -1, 684, -1, -1, -1, 679, -1, + -1, -1, -1, 684, -1, 695, -1, -1, -1, -1, + -1, -1, 702, -1, 695, -1, -1, -1, -1, -1, + -1, 702, -1, 713, -1, -1, -1, 717, -1, -1, + -1, -1, 713, 723, -1, -1, 717, -1, -1, -1, + 0, -1, 723, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 324, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 338, 339, + 340, 341, 342, -1, -1, -1, -1, -1, -1, -1, + -1, 351, 352, 353, 354, 355, 356, 357, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 370, 371, 372, 373, 374, 375, -1, -1, -1, -1, + -1, -1, -1, -1, 384, -1, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, -1, -1, 295, 296, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 314, -1, 316, -1, 318, 319, -1, -1, + -1, -1, 324, 325, 326, 327, 328, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 338, 339, 340, 341, + 342, -1, -1, -1, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + -1, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, + -1, 295, 296, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 314, -1, 316, -1, 318, 319, -1, -1, -1, -1, + 324, 325, 326, 327, 328, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 338, 339, 340, 341, 342, -1, + -1, -1, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 360, 361, -1, 363, + 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 409, 410, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, -1, -1, 295, + 296, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 314, -1, + 316, -1, 318, -1, -1, -1, -1, -1, 324, 325, + 326, 327, 328, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 338, 339, 340, 341, 342, -1, -1, -1, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, 357, 358, 359, 360, 361, -1, 363, 364, 365, + 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, -1, -1, 295, 296, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 314, -1, 316, -1, + 318, -1, -1, -1, -1, -1, 324, 325, 326, 327, + 328, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 338, 339, 340, 341, 342, -1, -1, -1, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, + 358, 359, 360, 361, -1, 363, 364, 365, 366, 367, + 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, -1, -1, 295, 296, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 314, -1, 316, -1, -1, -1, + -1, -1, -1, -1, 324, 325, 326, 327, 328, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 338, 339, + 340, 341, 342, -1, -1, -1, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, -1, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, -1, -1, 295, 296, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 314, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 324, 325, 326, 327, 328, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 338, 339, 340, 341, + 342, -1, -1, -1, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, -1, 386, 387, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, + -1, 295, 296, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 314, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 325, 326, 327, 328, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 338, 339, 340, 341, -1, -1, + -1, -1, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 370, 371, 372, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, -1, 386, 387, 388, 389, 390, 391, 392, 393, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 409, 410, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 324, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 338, 339, 340, 341, 342, -1, -1, -1, + -1, -1, -1, -1, -1, 351, 352, 353, 354, 355, + 356, 357, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 370, 371, 372, 373, 374, 375, + -1, -1, -1, -1, -1, -1, -1, -1, 384, -1, + 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 324, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 338, 339, 340, 341, -1, -1, -1, -1, -1, -1, + -1, -1, 350, 351, 352, 353, 354, 355, 356, 357, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 370, 371, 372, 373, 374, 375, -1, -1, + -1, -1, -1, -1, -1, -1, 384, -1, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 319, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 338, 339, + 340, 341, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 351, 352, 353, 354, 355, 356, 357, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 370, 371, 372, 373, 374, 375, -1, -1, -1, -1, + -1, -1, -1, -1, 384, -1, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 319, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 338, 339, 340, 341, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 351, + 352, 353, 354, 355, 356, 357, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 370, 371, + 372, 373, 374, 375, -1, -1, -1, -1, -1, -1, + -1, -1, 384, -1, 386, 387, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 319, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 338, 339, 340, 341, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 351, 352, 353, + 354, 355, 356, 357, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 370, 371, 372, 373, + 374, 375, -1, -1, -1, -1, -1, -1, -1, -1, + 384, -1, 386, 387, 388, 389, 390, 391, 392, 393, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 409, 410, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 338, 339, 340, 341, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 351, 352, 353, 354, 355, + 356, 357, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 370, 371, 372, 373, 374, 375, + -1, -1, -1, -1, -1, -1, -1, -1, 384, -1, + 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 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, -1, -1, 295, 296, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 314, -1, -1, -1, 318, + 319, -1, -1, -1, -1, -1, 325, 326, 327, 328, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 346, 347, 348, + 349, 350, 351, -1, -1, -1, -1, 356, 357, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 376, 377, 378, + 379, 380, 381, 382, 383, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 393, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 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, -1, -1, 295, 296, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 314, -1, -1, 317, -1, + -1, -1, -1, -1, -1, -1, 325, 326, 327, 328, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 346, 347, 348, + 349, 350, 351, -1, -1, -1, -1, 356, 357, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 376, 377, 378, + 379, 380, 381, 382, 383, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 393, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 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, -1, -1, 295, 296, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 314, -1, -1, -1, 318, + -1, -1, -1, -1, -1, -1, 325, 326, 327, 328, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 346, 347, 348, + 349, 350, 351, -1, -1, -1, -1, 356, 357, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 376, 377, 378, + 379, 380, 381, 382, 383, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 393, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 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, -1, -1, 295, 296, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 314, -1, -1, 317, -1, + -1, -1, -1, -1, -1, -1, 325, 326, 327, 328, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 346, 347, 348, + 349, 350, 351, -1, -1, -1, -1, 356, 357, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 376, 377, 378, + 379, 380, 381, 382, 383, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 393, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 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, -1, -1, 295, 296, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 314, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 324, 325, 326, 327, 328, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 346, 347, 348, + 349, 350, 351, -1, -1, -1, -1, 356, 357, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 376, 377, 378, + 379, 380, 381, 382, 383, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 393, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 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, -1, -1, 295, 296, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 314, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 325, 326, 327, 328, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 346, 347, 348, + 349, 350, 351, -1, -1, -1, -1, 356, 357, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 376, 377, 378, + 379, 380, 381, 382, 383, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 393, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 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, -1, -1, 295, 296, -1, 383, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 397, -1, 314, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 325, 326, 327, 328, + 414, 415, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 346, 347, 348, + 349, 350, 351, -1, -1, -1, -1, 356, 357, -1, + -1, 445, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 456, -1, -1, -1, -1, 376, 377, 378, + 379, 380, 381, 382, 383, -1, -1, -1, -1, -1, + -1, 475, -1, -1, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 119, -1, -1, -1, -1, 124, 125 + -1, -1, -1, -1, -1, -1, -1, -1, 542, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 555, 556, 557, 558, 559, 560, 561, 562, 563, + 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 673 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ -static const yytype_uint8 yystos[] = +static const yytype_uint16 yystos[] = { 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 106, - 107, 108, 109, 110, 119, 120, 121, 122, 123, 124, - 125, 138, 139, 140, 141, 142, 143, 175, 176, 179, - 180, 181, 182, 186, 187, 188, 189, 190, 191, 194, - 195, 196, 197, 202, 203, 204, 243, 244, 245, 203, - 86, 118, 82, 92, 118, 92, 246, 83, 89, 183, - 184, 185, 194, 197, 89, 92, 118, 92, 118, 195, - 197, 100, 199, 200, 0, 244, 197, 206, 86, 118, - 139, 192, 193, 84, 92, 198, 86, 222, 184, 183, - 185, 118, 118, 82, 91, 198, 86, 89, 92, 178, - 63, 64, 82, 93, 94, 95, 96, 114, 115, 116, - 117, 118, 145, 146, 147, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 197, 201, 198, 92, 194, 197, - 207, 208, 205, 91, 83, 89, 85, 156, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 84, 92, 86, 87, 92, 126, 127, 128, 129, 131, - 132, 133, 134, 135, 136, 137, 156, 169, 171, 173, - 175, 179, 197, 212, 213, 214, 215, 223, 224, 225, - 226, 229, 230, 233, 234, 235, 242, 198, 91, 198, - 171, 211, 91, 177, 118, 89, 92, 156, 156, 173, - 63, 64, 84, 88, 83, 83, 89, 125, 171, 82, - 156, 89, 101, 197, 118, 209, 210, 87, 208, 207, - 169, 174, 193, 97, 98, 99, 94, 96, 61, 62, - 65, 66, 100, 101, 67, 68, 104, 103, 102, 69, - 71, 70, 105, 85, 85, 169, 87, 216, 82, 92, - 92, 237, 82, 82, 92, 92, 173, 82, 173, 90, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 91, 172, 89, 92, 87, 213, 211, 91, 211, 207, - 118, 83, 148, 173, 118, 171, 156, 209, 198, 89, - 92, 87, 156, 156, 156, 158, 158, 159, 159, 160, - 160, 160, 160, 161, 161, 162, 163, 164, 165, 166, - 167, 170, 85, 223, 236, 213, 238, 173, 92, 173, - 90, 171, 171, 211, 87, 85, 92, 210, 173, 217, - 173, 188, 194, 228, 126, 212, 224, 239, 83, 83, - 90, 87, 118, 83, 82, 228, 240, 241, 219, 220, - 221, 227, 231, 171, 91, 214, 218, 222, 173, 92, - 83, 130, 215, 214, 86, 211, 83, 173, 218, 219, - 223, 232, 92, 87 + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 324, 338, 339, 340, 341, 342, 351, 352, 353, + 354, 355, 356, 357, 370, 371, 372, 373, 374, 375, + 384, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 442, 443, 446, 447, + 448, 449, 453, 454, 455, 456, 457, 458, 461, 462, + 463, 464, 465, 467, 472, 473, 474, 515, 516, 517, + 473, 318, 350, 314, 314, 324, 350, 324, 518, 315, + 321, 450, 451, 452, 462, 467, 321, 324, 350, 324, + 350, 463, 467, 332, 469, 470, 0, 516, 467, 476, + 318, 350, 371, 459, 460, 350, 466, 316, 324, 468, + 318, 494, 451, 450, 452, 350, 350, 314, 323, 468, + 318, 321, 324, 445, 295, 296, 314, 325, 326, 327, + 328, 346, 347, 348, 349, 350, 376, 377, 378, 379, + 380, 381, 382, 383, 412, 413, 414, 416, 417, 418, + 419, 420, 421, 422, 423, 424, 465, 467, 471, 468, + 324, 462, 467, 477, 478, 475, 323, 315, 321, 315, + 321, 317, 423, 425, 426, 427, 428, 429, 430, 431, + 432, 433, 434, 435, 436, 316, 324, 316, 318, 319, + 324, 358, 359, 360, 361, 363, 364, 365, 366, 367, + 368, 369, 385, 423, 436, 438, 440, 442, 446, 465, + 467, 483, 484, 485, 486, 487, 495, 496, 497, 498, + 501, 502, 505, 506, 507, 514, 519, 468, 323, 468, + 318, 438, 481, 323, 444, 350, 321, 324, 423, 423, + 440, 295, 296, 316, 320, 315, 315, 321, 357, 438, + 314, 423, 321, 333, 467, 350, 479, 480, 319, 478, + 477, 436, 441, 460, 350, 329, 330, 331, 326, 328, + 293, 294, 297, 298, 332, 333, 299, 300, 336, 335, + 334, 301, 303, 302, 337, 317, 317, 436, 316, 319, + 488, 314, 324, 324, 509, 314, 314, 324, 324, 440, + 314, 440, 322, 324, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 323, 439, 321, 324, 319, 484, + 498, 502, 507, 481, 323, 481, 482, 481, 477, 350, + 315, 415, 440, 350, 438, 423, 479, 468, 321, 324, + 319, 423, 423, 423, 425, 425, 426, 426, 427, 427, + 427, 427, 428, 428, 429, 430, 431, 432, 433, 434, + 437, 317, 350, 520, 521, 495, 508, 484, 510, 440, + 324, 440, 322, 438, 438, 481, 319, 321, 319, 317, + 324, 480, 440, 314, 317, 321, 489, 440, 455, 462, + 500, 358, 483, 496, 511, 315, 315, 319, 481, 322, + 441, 317, 521, 319, 350, 315, 314, 500, 512, 513, + 491, 492, 493, 499, 503, 438, 315, 323, 485, 490, + 494, 440, 324, 315, 362, 487, 485, 318, 481, 315, + 440, 490, 491, 495, 504, 324, 319 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint8 yyr1[] = +static const yytype_uint16 yyr1[] = { - 0, 144, 145, 146, 146, 146, 146, 146, 146, 147, - 147, 147, 147, 147, 147, 148, 149, 150, 151, 151, - 152, 152, 153, 153, 154, 155, 155, 156, 156, 156, - 156, 157, 157, 157, 157, 158, 158, 158, 158, 159, - 159, 159, 160, 160, 160, 161, 161, 161, 161, 161, - 162, 162, 162, 163, 163, 164, 164, 165, 165, 166, - 166, 167, 167, 168, 168, 169, 170, 169, 171, 171, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 173, 173, 174, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 177, 176, 178, 178, 179, 180, 180, - 181, 181, 182, 183, 183, 184, 184, 184, 184, 185, - 186, 186, 186, 186, 186, 187, 187, 187, 187, 187, - 188, 188, 189, 190, 190, 191, 192, 192, 193, 193, - 193, 194, 194, 195, 195, 195, 195, 195, 196, 196, - 196, 196, 196, 196, 196, 196, 197, 197, 198, 198, - 198, 198, 199, 199, 200, 201, 201, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 203, 203, 203, - 205, 204, 206, 204, 207, 207, 208, 208, 209, 209, - 210, 210, 211, 212, 213, 213, 214, 214, 214, 214, - 214, 214, 214, 215, 216, 217, 215, 218, 218, 220, - 219, 221, 219, 222, 222, 223, 223, 224, 224, 225, - 226, 227, 227, 228, 228, 229, 231, 230, 232, 232, - 233, 233, 234, 236, 235, 237, 235, 238, 235, 239, - 239, 240, 240, 241, 241, 242, 242, 242, 242, 242, - 243, 243, 244, 244, 246, 245 + 0, 411, 412, 413, 413, 413, 413, 413, 413, 413, + 413, 413, 413, 413, 413, 413, 413, 414, 414, 414, + 414, 414, 414, 415, 416, 417, 418, 418, 419, 419, + 420, 420, 421, 422, 422, 422, 423, 423, 423, 423, + 424, 424, 424, 424, 425, 425, 425, 425, 426, 426, + 426, 427, 427, 427, 428, 428, 428, 428, 428, 429, + 429, 429, 430, 430, 431, 431, 432, 432, 433, 433, + 434, 434, 435, 435, 436, 437, 436, 438, 438, 439, + 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, + 440, 440, 441, 442, 442, 442, 442, 442, 442, 442, + 442, 442, 444, 443, 445, 445, 446, 447, 447, 448, + 448, 449, 450, 450, 451, 451, 451, 451, 452, 453, + 453, 453, 453, 453, 454, 454, 454, 454, 454, 455, + 455, 456, 457, 457, 457, 457, 457, 457, 457, 457, + 458, 459, 459, 460, 460, 460, 461, 462, 462, 463, + 463, 463, 463, 463, 463, 463, 464, 464, 464, 464, + 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, + 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, + 464, 464, 464, 464, 464, 465, 466, 466, 467, 467, + 468, 468, 468, 468, 469, 469, 470, 471, 471, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 473, + 473, 473, 475, 474, 476, 474, 477, 477, 478, 478, + 479, 479, 480, 480, 481, 481, 481, 482, 482, 483, + 484, 484, 485, 485, 485, 485, 485, 485, 485, 485, + 486, 487, 488, 489, 487, 490, 490, 492, 491, 493, + 491, 494, 494, 495, 495, 496, 496, 497, 497, 498, + 499, 499, 500, 500, 501, 501, 503, 502, 504, 504, + 505, 505, 506, 506, 508, 507, 509, 507, 510, 507, + 511, 511, 512, 512, 513, 513, 514, 514, 514, 514, + 514, 515, 515, 516, 516, 516, 518, 517, 519, 520, + 520, 521, 521 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 1, 1, 3, 1, 1, 1, 1, 1, - 4, 1, 3, 2, 2, 1, 1, 1, 2, 2, - 2, 1, 2, 3, 2, 1, 1, 1, 2, 2, - 2, 1, 1, 1, 1, 1, 3, 3, 3, 1, - 3, 3, 1, 3, 3, 1, 3, 3, 3, 3, - 1, 3, 3, 1, 3, 1, 3, 1, 3, 1, - 3, 1, 3, 1, 3, 1, 0, 6, 1, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, + 3, 2, 2, 1, 1, 1, 2, 2, 2, 1, + 2, 3, 2, 1, 1, 1, 1, 2, 2, 2, + 1, 1, 1, 1, 1, 3, 3, 3, 1, 3, + 3, 1, 3, 3, 1, 3, 3, 3, 3, 1, + 3, 3, 1, 3, 1, 3, 1, 3, 1, 3, + 1, 3, 1, 3, 1, 0, 6, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 3, 1, 2, 2, 4, 2, 3, 4, - 2, 3, 4, 0, 6, 2, 3, 2, 1, 1, - 2, 3, 3, 2, 3, 2, 1, 2, 1, 1, - 1, 3, 4, 6, 5, 1, 2, 3, 5, 4, - 1, 2, 1, 1, 1, 4, 1, 3, 1, 3, - 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 3, 2, 3, - 3, 4, 1, 0, 3, 1, 3, 1, 1, 1, + 1, 3, 1, 2, 2, 4, 2, 3, 4, 2, + 3, 4, 0, 6, 2, 3, 2, 1, 1, 2, + 3, 3, 2, 3, 2, 1, 2, 1, 1, 1, + 3, 4, 6, 5, 1, 2, 3, 5, 4, 1, + 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 4, 1, 3, 1, 3, 1, 1, 1, 2, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 4, 1, 1, 3, 2, 3, + 2, 3, 3, 4, 1, 0, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 0, 6, 0, 5, 1, 2, 3, 4, 1, 3, - 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 0, 0, 5, 1, 1, 0, - 2, 0, 2, 2, 3, 1, 2, 1, 2, 1, - 5, 3, 1, 1, 4, 1, 0, 8, 0, 1, - 3, 2, 1, 0, 6, 0, 8, 0, 7, 1, - 1, 1, 0, 2, 3, 2, 2, 2, 3, 2, - 1, 2, 1, 1, 0, 3 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 0, 6, 0, 5, 1, 2, 3, 4, + 1, 3, 1, 2, 1, 3, 4, 1, 3, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 0, 0, 5, 1, 1, 0, 2, 0, + 2, 2, 3, 1, 2, 1, 2, 1, 2, 5, + 3, 1, 1, 4, 1, 2, 0, 8, 0, 1, + 3, 2, 1, 2, 0, 6, 0, 8, 0, 7, + 1, 1, 1, 0, 2, 3, 2, 2, 2, 3, + 2, 1, 2, 1, 1, 1, 0, 3, 5, 1, + 3, 1, 4 }; @@ -2352,178 +4164,250 @@ yyreduce: switch (yyn) { case 2: -#line 253 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 352 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string); } -#line 2360 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4172 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 3: -#line 259 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 358 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 2368 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4180 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 4: -#line 262 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 361 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } -#line 2378 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4190 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 5: -#line 267 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 366 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 2386 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4198 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 6: -#line 270 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 369 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 2394 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4206 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 7: -#line 273 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 372 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 2403 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4215 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 8: -#line 277 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 376 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 2411 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4223 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 9: -#line 284 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 380 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 2419 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4232 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 10: -#line 287 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 384 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode)); + parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 2427 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4241 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 11: -#line 290 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 388 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer literal"); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i64, (yyvsp[0].lex).loc, true); } -#line 2435 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4250 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 12: -#line 293 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 392 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { - (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string); + parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer literal"); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u64, (yyvsp[0].lex).loc, true); } -#line 2443 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4259 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; case 13: -#line 296 "MachineIndependent/glslang.y" /* yacc.c:1646 */ +#line 396 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit integer literal"); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((short)(yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); + } +#line 4268 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 14: +#line 400 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit unsigned integer literal"); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((unsigned short)(yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); + } +#line 4277 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 15: +#line 404 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.doubleCheck((yyvsp[0].lex).loc, "double literal"); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtDouble, (yyvsp[0].lex).loc, true); + } +#line 4286 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 16: +#line 408 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float literal"); + (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat16, (yyvsp[0].lex).loc, true); + } +#line 4295 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 17: +#line 416 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + } +#line 4303 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 18: +#line 419 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode)); + } +#line 4311 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 19: +#line 422 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); + } +#line 4319 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 20: +#line 425 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string); + } +#line 4327 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 21: +#line 428 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode)); parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "++", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "++", EOpPostIncrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 2453 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4337 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 14: -#line 301 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 22: +#line 433 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode)); parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "--", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "--", EOpPostDecrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 2463 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4347 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 15: -#line 309 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 23: +#line 441 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]"); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 2472 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4356 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 16: -#line 316 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 24: +#line 448 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode); delete (yyvsp[0].interm).function; } -#line 2481 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4365 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 17: -#line 323 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 25: +#line 455 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); } -#line 2489 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4373 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 18: -#line 329 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 26: +#line 461 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 2498 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4382 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 19: -#line 333 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 27: +#line 465 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 2507 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4391 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 20: -#line 340 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 28: +#line 472 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-1].interm); } -#line 2515 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4399 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 21: -#line 343 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 29: +#line 475 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); } -#line 2523 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4407 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 22: -#line 349 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 30: +#line 481 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { TParameter param = { 0, new TType }; param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); @@ -2531,11 +4415,11 @@ yyreduce: (yyval.interm).function = (yyvsp[-1].interm).function; (yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode); } -#line 2535 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4419 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 23: -#line 356 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 31: +#line 488 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { TParameter param = { 0, new TType }; param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); @@ -2543,29 +4427,29 @@ yyreduce: (yyval.interm).function = (yyvsp[-2].interm).function; (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); } -#line 2547 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4431 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 24: -#line 366 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 32: +#line 498 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-1].interm); } -#line 2555 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4439 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 25: -#line 374 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 33: +#line 506 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // Constructor (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 2565 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4449 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 26: -#line 379 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 34: +#line 511 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // // Should be a method or subroutine call, but we haven't recognized the arguments yet. @@ -2593,40 +4477,50 @@ yyreduce: (yyval.interm).function = new TFunction(empty, TType(EbtVoid), EOpNull); } } -#line 2597 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4481 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 27: -#line 410 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 35: +#line 539 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + // Constructor + (yyval.interm).intermNode = 0; + (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); + } +#line 4491 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 36: +#line 548 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.variableCheck((yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); if (TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode()) parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), ""); } -#line 2608 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4502 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 28: -#line 416 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 37: +#line 554 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "++", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "++", EOpPreIncrement, (yyvsp[0].interm.intermTypedNode)); } -#line 2617 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4511 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 29: -#line 420 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 38: +#line 558 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "--", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "--", EOpPreDecrement, (yyvsp[0].interm.intermTypedNode)); } -#line 2626 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4520 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 30: -#line 424 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 39: +#line 562 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-1].interm).op != EOpNull) { char errorOp[2] = {0, 0}; @@ -2643,179 +4537,179 @@ yyreduce: (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } } -#line 2647 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4541 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 31: -#line 444 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 40: +#line 582 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; } -#line 2653 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4547 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 32: -#line 445 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 41: +#line 583 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; } -#line 2659 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4553 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 33: -#line 446 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 42: +#line 584 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; } -#line 2665 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4559 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 34: -#line 447 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 43: +#line 585 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot; parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); } -#line 2672 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4566 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 35: -#line 453 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 44: +#line 591 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 2678 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4572 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 36: -#line 454 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 45: +#line 592 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "*", EOpMul, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 2688 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4582 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 37: -#line 459 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 46: +#line 597 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "/", EOpDiv, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 2698 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4592 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 38: -#line 464 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 47: +#line 602 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "%"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "%", EOpMod, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 2709 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4603 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 39: -#line 473 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 48: +#line 611 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 2715 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4609 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 40: -#line 474 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 49: +#line 612 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "+", EOpAdd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 2725 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4619 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 41: -#line 479 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 50: +#line 617 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "-", EOpSub, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 2735 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4629 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 42: -#line 487 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 51: +#line 625 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 2741 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4635 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 43: -#line 488 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 52: +#line 626 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift left"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<<", EOpLeftShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 2752 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4646 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 44: -#line 494 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 53: +#line 632 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift right"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">>", EOpRightShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 2763 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4657 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 45: -#line 503 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 54: +#line 641 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 2769 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4663 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 46: -#line 504 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 55: +#line 642 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<", EOpLessThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 2779 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4673 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 47: -#line 509 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 56: +#line 647 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">", EOpGreaterThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 2789 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4683 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 48: -#line 514 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 57: +#line 652 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<=", EOpLessThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 2799 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4693 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 49: -#line 519 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 58: +#line 657 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">=", EOpGreaterThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 2809 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4703 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 50: -#line 527 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 59: +#line 665 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 2815 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4709 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 51: -#line 528 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 60: +#line 666 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison"); parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=="); @@ -2825,11 +4719,11 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 2829 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4723 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 52: -#line 537 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 61: +#line 675 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison"); parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!="); @@ -2839,124 +4733,124 @@ yyreduce: if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 2843 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4737 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 53: -#line 549 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 62: +#line 687 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 2849 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4743 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 54: -#line 550 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 63: +#line 688 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise and"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&", EOpAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 2860 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4754 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 55: -#line 559 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 64: +#line 697 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 2866 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4760 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 56: -#line 560 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 65: +#line 698 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise exclusive or"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^", EOpExclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 2877 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4771 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 57: -#line 569 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 66: +#line 707 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 2883 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4777 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 58: -#line 570 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 67: +#line 708 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise inclusive or"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "|", EOpInclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 2894 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4788 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 59: -#line 579 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 68: +#line 717 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 2900 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4794 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 60: -#line 580 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 69: +#line 718 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&&", EOpLogicalAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 2910 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4804 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 61: -#line 588 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 70: +#line 726 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 2916 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4810 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 62: -#line 589 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 71: +#line 727 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^^", EOpLogicalXor, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 2926 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4820 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 63: -#line 597 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 72: +#line 735 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 2932 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4826 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 64: -#line 598 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 73: +#line 736 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "||", EOpLogicalOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 2942 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4836 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 65: -#line 606 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 74: +#line 744 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 2948 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4842 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 66: -#line 607 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 75: +#line 745 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { ++parseContext.controlFlowNestingLevel; } -#line 2956 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4850 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 67: -#line 610 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 76: +#line 748 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { --parseContext.controlFlowNestingLevel; parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-5].interm.intermTypedNode)); @@ -2969,17 +4863,17 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 2973 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4867 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 68: -#line 625 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 77: +#line 763 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 2979 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4873 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 69: -#line 626 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 78: +#line 764 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.arrayObjectCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array assignment"); parseContext.opaqueCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "="); @@ -2993,119 +4887,119 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } } -#line 2997 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4891 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 70: -#line 642 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 79: +#line 780 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAssign; } -#line 3006 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4900 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 71: -#line 646 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 80: +#line 784 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpMulAssign; } -#line 3015 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4909 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 72: -#line 650 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 81: +#line 788 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpDivAssign; } -#line 3024 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4918 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 73: -#line 654 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 82: +#line 792 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "%="); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpModAssign; } -#line 3034 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4928 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 74: -#line 659 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 83: +#line 797 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAddAssign; } -#line 3043 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4937 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 75: -#line 663 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 84: +#line 801 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpSubAssign; } -#line 3052 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4946 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 76: -#line 667 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 85: +#line 805 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign; } -#line 3061 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4955 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 77: -#line 671 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 86: +#line 809 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign; } -#line 3070 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4964 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 78: -#line 675 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 87: +#line 813 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign; } -#line 3079 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4973 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 79: -#line 679 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 88: +#line 817 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign; } -#line 3088 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4982 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 80: -#line 683 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 89: +#line 821 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign; } -#line 3097 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4991 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 81: -#line 690 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 90: +#line 828 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3105 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 4999 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 82: -#line 693 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 91: +#line 831 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.samplerConstructorLocationCheck((yyvsp[-1].lex).loc, ",", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.intermediate.addComma((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); @@ -3114,40 +5008,40 @@ yyreduce: (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 3118 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5012 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 83: -#line 704 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 92: +#line 842 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), ""); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 3127 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5021 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 84: -#line 711 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 93: +#line 849 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.handleFunctionDeclarator((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).function, true /* prototype */); (yyval.interm.intermNode) = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 3137 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5031 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 85: -#line 716 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 94: +#line 854 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-1].interm).intermNode && (yyvsp[-1].interm).intermNode->getAsAggregate()) (yyvsp[-1].interm).intermNode->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm).intermNode; } -#line 3147 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5041 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 86: -#line 721 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 95: +#line 859 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.profileRequires((yyvsp[-3].lex).loc, ENoProfile, 130, 0, "precision statement"); // lazy setting of the previous scope's defaults, has effect only the first time it is called in a particular scope @@ -3155,75 +5049,75 @@ yyreduce: parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision); (yyval.interm.intermNode) = 0; } -#line 3159 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5053 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 87: -#line 728 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 96: +#line 866 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList); (yyval.interm.intermNode) = 0; } -#line 3168 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5062 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 88: -#line 732 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 97: +#line 870 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 3177 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5071 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 89: -#line 736 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 98: +#line 874 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes); (yyval.interm.intermNode) = 0; } -#line 3186 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5080 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 90: -#line 740 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 99: +#line 878 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier); parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type)); (yyval.interm.intermNode) = 0; } -#line 3196 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5090 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 91: -#line 745 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 100: +#line 883 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.checkNoShaderLayouts((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).shaderQualifiers); parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 3206 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5100 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 92: -#line 750 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 101: +#line 888 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.checkNoShaderLayouts((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).shaderQualifiers); (yyvsp[-1].interm.identifierList)->push_back((yyvsp[-2].lex).string); parseContext.addQualifierToExisting((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier, *(yyvsp[-1].interm.identifierList)); (yyval.interm.intermNode) = 0; } -#line 3217 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5111 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 93: -#line 759 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 102: +#line 897 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); } -#line 3223 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5117 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 94: -#line 759 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 103: +#line 897 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { --parseContext.structNestingLevel; parseContext.blockName = (yyvsp[-4].lex).string; @@ -3233,54 +5127,54 @@ yyreduce: (yyval.interm).loc = (yyvsp[-5].interm.type).loc; (yyval.interm).typeList = (yyvsp[-1].interm.typeList); } -#line 3237 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5131 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 95: -#line 770 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 104: +#line 908 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.identifierList) = new TIdentifierList; (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 3246 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5140 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 96: -#line 774 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 105: +#line 912 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList); (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 3255 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5149 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 97: -#line 781 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 106: +#line 919 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).function = (yyvsp[-1].interm.function); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 3264 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5158 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 98: -#line 788 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 107: +#line 926 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 3272 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5166 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 99: -#line 791 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 108: +#line 929 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 3280 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5174 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 100: -#line 798 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 109: +#line 936 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // Add the parameter (yyval.interm.function) = (yyvsp[-1].interm.function); @@ -3289,11 +5183,11 @@ yyreduce: else delete (yyvsp[0].interm).param.type; } -#line 3293 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5187 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 101: -#line 806 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 110: +#line 944 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // // Only first parameter of one-parameter functions can be void @@ -3311,11 +5205,11 @@ yyreduce: (yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param); } } -#line 3315 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5209 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 102: -#line 826 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 111: +#line 964 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-2].interm.type).qualifier.storage != EvqGlobal && (yyvsp[-2].interm.type).qualifier.storage != EvqTemporary) { parseContext.error((yyvsp[-1].lex).loc, "no qualifiers allowed for function return", @@ -3335,11 +5229,11 @@ yyreduce: function = new TFunction((yyvsp[-1].lex).string, type); (yyval.interm.function) = function; } -#line 3339 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5233 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 103: -#line 849 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 112: +#line 987 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-1].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-1].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -3355,11 +5249,11 @@ yyreduce: (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).param = param; } -#line 3359 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5253 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 104: -#line 864 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 113: +#line 1002 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -3379,11 +5273,11 @@ yyreduce: (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).param = param; } -#line 3383 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5277 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 105: -#line 889 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 114: +#line 1027 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) @@ -3395,11 +5289,11 @@ yyreduce: parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 3399 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5293 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 106: -#line 900 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 115: +#line 1038 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); @@ -3407,11 +5301,11 @@ yyreduce: parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); } -#line 3411 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5305 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 107: -#line 910 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 116: +#line 1048 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) @@ -3422,11 +5316,11 @@ yyreduce: parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type); parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 3426 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5320 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 108: -#line 920 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 117: +#line 1058 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); @@ -3434,118 +5328,120 @@ yyreduce: parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); } -#line 3438 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5332 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 109: -#line 930 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 118: +#line 1068 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { TParameter param = { 0, new TType((yyvsp[0].interm.type)) }; (yyval.interm).param = param; if ((yyvsp[0].interm.type).arraySizes) parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes); } -#line 3449 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5343 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 110: -#line 939 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 119: +#line 1077 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[0].interm); } -#line 3457 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5351 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 111: -#line 942 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 120: +#line 1080 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-2].interm); parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type); } -#line 3466 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5360 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 112: -#line 946 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 121: +#line 1084 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-3].interm); parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes); } -#line 3475 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5369 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 113: -#line 950 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 122: +#line 1088 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).type = (yyvsp[-5].interm).type; TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-5].interm).type, (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-5].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 3485 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5379 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 114: -#line 955 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 123: +#line 1093 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).type = (yyvsp[-4].interm).type; TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 3495 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5389 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 115: -#line 963 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 124: +#line 1101 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).type = (yyvsp[0].interm.type); (yyval.interm).intermNode = 0; + parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type); + } -#line 3505 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5401 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 116: -#line 968 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 125: +#line 1108 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).type = (yyvsp[-1].interm.type); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type)); } -#line 3515 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5411 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 117: -#line 973 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 126: +#line 1113 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).type = (yyvsp[-2].interm.type); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes); } -#line 3525 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5421 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 118: -#line 978 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 127: +#line 1118 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).type = (yyvsp[-4].interm.type); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-4].interm.type), (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 3535 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5431 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 119: -#line 983 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 128: +#line 1123 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).type = (yyvsp[-3].interm.type); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 3545 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 120: -#line 992 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 129: +#line 1132 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); @@ -3556,11 +5452,11 @@ yyreduce: } parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier); } -#line 3560 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5456 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 121: -#line 1002 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 130: +#line 1142 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier); parseContext.globalQualifierTypeCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, (yyvsp[0].interm.type)); @@ -3585,22 +5481,22 @@ yyreduce: (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn))) (yyval.interm.type).qualifier.smooth = true; } -#line 3589 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5485 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 122: -#line 1029 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 131: +#line 1169 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "invariant"); parseContext.profileRequires((yyval.interm.type).loc, ENoProfile, 120, 0, "invariant"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.invariant = true; } -#line 3600 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5496 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 123: -#line 1038 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 132: +#line 1178 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "smooth"); parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "smooth"); @@ -3608,11 +5504,11 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.smooth = true; } -#line 3612 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5508 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 124: -#line 1045 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 133: +#line 1185 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "flat"); parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "flat"); @@ -3620,73 +5516,160 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.flat = true; } -#line 3624 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5520 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 125: -#line 1056 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 134: +#line 1193 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.globalCheck((yyvsp[0].lex).loc, "noperspective"); + parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 0, E_GL_NV_shader_noperspective_interpolation, "noperspective"); + parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "noperspective"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.nopersp = true; + } +#line 5532 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 135: +#line 1200 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.globalCheck((yyvsp[0].lex).loc, "__explicitInterpAMD"); + parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); + parseContext.profileRequires((yyvsp[0].lex).loc, ECompatibilityProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.explicitInterp = true; + } +#line 5544 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 136: +#line 1207 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.globalCheck((yyvsp[0].lex).loc, "pervertexNV"); + parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); + parseContext.profileRequires((yyvsp[0].lex).loc, ECompatibilityProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); + parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.pervertexNV = true; + } +#line 5557 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 137: +#line 1215 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + // No need for profile version or extension check. Shader stage already checks both. + parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveNV"); + parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangFragmentMask | EShLangMeshNVMask), "perprimitiveNV"); + // Fragment shader stage doesn't check for extension. So we explicitly add below extension check. + if (parseContext.language == EShLangFragment) + parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_NV_mesh_shader, "perprimitiveNV"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.perPrimitiveNV = true; + } +#line 5572 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 138: +#line 1225 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + // No need for profile version or extension check. Shader stage already checks both. + parseContext.globalCheck((yyvsp[0].lex).loc, "perviewNV"); + parseContext.requireStage((yyvsp[0].lex).loc, EShLangMeshNV, "perviewNV"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.perViewNV = true; + } +#line 5584 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 139: +#line 1232 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + // No need for profile version or extension check. Shader stage already checks both. + parseContext.globalCheck((yyvsp[0].lex).loc, "taskNV"); + parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTaskNVMask | EShLangMeshNVMask), "taskNV"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.perTaskNV = true; + } +#line 5596 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 140: +#line 1243 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[-1].interm.type); } -#line 3632 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5604 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 126: -#line 1062 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 141: +#line 1249 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 3640 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5612 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 127: -#line 1065 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 142: +#line 1252 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[-2].interm.type); (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 3650 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5622 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 128: -#line 1072 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 143: +#line 1259 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string); } -#line 3659 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5631 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 129: -#line 1076 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 144: +#line 1263 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[-2].lex).loc); parseContext.setLayoutQualifier((yyvsp[-2].lex).loc, (yyval.interm.type), *(yyvsp[-2].lex).string, (yyvsp[0].interm.intermTypedNode)); } -#line 3668 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5640 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 130: -#line 1080 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 145: +#line 1267 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // because "shared" is both an identifier and a keyword (yyval.interm.type).init((yyvsp[0].lex).loc); TString strShared("shared"); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), strShared); } -#line 3678 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5650 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 131: -#line 1090 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 146: +#line 1276 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.profileRequires((yyval.interm.type).loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise"); + parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "precise"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.noContraction = true; + } +#line 5661 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 147: +#line 1286 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 3686 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5669 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 132: -#line 1093 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 148: +#line 1289 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[-1].interm.type); if ((yyval.interm.type).basicType == EbtVoid) @@ -3695,95 +5678,112 @@ yyreduce: (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeQualifiers((yyval.interm.type).loc, (yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 3699 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5682 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 133: -#line 1104 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 149: +#line 1300 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 3707 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5690 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 134: -#line 1107 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 150: +#line 1303 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 3715 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5698 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 135: -#line 1110 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 151: +#line 1306 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 3724 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5707 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 136: -#line 1114 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 152: +#line 1310 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 3733 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5716 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 137: -#line 1118 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 153: +#line 1314 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 3742 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5725 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 138: -#line 1126 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 154: +#line 1319 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + // allow inheritance of storage qualifier from block declaration + (yyval.interm.type) = (yyvsp[0].interm.type); + } +#line 5734 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 155: +#line 1323 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type) = (yyvsp[0].interm.type); + } +#line 5742 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 156: +#line 1330 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqConst; // will later turn into EvqConstReadOnly, if the initializer is not constant } -#line 3751 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5751 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 139: -#line 1130 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 157: +#line 1334 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "inout"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqInOut; } -#line 3761 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5761 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 140: -#line 1135 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 158: +#line 1339 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "in"); (yyval.interm.type).init((yyvsp[0].lex).loc); // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqIn; } -#line 3772 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5772 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 141: -#line 1141 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 159: +#line 1345 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "out"); (yyval.interm.type).init((yyvsp[0].lex).loc); // whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqOut; } -#line 3783 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5783 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 142: -#line 1147 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 160: +#line 1351 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, 0, "centroid"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "centroid"); @@ -3791,21 +5791,21 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.centroid = true; } -#line 3795 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5795 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 143: -#line 1154 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 161: +#line 1358 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "uniform"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqUniform; } -#line 3805 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5805 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 144: -#line 1159 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 162: +#line 1363 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "shared"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared"); @@ -3814,31 +5814,296 @@ yyreduce: (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqShared; } -#line 3818 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5818 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 145: -#line 1167 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 163: +#line 1371 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.globalCheck((yyvsp[0].lex).loc, "buffer"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqBuffer; } -#line 3828 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 5828 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 146: -#line 1178 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 164: +#line 1377 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.requireStage((yyvsp[0].lex).loc, EShLangVertex, "attribute"); + parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "attribute"); + parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "attribute"); + parseContext.requireNotRemoved((yyvsp[0].lex).loc, ECoreProfile, 420, "attribute"); + parseContext.requireNotRemoved((yyvsp[0].lex).loc, EEsProfile, 300, "attribute"); + + parseContext.globalCheck((yyvsp[0].lex).loc, "attribute"); + + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.storage = EvqVaryingIn; + } +#line 5845 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 165: +#line 1389 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "varying"); + parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "varying"); + parseContext.requireNotRemoved((yyvsp[0].lex).loc, ECoreProfile, 420, "varying"); + parseContext.requireNotRemoved((yyvsp[0].lex).loc, EEsProfile, 300, "varying"); + + parseContext.globalCheck((yyvsp[0].lex).loc, "varying"); + + (yyval.interm.type).init((yyvsp[0].lex).loc); + if (parseContext.language == EShLangVertex) + (yyval.interm.type).qualifier.storage = EvqVaryingOut; + else + (yyval.interm.type).qualifier.storage = EvqVaryingIn; + } +#line 5864 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 166: +#line 1403 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.globalCheck((yyvsp[0].lex).loc, "patch"); + parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.patch = true; + } +#line 5875 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 167: +#line 1409 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.globalCheck((yyvsp[0].lex).loc, "sample"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.sample = true; + } +#line 5885 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 168: +#line 1414 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV"); + parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectNVMask | EShLangClosestHitNVMask + | EShLangAnyHitNVMask), "hitAttributeNV"); + parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "hitAttributeNV"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.storage = EvqHitAttrNV; + } +#line 5898 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 169: +#line 1422 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadNV"); + parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenNVMask | EShLangClosestHitNVMask | + EShLangAnyHitNVMask | EShLangMissNVMask), "rayPayloadNV"); + parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "rayPayloadNV"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.storage = EvqPayloadNV; + } +#line 5911 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 170: +#line 1430 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInNV"); + parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitNVMask | + EShLangAnyHitNVMask | EShLangMissNVMask), "rayPayloadInNV"); + parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "rayPayloadInNV"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.storage = EvqPayloadInNV; + } +#line 5924 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 171: +#line 1438 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataNV"); + parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenNVMask | + EShLangClosestHitNVMask | EShLangMissNVMask | EShLangCallableNVMask), "callableDataNV"); + parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "callableDataNV"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.storage = EvqCallableDataNV; + } +#line 5937 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 172: +#line 1446 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInNV"); + parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableNVMask), "callableDataInNV"); + parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "callableDataInNV"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.storage = EvqCallableDataInNV; + } +#line 5949 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 173: +#line 1453 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.coherent = true; + } +#line 5958 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 174: +#line 1457 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc); + parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "devicecoherent"); + (yyval.interm.type).qualifier.devicecoherent = true; + } +#line 5968 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 175: +#line 1462 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc); + parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "queuefamilycoherent"); + (yyval.interm.type).qualifier.queuefamilycoherent = true; + } +#line 5978 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 176: +#line 1467 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc); + parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "workgroupcoherent"); + (yyval.interm.type).qualifier.workgroupcoherent = true; + } +#line 5988 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 177: +#line 1472 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc); + parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "subgroupcoherent"); + (yyval.interm.type).qualifier.subgroupcoherent = true; + } +#line 5998 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 178: +#line 1477 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc); + parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "nonprivate"); + (yyval.interm.type).qualifier.nonprivate = true; + } +#line 6008 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 179: +#line 1482 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.volatil = true; + } +#line 6017 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 180: +#line 1486 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.restrict = true; + } +#line 6026 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 181: +#line 1490 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.readonly = true; + } +#line 6035 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 182: +#line 1494 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.writeonly = true; + } +#line 6044 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 183: +#line 1498 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.spvRemoved((yyvsp[0].lex).loc, "subroutine"); + parseContext.globalCheck((yyvsp[0].lex).loc, "subroutine"); + parseContext.unimplemented((yyvsp[0].lex).loc, "subroutine"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + } +#line 6055 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 184: +#line 1504 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.spvRemoved((yyvsp[-3].lex).loc, "subroutine"); + parseContext.globalCheck((yyvsp[-3].lex).loc, "subroutine"); + parseContext.unimplemented((yyvsp[-3].lex).loc, "subroutine"); + (yyval.interm.type).init((yyvsp[-3].lex).loc); + } +#line 6066 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 185: +#line 1515 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.nonUniform = true; + } +#line 6075 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 186: +#line 1522 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + // TODO + } +#line 6083 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 187: +#line 1525 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + // TODO: 4.0 semantics: subroutines + // 1) make sure each identifier is a type declared earlier with SUBROUTINE + // 2) save all of the identifiers for future comparison with the declared function + } +#line 6093 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 188: +#line 1534 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[-1].interm.type); (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); (yyval.interm.type).typeParameters = (yyvsp[0].interm.typeParameters); } -#line 3838 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6103 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 147: -#line 1183 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 189: +#line 1539 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.arrayOfArrayVersionCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes); (yyval.interm.type) = (yyvsp[-2].interm.type); @@ -3846,21 +6111,21 @@ yyreduce: (yyval.interm.type).typeParameters = (yyvsp[-1].interm.typeParameters); (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes; } -#line 3850 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6115 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 148: -#line 1193 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 190: +#line 1549 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).arraySizes = new TArraySizes; (yyval.interm).arraySizes->addInnerSize(); } -#line 3860 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6125 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 149: -#line 1198 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 191: +#line 1554 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm).loc = (yyvsp[-2].lex).loc; (yyval.interm).arraySizes = new TArraySizes; @@ -3869,20 +6134,20 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 3873 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6138 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 150: -#line 1206 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 192: +#line 1562 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-2].interm); (yyval.interm).arraySizes->addInnerSize(); } -#line 3882 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6147 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 151: -#line 1210 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 193: +#line 1566 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm) = (yyvsp[-3].interm); @@ -3890,35 +6155,35 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 3894 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6159 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 152: -#line 1220 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 194: +#line 1576 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeParameters) = (yyvsp[0].interm.typeParameters); } -#line 3902 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6167 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 153: -#line 1223 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 195: +#line 1579 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeParameters) = 0; } -#line 3910 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6175 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 154: -#line 1229 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 196: +#line 1585 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeParameters) = (yyvsp[-1].interm.typeParameters); } -#line 3918 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6183 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 155: -#line 1235 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 197: +#line 1591 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeParameters) = new TArraySizes; @@ -3926,11 +6191,11 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); (yyval.interm.typeParameters)->addInnerSize(size); } -#line 3930 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6195 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 156: -#line 1242 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 198: +#line 1598 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeParameters) = (yyvsp[-2].interm.typeParameters); @@ -3938,600 +6203,3038 @@ yyreduce: parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); (yyval.interm.typeParameters)->addInnerSize(size); } -#line 3942 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6207 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 157: -#line 1252 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 199: +#line 1608 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtVoid; } -#line 3951 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6216 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 158: -#line 1256 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 200: +#line 1612 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 3960 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6225 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 159: -#line 1260 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 201: +#line 1616 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 3969 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6234 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 160: -#line 1264 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 202: +#line 1620 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 3979 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6244 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 161: -#line 1269 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 203: +#line 1625 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; } -#line 3988 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6253 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 162: -#line 1273 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 204: +#line 1629 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 3998 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6263 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 163: -#line 1278 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 205: +#line 1634 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 4008 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6273 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 164: -#line 1283 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 206: +#line 1639 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 4018 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6283 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 165: -#line 1288 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 207: +#line 1644 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(2); } -#line 4028 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6293 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 166: -#line 1293 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 208: +#line 1649 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(3); } -#line 4038 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6303 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 167: -#line 1298 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 209: +#line 1654 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(4); } -#line 4048 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6313 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 168: -#line 1303 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 210: +#line 1659 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 4058 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6323 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 169: -#line 1308 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 211: +#line 1664 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 4068 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6333 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 170: -#line 1313 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 212: +#line 1669 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 4078 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6343 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 171: -#line 1318 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 213: +#line 1674 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 4089 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6354 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 172: -#line 1324 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 214: +#line 1680 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 4100 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6365 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 173: -#line 1330 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 215: +#line 1686 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 4111 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6376 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 174: -#line 1336 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 216: +#line 1692 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 4121 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6386 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 175: -#line 1341 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 217: +#line 1697 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 4131 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6396 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 176: -#line 1346 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 218: +#line 1702 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 4141 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6406 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 177: -#line 1351 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 219: +#line 1707 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 4151 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6416 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 178: -#line 1356 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 220: +#line 1712 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 4161 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6426 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 179: -#line 1361 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 221: +#line 1717 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 4171 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6436 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 180: -#line 1366 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 222: +#line 1722 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 4181 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6446 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 181: -#line 1371 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 223: +#line 1727 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 4191 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6456 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 182: -#line 1376 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 224: +#line 1732 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 4201 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6466 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 183: -#line 1381 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 225: +#line 1737 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 4211 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6476 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 184: -#line 1386 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 226: +#line 1742 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 4221 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6486 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 185: -#line 1391 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 227: +#line 1747 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 4231 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 6496 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 186: -#line 1397 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 228: +#line 1753 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.doubleCheck((yyvsp[0].lex).loc, "double"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + } +#line 6506 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 229: +#line 1758 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "float16_t", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + } +#line 6516 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 230: +#line 1763 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + } +#line 6526 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 231: +#line 1768 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + } +#line 6536 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 232: +#line 1773 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt8; + } +#line 6546 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 233: +#line 1778 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint8; + } +#line 6556 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 234: +#line 1783 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt16; + } +#line 6566 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 235: +#line 1788 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint16; + } +#line 6576 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 236: +#line 1793 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; + } +#line 6586 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 237: +#line 1798 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint; + } +#line 6596 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 238: +#line 1803 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt64; + } +#line 6606 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 239: +#line 1808 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint64; + } +#line 6616 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 240: +#line 1813 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setVector(2); + } +#line 6627 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 241: +#line 1819 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setVector(3); + } +#line 6638 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 242: +#line 1825 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setVector(4); + } +#line 6649 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 243: +#line 1831 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setVector(2); + } +#line 6660 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 244: +#line 1837 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setVector(3); + } +#line 6671 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 245: +#line 1843 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setVector(4); + } +#line 6682 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 246: +#line 1849 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setVector(2); + } +#line 6693 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 247: +#line 1855 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setVector(3); + } +#line 6704 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 248: +#line 1861 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setVector(4); + } +#line 6715 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 249: +#line 1867 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setVector(2); + } +#line 6726 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 250: +#line 1873 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setVector(3); + } +#line 6737 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 251: +#line 1879 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setVector(4); + } +#line 6748 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 252: +#line 1885 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt8; + (yyval.interm.type).setVector(2); + } +#line 6759 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 253: +#line 1891 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt8; + (yyval.interm.type).setVector(3); + } +#line 6770 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 254: +#line 1897 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt8; + (yyval.interm.type).setVector(4); + } +#line 6781 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 255: +#line 1903 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt16; + (yyval.interm.type).setVector(2); + } +#line 6792 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 256: +#line 1909 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt16; + (yyval.interm.type).setVector(3); + } +#line 6803 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 257: +#line 1915 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt16; + (yyval.interm.type).setVector(4); + } +#line 6814 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 258: +#line 1921 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).setVector(2); + } +#line 6825 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 259: +#line 1927 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).setVector(3); + } +#line 6836 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 260: +#line 1933 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).setVector(4); + } +#line 6847 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 261: +#line 1939 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt64; + (yyval.interm.type).setVector(2); + } +#line 6858 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 262: +#line 1945 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt64; + (yyval.interm.type).setVector(3); + } +#line 6869 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 263: +#line 1951 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt64; + (yyval.interm.type).setVector(4); + } +#line 6880 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 264: +#line 1957 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint8; + (yyval.interm.type).setVector(2); + } +#line 6891 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 265: +#line 1963 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint8; + (yyval.interm.type).setVector(3); + } +#line 6902 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 266: +#line 1969 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint8; + (yyval.interm.type).setVector(4); + } +#line 6913 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 267: +#line 1975 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint16; + (yyval.interm.type).setVector(2); + } +#line 6924 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 268: +#line 1981 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint16; + (yyval.interm.type).setVector(3); + } +#line 6935 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 269: +#line 1987 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint16; + (yyval.interm.type).setVector(4); + } +#line 6946 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 270: +#line 1993 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).setVector(2); + } +#line 6957 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 271: +#line 1999 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).setVector(3); + } +#line 6968 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 272: +#line 2005 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).setVector(4); + } +#line 6979 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 273: +#line 2011 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint64; + (yyval.interm.type).setVector(2); + } +#line 6990 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 274: +#line 2017 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint64; + (yyval.interm.type).setVector(3); + } +#line 7001 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 275: +#line 2023 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint64; + (yyval.interm.type).setVector(4); + } +#line 7012 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 276: +#line 2029 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(2, 2); + } +#line 7023 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 277: +#line 2035 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(3, 3); + } +#line 7034 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 278: +#line 2041 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(4, 4); + } +#line 7045 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 279: +#line 2047 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(2, 2); + } +#line 7056 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 280: +#line 2053 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(2, 3); + } +#line 7067 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 281: +#line 2059 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(2, 4); + } +#line 7078 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 282: +#line 2065 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(3, 2); + } +#line 7089 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 283: +#line 2071 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(3, 3); + } +#line 7100 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 284: +#line 2077 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(3, 4); + } +#line 7111 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 285: +#line 2083 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(4, 2); + } +#line 7122 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 286: +#line 2089 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(4, 3); + } +#line 7133 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 287: +#line 2095 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(4, 4); + } +#line 7144 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 288: +#line 2101 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(2, 2); + } +#line 7155 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 289: +#line 2107 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(3, 3); + } +#line 7166 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 290: +#line 2113 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(4, 4); + } +#line 7177 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 291: +#line 2119 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(2, 2); + } +#line 7188 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 292: +#line 2125 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(2, 3); + } +#line 7199 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 293: +#line 2131 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(2, 4); + } +#line 7210 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 294: +#line 2137 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(3, 2); + } +#line 7221 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 295: +#line 2143 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(3, 3); + } +#line 7232 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 296: +#line 2149 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(3, 4); + } +#line 7243 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 297: +#line 2155 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(4, 2); + } +#line 7254 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 298: +#line 2161 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(4, 3); + } +#line 7265 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 299: +#line 2167 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat16; + (yyval.interm.type).setMatrix(4, 4); + } +#line 7276 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 300: +#line 2173 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(2, 2); + } +#line 7287 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 301: +#line 2179 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(3, 3); + } +#line 7298 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 302: +#line 2185 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(4, 4); + } +#line 7309 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 303: +#line 2191 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(2, 2); + } +#line 7320 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 304: +#line 2197 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(2, 3); + } +#line 7331 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 305: +#line 2203 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(2, 4); + } +#line 7342 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 306: +#line 2209 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(3, 2); + } +#line 7353 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 307: +#line 2215 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(3, 3); + } +#line 7364 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 308: +#line 2221 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(3, 4); + } +#line 7375 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 309: +#line 2227 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(4, 2); + } +#line 7386 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 310: +#line 2233 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(4, 3); + } +#line 7397 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 311: +#line 2239 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).setMatrix(4, 4); + } +#line 7408 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 312: +#line 2245 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(2, 2); + } +#line 7419 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 313: +#line 2251 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(3, 3); + } +#line 7430 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 314: +#line 2257 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(4, 4); + } +#line 7441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 315: +#line 2263 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(2, 2); + } +#line 7452 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 316: +#line 2269 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(2, 3); + } +#line 7463 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 317: +#line 2275 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(2, 4); + } +#line 7474 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 318: +#line 2281 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(3, 2); + } +#line 7485 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 319: +#line 2287 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(3, 3); + } +#line 7496 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 320: +#line 2293 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(3, 4); + } +#line 7507 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 321: +#line 2299 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(4, 2); + } +#line 7518 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 322: +#line 2305 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(4, 3); + } +#line 7529 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 323: +#line 2311 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtDouble; + (yyval.interm.type).setMatrix(4, 4); + } +#line 7540 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 324: +#line 2317 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtAccStructNV; + } +#line 7549 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 325: +#line 2321 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.vulkanRemoved((yyvsp[0].lex).loc, "atomic counter types"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtAtomicUint; + } +#line 7559 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 326: +#line 2326 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd1D); + } +#line 7569 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 327: +#line 2332 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); } -#line 4241 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7579 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 187: -#line 1402 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 328: +#line 2337 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd3D); } -#line 4251 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7589 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 188: -#line 1407 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 329: +#line 2342 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube); } -#line 4261 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7599 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 189: -#line 1412 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 330: +#line 2347 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true); } -#line 4271 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7609 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 190: -#line 1417 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 331: +#line 2352 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true); } -#line 4281 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7619 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 191: -#line 1422 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 332: +#line 2357 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true); } -#line 4291 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7629 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 192: -#line 1427 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 333: +#line 2362 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true); } -#line 4301 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7639 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 193: -#line 1433 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 334: +#line 2368 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true); + } +#line 7649 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 335: +#line 2373 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true); + } +#line 7659 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 336: +#line 2378 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true); + } +#line 7669 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 337: +#line 2383 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true); + } +#line 7679 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 338: +#line 2388 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true); + } +#line 7689 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 339: +#line 2393 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat16, Esd1D); + } +#line 7700 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 340: +#line 2399 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat16, Esd2D); + } +#line 7711 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 341: +#line 2405 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat16, Esd3D); + } +#line 7722 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 342: +#line 2411 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat16, EsdCube); + } +#line 7733 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 343: +#line 2417 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, false, true); + } +#line 7744 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 344: +#line 2423 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, true); + } +#line 7755 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 345: +#line 2429 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, false, true); + } +#line 7766 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 346: +#line 2435 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true); + } +#line 7777 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 347: +#line 2441 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true); + } +#line 7788 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 348: +#line 2447 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true, true); + } +#line 7799 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 349: +#line 2453 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, true); + } +#line 7810 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 350: +#line 2459 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true); + } +#line 7821 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 351: +#line 2465 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true, true); + } +#line 7832 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 352: +#line 2471 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtInt, Esd1D); + } +#line 7842 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 353: +#line 2477 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D); } -#line 4311 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7852 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 194: -#line 1438 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 354: +#line 2482 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd3D); } -#line 4321 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7862 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 195: -#line 1443 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 355: +#line 2487 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube); } -#line 4331 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7872 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 196: -#line 1448 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 356: +#line 2492 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true); } -#line 4341 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7882 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 197: -#line 1453 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 357: +#line 2497 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D); } -#line 4351 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7892 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 198: -#line 1458 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 358: +#line 2502 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd3D); } -#line 4361 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7902 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 199: -#line 1463 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 359: +#line 2507 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube); } -#line 4371 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 7912 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 200: -#line 1469 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 360: +#line 2513 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtInt, Esd1D, true); + } +#line 7922 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 361: +#line 2518 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtInt, EsdCube, true); + } +#line 7932 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 362: +#line 2523 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtUint, Esd1D); + } +#line 7942 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 363: +#line 2528 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtUint, Esd1D, true); + } +#line 7952 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 364: +#line 2533 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtUint, EsdCube, true); + } +#line 7962 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 365: +#line 2538 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true); + } +#line 7972 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 366: +#line 2543 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true); + } +#line 7982 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 367: +#line 2548 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true); + } +#line 7992 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 368: +#line 2554 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true); } -#line 4381 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8002 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 201: -#line 1474 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 369: +#line 2559 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D); } -#line 4391 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8012 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 202: -#line 1479 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 370: +#line 2564 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D); } -#line 4401 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8022 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 203: -#line 1484 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 371: +#line 2569 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true); } -#line 4411 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8032 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 204: -#line 1489 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 372: +#line 2574 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube); } -#line 4421 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8042 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 205: -#line 1494 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 373: +#line 2579 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D); } -#line 4431 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8052 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 206: -#line 1499 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 374: +#line 2584 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D); } -#line 4441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8062 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 207: -#line 1504 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 375: +#line 2589 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube); } -#line 4451 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8072 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 208: -#line 1509 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 376: +#line 2594 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true); } -#line 4461 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8082 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 209: -#line 1514 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 377: +#line 2599 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D); } -#line 4471 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8092 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 210: -#line 1519 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 378: +#line 2604 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D); } -#line 4481 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8102 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 211: -#line 1524 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 379: +#line 2609 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube); } -#line 4491 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8112 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 212: -#line 1529 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 380: +#line 2614 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true); } -#line 4501 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8122 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 213: -#line 1534 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 381: +#line 2619 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(false); } -#line 4511 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8132 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 214: -#line 1539 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 382: +#line 2624 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(true); } -#line 4521 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 8142 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 215: -#line 1545 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 383: +#line 2630 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, EsdRect); + } +#line 8152 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 384: +#line 2635 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true); + } +#line 8162 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 385: +#line 2640 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat16, EsdRect); + } +#line 8173 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 386: +#line 2646 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat16, EsdRect, false, true); + } +#line 8184 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 387: +#line 2652 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtInt, EsdRect); + } +#line 8194 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 388: +#line 2657 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtUint, EsdRect); + } +#line 8204 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 389: +#line 2662 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer); + } +#line 8214 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 390: +#line 2667 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat16, EsdBuffer); + } +#line 8225 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 391: +#line 2673 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtInt, EsdBuffer); + } +#line 8235 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 392: +#line 2678 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtUint, EsdBuffer); + } +#line 8245 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 393: +#line 2683 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true); + } +#line 8255 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 394: +#line 2688 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, false, true); + } +#line 8266 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 395: +#line 2694 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true); + } +#line 8276 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 396: +#line 2699 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true); + } +#line 8286 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 397: +#line 2704 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true); + } +#line 8296 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 398: +#line 2709 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, false, true); + } +#line 8307 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 399: +#line 2715 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true); + } +#line 8317 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 400: +#line 2720 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true); + } +#line 8327 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 401: +#line 2725 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D); + } +#line 8337 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 402: +#line 2730 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D); + } +#line 8348 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 403: +#line 2736 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D); + } +#line 8359 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 404: +#line 2742 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd3D); + } +#line 8370 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 405: +#line 2748 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube); + } +#line 8381 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 406: +#line 2754 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true); + } +#line 8391 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 407: +#line 2759 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D, true); + } +#line 8402 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 408: +#line 2765 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true); + } +#line 8413 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 409: +#line 2771 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube, true); + } +#line 8424 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 410: +#line 2777 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D); + } +#line 8434 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 411: +#line 2782 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true); + } +#line 8444 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 412: +#line 2787 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D); + } +#line 8454 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 413: +#line 2792 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true); + } +#line 8464 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 414: +#line 2797 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect); + } +#line 8474 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 415: +#line 2802 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdRect); + } +#line 8485 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 416: +#line 2808 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtInt, EsdRect); + } +#line 8495 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 417: +#line 2813 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtUint, EsdRect); + } +#line 8505 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 418: +#line 2818 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer); + } +#line 8515 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 419: +#line 2823 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdBuffer); + } +#line 8526 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 420: +#line 2829 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer); + } +#line 8536 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 421: +#line 2834 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer); + } +#line 8546 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 422: +#line 2839 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true); + } +#line 8556 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 423: +#line 2844 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, false, false, true); + } +#line 8567 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 424: +#line 2850 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true); + } +#line 8577 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 425: +#line 2855 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true); + } +#line 8587 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 426: +#line 2860 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true); + } +#line 8597 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 427: +#line 2865 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true, false, true); + } +#line 8608 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 428: +#line 2871 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true); + } +#line 8618 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 429: +#line 2876 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true); + } +#line 8628 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 430: +#line 2881 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D); + } +#line 8638 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 431: +#line 2886 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D); + } +#line 8649 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 432: +#line 2892 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, Esd1D); + } +#line 8659 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 433: +#line 2897 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, Esd1D); + } +#line 8669 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 434: +#line 2902 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D); + } +#line 8679 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 435: +#line 2907 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D); + } +#line 8690 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 436: +#line 2913 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, Esd2D); + } +#line 8700 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 437: +#line 2918 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, Esd2D); + } +#line 8710 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 438: +#line 2923 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, Esd3D); + } +#line 8720 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 439: +#line 2928 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat16, Esd3D); + } +#line 8731 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 440: +#line 2934 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, Esd3D); + } +#line 8741 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 441: +#line 2939 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, Esd3D); + } +#line 8751 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 442: +#line 2944 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, EsdRect); + } +#line 8761 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 443: +#line 2949 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat16, EsdRect); + } +#line 8772 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 444: +#line 2955 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, EsdRect); + } +#line 8782 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 445: +#line 2960 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, EsdRect); + } +#line 8792 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 446: +#line 2965 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube); + } +#line 8802 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 447: +#line 2970 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube); + } +#line 8813 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 448: +#line 2976 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, EsdCube); + } +#line 8823 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 449: +#line 2981 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, EsdCube); + } +#line 8833 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 450: +#line 2986 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer); + } +#line 8843 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 451: +#line 2991 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat16, EsdBuffer); + } +#line 8854 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 452: +#line 2997 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer); + } +#line 8864 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 453: +#line 3002 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer); + } +#line 8874 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 454: +#line 3007 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true); + } +#line 8884 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 455: +#line 3012 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D, true); + } +#line 8895 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 456: +#line 3018 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true); + } +#line 8905 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 457: +#line 3023 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true); + } +#line 8915 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 458: +#line 3028 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true); + } +#line 8925 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 459: +#line 3033 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true); + } +#line 8936 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 460: +#line 3039 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true); + } +#line 8946 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 461: +#line 3044 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true); + } +#line 8956 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 462: +#line 3049 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true); + } +#line 8966 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 463: +#line 3054 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube, true); + } +#line 8977 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 464: +#line 3060 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true); + } +#line 8987 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 465: +#line 3065 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true); + } +#line 8997 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 466: +#line 3070 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true); + } +#line 9007 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 467: +#line 3075 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, false, false, true); + } +#line 9018 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 468: +#line 3081 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true); + } +#line 9028 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 469: +#line 3086 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true); + } +#line 9038 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 470: +#line 3091 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true); + } +#line 9048 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 471: +#line 3096 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true, false, true); + } +#line 9059 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 472: +#line 3102 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true); + } +#line 9069 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 473: +#line 3107 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true); + } +#line 9079 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 474: +#line 3112 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { // GL_OES_EGL_image_external + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd2D); + (yyval.interm.type).sampler.external = true; + } +#line 9090 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 475: +#line 3118 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { // GL_EXT_YUV_target + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.set(EbtFloat, Esd2D); + (yyval.interm.type).sampler.yuv = true; + } +#line 9101 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 476: +#line 3124 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setSubpass(EbtFloat); + } +#line 9112 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 477: +#line 3130 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setSubpass(EbtFloat, true); + } +#line 9123 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 478: +#line 3136 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); + parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setSubpass(EbtFloat16); + } +#line 9135 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 479: +#line 3143 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); + parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setSubpass(EbtFloat16, true); + } +#line 9147 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 480: +#line 3150 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setSubpass(EbtInt); + } +#line 9158 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 481: +#line 3156 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setSubpass(EbtInt, true); + } +#line 9169 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 482: +#line 3162 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setSubpass(EbtUint); + } +#line 9180 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 483: +#line 3168 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setSubpass(EbtUint, true); + } +#line 9191 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 484: +#line 3174 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.fcoopmatCheck((yyvsp[0].lex).loc, "fcoopmatNV", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtFloat; + (yyval.interm.type).coopmat = true; + } +#line 9202 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 485: +#line 3180 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.intcoopmatCheck((yyvsp[0].lex).loc, "icoopmatNV", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtInt; + (yyval.interm.type).coopmat = true; + } +#line 9213 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 486: +#line 3186 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.intcoopmatCheck((yyvsp[0].lex).loc, "ucoopmatNV", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtUint; + (yyval.interm.type).coopmat = true; + } +#line 9224 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 487: +#line 3193 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.type) = (yyvsp[0].interm.type); (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type)); } -#line 4531 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9234 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 216: -#line 1550 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 488: +#line 3198 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // // This is for user defined type names. The lexical phase looked up the @@ -4545,47 +9248,47 @@ yyreduce: } else parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), ""); } -#line 4549 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9252 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 217: -#line 1566 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 489: +#line 3214 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "highp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh); } -#line 4559 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9262 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 218: -#line 1571 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 490: +#line 3219 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium); } -#line 4569 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9272 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 219: -#line 1576 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 491: +#line 3224 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow); } -#line 4579 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9282 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 220: -#line 1584 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 492: +#line 3232 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); } -#line 4585 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9288 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 221: -#line 1584 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 493: +#line 3232 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { TType* structure = new TType((yyvsp[-1].interm.typeList), *(yyvsp[-4].lex).string); parseContext.structArrayCheck((yyvsp[-4].lex).loc, *structure); @@ -4597,17 +9300,17 @@ yyreduce: (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 4601 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9304 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 222: -#line 1595 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 494: +#line 3243 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); } -#line 4607 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9310 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 223: -#line 1595 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 495: +#line 3243 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { TType* structure = new TType((yyvsp[-1].interm.typeList), TString("")); (yyval.interm.type).init((yyvsp[-4].lex).loc); @@ -4615,19 +9318,19 @@ yyreduce: (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 4619 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9322 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 224: -#line 1605 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 496: +#line 3253 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeList) = (yyvsp[0].interm.typeList); } -#line 4627 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9330 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 225: -#line 1608 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 497: +#line 3256 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeList) = (yyvsp[-1].interm.typeList); for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) { @@ -4638,11 +9341,11 @@ yyreduce: (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]); } } -#line 4642 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9345 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 226: -#line 1621 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 498: +#line 3269 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -4665,11 +9368,11 @@ yyreduce: (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 4669 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9372 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 227: -#line 1643 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 499: +#line 3291 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -4694,38 +9397,38 @@ yyreduce: (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 4698 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9401 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 228: -#line 1670 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 500: +#line 3318 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeList) = new TTypeList; (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 4707 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9410 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 229: -#line 1674 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 501: +#line 3322 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 4715 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9418 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 230: -#line 1680 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 502: +#line 3328 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.typeLine).type = new TType(EbtVoid); (yyval.interm.typeLine).loc = (yyvsp[0].lex).loc; (yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string); } -#line 4725 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9428 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 231: -#line 1685 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 503: +#line 3333 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes); @@ -4734,181 +9437,235 @@ yyreduce: (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string); (yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes); } -#line 4738 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 232: -#line 1696 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 504: +#line 3344 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 4746 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9449 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 233: -#line 1705 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 505: +#line 3348 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + const char* initFeature = "{ } style initializers"; + parseContext.requireProfile((yyvsp[-2].lex).loc, ~EEsProfile, initFeature); + parseContext.profileRequires((yyvsp[-2].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); + (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); + } +#line 9460 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 506: +#line 3354 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + const char* initFeature = "{ } style initializers"; + parseContext.requireProfile((yyvsp[-3].lex).loc, ~EEsProfile, initFeature); + parseContext.profileRequires((yyvsp[-3].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); + (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); + } +#line 9471 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 507: +#line 3365 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc()); + } +#line 9479 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 508: +#line 3368 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); + } +#line 9487 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 509: +#line 3375 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4752 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9493 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 234: -#line 1709 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 510: +#line 3379 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4758 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9499 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 235: -#line 1710 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 511: +#line 3380 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4764 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9505 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 236: -#line 1716 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 512: +#line 3386 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4770 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9511 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 237: -#line 1717 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 513: +#line 3387 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4776 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9517 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 238: -#line 1718 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 514: +#line 3388 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4782 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9523 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 239: -#line 1719 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 515: +#line 3389 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4788 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9529 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 240: -#line 1720 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 516: +#line 3390 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4794 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9535 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 241: -#line 1721 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 517: +#line 3391 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4800 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9541 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 242: -#line 1722 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 518: +#line 3392 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4806 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9547 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 243: -#line 1729 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 519: +#line 3394 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } +#line 9553 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 520: +#line 3400 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "demote"); + parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_demote_to_helper_invocation, "demote"); + (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDemote, (yyvsp[-1].lex).loc); + } +#line 9563 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 521: +#line 3409 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; } -#line 4812 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9569 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 244: -#line 1730 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 522: +#line 3410 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; } -#line 4821 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9578 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 245: -#line 1734 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 523: +#line 3414 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; } -#line 4830 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9587 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 246: -#line 1738 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 524: +#line 3418 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate()) (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode); } -#line 4840 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9597 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 247: -#line 1746 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 525: +#line 3426 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4846 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9603 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 248: -#line 1747 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 526: +#line 3427 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4852 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9609 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 249: -#line 1751 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 527: +#line 3431 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { ++parseContext.controlFlowNestingLevel; } -#line 4860 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9617 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 250: -#line 1754 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 528: +#line 3434 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4869 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9626 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 251: -#line 1758 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 529: +#line 3438 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 4879 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9636 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 252: -#line 1763 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 530: +#line 3443 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4890 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9647 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 253: -#line 1772 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 531: +#line 3452 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; } -#line 4898 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9655 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 254: -#line 1775 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 532: +#line 3455 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate()) (yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode); } -#line 4908 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9665 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 255: -#line 1783 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 533: +#line 3463 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || @@ -4917,11 +9674,11 @@ yyreduce: (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case } } -#line 4921 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9678 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 256: -#line 1791 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 534: +#line 3471 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { @@ -4930,67 +9687,76 @@ yyreduce: } else (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 4934 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9691 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 257: -#line 1802 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 535: +#line 3482 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; } -#line 4940 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9697 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 258: -#line 1803 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 536: +#line 3483 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = static_cast((yyvsp[-1].interm.intermTypedNode)); } -#line 4946 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9703 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 259: -#line 1807 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 537: +#line 3487 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 4954 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9711 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 260: -#line 1813 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 538: +#line 3491 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + } +#line 9720 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 539: +#line 3498 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode)); (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc); } -#line 4963 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9729 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 261: -#line 1820 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 540: +#line 3505 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode); } -#line 4972 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9738 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 262: -#line 1824 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 541: +#line 3509 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode); (yyval.interm.nodePair).node2 = 0; } -#line 4981 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9747 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 263: -#line 1832 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 542: +#line 3517 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)); } -#line 4990 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9756 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 264: -#line 1836 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 543: +#line 3521 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type)); @@ -5001,19 +9767,28 @@ yyreduce: else (yyval.interm.intermTypedNode) = 0; } -#line 5005 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9771 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 265: -#line 1849 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 544: +#line 3534 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 5013 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9779 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 266: -#line 1855 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 545: +#line 3538 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + } +#line 9788 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 546: +#line 3545 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // start new switch sequence on the switch stack ++parseContext.controlFlowNestingLevel; @@ -5022,11 +9797,11 @@ yyreduce: parseContext.switchLevel.push_back(parseContext.statementNestingLevel); parseContext.symbolTable.push(); } -#line 5026 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9801 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 267: -#line 1863 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 547: +#line 3553 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0); delete parseContext.switchSequenceStack.back(); @@ -5036,27 +9811,27 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 5040 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9815 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 268: -#line 1875 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 548: +#line 3565 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; } -#line 5048 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9823 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 269: -#line 1878 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 549: +#line 3568 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 5056 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9831 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 270: -#line 1884 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 550: +#line 3574 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -5069,11 +9844,11 @@ yyreduce: (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc); } } -#line 5073 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9848 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 271: -#line 1896 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 551: +#line 3586 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -5083,19 +9858,28 @@ yyreduce: else (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc); } -#line 5087 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9862 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 272: -#line 1908 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 552: +#line 3598 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 5095 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9870 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 273: -#line 1914 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 553: +#line 3602 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); + (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); + } +#line 9879 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 554: +#line 3609 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", ""); @@ -5104,11 +9888,11 @@ yyreduce: ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 5108 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9892 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 274: -#line 1922 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 555: +#line 3617 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc); @@ -5116,21 +9900,21 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 5120 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9904 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 275: -#line 1929 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 556: +#line 3624 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 5130 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9914 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 276: -#line 1934 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 557: +#line 3629 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", ""); @@ -5142,22 +9926,22 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 5146 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9930 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 277: -#line 1945 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 558: +#line 3640 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 5157 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9941 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 278: -#line 1951 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 559: +#line 3646 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc); @@ -5170,81 +9954,81 @@ yyreduce: --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 5174 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9958 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 279: -#line 1966 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 560: +#line 3661 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 5182 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9966 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 280: -#line 1969 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 561: +#line 3664 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 5190 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9974 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 281: -#line 1975 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 562: +#line 3670 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5198 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9982 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 282: -#line 1978 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 563: +#line 3673 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermTypedNode) = 0; } -#line 5206 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9990 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 283: -#line 1984 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 564: +#line 3679 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); (yyval.interm.nodePair).node2 = 0; } -#line 5215 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 9999 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 284: -#line 1988 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 565: +#line 3683 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode); } -#line 5224 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10008 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 285: -#line 1995 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 566: +#line 3690 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if (parseContext.loopNestingLevel <= 0) parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc); } -#line 5234 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10018 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 286: -#line 2000 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 567: +#line 3695 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0) parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc); } -#line 5244 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10028 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 287: -#line 2005 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 568: +#line 3700 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc); if (parseContext.currentFunctionType->getBasicType() != EbtVoid) @@ -5252,73 +10036,83 @@ yyreduce: if (parseContext.inMain) parseContext.postEntryPointReturn = true; } -#line 5256 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10040 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 288: -#line 2012 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 569: +#line 3707 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); } -#line 5264 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10048 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 289: -#line 2015 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 570: +#line 3710 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc); } -#line 5273 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10057 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 290: -#line 2024 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 571: +#line 3719 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } -#line 5282 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10066 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 291: -#line 2028 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 572: +#line 3723 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { if ((yyvsp[0].interm.intermNode) != nullptr) { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } } -#line 5293 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10077 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 292: -#line 2037 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 573: +#line 3732 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 5301 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10085 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 293: -#line 2040 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 574: +#line 3735 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 5309 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10093 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 294: -#line 2047 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 575: +#line 3739 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "extraneous semicolon"); + parseContext.profileRequires((yyvsp[0].lex).loc, ~EEsProfile, 460, nullptr, "extraneous semicolon"); + (yyval.interm.intermNode) = nullptr; + } +#line 10103 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 576: +#line 3748 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { (yyvsp[0].interm).function = parseContext.handleFunctionDeclarator((yyvsp[0].interm).loc, *(yyvsp[0].interm).function, false /* not prototype */); (yyvsp[0].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[0].interm).loc, *(yyvsp[0].interm).function); } -#line 5318 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10112 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; - case 295: -#line 2051 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + case 577: +#line 3752 "MachineIndependent/glslang.y" /* yacc.c:1646 */ { // May be best done as post process phase on intermediate code if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) @@ -5334,11 +10128,52 @@ yyreduce: (yyval.interm.intermNode)->getAsAggregate()->setDebug(parseContext.contextPragma.debug); (yyval.interm.intermNode)->getAsAggregate()->setPragmaTable(parseContext.contextPragma.pragmaTable); } -#line 5338 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10132 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 578: +#line 3771 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.attributes) = (yyvsp[-2].interm.attributes); + parseContext.requireExtensions((yyvsp[-4].lex).loc, 1, &E_GL_EXT_control_flow_attributes, "attribute"); + } +#line 10141 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 579: +#line 3777 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.attributes) = (yyvsp[0].interm.attributes); + } +#line 10149 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 580: +#line 3780 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes)); + } +#line 10157 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 581: +#line 3785 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string); + } +#line 10165 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ + break; + + case 582: +#line 3788 "MachineIndependent/glslang.y" /* yacc.c:1646 */ + { + (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode)); + } +#line 10173 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ break; -#line 5342 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ +#line 10177 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -5566,5 +10401,5 @@ yyreturn: #endif return yyresult; } -#line 2070 "MachineIndependent/glslang.y" /* yacc.c:1906 */ +#line 3793 "MachineIndependent/glslang.y" /* yacc.c:1906 */ diff --git a/glslang/MachineIndependent/glslang_tab.cpp.h b/glslang/MachineIndependent/glslang_tab.cpp.h index 1a2ec999..f4f41147 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp.h +++ b/glslang/MachineIndependent/glslang_tab.cpp.h @@ -103,89 +103,356 @@ extern int yydebug; UTEXTURE3D = 313, UTEXTURECUBE = 314, UTEXTURE2DARRAY = 315, - LEFT_OP = 316, - RIGHT_OP = 317, - INC_OP = 318, - DEC_OP = 319, - LE_OP = 320, - GE_OP = 321, - EQ_OP = 322, - NE_OP = 323, - AND_OP = 324, - OR_OP = 325, - XOR_OP = 326, - MUL_ASSIGN = 327, - DIV_ASSIGN = 328, - ADD_ASSIGN = 329, - MOD_ASSIGN = 330, - LEFT_ASSIGN = 331, - RIGHT_ASSIGN = 332, - AND_ASSIGN = 333, - XOR_ASSIGN = 334, - OR_ASSIGN = 335, - SUB_ASSIGN = 336, - LEFT_PAREN = 337, - RIGHT_PAREN = 338, - LEFT_BRACKET = 339, - RIGHT_BRACKET = 340, - LEFT_BRACE = 341, - RIGHT_BRACE = 342, - DOT = 343, - COMMA = 344, - COLON = 345, - EQUAL = 346, - SEMICOLON = 347, - BANG = 348, - DASH = 349, - TILDE = 350, - PLUS = 351, - STAR = 352, - SLASH = 353, - PERCENT = 354, - LEFT_ANGLE = 355, - RIGHT_ANGLE = 356, - VERTICAL_BAR = 357, - CARET = 358, - AMPERSAND = 359, - QUESTION = 360, - INVARIANT = 361, - HIGH_PRECISION = 362, - MEDIUM_PRECISION = 363, - LOW_PRECISION = 364, - PRECISION = 365, - PACKED = 366, - RESOURCE = 367, - SUPERP = 368, - FLOATCONSTANT = 369, - INTCONSTANT = 370, - UINTCONSTANT = 371, - BOOLCONSTANT = 372, - IDENTIFIER = 373, - TYPE_NAME = 374, - CENTROID = 375, - IN = 376, - OUT = 377, - INOUT = 378, - STRUCT = 379, - VOID = 380, - WHILE = 381, - BREAK = 382, - CONTINUE = 383, - DO = 384, - ELSE = 385, - FOR = 386, - IF = 387, - DISCARD = 388, - RETURN = 389, - SWITCH = 390, - CASE = 391, - DEFAULT = 392, - UNIFORM = 393, - SHARED = 394, - BUFFER = 395, - FLAT = 396, - SMOOTH = 397, - LAYOUT = 398 + ATTRIBUTE = 316, + VARYING = 317, + FLOAT16_T = 318, + FLOAT32_T = 319, + DOUBLE = 320, + FLOAT64_T = 321, + INT64_T = 322, + UINT64_T = 323, + INT32_T = 324, + UINT32_T = 325, + INT16_T = 326, + UINT16_T = 327, + INT8_T = 328, + UINT8_T = 329, + I64VEC2 = 330, + I64VEC3 = 331, + I64VEC4 = 332, + U64VEC2 = 333, + U64VEC3 = 334, + U64VEC4 = 335, + I32VEC2 = 336, + I32VEC3 = 337, + I32VEC4 = 338, + U32VEC2 = 339, + U32VEC3 = 340, + U32VEC4 = 341, + I16VEC2 = 342, + I16VEC3 = 343, + I16VEC4 = 344, + U16VEC2 = 345, + U16VEC3 = 346, + U16VEC4 = 347, + I8VEC2 = 348, + I8VEC3 = 349, + I8VEC4 = 350, + U8VEC2 = 351, + U8VEC3 = 352, + U8VEC4 = 353, + DVEC2 = 354, + DVEC3 = 355, + DVEC4 = 356, + DMAT2 = 357, + DMAT3 = 358, + DMAT4 = 359, + F16VEC2 = 360, + F16VEC3 = 361, + F16VEC4 = 362, + F16MAT2 = 363, + F16MAT3 = 364, + F16MAT4 = 365, + F32VEC2 = 366, + F32VEC3 = 367, + F32VEC4 = 368, + F32MAT2 = 369, + F32MAT3 = 370, + F32MAT4 = 371, + F64VEC2 = 372, + F64VEC3 = 373, + F64VEC4 = 374, + F64MAT2 = 375, + F64MAT3 = 376, + F64MAT4 = 377, + DMAT2X2 = 378, + DMAT2X3 = 379, + DMAT2X4 = 380, + DMAT3X2 = 381, + DMAT3X3 = 382, + DMAT3X4 = 383, + DMAT4X2 = 384, + DMAT4X3 = 385, + DMAT4X4 = 386, + F16MAT2X2 = 387, + F16MAT2X3 = 388, + F16MAT2X4 = 389, + F16MAT3X2 = 390, + F16MAT3X3 = 391, + F16MAT3X4 = 392, + F16MAT4X2 = 393, + F16MAT4X3 = 394, + F16MAT4X4 = 395, + F32MAT2X2 = 396, + F32MAT2X3 = 397, + F32MAT2X4 = 398, + F32MAT3X2 = 399, + F32MAT3X3 = 400, + F32MAT3X4 = 401, + F32MAT4X2 = 402, + F32MAT4X3 = 403, + F32MAT4X4 = 404, + F64MAT2X2 = 405, + F64MAT2X3 = 406, + F64MAT2X4 = 407, + F64MAT3X2 = 408, + F64MAT3X3 = 409, + F64MAT3X4 = 410, + F64MAT4X2 = 411, + F64MAT4X3 = 412, + F64MAT4X4 = 413, + ATOMIC_UINT = 414, + ACCSTRUCTNV = 415, + FCOOPMATNV = 416, + ICOOPMATNV = 417, + UCOOPMATNV = 418, + SAMPLERCUBEARRAY = 419, + SAMPLERCUBEARRAYSHADOW = 420, + ISAMPLERCUBEARRAY = 421, + USAMPLERCUBEARRAY = 422, + SAMPLER1D = 423, + SAMPLER1DARRAY = 424, + SAMPLER1DARRAYSHADOW = 425, + ISAMPLER1D = 426, + SAMPLER1DSHADOW = 427, + SAMPLER2DRECT = 428, + SAMPLER2DRECTSHADOW = 429, + ISAMPLER2DRECT = 430, + USAMPLER2DRECT = 431, + SAMPLERBUFFER = 432, + ISAMPLERBUFFER = 433, + USAMPLERBUFFER = 434, + SAMPLER2DMS = 435, + ISAMPLER2DMS = 436, + USAMPLER2DMS = 437, + SAMPLER2DMSARRAY = 438, + ISAMPLER2DMSARRAY = 439, + USAMPLER2DMSARRAY = 440, + SAMPLEREXTERNALOES = 441, + SAMPLEREXTERNAL2DY2YEXT = 442, + ISAMPLER1DARRAY = 443, + USAMPLER1D = 444, + USAMPLER1DARRAY = 445, + F16SAMPLER1D = 446, + F16SAMPLER2D = 447, + F16SAMPLER3D = 448, + F16SAMPLER2DRECT = 449, + F16SAMPLERCUBE = 450, + F16SAMPLER1DARRAY = 451, + F16SAMPLER2DARRAY = 452, + F16SAMPLERCUBEARRAY = 453, + F16SAMPLERBUFFER = 454, + F16SAMPLER2DMS = 455, + F16SAMPLER2DMSARRAY = 456, + F16SAMPLER1DSHADOW = 457, + F16SAMPLER2DSHADOW = 458, + F16SAMPLER1DARRAYSHADOW = 459, + F16SAMPLER2DARRAYSHADOW = 460, + F16SAMPLER2DRECTSHADOW = 461, + F16SAMPLERCUBESHADOW = 462, + F16SAMPLERCUBEARRAYSHADOW = 463, + IMAGE1D = 464, + IIMAGE1D = 465, + UIMAGE1D = 466, + IMAGE2D = 467, + IIMAGE2D = 468, + UIMAGE2D = 469, + IMAGE3D = 470, + IIMAGE3D = 471, + UIMAGE3D = 472, + IMAGE2DRECT = 473, + IIMAGE2DRECT = 474, + UIMAGE2DRECT = 475, + IMAGECUBE = 476, + IIMAGECUBE = 477, + UIMAGECUBE = 478, + IMAGEBUFFER = 479, + IIMAGEBUFFER = 480, + UIMAGEBUFFER = 481, + IMAGE1DARRAY = 482, + IIMAGE1DARRAY = 483, + UIMAGE1DARRAY = 484, + IMAGE2DARRAY = 485, + IIMAGE2DARRAY = 486, + UIMAGE2DARRAY = 487, + IMAGECUBEARRAY = 488, + IIMAGECUBEARRAY = 489, + UIMAGECUBEARRAY = 490, + IMAGE2DMS = 491, + IIMAGE2DMS = 492, + UIMAGE2DMS = 493, + IMAGE2DMSARRAY = 494, + IIMAGE2DMSARRAY = 495, + UIMAGE2DMSARRAY = 496, + F16IMAGE1D = 497, + F16IMAGE2D = 498, + F16IMAGE3D = 499, + F16IMAGE2DRECT = 500, + F16IMAGECUBE = 501, + F16IMAGE1DARRAY = 502, + F16IMAGE2DARRAY = 503, + F16IMAGECUBEARRAY = 504, + F16IMAGEBUFFER = 505, + F16IMAGE2DMS = 506, + F16IMAGE2DMSARRAY = 507, + TEXTURECUBEARRAY = 508, + ITEXTURECUBEARRAY = 509, + UTEXTURECUBEARRAY = 510, + TEXTURE1D = 511, + ITEXTURE1D = 512, + UTEXTURE1D = 513, + TEXTURE1DARRAY = 514, + ITEXTURE1DARRAY = 515, + UTEXTURE1DARRAY = 516, + TEXTURE2DRECT = 517, + ITEXTURE2DRECT = 518, + UTEXTURE2DRECT = 519, + TEXTUREBUFFER = 520, + ITEXTUREBUFFER = 521, + UTEXTUREBUFFER = 522, + TEXTURE2DMS = 523, + ITEXTURE2DMS = 524, + UTEXTURE2DMS = 525, + TEXTURE2DMSARRAY = 526, + ITEXTURE2DMSARRAY = 527, + UTEXTURE2DMSARRAY = 528, + F16TEXTURE1D = 529, + F16TEXTURE2D = 530, + F16TEXTURE3D = 531, + F16TEXTURE2DRECT = 532, + F16TEXTURECUBE = 533, + F16TEXTURE1DARRAY = 534, + F16TEXTURE2DARRAY = 535, + F16TEXTURECUBEARRAY = 536, + F16TEXTUREBUFFER = 537, + F16TEXTURE2DMS = 538, + F16TEXTURE2DMSARRAY = 539, + SUBPASSINPUT = 540, + SUBPASSINPUTMS = 541, + ISUBPASSINPUT = 542, + ISUBPASSINPUTMS = 543, + USUBPASSINPUT = 544, + USUBPASSINPUTMS = 545, + F16SUBPASSINPUT = 546, + F16SUBPASSINPUTMS = 547, + LEFT_OP = 548, + RIGHT_OP = 549, + INC_OP = 550, + DEC_OP = 551, + LE_OP = 552, + GE_OP = 553, + EQ_OP = 554, + NE_OP = 555, + AND_OP = 556, + OR_OP = 557, + XOR_OP = 558, + MUL_ASSIGN = 559, + DIV_ASSIGN = 560, + ADD_ASSIGN = 561, + MOD_ASSIGN = 562, + LEFT_ASSIGN = 563, + RIGHT_ASSIGN = 564, + AND_ASSIGN = 565, + XOR_ASSIGN = 566, + OR_ASSIGN = 567, + SUB_ASSIGN = 568, + LEFT_PAREN = 569, + RIGHT_PAREN = 570, + LEFT_BRACKET = 571, + RIGHT_BRACKET = 572, + LEFT_BRACE = 573, + RIGHT_BRACE = 574, + DOT = 575, + COMMA = 576, + COLON = 577, + EQUAL = 578, + SEMICOLON = 579, + BANG = 580, + DASH = 581, + TILDE = 582, + PLUS = 583, + STAR = 584, + SLASH = 585, + PERCENT = 586, + LEFT_ANGLE = 587, + RIGHT_ANGLE = 588, + VERTICAL_BAR = 589, + CARET = 590, + AMPERSAND = 591, + QUESTION = 592, + INVARIANT = 593, + HIGH_PRECISION = 594, + MEDIUM_PRECISION = 595, + LOW_PRECISION = 596, + PRECISION = 597, + PACKED = 598, + RESOURCE = 599, + SUPERP = 600, + FLOATCONSTANT = 601, + INTCONSTANT = 602, + UINTCONSTANT = 603, + BOOLCONSTANT = 604, + IDENTIFIER = 605, + TYPE_NAME = 606, + CENTROID = 607, + IN = 608, + OUT = 609, + INOUT = 610, + STRUCT = 611, + VOID = 612, + WHILE = 613, + BREAK = 614, + CONTINUE = 615, + DO = 616, + ELSE = 617, + FOR = 618, + IF = 619, + DISCARD = 620, + RETURN = 621, + SWITCH = 622, + CASE = 623, + DEFAULT = 624, + UNIFORM = 625, + SHARED = 626, + BUFFER = 627, + FLAT = 628, + SMOOTH = 629, + LAYOUT = 630, + DOUBLECONSTANT = 631, + INT16CONSTANT = 632, + UINT16CONSTANT = 633, + FLOAT16CONSTANT = 634, + INT32CONSTANT = 635, + UINT32CONSTANT = 636, + INT64CONSTANT = 637, + UINT64CONSTANT = 638, + SUBROUTINE = 639, + DEMOTE = 640, + PAYLOADNV = 641, + PAYLOADINNV = 642, + HITATTRNV = 643, + CALLDATANV = 644, + CALLDATAINNV = 645, + PATCH = 646, + SAMPLE = 647, + NONUNIFORM = 648, + COHERENT = 649, + VOLATILE = 650, + RESTRICT = 651, + READONLY = 652, + WRITEONLY = 653, + DEVICECOHERENT = 654, + QUEUEFAMILYCOHERENT = 655, + WORKGROUPCOHERENT = 656, + SUBGROUPCOHERENT = 657, + NONPRIVATE = 658, + NOPERSPECTIVE = 659, + EXPLICITINTERPAMD = 660, + PERVERTEXNV = 661, + PERPRIMITIVENV = 662, + PERVIEWNV = 663, + PERTASKNV = 664, + PRECISE = 665 }; #endif @@ -230,7 +497,7 @@ union YYSTYPE glslang::TArraySizes* typeParameters; } interm; -#line 234 "MachineIndependent/glslang_tab.cpp.h" /* yacc.c:1909 */ +#line 501 "MachineIndependent/glslang_tab.cpp.h" /* yacc.c:1909 */ }; typedef union YYSTYPE YYSTYPE; diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index 5b920f2d..921eb84e 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -496,6 +496,7 @@ void TIntermediate::mergeImplicitArraySizes(TType& type, const TType& unitType) // void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& symbol, const TIntermSymbol& unitSymbol, bool crossStage) { +#ifndef GLSLANG_WEB bool writeTypeComparison = false; // Types have to match @@ -546,7 +547,6 @@ void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& sy writeTypeComparison = true; } -#ifndef GLSLANG_WEB // Memory... if (symbol.getQualifier().coherent != unitSymbol.getQualifier().coherent || symbol.getQualifier().devicecoherent != unitSymbol.getQualifier().devicecoherent || @@ -561,7 +561,6 @@ void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& sy error(infoSink, "Memory qualifiers must match:"); writeTypeComparison = true; } -#endif // Layouts... // TODO: 4.4 enhanced layouts: Generalize to include offset/align: current spec @@ -591,6 +590,7 @@ void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& sy if (writeTypeComparison) infoSink.info << " " << symbol.getName() << ": \"" << symbol.getType().getCompleteString() << "\" versus \"" << unitSymbol.getType().getCompleteString() << "\"\n"; +#endif } // @@ -1095,7 +1095,7 @@ int TIntermediate::addUsedLocation(const TQualifier& qualifier, const TType& typ } // combine location and component ranges - TIoRange range(locationRange, componentRange, type.getBasicType(), qualifier.hasIndex() ? qualifier.layoutIndex : 0); + TIoRange range(locationRange, componentRange, type.getBasicType(), qualifier.hasIndex() ? qualifier.getIndex() : 0); // check for collisions, except for vertex inputs on desktop targeting OpenGL if (! (!isEsProfile() && language == EShLangVertex && qualifier.isPipeInput()) || spvVersion.vulkan > 0) diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index 4d00d396..5f34a6c7 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -147,6 +147,7 @@ struct TOffsetRange { TRange offset; }; +#ifndef GLSLANG_WEB // Things that need to be tracked per xfb buffer. struct TXfbBuffer { TXfbBuffer() : stride(TQualifier::layoutXfbStrideEnd), implicitStride(0), contains64BitType(false), @@ -158,6 +159,7 @@ struct TXfbBuffer { bool contains32BitType; bool contains16BitType; }; +#endif // Track a set of strings describing how the module was processed. // Using the form: @@ -465,7 +467,23 @@ public: bool usingStorageBuffer() const { return useStorageBuffer; } void setDepthReplacing() { depthReplacing = true; } bool isDepthReplacing() const { return depthReplacing; } - + bool setLocalSize(int dim, int size) + { + if (localSizeNotDefault[dim]) + return size == localSize[dim]; + localSizeNotDefault[dim] = true; + localSize[dim] = size; + return true; + } + unsigned int getLocalSize(int dim) const { return localSize[dim]; } + bool setLocalSizeSpecId(int dim, int id) + { + if (localSizeSpecId[dim] != TQualifier::layoutNotSet) + return id == localSizeSpecId[dim]; + localSizeSpecId[dim] = id; + return true; + } + int getLocalSizeSpecId(int dim) const { return localSizeSpecId[dim]; } #ifdef GLSLANG_WEB void output(TInfoSink&, bool tree) { } @@ -492,23 +510,7 @@ public: bool usingVariablePointers() const { return false; } unsigned getXfbStride(int buffer) const { return 0; } bool hasLayoutDerivativeModeNone() const { return false; } - bool setLocalSize(int dim, int size) - { - if (localSizeNotDefault[dim]) - return size == localSize[dim]; - localSizeNotDefault[dim] = true; - localSize[dim] = size; - return true; - } - unsigned int getLocalSize(int dim) const { return localSize[dim]; } - bool setLocalSizeSpecId(int dim, int id) - { - if (localSizeSpecId[dim] != TQualifier::layoutNotSet) - return id == localSizeSpecId[dim]; - localSizeSpecId[dim] = id; - return true; - } - int getLocalSizeSpecId(int dim) const { return localSizeSpecId[dim]; } + ComputeDerivativeMode getLayoutDerivativeModeNone() const { return LayoutDerivativeNone; } #else void output(TInfoSink&, bool tree); @@ -756,7 +758,7 @@ public: void setBinaryDoubleOutput() { binaryDoubleOutput = true; } bool getBinaryDoubleOutput() { return binaryDoubleOutput; } -#endif +#endif // GLSLANG_WEB #ifdef ENABLE_HLSL void setHlslFunctionality1() { hlslFunctionality1 = true; } From a3f0da56e4c9cfe22f6be29ff8dd8b9d2c059016 Mon Sep 17 00:00:00 2001 From: David Turner <52076061+digit-google@users.noreply.github.com> Date: Wed, 23 Oct 2019 16:07:19 +0200 Subject: [PATCH 61/94] BUILD.gn: Fix fuchsia build (#1944) The Fuchsia platform build and the Chromium one use a completely different set of configs to specify default warnings. The previous version of BUILD.gn worked with Chromium, but failed to build with Fuchsia. This CL fixes the issue by identifying said configs and reusing them consistently. Change-Id: I7de526a57d2f14eb93c03e06401d2c3059d35e9a --- BUILD.gn | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/BUILD.gn b/BUILD.gn index 77d596e1..3351fd3e 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -33,6 +33,19 @@ import("//build_overrides/glslang.gni") +# Both Chromium and Fuchsia use by default a set of warning errors +# that is far too strict to compile this project. These are also +# typically appended after |cflags|, overriding target-specific +# definitions. To work around this, determine which configs to +# add and remove in order to succesfully build the project. +if (defined(is_fuchsia_tree) && is_fuchsia_tree) { + _configs_to_remove = [ "//build/config:default_warnings" ] + _configs_to_add = [] +} else { + _configs_to_remove = [ "//build/config/compiler:chromium_code" ] + _configs_to_add = [ "//build/config/compiler:no_chromium_code" ] +} + spirv_tools_dir = glslang_spirv_tools_dir config("glslang_public") { @@ -182,8 +195,8 @@ source_set("glslang_sources") { "${spirv_tools_dir}:spvtools_val", ] - configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ "//build/config/compiler:no_chromium_code" ] + configs -= _configs_to_remove + configs += _configs_to_add } source_set("glslang_default_resource_limits_sources") { @@ -196,8 +209,8 @@ source_set("glslang_default_resource_limits_sources") { ] public_configs = [ ":glslang_public" ] - configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ "//build/config/compiler:no_chromium_code" ] + configs -= _configs_to_remove + configs += _configs_to_add } executable("glslang_validator") { @@ -214,8 +227,8 @@ executable("glslang_validator") { ":glslang_sources", ] - configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ "//build/config/compiler:no_chromium_code" ] + configs -= _configs_to_remove + configs += _configs_to_add } executable("spirv-remap") { @@ -227,6 +240,6 @@ executable("spirv-remap") { ":glslang_sources", ] - configs -= [ "//build/config/compiler:chromium_code" ] - configs += [ "//build/config/compiler:no_chromium_code" ] + configs -= _configs_to_remove + configs += _configs_to_add } From 4b9b07a85a895ea22f756f7192206bc55cd1f503 Mon Sep 17 00:00:00 2001 From: Ehsan Nasiri Date: Wed, 23 Oct 2019 15:03:38 -0400 Subject: [PATCH 62/94] Make buildbot licenses consistent with the rest of the code --- BUILD.bazel | 2 +- kokoro/linux-clang-release-bazel/build.sh | 40 ++++++++++++----- .../linux-clang-release-bazel/continuous.cfg | 39 +++++++++++----- .../linux-clang-release-bazel/presubmit.cfg | 39 +++++++++++----- kokoro/macos-clang-release-bazel/build.sh | 40 ++++++++++++----- .../macos-clang-release-bazel/continuous.cfg | 39 +++++++++++----- .../macos-clang-release-bazel/presubmit.cfg | 39 +++++++++++----- .../windows-msvc-2015-release-bazel/build.bat | 44 ++++++++++++++----- .../continuous.cfg | 39 +++++++++++----- .../presubmit.cfg | 39 +++++++++++----- 10 files changed, 267 insertions(+), 93 deletions(-) diff --git a/BUILD.bazel b/BUILD.bazel index b1a19679..cc18aa26 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -6,7 +6,7 @@ package( # # Khronos reference front-end for GLSL and ESSL, and sample SPIR-V generator. -licenses(["notice"]) # Mixed: BSD, MIT, Khronos, Apache 2.0 +licenses(["notice"]) exports_files(["LICENSE"]) diff --git a/kokoro/linux-clang-release-bazel/build.sh b/kokoro/linux-clang-release-bazel/build.sh index 89c23fea..f73162f6 100644 --- a/kokoro/linux-clang-release-bazel/build.sh +++ b/kokoro/linux-clang-release-bazel/build.sh @@ -1,18 +1,38 @@ #!/bin/bash -# Copyright (c) 2019 Google LLC. + +# Copyright (C) 2019 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 +# All rights reserved. # -# http://www.apache.org/licenses/LICENSE-2.0 +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: # -# 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. +# Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. # +# Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# +# Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + # Linux Build Script. # Fail on any error. diff --git a/kokoro/linux-clang-release-bazel/continuous.cfg b/kokoro/linux-clang-release-bazel/continuous.cfg index 054f4f65..767556d0 100644 --- a/kokoro/linux-clang-release-bazel/continuous.cfg +++ b/kokoro/linux-clang-release-bazel/continuous.cfg @@ -1,16 +1,35 @@ -# Copyright (c) 2019 Google LLC. +# Copyright (C) 2019 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 +# All rights reserved. # -# http://www.apache.org/licenses/LICENSE-2.0 +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: # -# 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. +# Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# +# Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. # Continuous build configuration. build_file: "glslang/kokoro/linux-clang-release-bazel/build.sh" diff --git a/kokoro/linux-clang-release-bazel/presubmit.cfg b/kokoro/linux-clang-release-bazel/presubmit.cfg index 572898cb..669491f8 100644 --- a/kokoro/linux-clang-release-bazel/presubmit.cfg +++ b/kokoro/linux-clang-release-bazel/presubmit.cfg @@ -1,16 +1,35 @@ -# Copyright (c) 2019 Google LLC. +# Copyright (C) 2019 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 +# All rights reserved. # -# http://www.apache.org/licenses/LICENSE-2.0 +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: # -# 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. +# Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# +# Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. # Presubmit build configuration. build_file: "glslang/kokoro/linux-clang-release-bazel/build.sh" diff --git a/kokoro/macos-clang-release-bazel/build.sh b/kokoro/macos-clang-release-bazel/build.sh index a899c137..cc51fadf 100644 --- a/kokoro/macos-clang-release-bazel/build.sh +++ b/kokoro/macos-clang-release-bazel/build.sh @@ -1,18 +1,38 @@ #!/bin/bash -# Copyright (c) 2019 Google LLC. + +# Copyright (C) 2019 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 +# All rights reserved. # -# http://www.apache.org/licenses/LICENSE-2.0 +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: # -# 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. +# Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. # +# Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# +# Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + # macOS Build Script. # Fail on any error. diff --git a/kokoro/macos-clang-release-bazel/continuous.cfg b/kokoro/macos-clang-release-bazel/continuous.cfg index 5822fd25..f1980790 100644 --- a/kokoro/macos-clang-release-bazel/continuous.cfg +++ b/kokoro/macos-clang-release-bazel/continuous.cfg @@ -1,16 +1,35 @@ -# Copyright (c) 2019 Google LLC. +# Copyright (C) 2019 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 +# All rights reserved. # -# http://www.apache.org/licenses/LICENSE-2.0 +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: # -# 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. +# Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# +# Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. # Continuous build configuration. build_file: "glslang/kokoro/macos-clang-release-bazel/build.sh" diff --git a/kokoro/macos-clang-release-bazel/presubmit.cfg b/kokoro/macos-clang-release-bazel/presubmit.cfg index 12cf6461..daa30be5 100644 --- a/kokoro/macos-clang-release-bazel/presubmit.cfg +++ b/kokoro/macos-clang-release-bazel/presubmit.cfg @@ -1,16 +1,35 @@ -# Copyright (c) 2019 Google LLC. +# Copyright (C) 2019 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 +# All rights reserved. # -# http://www.apache.org/licenses/LICENSE-2.0 +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: # -# 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. +# Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# +# Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. # Presubmit build configuration. build_file: "glslang/kokoro/macos-clang-release-bazel/build.sh" diff --git a/kokoro/windows-msvc-2015-release-bazel/build.bat b/kokoro/windows-msvc-2015-release-bazel/build.bat index 969d74d2..1a1557c9 100644 --- a/kokoro/windows-msvc-2015-release-bazel/build.bat +++ b/kokoro/windows-msvc-2015-release-bazel/build.bat @@ -1,17 +1,37 @@ +:: Copyright (C) 2019 Google, Inc. +:: +:: All rights reserved. +:: +:: Redistribution and use in source and binary forms, with or without +:: modification, are permitted provided that the following conditions +:: are met: +:: +:: Redistributions of source code must retain the above copyright +:: notice, this list of conditions and the following disclaimer. +:: +:: Redistributions in binary form must reproduce the above +:: copyright notice, this list of conditions and the following +:: disclaimer in the documentation and/or other materials provided +:: with the distribution. +:: +:: Neither the name of Google Inc. nor the names of its +:: contributors may be used to endorse or promote products derived +:: from this software without specific prior written permission. +:: +:: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +:: "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +:: LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +:: FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +:: COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +:: INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +:: BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +:: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +:: CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +:: LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +:: ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +:: POSSIBILITY OF SUCH DAMAGE. :: Copyright (c) 2019 Google LLC. :: -:: 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. -:: :: Windows Build Script. @echo on diff --git a/kokoro/windows-msvc-2015-release-bazel/continuous.cfg b/kokoro/windows-msvc-2015-release-bazel/continuous.cfg index 4b068897..554d29de 100644 --- a/kokoro/windows-msvc-2015-release-bazel/continuous.cfg +++ b/kokoro/windows-msvc-2015-release-bazel/continuous.cfg @@ -1,16 +1,35 @@ -# Copyright (c) 2019 Google LLC. +# Copyright (C) 2019 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 +# All rights reserved. # -# http://www.apache.org/licenses/LICENSE-2.0 +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: # -# 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. +# Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# +# Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. # Continuous build configuration. build_file: "glslang/kokoro/windows-msvc-2015-release-bazel/build.bat" diff --git a/kokoro/windows-msvc-2015-release-bazel/presubmit.cfg b/kokoro/windows-msvc-2015-release-bazel/presubmit.cfg index 08bcefbb..4980bb6b 100644 --- a/kokoro/windows-msvc-2015-release-bazel/presubmit.cfg +++ b/kokoro/windows-msvc-2015-release-bazel/presubmit.cfg @@ -1,16 +1,35 @@ -# Copyright (c) 2019 Google LLC. +# Copyright (C) 2019 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 +# All rights reserved. # -# http://www.apache.org/licenses/LICENSE-2.0 +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: # -# 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. +# Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# +# Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. # Presubmit build configuration. build_file: "glslang/kokoro/windows-msvc-2015-release-bazel/build.bat" From b44dac19682f38ad8a44d4617ba09e6a18f107e0 Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Thu, 24 Oct 2019 10:37:01 -0600 Subject: [PATCH 63/94] Update spirv-tools known good. --- SPIRV/SpvTools.cpp | 3 +-- known_good.json | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/SPIRV/SpvTools.cpp b/SPIRV/SpvTools.cpp index 698f154a..7c3b0391 100644 --- a/SPIRV/SpvTools.cpp +++ b/SPIRV/SpvTools.cpp @@ -173,6 +173,7 @@ void SpirvToolsLegalize(const glslang::TIntermediate&, std::vector if (options->generateDebugInfo) { optimizer.RegisterPass(spvtools::CreatePropagateLineInfoPass()); } + optimizer.RegisterPass(spvtools::CreateWrapOpKillPass()); optimizer.RegisterPass(spvtools::CreateDeadBranchElimPass()); optimizer.RegisterPass(spvtools::CreateMergeReturnPass()); optimizer.RegisterPass(spvtools::CreateInlineExhaustivePass()); @@ -196,8 +197,6 @@ void SpirvToolsLegalize(const glslang::TIntermediate&, std::vector optimizer.RegisterPass(spvtools::CreateDeadInsertElimPass()); if (options->optimizeSize) { optimizer.RegisterPass(spvtools::CreateRedundancyEliminationPass()); - // TODO(greg-lunarg): Add this when AMD driver issues are resolved - // optimizer.RegisterPass(CreateCommonUniformElimPass()); } optimizer.RegisterPass(spvtools::CreateAggressiveDCEPass()); optimizer.RegisterPass(spvtools::CreateCFGCleanupPass()); diff --git a/known_good.json b/known_good.json index 3d8994a6..8bb70535 100644 --- a/known_good.json +++ b/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "c3ca04741945c332ddbeb7d7125dbae2809b7195" + "commit" : "02910ffdffaa2966f613ede0c516645f5555c13c" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "b252a50953ac4375cb1864e94f4b0234db9d215d" + "commit" : "af64a9e826bf5bb5fcd2434dd71be1e41e922563" } ] } From 3b8d94f4223416a45a4dd41e80dc92a06be712bc Mon Sep 17 00:00:00 2001 From: Sergey Kosarevsky Date: Fri, 25 Oct 2019 11:57:11 +0300 Subject: [PATCH 64/94] Add option ENABLE_CTEST to skip testing --- CMakeLists.txt | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index dcb2d0de..d6fc8d42 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -41,6 +41,7 @@ CMAKE_DEPENDENT_OPTION(ENABLE_HLSL "Enables HLSL input support" ON "NOT ENABLE_G option(ENABLE_OPT "Enables spirv-opt capability if present" ON) option(ENABLE_PCH "Enables Precompiled header" ON) +option(ENABLE_CTEST "Enables testing" ON) if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT AND WIN32) set(CMAKE_INSTALL_PREFIX "install" CACHE STRING "..." FORCE) @@ -67,8 +68,10 @@ macro(glslang_pch SRCS PCHCPP) endmacro(glslang_pch) project(glslang) -# make testing optional -include(CTest) + +if(ENABLE_CTEST) + include(CTest) +endif() if(ENABLE_HLSL) add_definitions(-DENABLE_HLSL) @@ -183,7 +186,9 @@ add_subdirectory(SPIRV) if(ENABLE_HLSL) add_subdirectory(hlsl) endif(ENABLE_HLSL) -add_subdirectory(gtests) +if(ENABLE_CTEST) + add_subdirectory(gtests) +endif() if(BUILD_TESTING) # glslang-testsuite runs a bash script on Windows. From 8c3d5b4b6cc784a4dcd7999977d32c2ef5ec51ed Mon Sep 17 00:00:00 2001 From: David Neto Date: Mon, 21 Oct 2019 14:50:31 -0400 Subject: [PATCH 65/94] SPIR-V: Aggressively prune unreachable merge, continue target More aggressively prune unreachable code as follows. When no control flow edges reach a merge block or continue target: - delete their contents so that: - a merge block becomes OpLabel, then OpUnreachable - a continue target becomes OpLabel, then an OpBranch back to the loop header - any basic block which is dominated by such a merge block or continue target is removed as well. - decorations targeting the removed instructions are removed. Enables the SPIR-V builder post-processing step the GLSLANG_WEB case. --- SPIRV/GlslangToSpv.cpp | 6 +- SPIRV/InReadableOrder.cpp | 44 +- SPIRV/SpvBuilder.h | 4 +- SPIRV/SpvPostProcess.cpp | 49 +- SPIRV/spvIR.h | 51 +- StandAlone/StandAlone.cpp | 2 +- Test/baseResults/hlsl.constantbuffer.frag.out | 3 +- Test/baseResults/hlsl.doLoop.frag.out | 537 +++--- Test/baseResults/hlsl.forLoop.frag.out | 1469 ++++++++++------- Test/baseResults/hlsl.if.frag.out | 622 +++---- .../hlsl.structbuffer.coherent.frag.out | 3 +- Test/baseResults/hlsl.structbuffer.frag.out | 3 +- .../baseResults/hlsl.structbuffer.rw.frag.out | 3 +- Test/baseResults/hlsl.wavequery.frag.out | 3 +- .../remap.similar_1a.everything.frag.out | 7 +- .../remap.similar_1a.none.frag.out | 3 +- .../remap.similar_1b.everything.frag.out | 7 +- .../remap.similar_1b.none.frag.out | 3 +- .../spv.controlFlowAttributes.frag.out | 395 ++--- .../spv.dead-after-continue.vert.out | 54 + .../spv.dead-after-discard.frag.out | 31 + .../spv.dead-after-loop-break.vert.out | 67 + .../spv.dead-after-return.vert.out | 29 + .../spv.dead-after-switch-break.vert.out | 40 + ...ead-complex-continue-after-return.vert.out | 55 + ...v.dead-complex-merge-after-return.vert.out | 51 + .../spv.earlyReturnDiscard.frag.out | 2 +- Test/baseResults/spv.for-notest.vert.out | 2 +- Test/baseResults/spv.forwardFun.frag.out | 3 +- Test/baseResults/spv.functionCall.frag.out | 3 +- .../spv.merge-unreachable.frag.out | 2 +- Test/hlsl.doLoop.frag | 30 +- Test/hlsl.forLoop.frag | 60 +- Test/hlsl.if.frag | 26 +- Test/spv.controlFlowAttributes.frag | 11 +- Test/spv.dead-after-continue.vert | 14 + Test/spv.dead-after-discard.frag | 10 + Test/spv.dead-after-loop-break.vert | 19 + Test/spv.dead-after-return.vert | 10 + Test/spv.dead-after-switch-break.vert | 15 + ...pv.dead-complex-continue-after-return.vert | 19 + Test/spv.dead-complex-merge-after-return.vert | 23 + gtests/Spv.FromFile.cpp | 25 + gtests/TestFixture.h | 6 +- 44 files changed, 2398 insertions(+), 1423 deletions(-) create mode 100644 Test/baseResults/spv.dead-after-continue.vert.out create mode 100644 Test/baseResults/spv.dead-after-discard.frag.out create mode 100644 Test/baseResults/spv.dead-after-loop-break.vert.out create mode 100644 Test/baseResults/spv.dead-after-return.vert.out create mode 100644 Test/baseResults/spv.dead-after-switch-break.vert.out create mode 100644 Test/baseResults/spv.dead-complex-continue-after-return.vert.out create mode 100644 Test/baseResults/spv.dead-complex-merge-after-return.vert.out create mode 100644 Test/spv.dead-after-continue.vert create mode 100644 Test/spv.dead-after-discard.frag create mode 100644 Test/spv.dead-after-loop-break.vert create mode 100644 Test/spv.dead-after-return.vert create mode 100644 Test/spv.dead-after-switch-break.vert create mode 100644 Test/spv.dead-complex-continue-after-return.vert create mode 100644 Test/spv.dead-complex-merge-after-return.vert diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 99c4c3f4..df424583 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -1630,11 +1630,11 @@ void TGlslangToSpvTraverser::finishSpv() for (auto it = iOSet.cbegin(); it != iOSet.cend(); ++it) entryPoint->addIdOperand(*it); -#ifndef GLSLANG_WEB - // Add capabilities, extensions, remove unneeded decorations, etc., + // Add capabilities, extensions, remove unneeded decorations, etc., // based on the resulting SPIR-V. + // Note: WebGPU code generation must have the opportunity to aggressively + // prune unreachable merge blocks and continue targets. builder.postProcess(); -#endif } // Write the SPV into 'out'. diff --git a/SPIRV/InReadableOrder.cpp b/SPIRV/InReadableOrder.cpp index 52b29613..9d9410be 100644 --- a/SPIRV/InReadableOrder.cpp +++ b/SPIRV/InReadableOrder.cpp @@ -61,17 +61,22 @@ namespace { // Use by calling visit() on the root block. class ReadableOrderTraverser { public: - explicit ReadableOrderTraverser(std::function callback) : callback_(callback) {} + ReadableOrderTraverser(std::function callback) + : callback_(callback) {} // Visits the block if it hasn't been visited already and isn't currently - // being delayed. Invokes callback(block), then descends into its + // being delayed. Invokes callback(block, why, header), then descends into its // successors. Delays merge-block and continue-block processing until all - // the branches have been completed. - void visit(Block* block) + // the branches have been completed. If |block| is an unreachable merge block or + // an unreachable continue target, then |header| is the corresponding header block. + void visit(Block* block, spv::ReachReason why, Block* header) { assert(block); + if (why == spv::ReachViaControlFlow) { + reachableViaControlFlow_.insert(block); + } if (visited_.count(block) || delayed_.count(block)) return; - callback_(block); + callback_(block, why, header); visited_.insert(block); Block* mergeBlock = nullptr; Block* continueBlock = nullptr; @@ -87,27 +92,40 @@ public: delayed_.insert(continueBlock); } } - const auto successors = block->getSuccessors(); - for (auto it = successors.cbegin(); it != successors.cend(); ++it) - visit(*it); + if (why == spv::ReachViaControlFlow) { + const auto& successors = block->getSuccessors(); + for (auto it = successors.cbegin(); it != successors.cend(); ++it) + visit(*it, why, nullptr); + } if (continueBlock) { + const spv::ReachReason continueWhy = + (reachableViaControlFlow_.count(continueBlock) > 0) + ? spv::ReachViaControlFlow + : spv::ReachDeadContinue; delayed_.erase(continueBlock); - visit(continueBlock); + visit(continueBlock, continueWhy, block); } if (mergeBlock) { + const spv::ReachReason mergeWhy = + (reachableViaControlFlow_.count(mergeBlock) > 0) + ? spv::ReachViaControlFlow + : spv::ReachDeadMerge; delayed_.erase(mergeBlock); - visit(mergeBlock); + visit(mergeBlock, mergeWhy, block); } } private: - std::function callback_; + std::function callback_; // Whether a block has already been visited or is being delayed. std::unordered_set visited_, delayed_; + + // The set of blocks that actually are reached via control flow. + std::unordered_set reachableViaControlFlow_; }; } -void spv::inReadableOrder(Block* root, std::function callback) +void spv::inReadableOrder(Block* root, std::function callback) { - ReadableOrderTraverser(callback).visit(root); + ReadableOrderTraverser(callback).visit(root, spv::ReachViaControlFlow, nullptr); } diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index 55754f60..8d8f34ba 100644 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -683,14 +683,12 @@ public: // based on the type of the base and the chain of dereferences. Id accessChainGetInferredType(); - // Add capabilities, extensions, remove unneeded decorations, etc., + // Add capabilities, extensions, remove unneeded decorations, etc., // based on the resulting SPIR-V. void postProcess(); // Hook to visit each instruction in a block in a function void postProcess(Instruction&); - // Hook to visit each instruction in a reachable block in a function. - void postProcessReachable(const Instruction&); // Hook to visit each non-32-bit sized float/int operation in a block. void postProcessType(const Instruction&, spv::Id typeId); diff --git a/SPIRV/SpvPostProcess.cpp b/SPIRV/SpvPostProcess.cpp index 832ee3ef..86fad580 100644 --- a/SPIRV/SpvPostProcess.cpp +++ b/SPIRV/SpvPostProcess.cpp @@ -39,6 +39,7 @@ #include #include +#include #include #include @@ -319,16 +320,14 @@ void Builder::postProcess(Instruction& inst) } } -// Called for each instruction in a reachable block. -void Builder::postProcessReachable(const Instruction&) -{ - // did have code here, but questionable to do so without deleting the instructions -} - // comment in header void Builder::postProcess() { + // reachableBlocks is the set of blockss reached via control flow, or which are + // unreachable continue targert or unreachable merge. std::unordered_set reachableBlocks; + std::unordered_map headerForUnreachableContinue; + std::unordered_set unreachableMerges; std::unordered_set unreachableDefinitions; // Collect IDs defined in unreachable blocks. For each function, label the // reachable blocks first. Then for each unreachable block, collect the @@ -336,16 +335,41 @@ void Builder::postProcess() for (auto fi = module.getFunctions().cbegin(); fi != module.getFunctions().cend(); fi++) { Function* f = *fi; Block* entry = f->getEntryBlock(); - inReadableOrder(entry, [&reachableBlocks](const Block* b) { reachableBlocks.insert(b); }); + inReadableOrder(entry, + [&reachableBlocks, &unreachableMerges, &headerForUnreachableContinue] + (Block* b, ReachReason why, Block* header) { + reachableBlocks.insert(b); + if (why == ReachDeadContinue) headerForUnreachableContinue[b] = header; + if (why == ReachDeadMerge) unreachableMerges.insert(b); + }); for (auto bi = f->getBlocks().cbegin(); bi != f->getBlocks().cend(); bi++) { Block* b = *bi; - if (reachableBlocks.count(b) == 0) { - for (auto ii = b->getInstructions().cbegin(); ii != b->getInstructions().cend(); ii++) + if (unreachableMerges.count(b) != 0 || headerForUnreachableContinue.count(b) != 0) { + auto ii = b->getInstructions().cbegin(); + ++ii; // Keep potential decorations on the label. + for (; ii != b->getInstructions().cend(); ++ii) + unreachableDefinitions.insert(ii->get()->getResultId()); + } else if (reachableBlocks.count(b) == 0) { + // The normal case for unreachable code. All definitions are considered dead. + for (auto ii = b->getInstructions().cbegin(); ii != b->getInstructions().cend(); ++ii) unreachableDefinitions.insert(ii->get()->getResultId()); } } } + // Modify unreachable merge blocks and unreachable continue targets. + // Delete their contents. + for (auto mergeIter = unreachableMerges.begin(); mergeIter != unreachableMerges.end(); ++mergeIter) { + (*mergeIter)->rewriteAsCanonicalUnreachableMerge(); + } + for (auto continueIter = headerForUnreachableContinue.begin(); + continueIter != headerForUnreachableContinue.end(); + ++continueIter) { + Block* continue_target = continueIter->first; + Block* header = continueIter->second; + continue_target->rewriteAsCanonicalUnreachableContinue(header); + } + // Remove unneeded decorations, for unreachable instructions decorations.erase(std::remove_if(decorations.begin(), decorations.end(), [&unreachableDefinitions](std::unique_ptr& I) -> bool { @@ -374,13 +398,6 @@ void Builder::postProcess() } } - // process all reachable instructions... - for (auto bi = reachableBlocks.cbegin(); bi != reachableBlocks.cend(); ++bi) { - const Block* block = *bi; - const auto function = [this](const std::unique_ptr& inst) { postProcessReachable(*inst.get()); }; - std::for_each(block->getInstructions().begin(), block->getInstructions().end(), function); - } - // process all block-contained instructions for (auto fi = module.getFunctions().cbegin(); fi != module.getFunctions().cend(); fi++) { Function* f = *fi; diff --git a/SPIRV/spvIR.h b/SPIRV/spvIR.h index 7e2d4bc1..9495fcef 100755 --- a/SPIRV/spvIR.h +++ b/SPIRV/spvIR.h @@ -226,6 +226,36 @@ public: return nullptr; } + // Change this block into a canonical dead merge block. Delete instructions + // as necessary. A canonical dead merge block has only an OpLabel and an + // OpUnreachable. + void rewriteAsCanonicalUnreachableMerge() { + assert(localVariables.empty()); + // Delete all instructions except for the label. + assert(instructions.size() > 0); + instructions.resize(1); + successors.clear(); + Instruction* unreachable = new Instruction(OpUnreachable); + addInstruction(std::unique_ptr(unreachable)); + } + // Change this block into a canonical dead continue target branching to the + // given header ID. Delete instructions as necessary. A canonical dead continue + // target has only an OpLabel and an unconditional branch back to the corresponding + // header. + void rewriteAsCanonicalUnreachableContinue(Block* header) { + assert(localVariables.empty()); + // Delete all instructions except for the label. + assert(instructions.size() > 0); + instructions.resize(1); + successors.clear(); + // Add OpBranch back to the header. + assert(header != nullptr); + Instruction* branch = new Instruction(OpBranch); + branch->addIdOperand(header->getId()); + addInstruction(std::move(std::unique_ptr(branch))); + successors.push_back(header); + } + bool isTerminated() const { switch (instructions.back()->getOpCode()) { @@ -235,6 +265,7 @@ public: case OpKill: case OpReturn: case OpReturnValue: + case OpUnreachable: return true; default: return false; @@ -268,10 +299,24 @@ protected: bool unreachable; }; +// The different reasons for reaching a block in the inReadableOrder traversal. +typedef enum ReachReason { + // Reachable from the entry block via transfers of control, i.e. branches. + ReachViaControlFlow = 0, + // A continue target that is not reachable via control flow. + ReachDeadContinue, + // A merge block that is not reachable via control flow. + ReachDeadMerge +}; + // Traverses the control-flow graph rooted at root in an order suited for // readable code generation. Invokes callback at every node in the traversal -// order. -void inReadableOrder(Block* root, std::function callback); +// order. The callback arguments are: +// - the block, +// - the reason we reached the block, +// - if the reason was that block is an unreachable continue or unreachable merge block +// then the last parameter is the corresponding header block. +void inReadableOrder(Block* root, std::function callback); // // SPIR-V IR Function. @@ -321,7 +366,7 @@ public: parameterInstructions[p]->dump(out); // Blocks - inReadableOrder(blocks[0], [&out](const Block* b) { b->dump(out); }); + inReadableOrder(blocks[0], [&out](const Block* b, ReachReason, Block*) { b->dump(out); }); Instruction end(0, 0, OpFunctionEnd); end.dump(out); } diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index 4be3a4f4..07479321 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -988,7 +988,7 @@ void CompileAndLinkShaderUnits(std::vector compUnits) // Set base bindings shader->setShiftBinding(res, baseBinding[res][compUnit.stage]); - + // Set bindings for particular resource sets // TODO: use a range based for loop here, when available in all environments. for (auto i = baseBindingForSet[res][compUnit.stage].begin(); diff --git a/Test/baseResults/hlsl.constantbuffer.frag.out b/Test/baseResults/hlsl.constantbuffer.frag.out index fa8881db..99c67ae6 100644 --- a/Test/baseResults/hlsl.constantbuffer.frag.out +++ b/Test/baseResults/hlsl.constantbuffer.frag.out @@ -240,6 +240,5 @@ Validation failed 60: 7(fvec4) CompositeConstruct 59 59 59 59 ReturnValue 60 30: Label - 62: 7(fvec4) Undef - ReturnValue 62 + Unreachable FunctionEnd diff --git a/Test/baseResults/hlsl.doLoop.frag.out b/Test/baseResults/hlsl.doLoop.frag.out index bb564658..2366d796 100644 --- a/Test/baseResults/hlsl.doLoop.frag.out +++ b/Test/baseResults/hlsl.doLoop.frag.out @@ -2,68 +2,95 @@ hlsl.doLoop.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: @PixelShaderFunction(f1; ( temp 4-component vector of float) -0:2 Function Parameters: -0:2 'input' ( in float) +0:1 Function Definition: f0( ( temp void) +0:1 Function Parameters: 0:? Sequence -0:3 Loop with condition not tested first: Unroll -0:3 Loop Condition -0:3 Constant: -0:3 false (const bool) -0:3 No loop body -0:4 Loop with condition not tested first: Unroll -0:4 Loop Condition -0:4 Constant: -0:4 false (const bool) -0:4 No loop body -0:5 Loop with condition not tested first -0:5 Loop Condition -0:5 Compare Greater Than ( temp bool) -0:5 'input' ( in float) -0:5 Constant: -0:5 2.000000 -0:5 Loop Body -0:? Sequence -0:5 Branch: Return with expression -0:5 Construct vec4 ( temp 4-component vector of float) -0:5 'input' ( in float) -0:6 Loop with condition not tested first +0:2 Loop with condition not tested first: Unroll +0:2 Loop Condition +0:2 Constant: +0:2 false (const bool) +0:2 No loop body +0:5 Function Definition: f1( ( temp void) +0:5 Function Parameters: +0:? Sequence +0:6 Loop with condition not tested first: Unroll 0:6 Loop Condition -0:6 Compare Less Than ( temp bool) -0:6 'input' ( in float) -0:6 Constant: -0:6 10.000000 -0:6 Loop Body -0:6 Pre-Increment ( temp float) -0:6 'input' ( in float) -0:7 Loop with condition not tested first -0:7 Loop Condition -0:7 Compare Less Than ( temp bool) -0:7 Pre-Increment ( temp float) -0:7 'input' ( in float) -0:7 Constant: -0:7 10.000000 -0:7 Loop Body -0:7 Loop with condition tested first -0:7 Loop Condition -0:7 Compare Less Than ( temp bool) -0:7 Pre-Increment ( temp float) -0:7 'input' ( in float) -0:7 Constant: -0:7 10.000000 -0:7 No loop body -0:8 Branch: Return with expression -0:8 Construct vec4 ( temp 4-component vector of float) -0:8 'input' ( in float) -0:2 Function Definition: PixelShaderFunction( ( temp void) -0:2 Function Parameters: +0:6 Constant: +0:6 false (const bool) +0:6 No loop body +0:9 Function Definition: f2(f1; ( temp float) +0:9 Function Parameters: +0:9 'input' ( in float) 0:? Sequence -0:2 move second child to first child ( temp float) +0:10 Loop with condition not tested first +0:10 Loop Condition +0:10 Compare Greater Than ( temp bool) +0:10 'input' ( in float) +0:10 Constant: +0:10 2.000000 +0:10 Loop Body +0:? Sequence +0:10 Branch: Return with expression +0:10 Construct float ( temp float) +0:10 Construct vec4 ( temp 4-component vector of float) +0:10 'input' ( in float) +0:13 Function Definition: f3(f1; ( temp void) +0:13 Function Parameters: +0:13 'input' ( in float) +0:? Sequence +0:14 Loop with condition not tested first +0:14 Loop Condition +0:14 Compare Less Than ( temp bool) +0:14 'input' ( in float) +0:14 Constant: +0:14 10.000000 +0:14 Loop Body +0:14 Pre-Increment ( temp float) +0:14 'input' ( in float) +0:17 Function Definition: f4(f1; ( temp void) +0:17 Function Parameters: +0:17 'input' ( in float) +0:? Sequence +0:18 Loop with condition not tested first +0:18 Loop Condition +0:18 Compare Less Than ( temp bool) +0:18 Pre-Increment ( temp float) +0:18 'input' ( in float) +0:18 Constant: +0:18 10.000000 +0:18 Loop Body +0:18 Loop with condition tested first +0:18 Loop Condition +0:18 Compare Less Than ( temp bool) +0:18 Pre-Increment ( temp float) +0:18 'input' ( in float) +0:18 Constant: +0:18 10.000000 +0:18 No loop body +0:22 Function Definition: @PixelShaderFunction(f1; ( temp 4-component vector of float) +0:22 Function Parameters: +0:22 'input' ( in float) +0:? Sequence +0:23 Function Call: f0( ( temp void) +0:24 Function Call: f1( ( temp void) +0:25 Function Call: f2(f1; ( temp float) +0:25 'input' ( in float) +0:26 Function Call: f3(f1; ( temp void) +0:26 'input' ( in float) +0:27 Function Call: f4(f1; ( temp void) +0:27 'input' ( in float) +0:28 Branch: Return with expression +0:28 Construct vec4 ( temp 4-component vector of float) +0:28 'input' ( in float) +0:22 Function Definition: PixelShaderFunction( ( temp void) +0:22 Function Parameters: +0:? Sequence +0:22 move second child to first child ( temp float) 0:? 'input' ( temp float) 0:? 'input' (layout( location=0) in float) -0:2 move second child to first child ( temp 4-component vector of float) +0:22 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) -0:2 Function Call: @PixelShaderFunction(f1; ( temp 4-component vector of float) +0:22 Function Call: @PixelShaderFunction(f1; ( temp 4-component vector of float) 0:? 'input' ( temp float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) @@ -76,68 +103,95 @@ Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: @PixelShaderFunction(f1; ( temp 4-component vector of float) -0:2 Function Parameters: -0:2 'input' ( in float) +0:1 Function Definition: f0( ( temp void) +0:1 Function Parameters: 0:? Sequence -0:3 Loop with condition not tested first: Unroll -0:3 Loop Condition -0:3 Constant: -0:3 false (const bool) -0:3 No loop body -0:4 Loop with condition not tested first: Unroll -0:4 Loop Condition -0:4 Constant: -0:4 false (const bool) -0:4 No loop body -0:5 Loop with condition not tested first -0:5 Loop Condition -0:5 Compare Greater Than ( temp bool) -0:5 'input' ( in float) -0:5 Constant: -0:5 2.000000 -0:5 Loop Body -0:? Sequence -0:5 Branch: Return with expression -0:5 Construct vec4 ( temp 4-component vector of float) -0:5 'input' ( in float) -0:6 Loop with condition not tested first +0:2 Loop with condition not tested first: Unroll +0:2 Loop Condition +0:2 Constant: +0:2 false (const bool) +0:2 No loop body +0:5 Function Definition: f1( ( temp void) +0:5 Function Parameters: +0:? Sequence +0:6 Loop with condition not tested first: Unroll 0:6 Loop Condition -0:6 Compare Less Than ( temp bool) -0:6 'input' ( in float) -0:6 Constant: -0:6 10.000000 -0:6 Loop Body -0:6 Pre-Increment ( temp float) -0:6 'input' ( in float) -0:7 Loop with condition not tested first -0:7 Loop Condition -0:7 Compare Less Than ( temp bool) -0:7 Pre-Increment ( temp float) -0:7 'input' ( in float) -0:7 Constant: -0:7 10.000000 -0:7 Loop Body -0:7 Loop with condition tested first -0:7 Loop Condition -0:7 Compare Less Than ( temp bool) -0:7 Pre-Increment ( temp float) -0:7 'input' ( in float) -0:7 Constant: -0:7 10.000000 -0:7 No loop body -0:8 Branch: Return with expression -0:8 Construct vec4 ( temp 4-component vector of float) -0:8 'input' ( in float) -0:2 Function Definition: PixelShaderFunction( ( temp void) -0:2 Function Parameters: +0:6 Constant: +0:6 false (const bool) +0:6 No loop body +0:9 Function Definition: f2(f1; ( temp float) +0:9 Function Parameters: +0:9 'input' ( in float) 0:? Sequence -0:2 move second child to first child ( temp float) +0:10 Loop with condition not tested first +0:10 Loop Condition +0:10 Compare Greater Than ( temp bool) +0:10 'input' ( in float) +0:10 Constant: +0:10 2.000000 +0:10 Loop Body +0:? Sequence +0:10 Branch: Return with expression +0:10 Construct float ( temp float) +0:10 Construct vec4 ( temp 4-component vector of float) +0:10 'input' ( in float) +0:13 Function Definition: f3(f1; ( temp void) +0:13 Function Parameters: +0:13 'input' ( in float) +0:? Sequence +0:14 Loop with condition not tested first +0:14 Loop Condition +0:14 Compare Less Than ( temp bool) +0:14 'input' ( in float) +0:14 Constant: +0:14 10.000000 +0:14 Loop Body +0:14 Pre-Increment ( temp float) +0:14 'input' ( in float) +0:17 Function Definition: f4(f1; ( temp void) +0:17 Function Parameters: +0:17 'input' ( in float) +0:? Sequence +0:18 Loop with condition not tested first +0:18 Loop Condition +0:18 Compare Less Than ( temp bool) +0:18 Pre-Increment ( temp float) +0:18 'input' ( in float) +0:18 Constant: +0:18 10.000000 +0:18 Loop Body +0:18 Loop with condition tested first +0:18 Loop Condition +0:18 Compare Less Than ( temp bool) +0:18 Pre-Increment ( temp float) +0:18 'input' ( in float) +0:18 Constant: +0:18 10.000000 +0:18 No loop body +0:22 Function Definition: @PixelShaderFunction(f1; ( temp 4-component vector of float) +0:22 Function Parameters: +0:22 'input' ( in float) +0:? Sequence +0:23 Function Call: f0( ( temp void) +0:24 Function Call: f1( ( temp void) +0:25 Function Call: f2(f1; ( temp float) +0:25 'input' ( in float) +0:26 Function Call: f3(f1; ( temp void) +0:26 'input' ( in float) +0:27 Function Call: f4(f1; ( temp void) +0:27 'input' ( in float) +0:28 Branch: Return with expression +0:28 Construct vec4 ( temp 4-component vector of float) +0:28 'input' ( in float) +0:22 Function Definition: PixelShaderFunction( ( temp void) +0:22 Function Parameters: +0:? Sequence +0:22 move second child to first child ( temp float) 0:? 'input' ( temp float) 0:? 'input' (layout( location=0) in float) -0:2 move second child to first child ( temp 4-component vector of float) +0:22 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) -0:2 Function Call: @PixelShaderFunction(f1; ( temp 4-component vector of float) +0:22 Function Call: @PixelShaderFunction(f1; ( temp 4-component vector of float) 0:? 'input' ( temp float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) @@ -145,127 +199,176 @@ gl_FragCoord origin is upper left // Module Version 10000 // Generated by (magic number): 80007 -// Id's are bound by 71 +// Id's are bound by 99 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "PixelShaderFunction" 64 67 + EntryPoint Fragment 4 "PixelShaderFunction" 92 95 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" - Name 11 "@PixelShaderFunction(f1;" - Name 10 "input" - Name 62 "input" - Name 64 "input" - Name 67 "@entryPointOutput" - Name 68 "param" - Decorate 64(input) Location 0 - Decorate 67(@entryPointOutput) Location 0 + Name 6 "f0(" + Name 8 "f1(" + Name 14 "f2(f1;" + Name 13 "input" + Name 18 "f3(f1;" + Name 17 "input" + Name 21 "f4(f1;" + Name 20 "input" + Name 26 "@PixelShaderFunction(f1;" + Name 25 "input" + Name 77 "param" + Name 80 "param" + Name 83 "param" + Name 90 "input" + Name 92 "input" + Name 95 "@entryPointOutput" + Name 96 "param" + Decorate 92(input) Location 0 + Decorate 95(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 - 6: TypeFloat 32 - 7: TypePointer Function 6(float) - 8: TypeVector 6(float) 4 - 9: TypeFunction 8(fvec4) 7(ptr) - 17: TypeBool - 18: 17(bool) ConstantFalse - 31: 6(float) Constant 1073741824 - 38: 6(float) Constant 1065353216 - 41: 6(float) Constant 1092616192 - 63: TypePointer Input 6(float) - 64(input): 63(ptr) Variable Input - 66: TypePointer Output 8(fvec4) -67(@entryPointOutput): 66(ptr) Variable Output + 10: TypeFloat 32 + 11: TypePointer Function 10(float) + 12: TypeFunction 10(float) 11(ptr) + 16: TypeFunction 2 11(ptr) + 23: TypeVector 10(float) 4 + 24: TypeFunction 23(fvec4) 11(ptr) + 32: TypeBool + 33: 32(bool) ConstantFalse + 47: 10(float) Constant 1073741824 + 55: 10(float) Constant 1065353216 + 58: 10(float) Constant 1092616192 + 91: TypePointer Input 10(float) + 92(input): 91(ptr) Variable Input + 94: TypePointer Output 23(fvec4) +95(@entryPointOutput): 94(ptr) Variable Output 4(PixelShaderFunction): 2 Function None 3 5: Label - 62(input): 7(ptr) Variable Function - 68(param): 7(ptr) Variable Function - 65: 6(float) Load 64(input) - Store 62(input) 65 - 69: 6(float) Load 62(input) - Store 68(param) 69 - 70: 8(fvec4) FunctionCall 11(@PixelShaderFunction(f1;) 68(param) - Store 67(@entryPointOutput) 70 + 90(input): 11(ptr) Variable Function + 96(param): 11(ptr) Variable Function + 93: 10(float) Load 92(input) + Store 90(input) 93 + 97: 10(float) Load 90(input) + Store 96(param) 97 + 98: 23(fvec4) FunctionCall 26(@PixelShaderFunction(f1;) 96(param) + Store 95(@entryPointOutput) 98 Return FunctionEnd -11(@PixelShaderFunction(f1;): 8(fvec4) Function None 9 - 10(input): 7(ptr) FunctionParameter - 12: Label - Branch 13 - 13: Label - LoopMerge 15 16 Unroll - Branch 14 - 14: Label - Branch 16 - 16: Label - BranchConditional 18 13 15 - 15: Label - Branch 19 - 19: Label - LoopMerge 21 22 Unroll - Branch 20 - 20: Label - Branch 22 - 22: Label - BranchConditional 18 19 21 - 21: Label - Branch 23 - 23: Label - LoopMerge 25 26 None - Branch 24 - 24: Label - 27: 6(float) Load 10(input) - 28: 8(fvec4) CompositeConstruct 27 27 27 27 - ReturnValue 28 - 26: Label - 30: 6(float) Load 10(input) - 32: 17(bool) FOrdGreaterThan 30 31 - BranchConditional 32 23 25 - 25: Label - Branch 33 - 33: Label - LoopMerge 35 36 None + 6(f0(): 2 Function None 3 + 7: Label + Branch 28 + 28: Label + LoopMerge 30 31 Unroll + Branch 29 + 29: Label + Branch 31 + 31: Label + BranchConditional 33 28 30 + 30: Label + Return + FunctionEnd + 8(f1(): 2 Function None 3 + 9: Label Branch 34 34: Label - 37: 6(float) Load 10(input) - 39: 6(float) FAdd 37 38 - Store 10(input) 39 - Branch 36 - 36: Label - 40: 6(float) Load 10(input) - 42: 17(bool) FOrdLessThan 40 41 - BranchConditional 42 33 35 + LoopMerge 36 37 Unroll + Branch 35 35: Label - Branch 43 - 43: Label - LoopMerge 45 46 None - Branch 44 - 44: Label - Branch 47 - 47: Label - LoopMerge 49 50 None + Branch 37 + 37: Label + BranchConditional 33 34 36 + 36: Label + Return + FunctionEnd + 14(f2(f1;): 10(float) Function None 12 + 13(input): 11(ptr) FunctionParameter + 15: Label + Branch 38 + 38: Label + LoopMerge 40 41 None + Branch 39 + 39: Label + 42: 10(float) Load 13(input) + 43: 23(fvec4) CompositeConstruct 42 42 42 42 + 44: 10(float) CompositeExtract 43 0 + ReturnValue 44 + 41: Label + Branch 38 + 40: Label + Unreachable + FunctionEnd + 18(f3(f1;): 2 Function None 16 + 17(input): 11(ptr) FunctionParameter + 19: Label + Branch 50 + 50: Label + LoopMerge 52 53 None Branch 51 51: Label - 52: 6(float) Load 10(input) - 53: 6(float) FAdd 52 38 - Store 10(input) 53 - 54: 17(bool) FOrdLessThan 53 41 - BranchConditional 54 48 49 - 48: Label - Branch 50 - 50: Label - Branch 47 - 49: Label - Branch 46 - 46: Label - 55: 6(float) Load 10(input) - 56: 6(float) FAdd 55 38 - Store 10(input) 56 - 57: 17(bool) FOrdLessThan 56 41 - BranchConditional 57 43 45 - 45: Label - 58: 6(float) Load 10(input) - 59: 8(fvec4) CompositeConstruct 58 58 58 58 - ReturnValue 59 + 54: 10(float) Load 17(input) + 56: 10(float) FAdd 54 55 + Store 17(input) 56 + Branch 53 + 53: Label + 57: 10(float) Load 17(input) + 59: 32(bool) FOrdLessThan 57 58 + BranchConditional 59 50 52 + 52: Label + Return + FunctionEnd + 21(f4(f1;): 2 Function None 16 + 20(input): 11(ptr) FunctionParameter + 22: Label + Branch 60 + 60: Label + LoopMerge 62 63 None + Branch 61 + 61: Label + Branch 64 + 64: Label + LoopMerge 66 67 None + Branch 68 + 68: Label + 69: 10(float) Load 20(input) + 70: 10(float) FAdd 69 55 + Store 20(input) 70 + 71: 32(bool) FOrdLessThan 70 58 + BranchConditional 71 65 66 + 65: Label + Branch 67 + 67: Label + Branch 64 + 66: Label + Branch 63 + 63: Label + 72: 10(float) Load 20(input) + 73: 10(float) FAdd 72 55 + Store 20(input) 73 + 74: 32(bool) FOrdLessThan 73 58 + BranchConditional 74 60 62 + 62: Label + Return + FunctionEnd +26(@PixelShaderFunction(f1;): 23(fvec4) Function None 24 + 25(input): 11(ptr) FunctionParameter + 27: Label + 77(param): 11(ptr) Variable Function + 80(param): 11(ptr) Variable Function + 83(param): 11(ptr) Variable Function + 75: 2 FunctionCall 6(f0() + 76: 2 FunctionCall 8(f1() + 78: 10(float) Load 25(input) + Store 77(param) 78 + 79: 10(float) FunctionCall 14(f2(f1;) 77(param) + 81: 10(float) Load 25(input) + Store 80(param) 81 + 82: 2 FunctionCall 18(f3(f1;) 80(param) + 84: 10(float) Load 25(input) + Store 83(param) 84 + 85: 2 FunctionCall 21(f4(f1;) 83(param) + 86: 10(float) Load 25(input) + 87: 23(fvec4) CompositeConstruct 86 86 86 86 + ReturnValue 87 FunctionEnd diff --git a/Test/baseResults/hlsl.forLoop.frag.out b/Test/baseResults/hlsl.forLoop.frag.out index 3e835f80..b8f59e88 100644 --- a/Test/baseResults/hlsl.forLoop.frag.out +++ b/Test/baseResults/hlsl.forLoop.frag.out @@ -2,197 +2,251 @@ hlsl.forLoop.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float) -0:2 Function Parameters: -0:2 'input' ( in 4-component vector of float) +0:1 Function Definition: f0( ( temp void) +0:1 Function Parameters: 0:? Sequence 0:? Sequence -0:3 Loop with condition tested first -0:3 No loop condition -0:3 No loop body -0:4 Sequence -0:4 Pre-Increment ( temp 4-component vector of float) -0:4 'input' ( in 4-component vector of float) -0:4 Loop with condition tested first -0:4 No loop condition -0:4 No loop body -0:? Sequence -0:5 Loop with condition tested first: Unroll -0:5 Loop Condition -0:5 any ( temp bool) -0:5 NotEqual ( temp 4-component vector of bool) -0:5 'input' ( in 4-component vector of float) -0:5 'input' ( in 4-component vector of float) -0:5 No loop body -0:? Sequence +0:2 Loop with condition tested first +0:2 No loop condition +0:2 No loop body +0:5 Function Definition: f1(vf4; ( temp void) +0:5 Function Parameters: +0:5 'input' ( in 4-component vector of float) +0:? Sequence +0:6 Sequence +0:6 Pre-Increment ( temp 4-component vector of float) +0:6 'input' ( in 4-component vector of float) 0:6 Loop with condition tested first -0:6 Loop Condition -0:6 any ( temp bool) -0:6 NotEqual ( temp 4-component vector of bool) -0:6 'input' ( in 4-component vector of float) -0:6 'input' ( in 4-component vector of float) -0:6 Loop Body -0:? Sequence -0:6 Branch: Return with expression -0:6 Negate value ( temp 4-component vector of float) -0:6 'input' ( in 4-component vector of float) -0:7 Sequence -0:7 Pre-Decrement ( temp 4-component vector of float) -0:7 'input' ( in 4-component vector of float) -0:7 Loop with condition tested first -0:7 Loop Condition -0:7 any ( temp bool) -0:7 NotEqual ( temp 4-component vector of bool) -0:7 'input' ( in 4-component vector of float) -0:7 'input' ( in 4-component vector of float) -0:7 Loop Body -0:? Sequence -0:7 Branch: Return with expression -0:7 Negate value ( temp 4-component vector of float) -0:7 'input' ( in 4-component vector of float) -0:7 Loop Terminal Expression -0:7 add second child into first child ( temp 4-component vector of float) -0:7 'input' ( in 4-component vector of float) -0:7 Constant: -0:7 2.000000 +0:6 No loop condition +0:6 No loop body +0:9 Function Definition: f2(vf4; ( temp void) +0:9 Function Parameters: +0:9 'input' ( in 4-component vector of float) +0:? Sequence 0:? Sequence -0:8 Loop with condition tested first -0:8 No loop condition -0:8 Loop Body -0:8 Test condition and select ( temp void) -0:8 Condition -0:8 Compare Greater Than ( temp bool) -0:8 direct index ( temp float) -0:8 'input' ( in 4-component vector of float) -0:8 Constant: -0:8 0 (const int) -0:8 Constant: -0:8 2.000000 -0:8 true case -0:8 Branch: Break +0:10 Loop with condition tested first: Unroll +0:10 Loop Condition +0:10 any ( temp bool) +0:10 NotEqual ( temp 4-component vector of bool) +0:10 'input' ( in 4-component vector of float) +0:10 'input' ( in 4-component vector of float) +0:10 No loop body +0:13 Function Definition: f3(vf4; ( temp float) +0:13 Function Parameters: +0:13 'input' ( in 4-component vector of float) +0:? Sequence 0:? Sequence -0:9 Loop with condition tested first -0:9 No loop condition -0:9 Loop Body -0:9 Test condition and select ( temp void) -0:9 Condition -0:9 Compare Greater Than ( temp bool) -0:9 direct index ( temp float) -0:9 'input' ( in 4-component vector of float) -0:9 Constant: -0:9 0 (const int) -0:9 Constant: -0:9 2.000000 -0:9 true case -0:9 Branch: Continue -0:11 Sequence -0:11 move second child to first child ( temp int) -0:11 'ii' ( temp int) -0:11 Constant: -0:11 -1 (const int) -0:11 Loop with condition tested first -0:11 Loop Condition -0:11 Compare Less Than ( temp bool) -0:11 'ii' ( temp int) -0:11 Constant: -0:11 3 (const int) -0:11 Loop Body -0:11 Test condition and select ( temp void) -0:11 Condition -0:11 Compare Equal ( temp bool) -0:11 'ii' ( temp int) -0:11 Constant: -0:11 2 (const int) -0:11 true case -0:11 Branch: Continue -0:11 Loop Terminal Expression -0:11 Pre-Increment ( temp int) -0:11 'ii' ( temp int) -0:12 Pre-Decrement ( temp float) -0:12 'ii' ( temp float) -0:13 Sequence -0:13 move second child to first child ( temp int) -0:13 'first' ( temp int) -0:13 Constant: -0:13 0 (const int) -0:13 move second child to first child ( temp int) -0:13 'second' ( temp int) -0:13 Constant: -0:13 1 (const int) -0:13 Loop with condition tested first -0:13 No loop condition -0:13 Loop Body -0:13 add ( temp int) -0:13 'first' ( temp int) -0:13 'second' ( temp int) -0:14 Sequence -0:14 move second child to first child ( temp int) -0:14 'i' ( temp int) -0:14 Constant: -0:14 0 (const int) -0:14 move second child to first child ( temp int) -0:14 'count' ( temp int) -0:14 Convert float to int ( temp int) -0:14 'ii' ( temp float) 0:14 Loop with condition tested first 0:14 Loop Condition -0:14 Compare Less Than ( temp bool) -0:14 'i' ( temp int) -0:14 'count' ( temp int) -0:14 No loop body -0:14 Loop Terminal Expression -0:14 Post-Increment ( temp int) -0:14 'i' ( temp int) -0:15 Sequence -0:15 move second child to first child ( temp float) -0:15 'first' ( temp float) -0:15 Constant: -0:15 0.000000 -0:15 Loop with condition tested first -0:15 Loop Condition -0:15 Compare Less Than ( temp bool) -0:15 'first' ( temp float) -0:15 direct index ( temp float) -0:15 'second' ( temp 2-element array of float) -0:15 Constant: -0:15 0 (const int) -0:15 Loop Body -0:15 add ( temp float) -0:15 add ( temp float) -0:15 'first' ( temp float) -0:15 direct index ( temp float) -0:15 'second' ( temp 2-element array of float) -0:15 Constant: -0:15 1 (const int) -0:15 'third' ( temp float) -0:15 Loop Terminal Expression -0:15 Pre-Increment ( temp float) -0:15 direct index ( temp float) -0:15 'second' ( temp 2-element array of float) -0:15 Constant: -0:15 1 (const int) -0:? Sequence -0:16 Comma ( temp float) -0:16 Comma ( temp float) -0:16 Pre-Decrement ( temp float) -0:16 'ii' ( temp float) -0:16 Pre-Decrement ( temp float) -0:16 'ii' ( temp float) -0:16 Pre-Decrement ( temp float) -0:16 'ii' ( temp float) -0:16 Loop with condition tested first -0:16 No loop condition -0:16 Loop Body -0:16 'ii' ( temp float) -0:2 Function Definition: PixelShaderFunction( ( temp void) -0:2 Function Parameters: +0:14 any ( temp bool) +0:14 NotEqual ( temp 4-component vector of bool) +0:14 'input' ( in 4-component vector of float) +0:14 'input' ( in 4-component vector of float) +0:14 Loop Body +0:? Sequence +0:14 Branch: Return with expression +0:14 Construct float ( temp float) +0:14 Negate value ( temp 4-component vector of float) +0:14 'input' ( in 4-component vector of float) +0:17 Function Definition: f4(vf4; ( temp float) +0:17 Function Parameters: +0:17 'input' ( in 4-component vector of float) 0:? Sequence -0:2 move second child to first child ( temp 4-component vector of float) +0:18 Sequence +0:18 Pre-Decrement ( temp 4-component vector of float) +0:18 'input' ( in 4-component vector of float) +0:18 Loop with condition tested first +0:18 Loop Condition +0:18 any ( temp bool) +0:18 NotEqual ( temp 4-component vector of bool) +0:18 'input' ( in 4-component vector of float) +0:18 'input' ( in 4-component vector of float) +0:18 Loop Body +0:? Sequence +0:18 Branch: Return with expression +0:18 Construct float ( temp float) +0:18 Negate value ( temp 4-component vector of float) +0:18 'input' ( in 4-component vector of float) +0:18 Loop Terminal Expression +0:18 add second child into first child ( temp 4-component vector of float) +0:18 'input' ( in 4-component vector of float) +0:18 Constant: +0:18 2.000000 +0:21 Function Definition: f5(vf4; ( temp void) +0:21 Function Parameters: +0:21 'input' ( in 4-component vector of float) +0:? Sequence +0:? Sequence +0:22 Loop with condition tested first +0:22 No loop condition +0:22 Loop Body +0:22 Test condition and select ( temp void) +0:22 Condition +0:22 Compare Greater Than ( temp bool) +0:22 direct index ( temp float) +0:22 'input' ( in 4-component vector of float) +0:22 Constant: +0:22 0 (const int) +0:22 Constant: +0:22 2.000000 +0:22 true case +0:22 Branch: Break +0:25 Function Definition: f6(vf4; ( temp void) +0:25 Function Parameters: +0:25 'input' ( in 4-component vector of float) +0:? Sequence +0:? Sequence +0:26 Loop with condition tested first +0:26 No loop condition +0:26 Loop Body +0:26 Test condition and select ( temp void) +0:26 Condition +0:26 Compare Greater Than ( temp bool) +0:26 direct index ( temp float) +0:26 'input' ( in 4-component vector of float) +0:26 Constant: +0:26 0 (const int) +0:26 Constant: +0:26 2.000000 +0:26 true case +0:26 Branch: Continue +0:29 Function Definition: f99( ( temp void) +0:29 Function Parameters: +0:? Sequence +0:30 Sequence +0:30 move second child to first child ( temp int) +0:30 'first' ( temp int) +0:30 Constant: +0:30 0 (const int) +0:30 move second child to first child ( temp int) +0:30 'second' ( temp int) +0:30 Constant: +0:30 1 (const int) +0:30 Loop with condition tested first +0:30 No loop condition +0:30 Loop Body +0:30 add ( temp int) +0:30 'first' ( temp int) +0:30 'second' ( temp int) +0:33 Function Definition: f100(f1; ( temp void) +0:33 Function Parameters: +0:33 'ii' ( in float) +0:? Sequence +0:? Sequence +0:34 Comma ( temp float) +0:34 Comma ( temp float) +0:34 Pre-Decrement ( temp float) +0:34 'ii' ( in float) +0:34 Pre-Decrement ( temp float) +0:34 'ii' ( in float) +0:34 Pre-Decrement ( temp float) +0:34 'ii' ( in float) +0:34 Loop with condition tested first +0:34 No loop condition +0:34 Loop Body +0:34 'ii' ( in float) +0:38 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float) +0:38 Function Parameters: +0:38 'input' ( in 4-component vector of float) +0:? Sequence +0:39 Function Call: f0( ( temp void) +0:40 Function Call: f1(vf4; ( temp void) +0:40 'input' ( in 4-component vector of float) +0:41 Function Call: f2(vf4; ( temp void) +0:41 'input' ( in 4-component vector of float) +0:42 Function Call: f3(vf4; ( temp float) +0:42 'input' ( in 4-component vector of float) +0:43 Function Call: f4(vf4; ( temp float) +0:43 'input' ( in 4-component vector of float) +0:44 Function Call: f5(vf4; ( temp void) +0:44 'input' ( in 4-component vector of float) +0:45 Function Call: f6(vf4; ( temp void) +0:45 'input' ( in 4-component vector of float) +0:48 Sequence +0:48 move second child to first child ( temp int) +0:48 'ii' ( temp int) +0:48 Constant: +0:48 -1 (const int) +0:48 Loop with condition tested first +0:48 Loop Condition +0:48 Compare Less Than ( temp bool) +0:48 'ii' ( temp int) +0:48 Constant: +0:48 3 (const int) +0:48 Loop Body +0:48 Test condition and select ( temp void) +0:48 Condition +0:48 Compare Equal ( temp bool) +0:48 'ii' ( temp int) +0:48 Constant: +0:48 2 (const int) +0:48 true case +0:48 Branch: Continue +0:48 Loop Terminal Expression +0:48 Pre-Increment ( temp int) +0:48 'ii' ( temp int) +0:49 Pre-Decrement ( temp float) +0:49 'ii' ( temp float) +0:51 Function Call: f99( ( temp void) +0:53 Sequence +0:53 move second child to first child ( temp int) +0:53 'i' ( temp int) +0:53 Constant: +0:53 0 (const int) +0:53 move second child to first child ( temp int) +0:53 'count' ( temp int) +0:53 Convert float to int ( temp int) +0:53 'ii' ( temp float) +0:53 Loop with condition tested first +0:53 Loop Condition +0:53 Compare Less Than ( temp bool) +0:53 'i' ( temp int) +0:53 'count' ( temp int) +0:53 No loop body +0:53 Loop Terminal Expression +0:53 Post-Increment ( temp int) +0:53 'i' ( temp int) +0:54 Sequence +0:54 move second child to first child ( temp float) +0:54 'first' ( temp float) +0:54 Constant: +0:54 0.000000 +0:54 Loop with condition tested first +0:54 Loop Condition +0:54 Compare Less Than ( temp bool) +0:54 'first' ( temp float) +0:54 direct index ( temp float) +0:54 'second' ( temp 2-element array of float) +0:54 Constant: +0:54 0 (const int) +0:54 Loop Body +0:54 add ( temp float) +0:54 add ( temp float) +0:54 'first' ( temp float) +0:54 direct index ( temp float) +0:54 'second' ( temp 2-element array of float) +0:54 Constant: +0:54 1 (const int) +0:54 'third' ( temp float) +0:54 Loop Terminal Expression +0:54 Pre-Increment ( temp float) +0:54 direct index ( temp float) +0:54 'second' ( temp 2-element array of float) +0:54 Constant: +0:54 1 (const int) +0:56 Function Call: f100(f1; ( temp void) +0:56 'ii' ( temp float) +0:58 Branch: Return with expression +0:58 'input' ( in 4-component vector of float) +0:38 Function Definition: PixelShaderFunction( ( temp void) +0:38 Function Parameters: +0:? Sequence +0:38 move second child to first child ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) -0:2 move second child to first child ( temp 4-component vector of float) +0:38 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) -0:2 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float) +0:38 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) @@ -205,197 +259,251 @@ Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float) -0:2 Function Parameters: -0:2 'input' ( in 4-component vector of float) +0:1 Function Definition: f0( ( temp void) +0:1 Function Parameters: 0:? Sequence 0:? Sequence -0:3 Loop with condition tested first -0:3 No loop condition -0:3 No loop body -0:4 Sequence -0:4 Pre-Increment ( temp 4-component vector of float) -0:4 'input' ( in 4-component vector of float) -0:4 Loop with condition tested first -0:4 No loop condition -0:4 No loop body -0:? Sequence -0:5 Loop with condition tested first: Unroll -0:5 Loop Condition -0:5 any ( temp bool) -0:5 NotEqual ( temp 4-component vector of bool) -0:5 'input' ( in 4-component vector of float) -0:5 'input' ( in 4-component vector of float) -0:5 No loop body -0:? Sequence +0:2 Loop with condition tested first +0:2 No loop condition +0:2 No loop body +0:5 Function Definition: f1(vf4; ( temp void) +0:5 Function Parameters: +0:5 'input' ( in 4-component vector of float) +0:? Sequence +0:6 Sequence +0:6 Pre-Increment ( temp 4-component vector of float) +0:6 'input' ( in 4-component vector of float) 0:6 Loop with condition tested first -0:6 Loop Condition -0:6 any ( temp bool) -0:6 NotEqual ( temp 4-component vector of bool) -0:6 'input' ( in 4-component vector of float) -0:6 'input' ( in 4-component vector of float) -0:6 Loop Body -0:? Sequence -0:6 Branch: Return with expression -0:6 Negate value ( temp 4-component vector of float) -0:6 'input' ( in 4-component vector of float) -0:7 Sequence -0:7 Pre-Decrement ( temp 4-component vector of float) -0:7 'input' ( in 4-component vector of float) -0:7 Loop with condition tested first -0:7 Loop Condition -0:7 any ( temp bool) -0:7 NotEqual ( temp 4-component vector of bool) -0:7 'input' ( in 4-component vector of float) -0:7 'input' ( in 4-component vector of float) -0:7 Loop Body -0:? Sequence -0:7 Branch: Return with expression -0:7 Negate value ( temp 4-component vector of float) -0:7 'input' ( in 4-component vector of float) -0:7 Loop Terminal Expression -0:7 add second child into first child ( temp 4-component vector of float) -0:7 'input' ( in 4-component vector of float) -0:7 Constant: -0:7 2.000000 +0:6 No loop condition +0:6 No loop body +0:9 Function Definition: f2(vf4; ( temp void) +0:9 Function Parameters: +0:9 'input' ( in 4-component vector of float) +0:? Sequence 0:? Sequence -0:8 Loop with condition tested first -0:8 No loop condition -0:8 Loop Body -0:8 Test condition and select ( temp void) -0:8 Condition -0:8 Compare Greater Than ( temp bool) -0:8 direct index ( temp float) -0:8 'input' ( in 4-component vector of float) -0:8 Constant: -0:8 0 (const int) -0:8 Constant: -0:8 2.000000 -0:8 true case -0:8 Branch: Break +0:10 Loop with condition tested first: Unroll +0:10 Loop Condition +0:10 any ( temp bool) +0:10 NotEqual ( temp 4-component vector of bool) +0:10 'input' ( in 4-component vector of float) +0:10 'input' ( in 4-component vector of float) +0:10 No loop body +0:13 Function Definition: f3(vf4; ( temp float) +0:13 Function Parameters: +0:13 'input' ( in 4-component vector of float) +0:? Sequence 0:? Sequence -0:9 Loop with condition tested first -0:9 No loop condition -0:9 Loop Body -0:9 Test condition and select ( temp void) -0:9 Condition -0:9 Compare Greater Than ( temp bool) -0:9 direct index ( temp float) -0:9 'input' ( in 4-component vector of float) -0:9 Constant: -0:9 0 (const int) -0:9 Constant: -0:9 2.000000 -0:9 true case -0:9 Branch: Continue -0:11 Sequence -0:11 move second child to first child ( temp int) -0:11 'ii' ( temp int) -0:11 Constant: -0:11 -1 (const int) -0:11 Loop with condition tested first -0:11 Loop Condition -0:11 Compare Less Than ( temp bool) -0:11 'ii' ( temp int) -0:11 Constant: -0:11 3 (const int) -0:11 Loop Body -0:11 Test condition and select ( temp void) -0:11 Condition -0:11 Compare Equal ( temp bool) -0:11 'ii' ( temp int) -0:11 Constant: -0:11 2 (const int) -0:11 true case -0:11 Branch: Continue -0:11 Loop Terminal Expression -0:11 Pre-Increment ( temp int) -0:11 'ii' ( temp int) -0:12 Pre-Decrement ( temp float) -0:12 'ii' ( temp float) -0:13 Sequence -0:13 move second child to first child ( temp int) -0:13 'first' ( temp int) -0:13 Constant: -0:13 0 (const int) -0:13 move second child to first child ( temp int) -0:13 'second' ( temp int) -0:13 Constant: -0:13 1 (const int) -0:13 Loop with condition tested first -0:13 No loop condition -0:13 Loop Body -0:13 add ( temp int) -0:13 'first' ( temp int) -0:13 'second' ( temp int) -0:14 Sequence -0:14 move second child to first child ( temp int) -0:14 'i' ( temp int) -0:14 Constant: -0:14 0 (const int) -0:14 move second child to first child ( temp int) -0:14 'count' ( temp int) -0:14 Convert float to int ( temp int) -0:14 'ii' ( temp float) 0:14 Loop with condition tested first 0:14 Loop Condition -0:14 Compare Less Than ( temp bool) -0:14 'i' ( temp int) -0:14 'count' ( temp int) -0:14 No loop body -0:14 Loop Terminal Expression -0:14 Post-Increment ( temp int) -0:14 'i' ( temp int) -0:15 Sequence -0:15 move second child to first child ( temp float) -0:15 'first' ( temp float) -0:15 Constant: -0:15 0.000000 -0:15 Loop with condition tested first -0:15 Loop Condition -0:15 Compare Less Than ( temp bool) -0:15 'first' ( temp float) -0:15 direct index ( temp float) -0:15 'second' ( temp 2-element array of float) -0:15 Constant: -0:15 0 (const int) -0:15 Loop Body -0:15 add ( temp float) -0:15 add ( temp float) -0:15 'first' ( temp float) -0:15 direct index ( temp float) -0:15 'second' ( temp 2-element array of float) -0:15 Constant: -0:15 1 (const int) -0:15 'third' ( temp float) -0:15 Loop Terminal Expression -0:15 Pre-Increment ( temp float) -0:15 direct index ( temp float) -0:15 'second' ( temp 2-element array of float) -0:15 Constant: -0:15 1 (const int) -0:? Sequence -0:16 Comma ( temp float) -0:16 Comma ( temp float) -0:16 Pre-Decrement ( temp float) -0:16 'ii' ( temp float) -0:16 Pre-Decrement ( temp float) -0:16 'ii' ( temp float) -0:16 Pre-Decrement ( temp float) -0:16 'ii' ( temp float) -0:16 Loop with condition tested first -0:16 No loop condition -0:16 Loop Body -0:16 'ii' ( temp float) -0:2 Function Definition: PixelShaderFunction( ( temp void) -0:2 Function Parameters: +0:14 any ( temp bool) +0:14 NotEqual ( temp 4-component vector of bool) +0:14 'input' ( in 4-component vector of float) +0:14 'input' ( in 4-component vector of float) +0:14 Loop Body +0:? Sequence +0:14 Branch: Return with expression +0:14 Construct float ( temp float) +0:14 Negate value ( temp 4-component vector of float) +0:14 'input' ( in 4-component vector of float) +0:17 Function Definition: f4(vf4; ( temp float) +0:17 Function Parameters: +0:17 'input' ( in 4-component vector of float) 0:? Sequence -0:2 move second child to first child ( temp 4-component vector of float) +0:18 Sequence +0:18 Pre-Decrement ( temp 4-component vector of float) +0:18 'input' ( in 4-component vector of float) +0:18 Loop with condition tested first +0:18 Loop Condition +0:18 any ( temp bool) +0:18 NotEqual ( temp 4-component vector of bool) +0:18 'input' ( in 4-component vector of float) +0:18 'input' ( in 4-component vector of float) +0:18 Loop Body +0:? Sequence +0:18 Branch: Return with expression +0:18 Construct float ( temp float) +0:18 Negate value ( temp 4-component vector of float) +0:18 'input' ( in 4-component vector of float) +0:18 Loop Terminal Expression +0:18 add second child into first child ( temp 4-component vector of float) +0:18 'input' ( in 4-component vector of float) +0:18 Constant: +0:18 2.000000 +0:21 Function Definition: f5(vf4; ( temp void) +0:21 Function Parameters: +0:21 'input' ( in 4-component vector of float) +0:? Sequence +0:? Sequence +0:22 Loop with condition tested first +0:22 No loop condition +0:22 Loop Body +0:22 Test condition and select ( temp void) +0:22 Condition +0:22 Compare Greater Than ( temp bool) +0:22 direct index ( temp float) +0:22 'input' ( in 4-component vector of float) +0:22 Constant: +0:22 0 (const int) +0:22 Constant: +0:22 2.000000 +0:22 true case +0:22 Branch: Break +0:25 Function Definition: f6(vf4; ( temp void) +0:25 Function Parameters: +0:25 'input' ( in 4-component vector of float) +0:? Sequence +0:? Sequence +0:26 Loop with condition tested first +0:26 No loop condition +0:26 Loop Body +0:26 Test condition and select ( temp void) +0:26 Condition +0:26 Compare Greater Than ( temp bool) +0:26 direct index ( temp float) +0:26 'input' ( in 4-component vector of float) +0:26 Constant: +0:26 0 (const int) +0:26 Constant: +0:26 2.000000 +0:26 true case +0:26 Branch: Continue +0:29 Function Definition: f99( ( temp void) +0:29 Function Parameters: +0:? Sequence +0:30 Sequence +0:30 move second child to first child ( temp int) +0:30 'first' ( temp int) +0:30 Constant: +0:30 0 (const int) +0:30 move second child to first child ( temp int) +0:30 'second' ( temp int) +0:30 Constant: +0:30 1 (const int) +0:30 Loop with condition tested first +0:30 No loop condition +0:30 Loop Body +0:30 add ( temp int) +0:30 'first' ( temp int) +0:30 'second' ( temp int) +0:33 Function Definition: f100(f1; ( temp void) +0:33 Function Parameters: +0:33 'ii' ( in float) +0:? Sequence +0:? Sequence +0:34 Comma ( temp float) +0:34 Comma ( temp float) +0:34 Pre-Decrement ( temp float) +0:34 'ii' ( in float) +0:34 Pre-Decrement ( temp float) +0:34 'ii' ( in float) +0:34 Pre-Decrement ( temp float) +0:34 'ii' ( in float) +0:34 Loop with condition tested first +0:34 No loop condition +0:34 Loop Body +0:34 'ii' ( in float) +0:38 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float) +0:38 Function Parameters: +0:38 'input' ( in 4-component vector of float) +0:? Sequence +0:39 Function Call: f0( ( temp void) +0:40 Function Call: f1(vf4; ( temp void) +0:40 'input' ( in 4-component vector of float) +0:41 Function Call: f2(vf4; ( temp void) +0:41 'input' ( in 4-component vector of float) +0:42 Function Call: f3(vf4; ( temp float) +0:42 'input' ( in 4-component vector of float) +0:43 Function Call: f4(vf4; ( temp float) +0:43 'input' ( in 4-component vector of float) +0:44 Function Call: f5(vf4; ( temp void) +0:44 'input' ( in 4-component vector of float) +0:45 Function Call: f6(vf4; ( temp void) +0:45 'input' ( in 4-component vector of float) +0:48 Sequence +0:48 move second child to first child ( temp int) +0:48 'ii' ( temp int) +0:48 Constant: +0:48 -1 (const int) +0:48 Loop with condition tested first +0:48 Loop Condition +0:48 Compare Less Than ( temp bool) +0:48 'ii' ( temp int) +0:48 Constant: +0:48 3 (const int) +0:48 Loop Body +0:48 Test condition and select ( temp void) +0:48 Condition +0:48 Compare Equal ( temp bool) +0:48 'ii' ( temp int) +0:48 Constant: +0:48 2 (const int) +0:48 true case +0:48 Branch: Continue +0:48 Loop Terminal Expression +0:48 Pre-Increment ( temp int) +0:48 'ii' ( temp int) +0:49 Pre-Decrement ( temp float) +0:49 'ii' ( temp float) +0:51 Function Call: f99( ( temp void) +0:53 Sequence +0:53 move second child to first child ( temp int) +0:53 'i' ( temp int) +0:53 Constant: +0:53 0 (const int) +0:53 move second child to first child ( temp int) +0:53 'count' ( temp int) +0:53 Convert float to int ( temp int) +0:53 'ii' ( temp float) +0:53 Loop with condition tested first +0:53 Loop Condition +0:53 Compare Less Than ( temp bool) +0:53 'i' ( temp int) +0:53 'count' ( temp int) +0:53 No loop body +0:53 Loop Terminal Expression +0:53 Post-Increment ( temp int) +0:53 'i' ( temp int) +0:54 Sequence +0:54 move second child to first child ( temp float) +0:54 'first' ( temp float) +0:54 Constant: +0:54 0.000000 +0:54 Loop with condition tested first +0:54 Loop Condition +0:54 Compare Less Than ( temp bool) +0:54 'first' ( temp float) +0:54 direct index ( temp float) +0:54 'second' ( temp 2-element array of float) +0:54 Constant: +0:54 0 (const int) +0:54 Loop Body +0:54 add ( temp float) +0:54 add ( temp float) +0:54 'first' ( temp float) +0:54 direct index ( temp float) +0:54 'second' ( temp 2-element array of float) +0:54 Constant: +0:54 1 (const int) +0:54 'third' ( temp float) +0:54 Loop Terminal Expression +0:54 Pre-Increment ( temp float) +0:54 direct index ( temp float) +0:54 'second' ( temp 2-element array of float) +0:54 Constant: +0:54 1 (const int) +0:56 Function Call: f100(f1; ( temp void) +0:56 'ii' ( temp float) +0:58 Branch: Return with expression +0:58 'input' ( in 4-component vector of float) +0:38 Function Definition: PixelShaderFunction( ( temp void) +0:38 Function Parameters: +0:? Sequence +0:38 move second child to first child ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) -0:2 move second child to first child ( temp 4-component vector of float) +0:38 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) -0:2 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float) +0:38 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) @@ -403,303 +511,402 @@ gl_FragCoord origin is upper left // Module Version 10000 // Generated by (magic number): 80007 -// Id's are bound by 183 +// Id's are bound by 240 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "PixelShaderFunction" 176 179 + EntryPoint Fragment 4 "PixelShaderFunction" 233 236 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" - Name 11 "@PixelShaderFunction(vf4;" - Name 10 "input" - Name 92 "ii" - Name 111 "ii" - Name 114 "first" - Name 116 "second" - Name 124 "i" - Name 125 "count" - Name 138 "first" - Name 149 "second" - Name 157 "third" - Name 174 "input" - Name 176 "input" - Name 179 "@entryPointOutput" - Name 180 "param" - Decorate 176(input) Location 0 - Decorate 179(@entryPointOutput) Location 0 + Name 6 "f0(" + Name 13 "f1(vf4;" + Name 12 "input" + Name 16 "f2(vf4;" + Name 15 "input" + Name 20 "f3(vf4;" + Name 19 "input" + Name 23 "f4(vf4;" + Name 22 "input" + Name 26 "f5(vf4;" + Name 25 "input" + Name 29 "f6(vf4;" + Name 28 "input" + Name 31 "f99(" + Name 36 "f100(f1;" + Name 35 "ii" + Name 40 "@PixelShaderFunction(vf4;" + Name 39 "input" + Name 124 "first" + Name 126 "second" + Name 146 "param" + Name 149 "param" + Name 152 "param" + Name 155 "param" + Name 158 "param" + Name 161 "param" + Name 164 "ii" + Name 182 "ii" + Name 186 "i" + Name 187 "count" + Name 200 "first" + Name 211 "second" + Name 219 "third" + Name 225 "param" + Name 231 "input" + Name 233 "input" + Name 236 "@entryPointOutput" + Name 237 "param" + Decorate 233(input) Location 0 + Decorate 236(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 - 6: TypeFloat 32 - 7: TypeVector 6(float) 4 - 8: TypePointer Function 7(fvec4) - 9: TypeFunction 7(fvec4) 8(ptr) - 18: 6(float) Constant 1065353216 - 32: TypeBool - 33: TypeVector 32(bool) 4 - 63: 6(float) Constant 1073741824 - 71: TypeInt 32 0 - 72: 71(int) Constant 0 - 73: TypePointer Function 6(float) - 90: TypeInt 32 1 - 91: TypePointer Function 90(int) - 93: 90(int) Constant 4294967295 - 100: 90(int) Constant 3 - 103: 90(int) Constant 2 - 109: 90(int) Constant 1 - 115: 90(int) Constant 0 - 139: 6(float) Constant 0 - 146: 71(int) Constant 2 - 147: TypeArray 6(float) 146 - 148: TypePointer Function 147 - 175: TypePointer Input 7(fvec4) - 176(input): 175(ptr) Variable Input - 178: TypePointer Output 7(fvec4) -179(@entryPointOutput): 178(ptr) Variable Output + 8: TypeFloat 32 + 9: TypeVector 8(float) 4 + 10: TypePointer Function 9(fvec4) + 11: TypeFunction 2 10(ptr) + 18: TypeFunction 8(float) 10(ptr) + 33: TypePointer Function 8(float) + 34: TypeFunction 2 33(ptr) + 38: TypeFunction 9(fvec4) 10(ptr) + 47: 8(float) Constant 1065353216 + 61: TypeBool + 62: TypeVector 61(bool) 4 + 95: 8(float) Constant 1073741824 + 104: TypeInt 32 0 + 105: 104(int) Constant 0 + 122: TypeInt 32 1 + 123: TypePointer Function 122(int) + 125: 122(int) Constant 0 + 127: 122(int) Constant 1 + 165: 122(int) Constant 4294967295 + 172: 122(int) Constant 3 + 175: 122(int) Constant 2 + 201: 8(float) Constant 0 + 208: 104(int) Constant 2 + 209: TypeArray 8(float) 208 + 210: TypePointer Function 209 + 232: TypePointer Input 9(fvec4) + 233(input): 232(ptr) Variable Input + 235: TypePointer Output 9(fvec4) +236(@entryPointOutput): 235(ptr) Variable Output 4(PixelShaderFunction): 2 Function None 3 5: Label - 174(input): 8(ptr) Variable Function - 180(param): 8(ptr) Variable Function - 177: 7(fvec4) Load 176(input) - Store 174(input) 177 - 181: 7(fvec4) Load 174(input) - Store 180(param) 181 - 182: 7(fvec4) FunctionCall 11(@PixelShaderFunction(vf4;) 180(param) - Store 179(@entryPointOutput) 182 + 231(input): 10(ptr) Variable Function + 237(param): 10(ptr) Variable Function + 234: 9(fvec4) Load 233(input) + Store 231(input) 234 + 238: 9(fvec4) Load 231(input) + Store 237(param) 238 + 239: 9(fvec4) FunctionCall 40(@PixelShaderFunction(vf4;) 237(param) + Store 236(@entryPointOutput) 239 Return FunctionEnd -11(@PixelShaderFunction(vf4;): 7(fvec4) Function None 9 - 10(input): 8(ptr) FunctionParameter - 12: Label - 92(ii): 91(ptr) Variable Function - 111(ii): 73(ptr) Variable Function - 114(first): 91(ptr) Variable Function - 116(second): 91(ptr) Variable Function - 124(i): 91(ptr) Variable Function - 125(count): 91(ptr) Variable Function - 138(first): 73(ptr) Variable Function - 149(second): 148(ptr) Variable Function - 157(third): 73(ptr) Variable Function - Branch 13 - 13: Label - LoopMerge 15 16 None - Branch 14 + 6(f0(): 2 Function None 3 + 7: Label + Branch 42 + 42: Label + LoopMerge 44 45 None + Branch 43 + 43: Label + Branch 45 + 45: Label + Branch 42 + 44: Label + Unreachable + FunctionEnd + 13(f1(vf4;): 2 Function None 11 + 12(input): 10(ptr) FunctionParameter 14: Label - Branch 16 - 16: Label - Branch 13 - 15: Label - 17: 7(fvec4) Load 10(input) - 19: 7(fvec4) CompositeConstruct 18 18 18 18 - 20: 7(fvec4) FAdd 17 19 - Store 10(input) 20 - Branch 21 - 21: Label - LoopMerge 23 24 None - Branch 22 - 22: Label - Branch 24 - 24: Label - Branch 21 - 23: Label - Branch 25 - 25: Label - LoopMerge 27 28 Unroll - Branch 29 - 29: Label - 30: 7(fvec4) Load 10(input) - 31: 7(fvec4) Load 10(input) - 34: 33(bvec4) FOrdNotEqual 30 31 - 35: 32(bool) Any 34 - BranchConditional 35 26 27 - 26: Label - Branch 28 - 28: Label - Branch 25 - 27: Label - Branch 36 - 36: Label - LoopMerge 38 39 None - Branch 40 - 40: Label - 41: 7(fvec4) Load 10(input) - 42: 7(fvec4) Load 10(input) - 43: 33(bvec4) FOrdNotEqual 41 42 - 44: 32(bool) Any 43 - BranchConditional 44 37 38 - 37: Label - 45: 7(fvec4) Load 10(input) - 46: 7(fvec4) FNegate 45 - ReturnValue 46 - 39: Label - Branch 36 - 38: Label - 48: 7(fvec4) Load 10(input) - 49: 7(fvec4) CompositeConstruct 18 18 18 18 - 50: 7(fvec4) FSub 48 49 - Store 10(input) 50 + 46: 9(fvec4) Load 12(input) + 48: 9(fvec4) CompositeConstruct 47 47 47 47 + 49: 9(fvec4) FAdd 46 48 + Store 12(input) 49 + Branch 50 + 50: Label + LoopMerge 52 53 None Branch 51 51: Label - LoopMerge 53 54 None - Branch 55 - 55: Label - 56: 7(fvec4) Load 10(input) - 57: 7(fvec4) Load 10(input) - 58: 33(bvec4) FOrdNotEqual 56 57 - 59: 32(bool) Any 58 - BranchConditional 59 52 53 - 52: Label - 60: 7(fvec4) Load 10(input) - 61: 7(fvec4) FNegate 60 - ReturnValue 61 - 54: Label - 64: 7(fvec4) Load 10(input) - 65: 7(fvec4) CompositeConstruct 63 63 63 63 - 66: 7(fvec4) FAdd 64 65 - Store 10(input) 66 - Branch 51 + Branch 53 53: Label - Branch 67 - 67: Label - LoopMerge 69 70 None - Branch 68 - 68: Label - 74: 73(ptr) AccessChain 10(input) 72 - 75: 6(float) Load 74 - 76: 32(bool) FOrdGreaterThan 75 63 - SelectionMerge 78 None - BranchConditional 76 77 78 - 77: Label - Branch 69 - 78: Label - Branch 70 - 70: Label - Branch 67 + Branch 50 + 52: Label + Unreachable + FunctionEnd + 16(f2(vf4;): 2 Function None 11 + 15(input): 10(ptr) FunctionParameter + 17: Label + Branch 54 + 54: Label + LoopMerge 56 57 Unroll + Branch 58 + 58: Label + 59: 9(fvec4) Load 15(input) + 60: 9(fvec4) Load 15(input) + 63: 62(bvec4) FOrdNotEqual 59 60 + 64: 61(bool) Any 63 + BranchConditional 64 55 56 + 55: Label + Branch 57 + 57: Label + Branch 54 + 56: Label + Return + FunctionEnd + 20(f3(vf4;): 8(float) Function None 18 + 19(input): 10(ptr) FunctionParameter + 21: Label + Branch 65 + 65: Label + LoopMerge 67 68 None + Branch 69 69: Label - Branch 80 - 80: Label - LoopMerge 82 83 None - Branch 81 - 81: Label - 84: 73(ptr) AccessChain 10(input) 72 - 85: 6(float) Load 84 - 86: 32(bool) FOrdGreaterThan 85 63 - SelectionMerge 88 None - BranchConditional 86 87 88 - 87: Label - Branch 83 - 88: Label - Branch 83 - 83: Label - Branch 80 + 70: 9(fvec4) Load 19(input) + 71: 9(fvec4) Load 19(input) + 72: 62(bvec4) FOrdNotEqual 70 71 + 73: 61(bool) Any 72 + BranchConditional 73 66 67 + 66: Label + 74: 9(fvec4) Load 19(input) + 75: 9(fvec4) FNegate 74 + 76: 8(float) CompositeExtract 75 0 + ReturnValue 76 + 68: Label + Branch 65 + 67: Label + 78: 8(float) Undef + ReturnValue 78 + FunctionEnd + 23(f4(vf4;): 8(float) Function None 18 + 22(input): 10(ptr) FunctionParameter + 24: Label + 79: 9(fvec4) Load 22(input) + 80: 9(fvec4) CompositeConstruct 47 47 47 47 + 81: 9(fvec4) FSub 79 80 + Store 22(input) 81 + Branch 82 82: Label - Store 92(ii) 93 - Branch 94 - 94: Label - LoopMerge 96 97 None - Branch 98 - 98: Label - 99: 90(int) Load 92(ii) - 101: 32(bool) SLessThan 99 100 - BranchConditional 101 95 96 - 95: Label - 102: 90(int) Load 92(ii) - 104: 32(bool) IEqual 102 103 - SelectionMerge 106 None - BranchConditional 104 105 106 - 105: Label - Branch 97 - 106: Label - Branch 97 - 97: Label - 108: 90(int) Load 92(ii) - 110: 90(int) IAdd 108 109 - Store 92(ii) 110 - Branch 94 - 96: Label - 112: 6(float) Load 111(ii) - 113: 6(float) FSub 112 18 - Store 111(ii) 113 - Store 114(first) 115 - Store 116(second) 109 - Branch 117 - 117: Label - LoopMerge 119 120 None - Branch 118 - 118: Label - 121: 90(int) Load 114(first) - 122: 90(int) Load 116(second) - 123: 90(int) IAdd 121 122 - Branch 120 + LoopMerge 84 85 None + Branch 86 + 86: Label + 87: 9(fvec4) Load 22(input) + 88: 9(fvec4) Load 22(input) + 89: 62(bvec4) FOrdNotEqual 87 88 + 90: 61(bool) Any 89 + BranchConditional 90 83 84 + 83: Label + 91: 9(fvec4) Load 22(input) + 92: 9(fvec4) FNegate 91 + 93: 8(float) CompositeExtract 92 0 + ReturnValue 93 + 85: Label + Branch 82 + 84: Label + 99: 8(float) Undef + ReturnValue 99 + FunctionEnd + 26(f5(vf4;): 2 Function None 11 + 25(input): 10(ptr) FunctionParameter + 27: Label + Branch 100 + 100: Label + LoopMerge 102 103 None + Branch 101 + 101: Label + 106: 33(ptr) AccessChain 25(input) 105 + 107: 8(float) Load 106 + 108: 61(bool) FOrdGreaterThan 107 95 + SelectionMerge 110 None + BranchConditional 108 109 110 + 109: Label + Branch 102 + 110: Label + Branch 103 + 103: Label + Branch 100 + 102: Label + Return + FunctionEnd + 29(f6(vf4;): 2 Function None 11 + 28(input): 10(ptr) FunctionParameter + 30: Label + Branch 112 + 112: Label + LoopMerge 114 115 None + Branch 113 + 113: Label + 116: 33(ptr) AccessChain 28(input) 105 + 117: 8(float) Load 116 + 118: 61(bool) FOrdGreaterThan 117 95 + SelectionMerge 120 None + BranchConditional 118 119 120 + 119: Label + Branch 115 120: Label - Branch 117 - 119: Label - Store 124(i) 115 - 126: 6(float) Load 111(ii) - 127: 90(int) ConvertFToS 126 - Store 125(count) 127 + Branch 115 + 115: Label + Branch 112 + 114: Label + Unreachable + FunctionEnd + 31(f99(): 2 Function None 3 + 32: Label + 124(first): 123(ptr) Variable Function + 126(second): 123(ptr) Variable Function + Store 124(first) 125 + Store 126(second) 127 Branch 128 128: Label LoopMerge 130 131 None - Branch 132 - 132: Label - 133: 90(int) Load 124(i) - 134: 90(int) Load 125(count) - 135: 32(bool) SLessThan 133 134 - BranchConditional 135 129 130 - 129: Label - Branch 131 - 131: Label - 136: 90(int) Load 124(i) - 137: 90(int) IAdd 136 109 - Store 124(i) 137 - Branch 128 + Branch 129 + 129: Label + 132: 122(int) Load 124(first) + 133: 122(int) Load 126(second) + 134: 122(int) IAdd 132 133 + Branch 131 + 131: Label + Branch 128 130: Label - Store 138(first) 139 - Branch 140 - 140: Label - LoopMerge 142 143 None + Unreachable + FunctionEnd + 36(f100(f1;): 2 Function None 34 + 35(ii): 33(ptr) FunctionParameter + 37: Label + 135: 8(float) Load 35(ii) + 136: 8(float) FSub 135 47 + Store 35(ii) 136 + 137: 8(float) Load 35(ii) + 138: 8(float) FSub 137 47 + Store 35(ii) 138 + 139: 8(float) Load 35(ii) + 140: 8(float) FSub 139 47 + Store 35(ii) 140 + Branch 141 + 141: Label + LoopMerge 143 144 None + Branch 142 + 142: Label Branch 144 144: Label - 145: 6(float) Load 138(first) - 150: 73(ptr) AccessChain 149(second) 115 - 151: 6(float) Load 150 - 152: 32(bool) FOrdLessThan 145 151 - BranchConditional 152 141 142 - 141: Label - 153: 6(float) Load 138(first) - 154: 73(ptr) AccessChain 149(second) 109 - 155: 6(float) Load 154 - 156: 6(float) FAdd 153 155 - 158: 6(float) Load 157(third) - 159: 6(float) FAdd 156 158 - Branch 143 - 143: Label - 160: 73(ptr) AccessChain 149(second) 109 - 161: 6(float) Load 160 - 162: 6(float) FAdd 161 18 - Store 160 162 - Branch 140 - 142: Label - 163: 6(float) Load 111(ii) - 164: 6(float) FSub 163 18 - Store 111(ii) 164 - 165: 6(float) Load 111(ii) - 166: 6(float) FSub 165 18 - Store 111(ii) 166 - 167: 6(float) Load 111(ii) - 168: 6(float) FSub 167 18 - Store 111(ii) 168 - Branch 169 - 169: Label - LoopMerge 171 172 None + Branch 141 + 143: Label + Unreachable + FunctionEnd +40(@PixelShaderFunction(vf4;): 9(fvec4) Function None 38 + 39(input): 10(ptr) FunctionParameter + 41: Label + 146(param): 10(ptr) Variable Function + 149(param): 10(ptr) Variable Function + 152(param): 10(ptr) Variable Function + 155(param): 10(ptr) Variable Function + 158(param): 10(ptr) Variable Function + 161(param): 10(ptr) Variable Function + 164(ii): 123(ptr) Variable Function + 182(ii): 33(ptr) Variable Function + 186(i): 123(ptr) Variable Function + 187(count): 123(ptr) Variable Function + 200(first): 33(ptr) Variable Function + 211(second): 210(ptr) Variable Function + 219(third): 33(ptr) Variable Function + 225(param): 33(ptr) Variable Function + 145: 2 FunctionCall 6(f0() + 147: 9(fvec4) Load 39(input) + Store 146(param) 147 + 148: 2 FunctionCall 13(f1(vf4;) 146(param) + 150: 9(fvec4) Load 39(input) + Store 149(param) 150 + 151: 2 FunctionCall 16(f2(vf4;) 149(param) + 153: 9(fvec4) Load 39(input) + Store 152(param) 153 + 154: 8(float) FunctionCall 20(f3(vf4;) 152(param) + 156: 9(fvec4) Load 39(input) + Store 155(param) 156 + 157: 8(float) FunctionCall 23(f4(vf4;) 155(param) + 159: 9(fvec4) Load 39(input) + Store 158(param) 159 + 160: 2 FunctionCall 26(f5(vf4;) 158(param) + 162: 9(fvec4) Load 39(input) + Store 161(param) 162 + 163: 2 FunctionCall 29(f6(vf4;) 161(param) + Store 164(ii) 165 + Branch 166 + 166: Label + LoopMerge 168 169 None Branch 170 170: Label - Branch 172 - 172: Label - Branch 169 - 171: Label - 173: 7(fvec4) Undef - ReturnValue 173 + 171: 122(int) Load 164(ii) + 173: 61(bool) SLessThan 171 172 + BranchConditional 173 167 168 + 167: Label + 174: 122(int) Load 164(ii) + 176: 61(bool) IEqual 174 175 + SelectionMerge 178 None + BranchConditional 176 177 178 + 177: Label + Branch 169 + 178: Label + Branch 169 + 169: Label + 180: 122(int) Load 164(ii) + 181: 122(int) IAdd 180 127 + Store 164(ii) 181 + Branch 166 + 168: Label + 183: 8(float) Load 182(ii) + 184: 8(float) FSub 183 47 + Store 182(ii) 184 + 185: 2 FunctionCall 31(f99() + Store 186(i) 125 + 188: 8(float) Load 182(ii) + 189: 122(int) ConvertFToS 188 + Store 187(count) 189 + Branch 190 + 190: Label + LoopMerge 192 193 None + Branch 194 + 194: Label + 195: 122(int) Load 186(i) + 196: 122(int) Load 187(count) + 197: 61(bool) SLessThan 195 196 + BranchConditional 197 191 192 + 191: Label + Branch 193 + 193: Label + 198: 122(int) Load 186(i) + 199: 122(int) IAdd 198 127 + Store 186(i) 199 + Branch 190 + 192: Label + Store 200(first) 201 + Branch 202 + 202: Label + LoopMerge 204 205 None + Branch 206 + 206: Label + 207: 8(float) Load 200(first) + 212: 33(ptr) AccessChain 211(second) 125 + 213: 8(float) Load 212 + 214: 61(bool) FOrdLessThan 207 213 + BranchConditional 214 203 204 + 203: Label + 215: 8(float) Load 200(first) + 216: 33(ptr) AccessChain 211(second) 127 + 217: 8(float) Load 216 + 218: 8(float) FAdd 215 217 + 220: 8(float) Load 219(third) + 221: 8(float) FAdd 218 220 + Branch 205 + 205: Label + 222: 33(ptr) AccessChain 211(second) 127 + 223: 8(float) Load 222 + 224: 8(float) FAdd 223 47 + Store 222 224 + Branch 202 + 204: Label + 226: 8(float) Load 182(ii) + Store 225(param) 226 + 227: 2 FunctionCall 36(f100(f1;) 225(param) + 228: 9(fvec4) Load 39(input) + ReturnValue 228 FunctionEnd diff --git a/Test/baseResults/hlsl.if.frag.out b/Test/baseResults/hlsl.if.frag.out index 056b672e..255345ad 100644 --- a/Test/baseResults/hlsl.if.frag.out +++ b/Test/baseResults/hlsl.if.frag.out @@ -2,104 +2,116 @@ hlsl.if.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float) -0:2 Function Parameters: -0:2 'input' ( in 4-component vector of float) +0:1 Function Definition: f0(vf4; ( temp 4-component vector of float) +0:1 Function Parameters: +0:1 'input' ( in 4-component vector of float) 0:? Sequence -0:3 Test condition and select ( temp void) -0:3 Condition -0:3 all ( temp bool) -0:3 Equal ( temp 4-component vector of bool) -0:3 'input' ( in 4-component vector of float) -0:3 'input' ( in 4-component vector of float) -0:3 true case -0:4 Branch: Return with expression -0:4 'input' ( in 4-component vector of float) -0:6 Test condition and select ( temp void) -0:6 Condition -0:6 all ( temp bool) -0:6 Equal ( temp 4-component vector of bool) -0:6 'input' ( in 4-component vector of float) -0:6 'input' ( in 4-component vector of float) -0:6 true case -0:7 Branch: Return with expression -0:7 'input' ( in 4-component vector of float) -0:6 false case -0:9 Branch: Return with expression -0:9 Negate value ( temp 4-component vector of float) +0:2 Test condition and select ( temp void) +0:2 Condition +0:2 all ( temp bool) +0:2 Equal ( temp 4-component vector of bool) +0:2 'input' ( in 4-component vector of float) +0:2 'input' ( in 4-component vector of float) +0:2 true case +0:3 Branch: Return with expression +0:3 'input' ( in 4-component vector of float) +0:2 false case +0:5 Branch: Return with expression +0:5 Negate value ( temp 4-component vector of float) +0:5 'input' ( in 4-component vector of float) +0:8 Function Definition: f1(vf4; ( temp 4-component vector of float) +0:8 Function Parameters: +0:8 'input' ( in 4-component vector of float) +0:? Sequence +0:9 Test condition and select ( temp void) +0:9 Condition +0:9 all ( temp bool) +0:9 Equal ( temp 4-component vector of bool) 0:9 'input' ( in 4-component vector of float) -0:11 Test condition and select ( temp void) -0:11 Condition -0:11 all ( temp bool) -0:11 Equal ( temp 4-component vector of bool) -0:11 'input' ( in 4-component vector of float) -0:11 'input' ( in 4-component vector of float) -0:11 true case is null -0:14 Test condition and select ( temp void) -0:14 Condition -0:14 all ( temp bool) -0:14 Equal ( temp 4-component vector of bool) -0:14 'input' ( in 4-component vector of float) -0:14 'input' ( in 4-component vector of float) -0:14 true case is null -0:19 Test condition and select ( temp void): Flatten -0:19 Condition -0:19 all ( temp bool) -0:19 Equal ( temp 4-component vector of bool) -0:19 'input' ( in 4-component vector of float) -0:19 'input' ( in 4-component vector of float) -0:19 true case +0:9 'input' ( in 4-component vector of float) +0:9 true case 0:? Sequence -0:20 Branch: Return with expression -0:20 'input' ( in 4-component vector of float) +0:10 Branch: Return with expression +0:10 'input' ( in 4-component vector of float) +0:9 false case +0:? Sequence +0:12 Branch: Return with expression +0:12 Negate value ( temp 4-component vector of float) +0:12 'input' ( in 4-component vector of float) +0:17 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float) +0:17 Function Parameters: +0:17 'input' ( in 4-component vector of float) +0:? Sequence +0:18 Test condition and select ( temp void) +0:18 Condition +0:18 all ( temp bool) +0:18 Equal ( temp 4-component vector of bool) +0:18 'input' ( in 4-component vector of float) +0:18 'input' ( in 4-component vector of float) +0:18 true case +0:19 Branch: Return with expression +0:19 'input' ( in 4-component vector of float) +0:21 Function Call: f0(vf4; ( temp 4-component vector of float) +0:21 'input' ( in 4-component vector of float) 0:23 Test condition and select ( temp void) 0:23 Condition 0:23 all ( temp bool) 0:23 Equal ( temp 4-component vector of bool) 0:23 'input' ( in 4-component vector of float) 0:23 'input' ( in 4-component vector of float) -0:23 true case +0:23 true case is null +0:26 Test condition and select ( temp void) +0:26 Condition +0:26 all ( temp bool) +0:26 Equal ( temp 4-component vector of bool) +0:26 'input' ( in 4-component vector of float) +0:26 'input' ( in 4-component vector of float) +0:26 true case is null +0:31 Test condition and select ( temp void): Flatten +0:31 Condition +0:31 all ( temp bool) +0:31 Equal ( temp 4-component vector of bool) +0:31 'input' ( in 4-component vector of float) +0:31 'input' ( in 4-component vector of float) +0:31 true case 0:? Sequence -0:24 Branch: Return with expression -0:24 'input' ( in 4-component vector of float) -0:23 false case -0:? Sequence -0:26 Branch: Return with expression -0:26 Negate value ( temp 4-component vector of float) -0:26 'input' ( in 4-component vector of float) -0:30 Test condition and select ( temp void) -0:30 Condition -0:30 Convert float to bool ( temp bool) -0:30 move second child to first child ( temp float) -0:30 'ii' ( temp float) -0:30 direct index ( temp float) -0:30 'input' ( in 4-component vector of float) -0:30 Constant: -0:30 2 (const int) -0:30 true case -0:31 Pre-Increment ( temp float) -0:31 'ii' ( temp float) -0:32 Pre-Increment ( temp int) -0:32 'ii' ( temp int) -0:33 Test condition and select ( temp void) -0:33 Condition -0:33 Compare Equal ( temp bool) -0:33 Convert int to float ( temp float) -0:33 'ii' ( temp int) -0:33 Constant: -0:33 1.000000 -0:33 true case -0:34 Pre-Increment ( temp int) -0:34 'ii' ( temp int) -0:2 Function Definition: PixelShaderFunction( ( temp void) -0:2 Function Parameters: +0:32 Branch: Return with expression +0:32 'input' ( in 4-component vector of float) +0:35 Function Call: f1(vf4; ( temp 4-component vector of float) +0:35 'input' ( in 4-component vector of float) +0:38 Test condition and select ( temp void) +0:38 Condition +0:38 Convert float to bool ( temp bool) +0:38 move second child to first child ( temp float) +0:38 'ii' ( temp float) +0:38 direct index ( temp float) +0:38 'input' ( in 4-component vector of float) +0:38 Constant: +0:38 2 (const int) +0:38 true case +0:39 Pre-Increment ( temp float) +0:39 'ii' ( temp float) +0:40 Pre-Increment ( temp int) +0:40 'ii' ( temp int) +0:41 Test condition and select ( temp void) +0:41 Condition +0:41 Compare Equal ( temp bool) +0:41 Convert int to float ( temp float) +0:41 'ii' ( temp int) +0:41 Constant: +0:41 1.000000 +0:41 true case +0:42 Pre-Increment ( temp int) +0:42 'ii' ( temp int) +0:17 Function Definition: PixelShaderFunction( ( temp void) +0:17 Function Parameters: 0:? Sequence -0:2 move second child to first child ( temp 4-component vector of float) +0:17 move second child to first child ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) -0:2 move second child to first child ( temp 4-component vector of float) +0:17 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) -0:2 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float) +0:17 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) @@ -112,104 +124,116 @@ Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence -0:2 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float) -0:2 Function Parameters: -0:2 'input' ( in 4-component vector of float) +0:1 Function Definition: f0(vf4; ( temp 4-component vector of float) +0:1 Function Parameters: +0:1 'input' ( in 4-component vector of float) 0:? Sequence -0:3 Test condition and select ( temp void) -0:3 Condition -0:3 all ( temp bool) -0:3 Equal ( temp 4-component vector of bool) -0:3 'input' ( in 4-component vector of float) -0:3 'input' ( in 4-component vector of float) -0:3 true case -0:4 Branch: Return with expression -0:4 'input' ( in 4-component vector of float) -0:6 Test condition and select ( temp void) -0:6 Condition -0:6 all ( temp bool) -0:6 Equal ( temp 4-component vector of bool) -0:6 'input' ( in 4-component vector of float) -0:6 'input' ( in 4-component vector of float) -0:6 true case -0:7 Branch: Return with expression -0:7 'input' ( in 4-component vector of float) -0:6 false case -0:9 Branch: Return with expression -0:9 Negate value ( temp 4-component vector of float) +0:2 Test condition and select ( temp void) +0:2 Condition +0:2 all ( temp bool) +0:2 Equal ( temp 4-component vector of bool) +0:2 'input' ( in 4-component vector of float) +0:2 'input' ( in 4-component vector of float) +0:2 true case +0:3 Branch: Return with expression +0:3 'input' ( in 4-component vector of float) +0:2 false case +0:5 Branch: Return with expression +0:5 Negate value ( temp 4-component vector of float) +0:5 'input' ( in 4-component vector of float) +0:8 Function Definition: f1(vf4; ( temp 4-component vector of float) +0:8 Function Parameters: +0:8 'input' ( in 4-component vector of float) +0:? Sequence +0:9 Test condition and select ( temp void) +0:9 Condition +0:9 all ( temp bool) +0:9 Equal ( temp 4-component vector of bool) 0:9 'input' ( in 4-component vector of float) -0:11 Test condition and select ( temp void) -0:11 Condition -0:11 all ( temp bool) -0:11 Equal ( temp 4-component vector of bool) -0:11 'input' ( in 4-component vector of float) -0:11 'input' ( in 4-component vector of float) -0:11 true case is null -0:14 Test condition and select ( temp void) -0:14 Condition -0:14 all ( temp bool) -0:14 Equal ( temp 4-component vector of bool) -0:14 'input' ( in 4-component vector of float) -0:14 'input' ( in 4-component vector of float) -0:14 true case is null -0:19 Test condition and select ( temp void): Flatten -0:19 Condition -0:19 all ( temp bool) -0:19 Equal ( temp 4-component vector of bool) -0:19 'input' ( in 4-component vector of float) -0:19 'input' ( in 4-component vector of float) -0:19 true case +0:9 'input' ( in 4-component vector of float) +0:9 true case 0:? Sequence -0:20 Branch: Return with expression -0:20 'input' ( in 4-component vector of float) +0:10 Branch: Return with expression +0:10 'input' ( in 4-component vector of float) +0:9 false case +0:? Sequence +0:12 Branch: Return with expression +0:12 Negate value ( temp 4-component vector of float) +0:12 'input' ( in 4-component vector of float) +0:17 Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float) +0:17 Function Parameters: +0:17 'input' ( in 4-component vector of float) +0:? Sequence +0:18 Test condition and select ( temp void) +0:18 Condition +0:18 all ( temp bool) +0:18 Equal ( temp 4-component vector of bool) +0:18 'input' ( in 4-component vector of float) +0:18 'input' ( in 4-component vector of float) +0:18 true case +0:19 Branch: Return with expression +0:19 'input' ( in 4-component vector of float) +0:21 Function Call: f0(vf4; ( temp 4-component vector of float) +0:21 'input' ( in 4-component vector of float) 0:23 Test condition and select ( temp void) 0:23 Condition 0:23 all ( temp bool) 0:23 Equal ( temp 4-component vector of bool) 0:23 'input' ( in 4-component vector of float) 0:23 'input' ( in 4-component vector of float) -0:23 true case +0:23 true case is null +0:26 Test condition and select ( temp void) +0:26 Condition +0:26 all ( temp bool) +0:26 Equal ( temp 4-component vector of bool) +0:26 'input' ( in 4-component vector of float) +0:26 'input' ( in 4-component vector of float) +0:26 true case is null +0:31 Test condition and select ( temp void): Flatten +0:31 Condition +0:31 all ( temp bool) +0:31 Equal ( temp 4-component vector of bool) +0:31 'input' ( in 4-component vector of float) +0:31 'input' ( in 4-component vector of float) +0:31 true case 0:? Sequence -0:24 Branch: Return with expression -0:24 'input' ( in 4-component vector of float) -0:23 false case -0:? Sequence -0:26 Branch: Return with expression -0:26 Negate value ( temp 4-component vector of float) -0:26 'input' ( in 4-component vector of float) -0:30 Test condition and select ( temp void) -0:30 Condition -0:30 Convert float to bool ( temp bool) -0:30 move second child to first child ( temp float) -0:30 'ii' ( temp float) -0:30 direct index ( temp float) -0:30 'input' ( in 4-component vector of float) -0:30 Constant: -0:30 2 (const int) -0:30 true case -0:31 Pre-Increment ( temp float) -0:31 'ii' ( temp float) -0:32 Pre-Increment ( temp int) -0:32 'ii' ( temp int) -0:33 Test condition and select ( temp void) -0:33 Condition -0:33 Compare Equal ( temp bool) -0:33 Convert int to float ( temp float) -0:33 'ii' ( temp int) -0:33 Constant: -0:33 1.000000 -0:33 true case -0:34 Pre-Increment ( temp int) -0:34 'ii' ( temp int) -0:2 Function Definition: PixelShaderFunction( ( temp void) -0:2 Function Parameters: +0:32 Branch: Return with expression +0:32 'input' ( in 4-component vector of float) +0:35 Function Call: f1(vf4; ( temp 4-component vector of float) +0:35 'input' ( in 4-component vector of float) +0:38 Test condition and select ( temp void) +0:38 Condition +0:38 Convert float to bool ( temp bool) +0:38 move second child to first child ( temp float) +0:38 'ii' ( temp float) +0:38 direct index ( temp float) +0:38 'input' ( in 4-component vector of float) +0:38 Constant: +0:38 2 (const int) +0:38 true case +0:39 Pre-Increment ( temp float) +0:39 'ii' ( temp float) +0:40 Pre-Increment ( temp int) +0:40 'ii' ( temp int) +0:41 Test condition and select ( temp void) +0:41 Condition +0:41 Compare Equal ( temp bool) +0:41 Convert int to float ( temp float) +0:41 'ii' ( temp int) +0:41 Constant: +0:41 1.000000 +0:41 true case +0:42 Pre-Increment ( temp int) +0:42 'ii' ( temp int) +0:17 Function Definition: PixelShaderFunction( ( temp void) +0:17 Function Parameters: 0:? Sequence -0:2 move second child to first child ( temp 4-component vector of float) +0:17 move second child to first child ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? 'input' (layout( location=0) in 4-component vector of float) -0:2 move second child to first child ( temp 4-component vector of float) +0:17 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) -0:2 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float) +0:17 Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float) 0:? 'input' ( temp 4-component vector of float) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) @@ -217,154 +241,178 @@ gl_FragCoord origin is upper left // Module Version 10000 // Generated by (magic number): 80007 -// Id's are bound by 103 +// Id's are bound by 117 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "PixelShaderFunction" 96 99 + EntryPoint Fragment 4 "PixelShaderFunction" 110 113 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" - Name 11 "@PixelShaderFunction(vf4;" + Name 11 "f0(vf4;" Name 10 "input" - Name 68 "ii" + Name 14 "f1(vf4;" + Name 13 "input" + Name 17 "@PixelShaderFunction(vf4;" + Name 16 "input" + Name 55 "param" + Name 78 "param" Name 82 "ii" - Name 94 "input" - Name 96 "input" - Name 99 "@entryPointOutput" - Name 100 "param" - Decorate 96(input) Location 0 - Decorate 99(@entryPointOutput) Location 0 + Name 96 "ii" + Name 108 "input" + Name 110 "input" + Name 113 "@entryPointOutput" + Name 114 "param" + Decorate 110(input) Location 0 + Decorate 113(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypePointer Function 7(fvec4) 9: TypeFunction 7(fvec4) 8(ptr) - 15: TypeBool - 16: TypeVector 15(bool) 4 - 67: TypePointer Function 6(float) - 69: TypeInt 32 0 - 70: 69(int) Constant 2 - 73: 6(float) Constant 0 - 78: 6(float) Constant 1065353216 - 80: TypeInt 32 1 - 81: TypePointer Function 80(int) - 84: 80(int) Constant 1 - 95: TypePointer Input 7(fvec4) - 96(input): 95(ptr) Variable Input - 98: TypePointer Output 7(fvec4) -99(@entryPointOutput): 98(ptr) Variable Output + 21: TypeBool + 22: TypeVector 21(bool) 4 + 81: TypePointer Function 6(float) + 83: TypeInt 32 0 + 84: 83(int) Constant 2 + 87: 6(float) Constant 0 + 92: 6(float) Constant 1065353216 + 94: TypeInt 32 1 + 95: TypePointer Function 94(int) + 98: 94(int) Constant 1 + 109: TypePointer Input 7(fvec4) + 110(input): 109(ptr) Variable Input + 112: TypePointer Output 7(fvec4) +113(@entryPointOutput): 112(ptr) Variable Output 4(PixelShaderFunction): 2 Function None 3 5: Label - 94(input): 8(ptr) Variable Function - 100(param): 8(ptr) Variable Function - 97: 7(fvec4) Load 96(input) - Store 94(input) 97 - 101: 7(fvec4) Load 94(input) - Store 100(param) 101 - 102: 7(fvec4) FunctionCall 11(@PixelShaderFunction(vf4;) 100(param) - Store 99(@entryPointOutput) 102 + 108(input): 8(ptr) Variable Function + 114(param): 8(ptr) Variable Function + 111: 7(fvec4) Load 110(input) + Store 108(input) 111 + 115: 7(fvec4) Load 108(input) + Store 114(param) 115 + 116: 7(fvec4) FunctionCall 17(@PixelShaderFunction(vf4;) 114(param) + Store 113(@entryPointOutput) 116 Return FunctionEnd -11(@PixelShaderFunction(vf4;): 7(fvec4) Function None 9 + 11(f0(vf4;): 7(fvec4) Function None 9 10(input): 8(ptr) FunctionParameter 12: Label - 68(ii): 67(ptr) Variable Function + 19: 7(fvec4) Load 10(input) + 20: 7(fvec4) Load 10(input) + 23: 22(bvec4) FOrdEqual 19 20 + 24: 21(bool) All 23 + SelectionMerge 26 None + BranchConditional 24 25 29 + 25: Label + 27: 7(fvec4) Load 10(input) + ReturnValue 27 + 29: Label + 30: 7(fvec4) Load 10(input) + 31: 7(fvec4) FNegate 30 + ReturnValue 31 + 26: Label + Unreachable + FunctionEnd + 14(f1(vf4;): 7(fvec4) Function None 9 + 13(input): 8(ptr) FunctionParameter + 15: Label + 34: 7(fvec4) Load 13(input) + 35: 7(fvec4) Load 13(input) + 36: 22(bvec4) FOrdEqual 34 35 + 37: 21(bool) All 36 + SelectionMerge 39 None + BranchConditional 37 38 42 + 38: Label + 40: 7(fvec4) Load 13(input) + ReturnValue 40 + 42: Label + 43: 7(fvec4) Load 13(input) + 44: 7(fvec4) FNegate 43 + ReturnValue 44 + 39: Label + Unreachable + FunctionEnd +17(@PixelShaderFunction(vf4;): 7(fvec4) Function None 9 + 16(input): 8(ptr) FunctionParameter + 18: Label + 55(param): 8(ptr) Variable Function + 78(param): 8(ptr) Variable Function 82(ii): 81(ptr) Variable Function - 13: 7(fvec4) Load 10(input) - 14: 7(fvec4) Load 10(input) - 17: 16(bvec4) FOrdEqual 13 14 - 18: 15(bool) All 17 - SelectionMerge 20 None - BranchConditional 18 19 20 - 19: Label - 21: 7(fvec4) Load 10(input) - ReturnValue 21 - 20: Label - 23: 7(fvec4) Load 10(input) - 24: 7(fvec4) Load 10(input) - 25: 16(bvec4) FOrdEqual 23 24 - 26: 15(bool) All 25 - SelectionMerge 28 None - BranchConditional 26 27 31 - 27: Label - 29: 7(fvec4) Load 10(input) - ReturnValue 29 - 31: Label - 32: 7(fvec4) Load 10(input) - 33: 7(fvec4) FNegate 32 - ReturnValue 33 - 28: Label - 35: 7(fvec4) Load 10(input) - 36: 7(fvec4) Load 10(input) - 37: 16(bvec4) FOrdEqual 35 36 - 38: 15(bool) All 37 - SelectionMerge 40 None - BranchConditional 38 39 40 - 39: Label - Branch 40 - 40: Label - 41: 7(fvec4) Load 10(input) - 42: 7(fvec4) Load 10(input) - 43: 16(bvec4) FOrdEqual 41 42 - 44: 15(bool) All 43 - SelectionMerge 46 None - BranchConditional 44 45 46 - 45: Label - Branch 46 - 46: Label - 47: 7(fvec4) Load 10(input) - 48: 7(fvec4) Load 10(input) - 49: 16(bvec4) FOrdEqual 47 48 - 50: 15(bool) All 49 - SelectionMerge 52 Flatten + 96(ii): 95(ptr) Variable Function + 47: 7(fvec4) Load 16(input) + 48: 7(fvec4) Load 16(input) + 49: 22(bvec4) FOrdEqual 47 48 + 50: 21(bool) All 49 + SelectionMerge 52 None BranchConditional 50 51 52 51: Label - 53: 7(fvec4) Load 10(input) + 53: 7(fvec4) Load 16(input) ReturnValue 53 52: Label - 55: 7(fvec4) Load 10(input) - 56: 7(fvec4) Load 10(input) - 57: 16(bvec4) FOrdEqual 55 56 - 58: 15(bool) All 57 - SelectionMerge 60 None - BranchConditional 58 59 63 - 59: Label - 61: 7(fvec4) Load 10(input) - ReturnValue 61 - 63: Label - 64: 7(fvec4) Load 10(input) - 65: 7(fvec4) FNegate 64 - ReturnValue 65 - 60: Label - 71: 67(ptr) AccessChain 10(input) 70 - 72: 6(float) Load 71 - Store 68(ii) 72 - 74: 15(bool) FOrdNotEqual 72 73 - SelectionMerge 76 None - BranchConditional 74 75 76 - 75: Label - 77: 6(float) Load 68(ii) - 79: 6(float) FAdd 77 78 - Store 68(ii) 79 - Branch 76 - 76: Label - 83: 80(int) Load 82(ii) - 85: 80(int) IAdd 83 84 - Store 82(ii) 85 - 86: 80(int) Load 82(ii) - 87: 6(float) ConvertSToF 86 - 88: 15(bool) FOrdEqual 87 78 + 56: 7(fvec4) Load 16(input) + Store 55(param) 56 + 57: 7(fvec4) FunctionCall 11(f0(vf4;) 55(param) + 58: 7(fvec4) Load 16(input) + 59: 7(fvec4) Load 16(input) + 60: 22(bvec4) FOrdEqual 58 59 + 61: 21(bool) All 60 + SelectionMerge 63 None + BranchConditional 61 62 63 + 62: Label + Branch 63 + 63: Label + 64: 7(fvec4) Load 16(input) + 65: 7(fvec4) Load 16(input) + 66: 22(bvec4) FOrdEqual 64 65 + 67: 21(bool) All 66 + SelectionMerge 69 None + BranchConditional 67 68 69 + 68: Label + Branch 69 + 69: Label + 70: 7(fvec4) Load 16(input) + 71: 7(fvec4) Load 16(input) + 72: 22(bvec4) FOrdEqual 70 71 + 73: 21(bool) All 72 + SelectionMerge 75 Flatten + BranchConditional 73 74 75 + 74: Label + 76: 7(fvec4) Load 16(input) + ReturnValue 76 + 75: Label + 79: 7(fvec4) Load 16(input) + Store 78(param) 79 + 80: 7(fvec4) FunctionCall 14(f1(vf4;) 78(param) + 85: 81(ptr) AccessChain 16(input) 84 + 86: 6(float) Load 85 + Store 82(ii) 86 + 88: 21(bool) FOrdNotEqual 86 87 SelectionMerge 90 None BranchConditional 88 89 90 89: Label - 91: 80(int) Load 82(ii) - 92: 80(int) IAdd 91 84 - Store 82(ii) 92 + 91: 6(float) Load 82(ii) + 93: 6(float) FAdd 91 92 + Store 82(ii) 93 Branch 90 90: Label - 93: 7(fvec4) Undef - ReturnValue 93 + 97: 94(int) Load 96(ii) + 99: 94(int) IAdd 97 98 + Store 96(ii) 99 + 100: 94(int) Load 96(ii) + 101: 6(float) ConvertSToF 100 + 102: 21(bool) FOrdEqual 101 92 + SelectionMerge 104 None + BranchConditional 102 103 104 + 103: Label + 105: 94(int) Load 96(ii) + 106: 94(int) IAdd 105 98 + Store 96(ii) 106 + Branch 104 + 104: Label + 107: 7(fvec4) Undef + ReturnValue 107 FunctionEnd diff --git a/Test/baseResults/hlsl.structbuffer.coherent.frag.out b/Test/baseResults/hlsl.structbuffer.coherent.frag.out index b33b44d2..96f1b978 100644 --- a/Test/baseResults/hlsl.structbuffer.coherent.frag.out +++ b/Test/baseResults/hlsl.structbuffer.coherent.frag.out @@ -305,6 +305,5 @@ gl_FragCoord origin is upper left 66: 9(fvec4) CompositeConstruct 65 65 65 65 ReturnValue 66 45: Label - 68: 9(fvec4) Undef - ReturnValue 68 + Unreachable FunctionEnd diff --git a/Test/baseResults/hlsl.structbuffer.frag.out b/Test/baseResults/hlsl.structbuffer.frag.out index 9a67fd76..046c74d8 100644 --- a/Test/baseResults/hlsl.structbuffer.frag.out +++ b/Test/baseResults/hlsl.structbuffer.frag.out @@ -344,6 +344,5 @@ gl_FragCoord origin is upper left 84: 9(fvec4) CompositeConstruct 83 83 83 83 ReturnValue 84 53: Label - 86: 9(fvec4) Undef - ReturnValue 86 + Unreachable FunctionEnd diff --git a/Test/baseResults/hlsl.structbuffer.rw.frag.out b/Test/baseResults/hlsl.structbuffer.rw.frag.out index ceccd5bb..49ba89ea 100644 --- a/Test/baseResults/hlsl.structbuffer.rw.frag.out +++ b/Test/baseResults/hlsl.structbuffer.rw.frag.out @@ -303,6 +303,5 @@ gl_FragCoord origin is upper left 66: 9(fvec4) CompositeConstruct 65 65 65 65 ReturnValue 66 45: Label - 68: 9(fvec4) Undef - ReturnValue 68 + Unreachable FunctionEnd diff --git a/Test/baseResults/hlsl.wavequery.frag.out b/Test/baseResults/hlsl.wavequery.frag.out index 52304a6c..3d446ed0 100644 --- a/Test/baseResults/hlsl.wavequery.frag.out +++ b/Test/baseResults/hlsl.wavequery.frag.out @@ -118,6 +118,5 @@ gl_FragCoord origin is upper left 23: Label ReturnValue 24 16: Label - 26: 7(fvec4) Undef - ReturnValue 26 + Unreachable FunctionEnd diff --git a/Test/baseResults/remap.similar_1a.everything.frag.out b/Test/baseResults/remap.similar_1a.everything.frag.out index 2f8f1c73..17efb93b 100644 --- a/Test/baseResults/remap.similar_1a.everything.frag.out +++ b/Test/baseResults/remap.similar_1a.everything.frag.out @@ -88,7 +88,7 @@ remap.similar_1a.everything.frag 22102: 649(ptr) Variable Function 24151: 12(int) Load 4408 13868: 9(bool) SGreaterThan 24151 2577 - SelectionMerge 22309 None + SelectionMerge 14966 None BranchConditional 13868 9492 17416 9492: Label 15624: 12(int) Load 4408 @@ -109,7 +109,6 @@ remap.similar_1a.everything.frag 10505: 12(int) IAdd 11462 21176 14626: 13(float) ConvertSToF 10505 ReturnValue 14626 - 22309: Label - 6429: 13(float) Undef - ReturnValue 6429 + 14966: Label + Unreachable FunctionEnd diff --git a/Test/baseResults/remap.similar_1a.none.frag.out b/Test/baseResults/remap.similar_1a.none.frag.out index 80d35c3f..57c71ac7 100644 --- a/Test/baseResults/remap.similar_1a.none.frag.out +++ b/Test/baseResults/remap.similar_1a.none.frag.out @@ -124,6 +124,5 @@ remap.similar_1a.none.frag 68: 8(float) ConvertSToF 67 ReturnValue 68 43: Label - 70: 8(float) Undef - ReturnValue 70 + Unreachable FunctionEnd diff --git a/Test/baseResults/remap.similar_1b.everything.frag.out b/Test/baseResults/remap.similar_1b.everything.frag.out index c76c4bfa..4783d89f 100644 --- a/Test/baseResults/remap.similar_1b.everything.frag.out +++ b/Test/baseResults/remap.similar_1b.everything.frag.out @@ -93,7 +93,7 @@ remap.similar_1b.everything.frag 22102: 649(ptr) Variable Function 24151: 12(int) Load 4408 13868: 9(bool) SGreaterThan 24151 2577 - SelectionMerge 22309 None + SelectionMerge 14966 None BranchConditional 13868 10822 17416 10822: Label 22680: 12(int) Load 4408 @@ -115,7 +115,6 @@ remap.similar_1b.everything.frag 10505: 12(int) IAdd 11462 21176 14626: 13(float) ConvertSToF 10505 ReturnValue 14626 - 22309: Label - 6429: 13(float) Undef - ReturnValue 6429 + 14966: Label + Unreachable FunctionEnd diff --git a/Test/baseResults/remap.similar_1b.none.frag.out b/Test/baseResults/remap.similar_1b.none.frag.out index 0a854d6e..08d09191 100644 --- a/Test/baseResults/remap.similar_1b.none.frag.out +++ b/Test/baseResults/remap.similar_1b.none.frag.out @@ -130,6 +130,5 @@ remap.similar_1b.none.frag 73: 8(float) ConvertSToF 72 ReturnValue 73 46: Label - 75: 8(float) Undef - ReturnValue 75 + Unreachable FunctionEnd diff --git a/Test/baseResults/spv.controlFlowAttributes.frag.out b/Test/baseResults/spv.controlFlowAttributes.frag.out index c7082326..c424b742 100644 --- a/Test/baseResults/spv.controlFlowAttributes.frag.out +++ b/Test/baseResults/spv.controlFlowAttributes.frag.out @@ -1,16 +1,16 @@ spv.controlFlowAttributes.frag -WARNING: 0:20: 'unroll' : expected no arguments -WARNING: 0:21: 'dont_unroll' : expected no arguments -WARNING: 0:22: 'dependency_infinite' : expected no arguments -WARNING: 0:23: 'dependency_length' : expected a single integer argument -WARNING: 0:24: '' : attribute with arguments not recognized, skipping -WARNING: 0:25: '' : attribute with arguments not recognized, skipping -WARNING: 0:26: '' : attribute with arguments not recognized, skipping +WARNING: 0:27: 'unroll' : expected no arguments +WARNING: 0:28: 'dont_unroll' : expected no arguments +WARNING: 0:29: 'dependency_infinite' : expected no arguments +WARNING: 0:30: 'dependency_length' : expected a single integer argument +WARNING: 0:31: '' : attribute with arguments not recognized, skipping +WARNING: 0:32: '' : attribute with arguments not recognized, skipping +WARNING: 0:33: '' : attribute with arguments not recognized, skipping Validation failed // Module Version 10000 // Generated by (magic number): 80007 -// Id's are bound by 118 +// Id's are bound by 123 Capability Shader 1: ExtInstImport "GLSL.std.450" @@ -20,220 +20,231 @@ Validation failed Source GLSL 450 SourceExtension "GL_EXT_control_flow_attributes" Name 4 "main" - Name 8 "i" - Name 36 "i" - Name 47 "cond" - Name 60 "i" - Name 79 "i" + Name 6 "f0(" + Name 8 "f1(" + Name 23 "i" + Name 41 "i" + Name 52 "cond" + Name 65 "i" + Name 84 "i" 2: TypeVoid 3: TypeFunction 2 - 6: TypeInt 32 1 - 7: TypePointer Function 6(int) - 9: 6(int) Constant 0 - 16: 6(int) Constant 8 - 17: TypeBool - 20: 6(int) Constant 1 - 31: 17(bool) ConstantTrue - 46: TypePointer Private 17(bool) - 47(cond): 46(ptr) Variable Private - 54: 17(bool) ConstantFalse - 55: 6(int) Constant 3 + 19: TypeBool + 20: 19(bool) ConstantTrue + 21: TypeInt 32 1 + 22: TypePointer Function 21(int) + 24: 21(int) Constant 0 + 31: 21(int) Constant 8 + 34: 21(int) Constant 1 + 51: TypePointer Private 19(bool) + 52(cond): 51(ptr) Variable Private + 59: 19(bool) ConstantFalse + 60: 21(int) Constant 3 4(main): 2 Function None 3 5: Label - 8(i): 7(ptr) Variable Function - 36(i): 7(ptr) Variable Function - 60(i): 7(ptr) Variable Function - 79(i): 7(ptr) Variable Function - Store 8(i) 9 - Branch 10 - 10: Label - LoopMerge 12 13 Unroll - Branch 14 - 14: Label - 15: 6(int) Load 8(i) - 18: 17(bool) SLessThan 15 16 - BranchConditional 18 11 12 - 11: Label - Branch 13 - 13: Label - 19: 6(int) Load 8(i) - 21: 6(int) IAdd 19 20 - Store 8(i) 21 - Branch 10 - 12: Label - Branch 22 - 22: Label - LoopMerge 24 25 DontUnroll - Branch 23 - 23: Label + 23(i): 22(ptr) Variable Function + 41(i): 22(ptr) Variable Function + 65(i): 22(ptr) Variable Function + 84(i): 22(ptr) Variable Function + Store 23(i) 24 Branch 25 25: Label - Branch 22 - 24: Label - Branch 26 - 26: Label - LoopMerge 28 29 DontUnroll - Branch 30 - 30: Label - BranchConditional 31 27 28 - 27: Label - Branch 29 - 29: Label - Branch 26 - 28: Label - Branch 32 - 32: Label - LoopMerge 34 35 DependencyInfinite - Branch 33 - 33: Label - Branch 35 - 35: Label - BranchConditional 31 32 34 - 34: Label - Store 36(i) 9 + LoopMerge 27 28 Unroll + Branch 29 + 29: Label + 30: 21(int) Load 23(i) + 32: 19(bool) SLessThan 30 31 + BranchConditional 32 26 27 + 26: Label + Branch 28 + 28: Label + 33: 21(int) Load 23(i) + 35: 21(int) IAdd 33 34 + Store 23(i) 35 + Branch 25 + 27: Label + 36: 2 FunctionCall 6(f0() Branch 37 37: Label - LoopMerge 39 40 DependencyLength 4 - Branch 41 - 41: Label - 42: 6(int) Load 36(i) - 43: 17(bool) SLessThan 42 16 - BranchConditional 43 38 39 - 38: Label - Branch 40 - 40: Label - 44: 6(int) Load 36(i) - 45: 6(int) IAdd 44 20 - Store 36(i) 45 - Branch 37 + LoopMerge 39 40 DependencyInfinite + Branch 38 + 38: Label + Branch 40 + 40: Label + BranchConditional 20 37 39 39: Label - 48: 17(bool) Load 47(cond) - SelectionMerge 50 Flatten - BranchConditional 48 49 50 - 49: Label - Branch 50 - 50: Label - 51: 17(bool) Load 47(cond) - SelectionMerge 53 DontFlatten - BranchConditional 51 52 53 - 52: Label - Store 47(cond) 54 - Branch 53 - 53: Label - SelectionMerge 57 DontFlatten - Switch 55 57 - case 3: 56 - 56: Label - Branch 57 - 57: Label - Store 60(i) 9 - Branch 61 - 61: Label - LoopMerge 63 64 None - Branch 65 - 65: Label - 66: 6(int) Load 60(i) - 67: 17(bool) SLessThan 66 16 - BranchConditional 67 62 63 - 62: Label - Branch 64 - 64: Label - 68: 6(int) Load 60(i) - 69: 6(int) IAdd 68 20 - Store 60(i) 69 - Branch 61 - 63: Label + Store 41(i) 24 + Branch 42 + 42: Label + LoopMerge 44 45 DependencyLength 4 + Branch 46 + 46: Label + 47: 21(int) Load 41(i) + 48: 19(bool) SLessThan 47 31 + BranchConditional 48 43 44 + 43: Label + Branch 45 + 45: Label + 49: 21(int) Load 41(i) + 50: 21(int) IAdd 49 34 + Store 41(i) 50 + Branch 42 + 44: Label + 53: 19(bool) Load 52(cond) + SelectionMerge 55 Flatten + BranchConditional 53 54 55 + 54: Label + Branch 55 + 55: Label + 56: 19(bool) Load 52(cond) + SelectionMerge 58 DontFlatten + BranchConditional 56 57 58 + 57: Label + Store 52(cond) 59 + Branch 58 + 58: Label + SelectionMerge 62 DontFlatten + Switch 60 62 + case 3: 61 + 61: Label + Branch 62 + 62: Label + Store 65(i) 24 + Branch 66 + 66: Label + LoopMerge 68 69 None Branch 70 70: Label - LoopMerge 72 73 None - Branch 74 - 74: Label - BranchConditional 31 71 72 - 71: Label - Branch 73 - 73: Label - Branch 70 - 72: Label + 71: 21(int) Load 65(i) + 72: 19(bool) SLessThan 71 31 + BranchConditional 72 67 68 + 67: Label + Branch 69 + 69: Label + 73: 21(int) Load 65(i) + 74: 21(int) IAdd 73 34 + Store 65(i) 74 + Branch 66 + 68: Label Branch 75 75: Label LoopMerge 77 78 None - Branch 76 - 76: Label - Branch 78 - 78: Label - BranchConditional 31 75 77 + Branch 79 + 79: Label + BranchConditional 20 76 77 + 76: Label + Branch 78 + 78: Label + Branch 75 77: Label - Store 79(i) 9 Branch 80 80: Label LoopMerge 82 83 None - Branch 84 - 84: Label - 85: 6(int) Load 79(i) - 86: 17(bool) SLessThan 85 16 - BranchConditional 86 81 82 - 81: Label - Branch 83 - 83: Label - 87: 6(int) Load 79(i) - 88: 6(int) IAdd 87 20 - Store 79(i) 88 - Branch 80 + Branch 81 + 81: Label + Branch 83 + 83: Label + BranchConditional 20 80 82 82: Label - 89: 17(bool) Load 47(cond) - SelectionMerge 91 None - BranchConditional 89 90 91 - 90: Label - Branch 91 - 91: Label - 92: 17(bool) Load 47(cond) - SelectionMerge 94 None - BranchConditional 92 93 94 - 93: Label - Store 47(cond) 54 - Branch 94 - 94: Label + Store 84(i) 24 + Branch 85 + 85: Label + LoopMerge 87 88 None + Branch 89 + 89: Label + 90: 21(int) Load 84(i) + 91: 19(bool) SLessThan 90 31 + BranchConditional 91 86 87 + 86: Label + Branch 88 + 88: Label + 92: 21(int) Load 84(i) + 93: 21(int) IAdd 92 34 + Store 84(i) 93 + Branch 85 + 87: Label + 94: 19(bool) Load 52(cond) SelectionMerge 96 None - Switch 55 96 - case 3: 95 + BranchConditional 94 95 96 95: Label Branch 96 96: Label - Branch 99 - 99: Label - LoopMerge 101 102 Unroll DontUnroll DependencyLength 2 - Branch 103 - 103: Label - 104: 17(bool) Load 47(cond) - BranchConditional 104 100 101 - 100: Label - Branch 102 - 102: Label + 97: 19(bool) Load 52(cond) + SelectionMerge 99 None + BranchConditional 97 98 99 + 98: Label + Store 52(cond) 59 Branch 99 + 99: Label + SelectionMerge 101 None + Switch 60 101 + case 3: 100 + 100: Label + Branch 101 101: Label - SelectionMerge 106 DontFlatten - Switch 55 106 - case 3: 105 + Branch 104 + 104: Label + LoopMerge 106 107 Unroll DontUnroll DependencyLength 2 + Branch 108 + 108: Label + 109: 19(bool) Load 52(cond) + BranchConditional 109 105 106 105: Label - Branch 106 + Branch 107 + 107: Label + Branch 104 106: Label - 109: 17(bool) Load 47(cond) - SelectionMerge 111 Flatten - BranchConditional 109 110 111 + SelectionMerge 111 DontFlatten + Switch 60 111 + case 3: 110 110: Label Branch 111 111: Label - Branch 112 - 112: Label - LoopMerge 114 115 DependencyInfinite - Branch 116 - 116: Label - 117: 17(bool) Load 47(cond) - BranchConditional 117 113 114 - 113: Label - Branch 115 + 114: 19(bool) Load 52(cond) + SelectionMerge 116 Flatten + BranchConditional 114 115 116 115: Label - Branch 112 - 114: Label + Branch 116 + 116: Label + Branch 117 + 117: Label + LoopMerge 119 120 DependencyInfinite + Branch 121 + 121: Label + 122: 19(bool) Load 52(cond) + BranchConditional 122 118 119 + 118: Label + Branch 120 + 120: Label + Branch 117 + 119: Label + Return + FunctionEnd + 6(f0(): 2 Function None 3 + 7: Label + Branch 10 + 10: Label + LoopMerge 12 13 DontUnroll + Branch 11 + 11: Label + Branch 13 + 13: Label + Branch 10 + 12: Label + Unreachable + FunctionEnd + 8(f1(): 2 Function None 3 + 9: Label + Branch 14 + 14: Label + LoopMerge 16 17 DontUnroll + Branch 18 + 18: Label + BranchConditional 20 15 16 + 15: Label + Branch 17 + 17: Label + Branch 14 + 16: Label Return FunctionEnd diff --git a/Test/baseResults/spv.dead-after-continue.vert.out b/Test/baseResults/spv.dead-after-continue.vert.out new file mode 100644 index 00000000..9d85fdc5 --- /dev/null +++ b/Test/baseResults/spv.dead-after-continue.vert.out @@ -0,0 +1,54 @@ +spv.dead-after-continue.vert +// Module Version 10000 +// Generated by (magic number): 80007 +// Id's are bound by 29 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" 20 28 + Source GLSL 450 + Name 4 "main" + Name 8 "i" + Name 20 "o" + Name 28 "c" + Decorate 20(o) Location 0 + Decorate 28(c) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypePointer Function 6(int) + 9: 6(int) Constant 0 + 16: 6(int) Constant 5 + 17: TypeBool + 19: TypePointer Output 6(int) + 20(o): 19(ptr) Variable Output + 21: 6(int) Constant 1 + 23: 6(int) Constant 2 + 26: 6(int) Constant 3 + 27: TypePointer Input 6(int) + 28(c): 27(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + 8(i): 7(ptr) Variable Function + Store 8(i) 9 + Branch 10 + 10: Label + LoopMerge 12 13 None + Branch 14 + 14: Label + 15: 6(int) Load 8(i) + 18: 17(bool) SLessThan 15 16 + BranchConditional 18 11 12 + 11: Label + Store 20(o) 21 + Branch 13 + 13: Label + 24: 6(int) Load 8(i) + 25: 6(int) IAdd 24 21 + Store 8(i) 25 + Branch 10 + 12: Label + Store 20(o) 26 + Return + FunctionEnd diff --git a/Test/baseResults/spv.dead-after-discard.frag.out b/Test/baseResults/spv.dead-after-discard.frag.out new file mode 100644 index 00000000..2c2a595c --- /dev/null +++ b/Test/baseResults/spv.dead-after-discard.frag.out @@ -0,0 +1,31 @@ +spv.dead-after-discard.frag +// Module Version 10000 +// Generated by (magic number): 80007 +// Id's are bound by 15 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 8 14 + ExecutionMode 4 OriginUpperLeft + Source GLSL 450 + Name 4 "main" + Name 8 "o" + Name 14 "c" + Decorate 8(o) Location 0 + Decorate 14(c) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypePointer Output 6(int) + 8(o): 7(ptr) Variable Output + 9: 6(int) Constant 1 + 11: 6(int) Constant 3 + 12: TypeFloat 32 + 13: TypePointer Input 12(float) + 14(c): 13(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + Store 8(o) 9 + Kill + FunctionEnd diff --git a/Test/baseResults/spv.dead-after-loop-break.vert.out b/Test/baseResults/spv.dead-after-loop-break.vert.out new file mode 100644 index 00000000..8cf187d9 --- /dev/null +++ b/Test/baseResults/spv.dead-after-loop-break.vert.out @@ -0,0 +1,67 @@ +spv.dead-after-loop-break.vert +// Module Version 10000 +// Generated by (magic number): 80007 +// Id's are bound by 36 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" 8 25 + Source GLSL 450 + Name 4 "main" + Name 8 "o" + Name 11 "i" + Name 25 "c" + Decorate 8(o) Location 0 + Decorate 25(c) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypePointer Output 6(int) + 8(o): 7(ptr) Variable Output + 9: 6(int) Constant 1 + 10: TypePointer Function 6(int) + 12: 6(int) Constant 0 + 19: 6(int) Constant 5 + 20: TypeBool + 22: 6(int) Constant 2 + 24: TypePointer Input 6(int) + 25(c): 24(ptr) Variable Input + 30: 6(int) Constant 3 + 32: 6(int) Constant 4 + 35: 6(int) Constant 6 + 4(main): 2 Function None 3 + 5: Label + 11(i): 10(ptr) Variable Function + Store 8(o) 9 + Store 11(i) 12 + Branch 13 + 13: Label + LoopMerge 15 16 None + Branch 17 + 17: Label + 18: 6(int) Load 11(i) + 21: 20(bool) SLessThan 18 19 + BranchConditional 21 14 15 + 14: Label + Store 8(o) 22 + 23: 6(int) Load 11(i) + 26: 6(int) Load 25(c) + 27: 20(bool) IEqual 23 26 + SelectionMerge 29 None + BranchConditional 27 28 29 + 28: Label + Store 8(o) 30 + Branch 15 + 29: Label + Store 8(o) 19 + Branch 16 + 16: Label + 33: 6(int) Load 11(i) + 34: 6(int) IAdd 33 9 + Store 11(i) 34 + Branch 13 + 15: Label + Store 8(o) 35 + Return + FunctionEnd diff --git a/Test/baseResults/spv.dead-after-return.vert.out b/Test/baseResults/spv.dead-after-return.vert.out new file mode 100644 index 00000000..f8af0c42 --- /dev/null +++ b/Test/baseResults/spv.dead-after-return.vert.out @@ -0,0 +1,29 @@ +spv.dead-after-return.vert +// Module Version 10000 +// Generated by (magic number): 80007 +// Id's are bound by 14 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" 8 13 + Source GLSL 450 + Name 4 "main" + Name 8 "o" + Name 13 "c" + Decorate 8(o) Location 0 + Decorate 13(c) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypePointer Output 6(int) + 8(o): 7(ptr) Variable Output + 9: 6(int) Constant 1 + 11: 6(int) Constant 3 + 12: TypePointer Input 6(int) + 13(c): 12(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + Store 8(o) 9 + Return + FunctionEnd diff --git a/Test/baseResults/spv.dead-after-switch-break.vert.out b/Test/baseResults/spv.dead-after-switch-break.vert.out new file mode 100644 index 00000000..7b27fc77 --- /dev/null +++ b/Test/baseResults/spv.dead-after-switch-break.vert.out @@ -0,0 +1,40 @@ +spv.dead-after-switch-break.vert +// Module Version 10000 +// Generated by (magic number): 80007 +// Id's are bound by 21 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" 8 14 + Source GLSL 450 + Name 4 "main" + Name 8 "c" + Name 14 "o" + Decorate 8(c) Location 0 + Decorate 14(o) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypePointer Input 6(int) + 8(c): 7(ptr) Variable Input + 13: TypePointer Output 6(int) + 14(o): 13(ptr) Variable Output + 15: 6(int) Constant 1 + 17: 6(int) Constant 2 + 20: 6(int) Constant 3 + 4(main): 2 Function None 3 + 5: Label + 9: 6(int) Load 8(c) + SelectionMerge 12 None + Switch 9 11 + case 0: 10 + 11: Label + Branch 12 + 10: Label + Store 14(o) 15 + Branch 12 + 12: Label + Store 14(o) 20 + Return + FunctionEnd diff --git a/Test/baseResults/spv.dead-complex-continue-after-return.vert.out b/Test/baseResults/spv.dead-complex-continue-after-return.vert.out new file mode 100644 index 00000000..23ac2007 --- /dev/null +++ b/Test/baseResults/spv.dead-complex-continue-after-return.vert.out @@ -0,0 +1,55 @@ +spv.dead-complex-continue-after-return.vert +// Module Version 10000 +// Generated by (magic number): 80007 +// Id's are bound by 31 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" 11 30 + Source GLSL 450 + Name 4 "main" + Name 8 "i" + Name 11 "o" + Name 30 "c" + Decorate 11(o) Location 0 + Decorate 30(c) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypePointer Function 6(int) + 9: 6(int) Constant 0 + 10: TypePointer Output 6(int) + 11(o): 10(ptr) Variable Output + 12: 6(int) Constant 1 + 19: 6(int) Constant 5 + 20: TypeBool + 22: 6(int) Constant 2 + 24: 6(int) Constant 3 + 27: 6(int) Constant 99 + 28: 6(int) Constant 4 + 29: TypePointer Input 6(int) + 30(c): 29(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + 8(i): 7(ptr) Variable Function + Store 8(i) 9 + Store 11(o) 12 + Store 8(i) 9 + Branch 13 + 13: Label + LoopMerge 15 16 None + Branch 17 + 17: Label + 18: 6(int) Load 8(i) + 21: 20(bool) SLessThan 18 19 + BranchConditional 21 14 15 + 14: Label + Store 11(o) 22 + Return + 16: Label + Branch 13 + 15: Label + Store 11(o) 28 + Return + FunctionEnd diff --git a/Test/baseResults/spv.dead-complex-merge-after-return.vert.out b/Test/baseResults/spv.dead-complex-merge-after-return.vert.out new file mode 100644 index 00000000..1c0867e5 --- /dev/null +++ b/Test/baseResults/spv.dead-complex-merge-after-return.vert.out @@ -0,0 +1,51 @@ +spv.dead-complex-merge-after-return.vert +// Module Version 10000 +// Generated by (magic number): 80007 +// Id's are bound by 36 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" 11 27 + Source GLSL 450 + Name 4 "main" + Name 8 "i" + Name 11 "o" + Name 27 "c" + Decorate 11(o) Location 0 + Decorate 27(c) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypePointer Function 6(int) + 9: 6(int) Constant 0 + 10: TypePointer Output 6(int) + 11(o): 10(ptr) Variable Output + 12: 6(int) Constant 1 + 17: 6(int) Constant 2 + 19: 6(int) Constant 3 + 22: 6(int) Constant 5 + 23: TypeBool + 25: 6(int) Constant 4 + 26: TypePointer Input 6(int) + 27(c): 26(ptr) Variable Input + 32: 6(int) Constant 100 + 34: 6(int) Constant 200 + 35: 6(int) Constant 300 + 4(main): 2 Function None 3 + 5: Label + 8(i): 7(ptr) Variable Function + Store 8(i) 9 + Store 11(o) 12 + Branch 13 + 13: Label + LoopMerge 15 16 None + Branch 14 + 14: Label + Store 11(o) 17 + Return + 16: Label + Branch 13 + 15: Label + Unreachable + FunctionEnd diff --git a/Test/baseResults/spv.earlyReturnDiscard.frag.out b/Test/baseResults/spv.earlyReturnDiscard.frag.out index c44b722f..bb11b283 100644 --- a/Test/baseResults/spv.earlyReturnDiscard.frag.out +++ b/Test/baseResults/spv.earlyReturnDiscard.frag.out @@ -160,7 +160,7 @@ spv.earlyReturnDiscard.frag 102: Label Return 100: Label - Branch 67 + Unreachable 67: Label 106: 7(fvec4) Load 9(color) 107: 7(fvec4) Load 13(color2) diff --git a/Test/baseResults/spv.for-notest.vert.out b/Test/baseResults/spv.for-notest.vert.out index 36c4a96a..c9d5b4cd 100644 --- a/Test/baseResults/spv.for-notest.vert.out +++ b/Test/baseResults/spv.for-notest.vert.out @@ -38,5 +38,5 @@ spv.for-notest.vert Store 8(i) 19 Branch 10 12: Label - Return + Unreachable FunctionEnd diff --git a/Test/baseResults/spv.forwardFun.frag.out b/Test/baseResults/spv.forwardFun.frag.out index 32875b2c..3e96403e 100644 --- a/Test/baseResults/spv.forwardFun.frag.out +++ b/Test/baseResults/spv.forwardFun.frag.out @@ -99,8 +99,7 @@ spv.forwardFun.frag 45: Label ReturnValue 46 42: Label - 48: 8(float) Undef - ReturnValue 48 + Unreachable FunctionEnd 16(foo(vf4;): 8(float) Function None 14 15(bar): 13(ptr) FunctionParameter diff --git a/Test/baseResults/spv.functionCall.frag.out b/Test/baseResults/spv.functionCall.frag.out index 269b74e6..a8b7ad15 100644 --- a/Test/baseResults/spv.functionCall.frag.out +++ b/Test/baseResults/spv.functionCall.frag.out @@ -105,8 +105,7 @@ WARNING: 0:5: varying deprecated in version 130; may be removed in future releas 44: Label ReturnValue 45 41: Label - 47: 6(float) Undef - ReturnValue 47 + Unreachable FunctionEnd 18(missingReturn(): 6(float) Function None 15 19: Label diff --git a/Test/baseResults/spv.merge-unreachable.frag.out b/Test/baseResults/spv.merge-unreachable.frag.out index 7ec0f33d..1c2234d4 100644 --- a/Test/baseResults/spv.merge-unreachable.frag.out +++ b/Test/baseResults/spv.merge-unreachable.frag.out @@ -37,5 +37,5 @@ spv.merge-unreachable.frag 23: Label Return 21: Label - Return + Unreachable FunctionEnd diff --git a/Test/hlsl.doLoop.frag b/Test/hlsl.doLoop.frag index 0318dc8f..8f4bfdce 100644 --- a/Test/hlsl.doLoop.frag +++ b/Test/hlsl.doLoop.frag @@ -1,9 +1,29 @@ +void f0() { + [unroll] do {} while (false); +} + +void f1() { + [unroll] do {;} while (false); +} + +float f2(float input) { + do { return (float4)input; } while (input > 2.0); +} + +void f3(float input) { + do ++input; while (input < 10.0); +} + +void f4(float input) { + do while (++input < 10.0); while (++input < 10.0); // nest while inside do-while +} + float4 PixelShaderFunction(float input) : COLOR0 { - [unroll] do {} while (false); - [unroll] do {;} while (false); - do { return (float4)input; } while (input > 2.0); - do ++input; while (input < 10.0); - do while (++input < 10.0); while (++input < 10.0); // nest while inside do-while + f0(); + f1(); + f2(input); + f3(input); + f4(input); return (float4)input; } diff --git a/Test/hlsl.forLoop.frag b/Test/hlsl.forLoop.frag index 9cf60ee4..c0783dbd 100644 --- a/Test/hlsl.forLoop.frag +++ b/Test/hlsl.forLoop.frag @@ -1,17 +1,59 @@ +void f0() { + for (;;) ; +} + +void f1(float4 input) { + for (++input; ; ) ; +} + +void f2(float4 input) { + [unroll] for (; any(input != input); ) {} +} + +float f3(float4 input) { + for (; any(input != input); ) { return -input; } +} + +float f4(float4 input) { + for (--input; any(input != input); input += 2) { return -input; } +} + +void f5(float4 input) { + for (;;) if (input.x > 2.0) break; +} + +void f6(float4 input) { + for (;;) if (input.x > 2.0) continue; +} + +void f99() { + for (int first = 0, second = 1; ;) first + second; +} + +void f100(float ii) { + for (--ii, --ii, --ii;;) ii; +} + float4 PixelShaderFunction(float4 input) : COLOR0 { - for (;;) ; - for (++input; ; ) ; - [unroll] for (; any(input != input); ) {} - for (; any(input != input); ) { return -input; } - for (--input; any(input != input); input += 2) { return -input; } - for (;;) if (input.x > 2.0) break; - for (;;) if (input.x > 2.0) continue; + f0(); + f1(input); + f2(input); + f3(input); + f4(input); + f5(input); + f6(input); + float ii; for (int ii = -1; ii < 3; ++ii) if (ii == 2) continue; --ii; - for (int first = 0, second = 1; ;) first + second; + + f99(); + for ( int i = 0, count = int(ii); i < count; i++ ); for (float first = 0, second[2], third; first < second[0]; ++second[1]) first + second[1] + third; - for (--ii, --ii, --ii;;) ii; + + f100(ii); + + return input; } diff --git a/Test/hlsl.if.frag b/Test/hlsl.if.frag index b62eda15..a2e47f6a 100644 --- a/Test/hlsl.if.frag +++ b/Test/hlsl.if.frag @@ -1,12 +1,24 @@ +float4 f0(float4 input) { + if (all(input == input)) + return input; + else + return -input; +} + +float4 f1(float4 input) { + if (all(input == input)) { + return input; + } else { + return -input; + } +} + float4 PixelShaderFunction(float4 input) : COLOR0 { if (all(input == input)) return input; - if (all(input == input)) - return input; - else - return -input; + f0(input); if (all(input == input)) ; @@ -20,11 +32,7 @@ float4 PixelShaderFunction(float4 input) : COLOR0 return input; } - if (all(input == input)) { - return input; - } else { - return -input; - } + f1(input); int ii; if (float ii = input.z) diff --git a/Test/spv.controlFlowAttributes.frag b/Test/spv.controlFlowAttributes.frag index 6d90c0db..cedd6022 100644 --- a/Test/spv.controlFlowAttributes.frag +++ b/Test/spv.controlFlowAttributes.frag @@ -4,11 +4,18 @@ bool cond; +void f0() { + [[loop]] for (;;) { } +} + +void f1() { + [[dont_unroll]] while(true) { } +} + void main() { [[unroll]] for (int i = 0; i < 8; ++i) { } - [[loop]] for (;;) { } - [[dont_unroll]] while(true) { } + f0(); [[dependency_infinite]] do { } while(true); [[dependency_length(1+3)]] for (int i = 0; i < 8; ++i) { } [[flatten]] if (cond) { } else { } diff --git a/Test/spv.dead-after-continue.vert b/Test/spv.dead-after-continue.vert new file mode 100644 index 00000000..86e8eea8 --- /dev/null +++ b/Test/spv.dead-after-continue.vert @@ -0,0 +1,14 @@ +#version 450 + +layout(location =0 ) in int c; +layout(location =0 ) out int o; + +void main() { + int i; + for (i=0; i < 5; i++) { + o = 1; + continue; + o = 2; + } + o = 3; +} diff --git a/Test/spv.dead-after-discard.frag b/Test/spv.dead-after-discard.frag new file mode 100644 index 00000000..769592bd --- /dev/null +++ b/Test/spv.dead-after-discard.frag @@ -0,0 +1,10 @@ +#version 450 + +layout(location =0 ) in float c; +layout(location =0 ) out int o; + +void main() { + o = 1; + discard; + o = 3; +} diff --git a/Test/spv.dead-after-loop-break.vert b/Test/spv.dead-after-loop-break.vert new file mode 100644 index 00000000..5498497c --- /dev/null +++ b/Test/spv.dead-after-loop-break.vert @@ -0,0 +1,19 @@ +#version 450 + +layout(location =0 ) in int c; +layout(location =0 ) out int o; + +void main() { + int i; + o = 1; + for (i=0; i < 5; i++) { + o = 2; + if (i==c) { + o = 3; + break; + o = 4; + } + o = 5; + } + o = 6; +} diff --git a/Test/spv.dead-after-return.vert b/Test/spv.dead-after-return.vert new file mode 100644 index 00000000..71726963 --- /dev/null +++ b/Test/spv.dead-after-return.vert @@ -0,0 +1,10 @@ +#version 450 + +layout(location =0 ) in int c; +layout(location =0 ) out int o; + +void main() { + o = 1; + return; + o = 3; +} diff --git a/Test/spv.dead-after-switch-break.vert b/Test/spv.dead-after-switch-break.vert new file mode 100644 index 00000000..b1483e8d --- /dev/null +++ b/Test/spv.dead-after-switch-break.vert @@ -0,0 +1,15 @@ +#version 450 + +layout(location =0 ) in int c; +layout(location =0 ) out int o; + +void main() { + int i; + switch(c) { + case 0: o=1; + break; + o=2; + default: break; + } + o = 3; +} diff --git a/Test/spv.dead-complex-continue-after-return.vert b/Test/spv.dead-complex-continue-after-return.vert new file mode 100644 index 00000000..85932a36 --- /dev/null +++ b/Test/spv.dead-complex-continue-after-return.vert @@ -0,0 +1,19 @@ +#version 450 + +layout(location =0 ) in int c; +layout(location =0 ) out int o; + +void main() { + int i = 0; + o = 1; + // This has non-trivial continue target. + for (i=0; i < 5; ++i, o=99) { + o = 2; + return; + o = 3; + } + // This is considered reachable since Glslang codegen will + // create a conditional branch in the header, and one arm + // of that branch reaches this merge block. + o = 4; +} diff --git a/Test/spv.dead-complex-merge-after-return.vert b/Test/spv.dead-complex-merge-after-return.vert new file mode 100644 index 00000000..2fff1a29 --- /dev/null +++ b/Test/spv.dead-complex-merge-after-return.vert @@ -0,0 +1,23 @@ +#version 450 + +layout(location =0 ) in int c; +layout(location =0 ) out int o; + +void main() { + int i = 0; + o = 1; + do { + o = 2; + return; + o = 3; + } while(i++ < 5); + + // All this is a dead merge block. + o = 4; + if (c==4) { + o = 100; + } else { + o = 200; + } + o = 300; +} diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 96203416..ce5960c8 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -63,6 +63,7 @@ std::string FileNameAsCustomTestSuffixIoMap( } using CompileVulkanToSpirvTest = GlslangTest<::testing::TestWithParam>; +using CompileVulkanToSpirvDeadCodeElimTest = GlslangTest<::testing::TestWithParam>; using CompileVulkanToDebugSpirvTest = GlslangTest<::testing::TestWithParam>; using CompileVulkan1_1ToSpirvTest = GlslangTest<::testing::TestWithParam>; using CompileToSpirv14Test = GlslangTest<::testing::TestWithParam>; @@ -85,6 +86,13 @@ TEST_P(CompileVulkanToSpirvTest, FromFile) Target::Spv); } +TEST_P(CompileVulkanToSpirvDeadCodeElimTest, FromFile) +{ + loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), + Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, + Target::Spv); +} + // Compiling GLSL to SPIR-V with debug info under Vulkan semantics. Expected // to successfully generate SPIR-V. TEST_P(CompileVulkanToDebugSpirvTest, FromFile) @@ -417,6 +425,23 @@ INSTANTIATE_TEST_CASE_P( FileNameAsCustomTestSuffix ); +// Cases with deliberately unreachable code. +// By default the compiler will aggressively eliminate +// unreachable merges and continues. +INSTANTIATE_TEST_CASE_P( + GlslWithDeadCode, CompileVulkanToSpirvDeadCodeElimTest, + ::testing::ValuesIn(std::vector({ + "spv.dead-after-continue.vert", + "spv.dead-after-discard.frag", + "spv.dead-after-return.vert", + "spv.dead-after-loop-break.vert", + "spv.dead-after-switch-break.vert", + "spv.dead-complex-continue-after-return.vert", + "spv.dead-complex-merge-after-return.vert", + })), + FileNameAsCustomTestSuffix +); + // clang-format off INSTANTIATE_TEST_CASE_P( Glsl, CompileVulkanToDebugSpirvTest, diff --git a/gtests/TestFixture.h b/gtests/TestFixture.h index 61a8f232..8d2ebd92 100755 --- a/gtests/TestFixture.h +++ b/gtests/TestFixture.h @@ -113,7 +113,7 @@ public: forceVersionProfile(false), isForwardCompatible(false) { // Perform validation by default. - validatorOptions.validate = true; + spirvOptions.validate = true; } // Tries to load the contents from the file at the given |path|. On success, @@ -693,14 +693,14 @@ public: expectedOutputFname, result.spirvWarningsErrors); } - glslang::SpvOptions& options() { return validatorOptions; } + glslang::SpvOptions& options() { return spirvOptions; } private: const int defaultVersion; const EProfile defaultProfile; const bool forceVersionProfile; const bool isForwardCompatible; - glslang::SpvOptions validatorOptions; + glslang::SpvOptions spirvOptions; }; } // namespace glslangtest From 7f77b2e8669ae06acbee9c9867be8b13e4054f9c Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Fri, 1 Nov 2019 10:51:21 -0600 Subject: [PATCH 66/94] Bump version. --- glslang/Include/revision.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index 06fccdf4..fcb57f73 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -1,3 +1,3 @@ // This header is generated by the make-revision script. -#define GLSLANG_PATCH_LEVEL 3381 +#define GLSLANG_PATCH_LEVEL 3496 From 6fbc1af8ae2c89b1847bab182fd7d3be5f11f639 Mon Sep 17 00:00:00 2001 From: Jamie Madill Date: Sat, 2 Nov 2019 09:56:09 -0400 Subject: [PATCH 67/94] Add a couple missing headers to the GN build. Detected with ANGLE's export_targets script. --- BUILD.gn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/BUILD.gn b/BUILD.gn index 3351fd3e..098d7de6 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -60,8 +60,10 @@ source_set("glslang_sources") { sources = [ "OGLCompilersDLL/InitializeDll.cpp", "OGLCompilersDLL/InitializeDll.h", + "SPIRV/GLSL.ext.AMD.h", "SPIRV/GLSL.ext.EXT.h", "SPIRV/GLSL.ext.KHR.h", + "SPIRV/GLSL.ext.NV.h", "SPIRV/GLSL.std.450.h", "SPIRV/GlslangToSpv.cpp", "SPIRV/GlslangToSpv.h", From d48881c79bf318f4c6dd2988f566fb94999bd25b Mon Sep 17 00:00:00 2001 From: Sergey Kosarevsky Date: Sun, 3 Nov 2019 01:34:54 +0300 Subject: [PATCH 68/94] Fix warning: size_t->int implicit cast --- glslang/MachineIndependent/reflection.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/glslang/MachineIndependent/reflection.cpp b/glslang/MachineIndependent/reflection.cpp index 9f1089de..b0936711 100644 --- a/glslang/MachineIndependent/reflection.cpp +++ b/glslang/MachineIndependent/reflection.cpp @@ -137,7 +137,7 @@ public: if (it == ioMapper.end()) { // seperate pipe i/o params from uniforms and blocks // in is only for input in first stage as out is only for last stage. check traverse in call stack. - ioMapper[name.c_str()] = ioItems.size(); + ioMapper[name.c_str()] = static_cast(ioItems.size()); ioItems.push_back( TObjectReflection(name.c_str(), type, 0, mapToGlType(type), mapToGlArraySize(type), 0)); EShLanguageMask& stages = ioItems.back().stages; From 31c3370d8321e338d6f1f73b1102ae8cc38523aa Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Sat, 2 Nov 2019 21:26:40 -0600 Subject: [PATCH 69/94] Bump up the generator version, which is exposed in SPV test results. --- SPIRV/GlslangToSpv.cpp | 3 ++- SPIRV/spvIR.h | 2 +- Test/baseLegalResults/hlsl.aliasOpaque.frag.out | 2 +- Test/baseLegalResults/hlsl.flattenOpaque.frag.out | 2 +- Test/baseLegalResults/hlsl.flattenOpaqueInit.vert.out | 2 +- Test/baseLegalResults/hlsl.flattenOpaqueInitMix.vert.out | 2 +- Test/baseLegalResults/hlsl.flattenSubset.frag.out | 2 +- Test/baseLegalResults/hlsl.flattenSubset2.frag.out | 2 +- Test/baseLegalResults/hlsl.partialFlattenLocal.vert.out | 2 +- Test/baseLegalResults/hlsl.partialFlattenMixed.vert.out | 2 +- Test/baseResults/glspv.esversion.vert.out | 2 +- Test/baseResults/glspv.version.frag.out | 2 +- Test/baseResults/hlsl.PointSize.geom.out | 2 +- Test/baseResults/hlsl.PointSize.vert.out | 2 +- Test/baseResults/hlsl.aliasOpaque.frag.out | 2 +- Test/baseResults/hlsl.amend.frag.out | 2 +- Test/baseResults/hlsl.array.flatten.frag.out | 2 +- Test/baseResults/hlsl.array.frag.out | 2 +- Test/baseResults/hlsl.array.implicit-size.frag.out | 2 +- Test/baseResults/hlsl.array.multidim.frag.out | 2 +- Test/baseResults/hlsl.assoc.frag.out | 2 +- Test/baseResults/hlsl.attribute.expression.comp.out | 2 +- Test/baseResults/hlsl.attribute.frag.out | 2 +- Test/baseResults/hlsl.attributeC11.frag.out | 2 +- Test/baseResults/hlsl.attributeGlobalBuffer.frag.out | 2 +- Test/baseResults/hlsl.basic.comp.out | 2 +- Test/baseResults/hlsl.basic.geom.out | 2 +- Test/baseResults/hlsl.boolConv.vert.out | 2 +- Test/baseResults/hlsl.buffer.frag.out | 2 +- Test/baseResults/hlsl.calculatelod.dx10.frag.out | 2 +- Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out | 2 +- Test/baseResults/hlsl.cast.frag.out | 2 +- Test/baseResults/hlsl.cbuffer-identifier.vert.out | 2 +- Test/baseResults/hlsl.charLit.vert.out | 2 +- Test/baseResults/hlsl.clip.frag.out | 2 +- Test/baseResults/hlsl.clipdistance-1.frag.out | 2 +- Test/baseResults/hlsl.clipdistance-1.geom.out | 2 +- Test/baseResults/hlsl.clipdistance-1.vert.out | 2 +- Test/baseResults/hlsl.clipdistance-2.frag.out | 2 +- Test/baseResults/hlsl.clipdistance-2.geom.out | 2 +- Test/baseResults/hlsl.clipdistance-2.vert.out | 2 +- Test/baseResults/hlsl.clipdistance-3.frag.out | 2 +- Test/baseResults/hlsl.clipdistance-3.geom.out | 2 +- Test/baseResults/hlsl.clipdistance-3.vert.out | 2 +- Test/baseResults/hlsl.clipdistance-4.frag.out | 2 +- Test/baseResults/hlsl.clipdistance-4.geom.out | 2 +- Test/baseResults/hlsl.clipdistance-4.vert.out | 2 +- Test/baseResults/hlsl.clipdistance-5.frag.out | 2 +- Test/baseResults/hlsl.clipdistance-5.vert.out | 2 +- Test/baseResults/hlsl.clipdistance-6.frag.out | 2 +- Test/baseResults/hlsl.clipdistance-6.vert.out | 2 +- Test/baseResults/hlsl.clipdistance-7.frag.out | 2 +- Test/baseResults/hlsl.clipdistance-7.vert.out | 2 +- Test/baseResults/hlsl.clipdistance-8.frag.out | 2 +- Test/baseResults/hlsl.clipdistance-8.vert.out | 2 +- Test/baseResults/hlsl.clipdistance-9.frag.out | 2 +- Test/baseResults/hlsl.clipdistance-9.vert.out | 2 +- Test/baseResults/hlsl.color.hull.tesc.out | 2 +- Test/baseResults/hlsl.comparison.vec.frag.out | 2 +- Test/baseResults/hlsl.conditional.frag.out | 2 +- Test/baseResults/hlsl.constantbuffer.frag.out | 2 +- Test/baseResults/hlsl.constructArray.vert.out | 2 +- Test/baseResults/hlsl.constructexpr.frag.out | 2 +- Test/baseResults/hlsl.constructimat.frag.out | 2 +- Test/baseResults/hlsl.coverage.frag.out | 2 +- Test/baseResults/hlsl.depthGreater.frag.out | 2 +- Test/baseResults/hlsl.depthLess.frag.out | 2 +- Test/baseResults/hlsl.discard.frag.out | 2 +- Test/baseResults/hlsl.doLoop.frag.out | 2 +- Test/baseResults/hlsl.domain.1.tese.out | 2 +- Test/baseResults/hlsl.domain.2.tese.out | 2 +- Test/baseResults/hlsl.domain.3.tese.out | 2 +- Test/baseResults/hlsl.earlydepthstencil.frag.out | 2 +- Test/baseResults/hlsl.emptystruct.init.vert.out | 2 +- Test/baseResults/hlsl.emptystructreturn.frag.out | 2 +- Test/baseResults/hlsl.emptystructreturn.vert.out | 2 +- Test/baseResults/hlsl.entry-in.frag.out | 2 +- Test/baseResults/hlsl.entry-out.frag.out | 2 +- Test/baseResults/hlsl.flatten.return.frag.out | 2 +- Test/baseResults/hlsl.flattenOpaque.frag.out | 2 +- Test/baseResults/hlsl.flattenOpaqueInit.vert.out | 2 +- Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out | 2 +- Test/baseResults/hlsl.flattenSubset.frag.out | 2 +- Test/baseResults/hlsl.flattenSubset2.frag.out | 2 +- Test/baseResults/hlsl.float1.frag.out | 2 +- Test/baseResults/hlsl.float4.frag.out | 2 +- Test/baseResults/hlsl.forLoop.frag.out | 2 +- Test/baseResults/hlsl.format.rwtexture.frag.out | 2 +- Test/baseResults/hlsl.fraggeom.frag.out | 2 +- Test/baseResults/hlsl.gather.array.dx10.frag.out | 2 +- Test/baseResults/hlsl.gather.basic.dx10.frag.out | 2 +- Test/baseResults/hlsl.gather.basic.dx10.vert.out | 2 +- Test/baseResults/hlsl.gather.offset.dx10.frag.out | 2 +- Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out | 2 +- Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out | 2 +- Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out | 2 +- Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out | 2 +- Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out | 2 +- Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out | 2 +- Test/baseResults/hlsl.getdimensions.dx10.frag.out | 2 +- Test/baseResults/hlsl.getdimensions.dx10.vert.out | 2 +- Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out | 2 +- Test/baseResults/hlsl.getsampleposition.dx10.frag.out | 2 +- Test/baseResults/hlsl.global-const-init.frag.out | 2 +- Test/baseResults/hlsl.groupid.comp.out | 2 +- Test/baseResults/hlsl.gs-hs-mix.tesc.out | 2 +- Test/baseResults/hlsl.hull.1.tesc.out | 2 +- Test/baseResults/hlsl.hull.2.tesc.out | 2 +- Test/baseResults/hlsl.hull.3.tesc.out | 2 +- Test/baseResults/hlsl.hull.4.tesc.out | 2 +- Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out | 2 +- Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out | 2 +- Test/baseResults/hlsl.hull.void.tesc.out | 2 +- Test/baseResults/hlsl.identifier.sample.frag.out | 2 +- Test/baseResults/hlsl.if.frag.out | 2 +- Test/baseResults/hlsl.imagefetch-subvec4.comp.out | 2 +- Test/baseResults/hlsl.implicitBool.frag.out | 2 +- Test/baseResults/hlsl.inf.vert.out | 2 +- Test/baseResults/hlsl.init.frag.out | 2 +- Test/baseResults/hlsl.init2.frag.out | 2 +- Test/baseResults/hlsl.inoutquals.frag.out | 2 +- Test/baseResults/hlsl.int.dot.frag.out | 2 +- Test/baseResults/hlsl.intrinsic.frexp.frag.out | 2 +- Test/baseResults/hlsl.intrinsic.frexp.vert.out | 2 +- Test/baseResults/hlsl.intrinsics.barriers.comp.out | 2 +- Test/baseResults/hlsl.intrinsics.comp.out | 2 +- Test/baseResults/hlsl.intrinsics.d3dcolortoubyte4.frag.out | 2 +- Test/baseResults/hlsl.intrinsics.double.frag.out | 2 +- Test/baseResults/hlsl.intrinsics.evalfns.frag.out | 2 +- Test/baseResults/hlsl.intrinsics.f1632.frag.out | 2 +- Test/baseResults/hlsl.intrinsics.f3216.frag.out | 2 +- Test/baseResults/hlsl.intrinsics.frag.out | 2 +- Test/baseResults/hlsl.intrinsics.lit.frag.out | 2 +- Test/baseResults/hlsl.intrinsics.negative.comp.out | 2 +- Test/baseResults/hlsl.intrinsics.negative.vert.out | 2 +- Test/baseResults/hlsl.intrinsics.promote.down.frag.out | 2 +- Test/baseResults/hlsl.intrinsics.promote.frag.out | 2 +- Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out | 2 +- Test/baseResults/hlsl.intrinsics.vert.out | 2 +- Test/baseResults/hlsl.isfinite.frag.out | 2 +- Test/baseResults/hlsl.layout.frag.out | 2 +- Test/baseResults/hlsl.layoutOverride.vert.out | 2 +- Test/baseResults/hlsl.load.2dms.dx10.frag.out | 2 +- Test/baseResults/hlsl.load.array.dx10.frag.out | 2 +- Test/baseResults/hlsl.load.basic.dx10.frag.out | 2 +- Test/baseResults/hlsl.load.basic.dx10.vert.out | 2 +- Test/baseResults/hlsl.load.buffer.dx10.frag.out | 2 +- Test/baseResults/hlsl.load.buffer.float.dx10.frag.out | 2 +- Test/baseResults/hlsl.load.offset.dx10.frag.out | 2 +- Test/baseResults/hlsl.load.offsetarray.dx10.frag.out | 2 +- Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out | 2 +- Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out | 2 +- Test/baseResults/hlsl.load.rwtexture.dx10.frag.out | 2 +- Test/baseResults/hlsl.logical.binary.frag.out | 2 +- Test/baseResults/hlsl.logical.binary.vec.frag.out | 2 +- Test/baseResults/hlsl.logical.unary.frag.out | 2 +- Test/baseResults/hlsl.logicalConvert.frag.out | 2 +- Test/baseResults/hlsl.loopattr.frag.out | 2 +- Test/baseResults/hlsl.matNx1.frag.out | 2 +- Test/baseResults/hlsl.matType.bool.frag.out | 2 +- Test/baseResults/hlsl.matType.frag.out | 2 +- Test/baseResults/hlsl.matType.int.frag.out | 2 +- Test/baseResults/hlsl.matpack-1.frag.out | 2 +- Test/baseResults/hlsl.matpack-pragma.frag.out | 2 +- Test/baseResults/hlsl.matrixSwizzle.vert.out | 2 +- Test/baseResults/hlsl.matrixindex.frag.out | 2 +- Test/baseResults/hlsl.max.frag.out | 2 +- Test/baseResults/hlsl.memberFunCall.frag.out | 2 +- Test/baseResults/hlsl.mintypes.frag.out | 2 +- Test/baseResults/hlsl.mip.operator.frag.out | 2 +- Test/baseResults/hlsl.mul-truncate.frag.out | 2 +- Test/baseResults/hlsl.multiEntry.vert.out | 2 +- Test/baseResults/hlsl.multiReturn.frag.out | 2 +- Test/baseResults/hlsl.namespace.frag.out | 2 +- Test/baseResults/hlsl.nonint-index.frag.out | 2 +- Test/baseResults/hlsl.nonstaticMemberFunction.frag.out | 2 +- Test/baseResults/hlsl.numericsuffixes.frag.out | 2 +- Test/baseResults/hlsl.numthreads.comp.out | 2 +- Test/baseResults/hlsl.opaque-type-bug.frag.out | 2 +- Test/baseResults/hlsl.overload.frag.out | 2 +- Test/baseResults/hlsl.params.default.frag.out | 2 +- Test/baseResults/hlsl.partialFlattenLocal.vert.out | 2 +- Test/baseResults/hlsl.partialFlattenMixed.vert.out | 2 +- Test/baseResults/hlsl.partialInit.frag.out | 2 +- Test/baseResults/hlsl.pp.line.frag.out | 2 +- Test/baseResults/hlsl.pp.line2.frag.out | 2 +- Test/baseResults/hlsl.pp.line4.frag.out | 2 +- Test/baseResults/hlsl.pp.vert.out | 2 +- Test/baseResults/hlsl.precedence.frag.out | 2 +- Test/baseResults/hlsl.precedence2.frag.out | 2 +- Test/baseResults/hlsl.precise.frag.out | 2 +- Test/baseResults/hlsl.preprocessor.frag.out | 2 +- Test/baseResults/hlsl.promote.atomic.frag.out | 2 +- Test/baseResults/hlsl.promote.binary.frag.out | 2 +- Test/baseResults/hlsl.promote.vec1.frag.out | 2 +- Test/baseResults/hlsl.promotions.frag.out | 2 +- Test/baseResults/hlsl.rw.atomics.frag.out | 2 +- Test/baseResults/hlsl.rw.bracket.frag.out | 2 +- Test/baseResults/hlsl.rw.register.frag.out | 2 +- Test/baseResults/hlsl.rw.scalar.bracket.frag.out | 2 +- Test/baseResults/hlsl.rw.swizzle.frag.out | 2 +- Test/baseResults/hlsl.rw.vec2.bracket.frag.out | 2 +- Test/baseResults/hlsl.sample.array.dx10.frag.out | 2 +- Test/baseResults/hlsl.sample.basic.dx10.frag.out | 2 +- Test/baseResults/hlsl.sample.dx9.frag.out | 2 +- Test/baseResults/hlsl.sample.dx9.vert.out | 2 +- Test/baseResults/hlsl.sample.offset.dx10.frag.out | 2 +- Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out | 2 +- Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out | 2 +- Test/baseResults/hlsl.samplebias.array.dx10.frag.out | 2 +- Test/baseResults/hlsl.samplebias.basic.dx10.frag.out | 2 +- Test/baseResults/hlsl.samplebias.offset.dx10.frag.out | 2 +- Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out | 2 +- Test/baseResults/hlsl.samplecmp.array.dx10.frag.out | 2 +- Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out | 2 +- Test/baseResults/hlsl.samplecmp.dualmode.frag.out | 2 +- Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out | 2 +- Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out | 2 +- Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out | 2 +- Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out | 2 +- Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out | 2 +- .../hlsl.samplecmplevelzero.offsetarray.dx10.frag.out | 2 +- Test/baseResults/hlsl.samplegrad.array.dx10.frag.out | 2 +- Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out | 2 +- Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out | 2 +- Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out | 2 +- Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out | 2 +- Test/baseResults/hlsl.samplelevel.array.dx10.frag.out | 2 +- Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out | 2 +- Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out | 2 +- Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out | 2 +- Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out | 2 +- Test/baseResults/hlsl.scalar-length.frag.out | 2 +- Test/baseResults/hlsl.scalar2matrix.frag.out | 2 +- Test/baseResults/hlsl.scalarCast.vert.out | 2 +- Test/baseResults/hlsl.scope.frag.out | 2 +- Test/baseResults/hlsl.self_cast.frag.out | 2 +- Test/baseResults/hlsl.semantic-1.vert.out | 2 +- Test/baseResults/hlsl.semantic.geom.out | 2 +- Test/baseResults/hlsl.semantic.vert.out | 2 +- Test/baseResults/hlsl.semicolons.frag.out | 2 +- Test/baseResults/hlsl.shapeConv.frag.out | 2 +- Test/baseResults/hlsl.shapeConvRet.frag.out | 2 +- Test/baseResults/hlsl.sin.frag.out | 2 +- Test/baseResults/hlsl.snorm.uav.comp.out | 2 +- Test/baseResults/hlsl.specConstant.frag.out | 2 +- Test/baseResults/hlsl.staticFuncInit.frag.out | 2 +- Test/baseResults/hlsl.staticMemberFunction.frag.out | 2 +- Test/baseResults/hlsl.store.rwbyteaddressbuffer.type.comp.out | 2 +- Test/baseResults/hlsl.string.frag.out | 2 +- Test/baseResults/hlsl.stringtoken.frag.out | 2 +- Test/baseResults/hlsl.struct.frag.out | 2 +- Test/baseResults/hlsl.struct.split-1.vert.out | 2 +- Test/baseResults/hlsl.struct.split.array.geom.out | 2 +- Test/baseResults/hlsl.struct.split.assign.frag.out | 2 +- Test/baseResults/hlsl.struct.split.call.vert.out | 2 +- Test/baseResults/hlsl.struct.split.nested.geom.out | 2 +- Test/baseResults/hlsl.struct.split.trivial.geom.out | 2 +- Test/baseResults/hlsl.struct.split.trivial.vert.out | 2 +- Test/baseResults/hlsl.structIoFourWay.frag.out | 2 +- Test/baseResults/hlsl.structStructName.frag.out | 2 +- Test/baseResults/hlsl.structarray.flatten.frag.out | 2 +- Test/baseResults/hlsl.structarray.flatten.geom.out | 2 +- Test/baseResults/hlsl.structbuffer.append.fn.frag.out | 2 +- Test/baseResults/hlsl.structbuffer.append.frag.out | 2 +- Test/baseResults/hlsl.structbuffer.atomics.frag.out | 2 +- Test/baseResults/hlsl.structbuffer.byte.frag.out | 2 +- Test/baseResults/hlsl.structbuffer.coherent.frag.out | 2 +- Test/baseResults/hlsl.structbuffer.floatidx.comp.out | 2 +- Test/baseResults/hlsl.structbuffer.fn.frag.out | 2 +- Test/baseResults/hlsl.structbuffer.fn2.comp.out | 2 +- Test/baseResults/hlsl.structbuffer.frag.out | 2 +- Test/baseResults/hlsl.structbuffer.incdec.frag.out | 2 +- Test/baseResults/hlsl.structbuffer.rw.frag.out | 2 +- Test/baseResults/hlsl.structbuffer.rwbyte.frag.out | 2 +- Test/baseResults/hlsl.structin.vert.out | 2 +- Test/baseResults/hlsl.subpass.frag.out | 2 +- Test/baseResults/hlsl.switch.frag.out | 2 +- Test/baseResults/hlsl.swizzle.frag.out | 2 +- Test/baseResults/hlsl.synthesizeInput.frag.out | 2 +- Test/baseResults/hlsl.target.frag.out | 2 +- Test/baseResults/hlsl.targetStruct1.frag.out | 2 +- Test/baseResults/hlsl.targetStruct2.frag.out | 2 +- Test/baseResults/hlsl.templatetypes.frag.out | 2 +- Test/baseResults/hlsl.texture.struct.frag.out | 2 +- Test/baseResults/hlsl.texture.subvec4.frag.out | 2 +- Test/baseResults/hlsl.texturebuffer.frag.out | 2 +- Test/baseResults/hlsl.this.frag.out | 2 +- Test/baseResults/hlsl.tristream-append.geom.out | 2 +- Test/baseResults/hlsl.tx.bracket.frag.out | 2 +- Test/baseResults/hlsl.tx.overload.frag.out | 2 +- Test/baseResults/hlsl.type.half.frag.out | 2 +- Test/baseResults/hlsl.type.identifier.frag.out | 2 +- Test/baseResults/hlsl.type.type.conversion.valid.frag.out | 2 +- Test/baseResults/hlsl.typeGraphCopy.vert.out | 2 +- Test/baseResults/hlsl.typedef.frag.out | 2 +- Test/baseResults/hlsl.void.frag.out | 2 +- Test/baseResults/hlsl.wavebroadcast.comp.out | 2 +- Test/baseResults/hlsl.waveprefix.comp.out | 2 +- Test/baseResults/hlsl.wavequad.comp.out | 2 +- Test/baseResults/hlsl.wavequery.comp.out | 2 +- Test/baseResults/hlsl.wavequery.frag.out | 2 +- Test/baseResults/hlsl.wavereduction.comp.out | 2 +- Test/baseResults/hlsl.wavevote.comp.out | 2 +- Test/baseResults/hlsl.whileLoop.frag.out | 2 +- Test/baseResults/link1.vk.frag.out | 2 +- Test/baseResults/remap.basic.dcefunc.frag.out | 2 +- Test/baseResults/remap.basic.everything.frag.out | 2 +- Test/baseResults/remap.basic.none.frag.out | 2 +- Test/baseResults/remap.basic.strip.frag.out | 2 +- Test/baseResults/remap.hlsl.sample.basic.everything.frag.out | 2 +- Test/baseResults/remap.hlsl.sample.basic.none.frag.out | 2 +- Test/baseResults/remap.hlsl.sample.basic.strip.frag.out | 2 +- Test/baseResults/remap.hlsl.templatetypes.everything.frag.out | 2 +- Test/baseResults/remap.hlsl.templatetypes.none.frag.out | 2 +- Test/baseResults/remap.if.everything.frag.out | 2 +- Test/baseResults/remap.if.none.frag.out | 2 +- Test/baseResults/remap.similar_1a.everything.frag.out | 2 +- Test/baseResults/remap.similar_1a.none.frag.out | 2 +- Test/baseResults/remap.similar_1b.everything.frag.out | 2 +- Test/baseResults/remap.similar_1b.none.frag.out | 2 +- Test/baseResults/remap.specconst.comp.out | 2 +- Test/baseResults/remap.switch.everything.frag.out | 2 +- Test/baseResults/remap.switch.none.frag.out | 2 +- Test/baseResults/remap.uniformarray.everything.frag.out | 2 +- Test/baseResults/remap.uniformarray.none.frag.out | 2 +- Test/baseResults/spv.1.3.8bitstorage-ssbo.vert.out | 2 +- Test/baseResults/spv.1.3.8bitstorage-ubo.vert.out | 2 +- Test/baseResults/spv.1.3.coopmat.comp.out | 2 +- Test/baseResults/spv.1.4.LoopControl.frag.out | 2 +- Test/baseResults/spv.1.4.NonWritable.frag.out | 2 +- Test/baseResults/spv.1.4.OpCopyLogical.comp.out | 2 +- Test/baseResults/spv.1.4.OpCopyLogical.funcall.frag.out | 2 +- Test/baseResults/spv.1.4.OpCopyLogicalBool.comp.out | 2 +- Test/baseResults/spv.1.4.OpEntryPoint.frag.out | 2 +- Test/baseResults/spv.1.4.OpSelect.frag.out | 2 +- Test/baseResults/spv.1.4.constructComposite.comp.out | 2 +- Test/baseResults/spv.1.4.image.frag.out | 2 +- Test/baseResults/spv.1.4.sparseTexture.frag.out | 2 +- Test/baseResults/spv.1.4.texture.frag.out | 2 +- Test/baseResults/spv.100ops.frag.out | 2 +- Test/baseResults/spv.130.frag.out | 2 +- Test/baseResults/spv.140.frag.out | 2 +- Test/baseResults/spv.150.geom.out | 2 +- Test/baseResults/spv.150.vert.out | 2 +- Test/baseResults/spv.16bitstorage-int.frag.out | 2 +- Test/baseResults/spv.16bitstorage-uint.frag.out | 2 +- Test/baseResults/spv.16bitstorage.frag.out | 2 +- Test/baseResults/spv.16bitxfb.vert.out | 2 +- Test/baseResults/spv.300BuiltIns.vert.out | 2 +- Test/baseResults/spv.300layout.frag.out | 2 +- Test/baseResults/spv.300layout.vert.out | 2 +- Test/baseResults/spv.300layoutp.vert.out | 2 +- Test/baseResults/spv.310.bitcast.frag.out | 2 +- Test/baseResults/spv.310.comp.out | 2 +- Test/baseResults/spv.320.meshShaderUserDefined.mesh.out | 2 +- Test/baseResults/spv.330.geom.out | 2 +- Test/baseResults/spv.400.frag.out | 2 +- Test/baseResults/spv.400.tesc.out | 2 +- Test/baseResults/spv.400.tese.out | 2 +- Test/baseResults/spv.420.geom.out | 2 +- Test/baseResults/spv.430.frag.out | 2 +- Test/baseResults/spv.430.vert.out | 2 +- Test/baseResults/spv.450.geom.out | 2 +- Test/baseResults/spv.450.noRedecl.tesc.out | 2 +- Test/baseResults/spv.450.tesc.out | 2 +- Test/baseResults/spv.460.comp.out | 2 +- Test/baseResults/spv.460.frag.out | 2 +- Test/baseResults/spv.460.vert.out | 2 +- Test/baseResults/spv.8bitstorage-int.frag.out | 2 +- Test/baseResults/spv.8bitstorage-ssbo.vert.out | 2 +- Test/baseResults/spv.8bitstorage-ubo.vert.out | 2 +- Test/baseResults/spv.8bitstorage-uint.frag.out | 2 +- Test/baseResults/spv.AnyHitShader.rahit.out | 2 +- Test/baseResults/spv.AofA.frag.out | 2 +- Test/baseResults/spv.ClosestHitShader.rchit.out | 2 +- Test/baseResults/spv.GeometryShaderPassthrough.geom.out | 2 +- Test/baseResults/spv.IntersectShader.rint.out | 2 +- Test/baseResults/spv.MissShader.rmiss.out | 2 +- Test/baseResults/spv.OVR_multiview.vert.out | 2 +- Test/baseResults/spv.Operations.frag.out | 2 +- Test/baseResults/spv.RayCallable.rcall.out | 2 +- Test/baseResults/spv.RayConstants.rgen.out | 2 +- Test/baseResults/spv.RayGenShader.rgen.out | 2 +- Test/baseResults/spv.RayGenShader11.rgen.out | 2 +- Test/baseResults/spv.RayGenShaderArray.rgen.out | 2 +- Test/baseResults/spv.accessChain.frag.out | 2 +- Test/baseResults/spv.aggOps.frag.out | 2 +- Test/baseResults/spv.always-discard.frag.out | 2 +- Test/baseResults/spv.always-discard2.frag.out | 2 +- Test/baseResults/spv.arbPostDepthCoverage.frag.out | 2 +- Test/baseResults/spv.atomic.comp.out | 2 +- Test/baseResults/spv.atomicInt64.comp.out | 2 +- Test/baseResults/spv.barrier.vert.out | 2 +- Test/baseResults/spv.bitCast.frag.out | 2 +- Test/baseResults/spv.bool.vert.out | 2 +- Test/baseResults/spv.boolInBlock.frag.out | 2 +- Test/baseResults/spv.branch-return.vert.out | 2 +- Test/baseResults/spv.buffer.autoassign.frag.out | 2 +- Test/baseResults/spv.bufferhandle1.frag.out | 2 +- Test/baseResults/spv.bufferhandle10.frag.out | 2 +- Test/baseResults/spv.bufferhandle11.frag.out | 2 +- Test/baseResults/spv.bufferhandle12.frag.out | 2 +- Test/baseResults/spv.bufferhandle13.frag.out | 2 +- Test/baseResults/spv.bufferhandle14.frag.out | 2 +- Test/baseResults/spv.bufferhandle15.frag.out | 2 +- Test/baseResults/spv.bufferhandle16.frag.out | 2 +- Test/baseResults/spv.bufferhandle18.frag.out | 2 +- Test/baseResults/spv.bufferhandle2.frag.out | 2 +- Test/baseResults/spv.bufferhandle3.frag.out | 2 +- Test/baseResults/spv.bufferhandle4.frag.out | 2 +- Test/baseResults/spv.bufferhandle5.frag.out | 2 +- Test/baseResults/spv.bufferhandle6.frag.out | 2 +- Test/baseResults/spv.bufferhandle7.frag.out | 2 +- Test/baseResults/spv.bufferhandle8.frag.out | 2 +- Test/baseResults/spv.bufferhandle9.frag.out | 2 +- Test/baseResults/spv.bufferhandleUvec2.frag.out | 2 +- Test/baseResults/spv.builtInXFB.vert.out | 2 +- Test/baseResults/spv.computeShaderDerivatives.comp.out | 2 +- Test/baseResults/spv.computeShaderDerivatives2.comp.out | 2 +- Test/baseResults/spv.conditionalDemote.frag.out | 2 +- Test/baseResults/spv.conditionalDiscard.frag.out | 2 +- Test/baseResults/spv.constConstruct.vert.out | 2 +- Test/baseResults/spv.constStruct.vert.out | 2 +- Test/baseResults/spv.constructComposite.comp.out | 2 +- Test/baseResults/spv.controlFlowAttributes.frag.out | 2 +- Test/baseResults/spv.conversion.frag.out | 2 +- Test/baseResults/spv.coopmat.comp.out | 2 +- Test/baseResults/spv.dataOut.frag.out | 2 +- Test/baseResults/spv.dataOutIndirect.frag.out | 2 +- Test/baseResults/spv.dataOutIndirect.vert.out | 2 +- Test/baseResults/spv.dead-after-continue.vert.out | 2 +- Test/baseResults/spv.dead-after-discard.frag.out | 2 +- Test/baseResults/spv.dead-after-loop-break.vert.out | 2 +- Test/baseResults/spv.dead-after-return.vert.out | 2 +- Test/baseResults/spv.dead-after-switch-break.vert.out | 2 +- .../spv.dead-complex-continue-after-return.vert.out | 2 +- Test/baseResults/spv.dead-complex-merge-after-return.vert.out | 2 +- Test/baseResults/spv.deepRvalue.frag.out | 2 +- Test/baseResults/spv.depthOut.frag.out | 2 +- Test/baseResults/spv.deviceGroup.frag.out | 2 +- Test/baseResults/spv.discard-dce.frag.out | 2 +- Test/baseResults/spv.do-simple.vert.out | 2 +- Test/baseResults/spv.do-while-continue-break.vert.out | 2 +- Test/baseResults/spv.doWhileLoop.frag.out | 2 +- Test/baseResults/spv.double.comp.out | 2 +- Test/baseResults/spv.drawParams.vert.out | 2 +- Test/baseResults/spv.earlyReturnDiscard.frag.out | 2 +- Test/baseResults/spv.explicittypes.frag.out | 2 +- Test/baseResults/spv.extPostDepthCoverage.frag.out | 2 +- Test/baseResults/spv.float16.frag.out | 2 +- Test/baseResults/spv.float16Fetch.frag.out | 2 +- Test/baseResults/spv.float16convertonlyarith.comp.out | 2 +- Test/baseResults/spv.float16convertonlystorage.comp.out | 2 +- Test/baseResults/spv.float32.frag.out | 2 +- Test/baseResults/spv.float64.frag.out | 2 +- Test/baseResults/spv.flowControl.frag.out | 2 +- Test/baseResults/spv.for-complex-condition.vert.out | 2 +- Test/baseResults/spv.for-continue-break.vert.out | 2 +- Test/baseResults/spv.for-nobody.vert.out | 2 +- Test/baseResults/spv.for-notest.vert.out | 2 +- Test/baseResults/spv.for-simple.vert.out | 2 +- Test/baseResults/spv.forLoop.frag.out | 2 +- Test/baseResults/spv.forwardFun.frag.out | 2 +- Test/baseResults/spv.fragmentDensity-es.frag.out | 2 +- Test/baseResults/spv.fragmentDensity.frag.out | 2 +- Test/baseResults/spv.fragmentShaderBarycentric.frag.out | 2 +- Test/baseResults/spv.fragmentShaderBarycentric2.frag.out | 2 +- Test/baseResults/spv.fsi.frag.out | 2 +- Test/baseResults/spv.fullyCovered.frag.out | 2 +- Test/baseResults/spv.functionCall.frag.out | 2 +- Test/baseResults/spv.functionNestedOpaque.vert.out | 2 +- Test/baseResults/spv.functionParameterTypes.frag.out | 2 +- Test/baseResults/spv.functionSemantics.frag.out | 2 +- Test/baseResults/spv.glFragColor.frag.out | 2 +- Test/baseResults/spv.glsl.register.autoassign.frag.out | 2 +- Test/baseResults/spv.glsl.register.noautoassign.frag.out | 2 +- Test/baseResults/spv.image.frag.out | 2 +- Test/baseResults/spv.imageLoadStoreLod.frag.out | 2 +- Test/baseResults/spv.int16.amd.frag.out | 2 +- Test/baseResults/spv.int16.frag.out | 2 +- Test/baseResults/spv.int32.frag.out | 2 +- Test/baseResults/spv.int64.frag.out | 2 +- Test/baseResults/spv.int8.frag.out | 2 +- Test/baseResults/spv.intOps.vert.out | 2 +- Test/baseResults/spv.intcoopmat.comp.out | 2 +- Test/baseResults/spv.interpOps.frag.out | 2 +- Test/baseResults/spv.layoutNested.vert.out | 2 +- Test/baseResults/spv.length.frag.out | 2 +- Test/baseResults/spv.localAggregates.frag.out | 2 +- Test/baseResults/spv.loops.frag.out | 2 +- Test/baseResults/spv.loopsArtificial.frag.out | 2 +- Test/baseResults/spv.matFun.vert.out | 2 +- Test/baseResults/spv.matrix.frag.out | 2 +- Test/baseResults/spv.matrix2.frag.out | 2 +- Test/baseResults/spv.memoryQualifier.frag.out | 2 +- Test/baseResults/spv.memoryScopeSemantics.comp.out | 2 +- Test/baseResults/spv.merge-unreachable.frag.out | 2 +- Test/baseResults/spv.meshShaderBuiltins.mesh.out | 2 +- Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out | 2 +- Test/baseResults/spv.meshShaderPerViewUserDefined.mesh.out | 2 +- Test/baseResults/spv.meshShaderRedeclBuiltins.mesh.out | 2 +- Test/baseResults/spv.meshShaderRedeclPerViewBuiltins.mesh.out | 2 +- Test/baseResults/spv.meshShaderSharedMem.mesh.out | 2 +- Test/baseResults/spv.meshShaderTaskMem.mesh.out | 2 +- Test/baseResults/spv.meshShaderUserDefined.mesh.out | 2 +- Test/baseResults/spv.meshTaskShader.task.out | 2 +- Test/baseResults/spv.multiStruct.comp.out | 2 +- Test/baseResults/spv.multiStructFuncall.frag.out | 2 +- Test/baseResults/spv.multiView.frag.out | 2 +- Test/baseResults/spv.multiviewPerViewAttributes.tesc.out | 2 +- Test/baseResults/spv.multiviewPerViewAttributes.vert.out | 2 +- Test/baseResults/spv.newTexture.frag.out | 2 +- Test/baseResults/spv.noDeadDecorations.vert.out | 2 +- Test/baseResults/spv.noWorkgroup.comp.out | 2 +- Test/baseResults/spv.nonSquare.vert.out | 2 +- Test/baseResults/spv.nonuniform.frag.out | 2 +- Test/baseResults/spv.nonuniform2.frag.out | 2 +- Test/baseResults/spv.offsets.frag.out | 2 +- Test/baseResults/spv.paramMemory.frag.out | 2 +- Test/baseResults/spv.perprimitiveNV.frag.out | 2 +- Test/baseResults/spv.pp.line.frag.out | 2 +- Test/baseResults/spv.precise.tesc.out | 2 +- Test/baseResults/spv.precise.tese.out | 2 +- Test/baseResults/spv.precision.frag.out | 2 +- Test/baseResults/spv.precisionNonESSamp.frag.out | 2 +- Test/baseResults/spv.prepost.frag.out | 2 +- Test/baseResults/spv.privateVariableTypes.frag.out | 2 +- Test/baseResults/spv.pushConstant.vert.out | 2 +- Test/baseResults/spv.pushConstantAnon.vert.out | 2 +- Test/baseResults/spv.qualifiers.vert.out | 2 +- Test/baseResults/spv.queryL.frag.out | 2 +- Test/baseResults/spv.rankShift.comp.out | 2 +- Test/baseResults/spv.register.autoassign-2.frag.out | 2 +- Test/baseResults/spv.register.autoassign.frag.out | 2 +- Test/baseResults/spv.register.noautoassign.frag.out | 2 +- Test/baseResults/spv.register.subpass.frag.out | 2 +- Test/baseResults/spv.rw.autoassign.frag.out | 2 +- Test/baseResults/spv.sample.frag.out | 2 +- Test/baseResults/spv.sampleId.frag.out | 2 +- Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out | 2 +- Test/baseResults/spv.samplePosition.frag.out | 2 +- Test/baseResults/spv.samplerlessTextureFunctions.frag.out | 2 +- Test/baseResults/spv.scalarlayout.frag.out | 2 +- Test/baseResults/spv.scalarlayoutfloat16.frag.out | 2 +- Test/baseResults/spv.separate.frag.out | 2 +- Test/baseResults/spv.set.vert.out | 2 +- Test/baseResults/spv.shaderBallot.comp.out | 2 +- Test/baseResults/spv.shaderBallotAMD.comp.out | 2 +- Test/baseResults/spv.shaderDrawParams.vert.out | 2 +- Test/baseResults/spv.shaderFragMaskAMD.frag.out | 2 +- Test/baseResults/spv.shaderGroupVote.comp.out | 2 +- Test/baseResults/spv.shaderImageFootprint.frag.out | 2 +- Test/baseResults/spv.shaderStencilExport.frag.out | 2 +- Test/baseResults/spv.shadingRate.frag.out | 2 +- Test/baseResults/spv.shiftOps.frag.out | 2 +- Test/baseResults/spv.shortCircuit.frag.out | 2 +- Test/baseResults/spv.simpleFunctionCall.frag.out | 2 +- Test/baseResults/spv.simpleMat.vert.out | 2 +- Test/baseResults/spv.smBuiltins.frag.out | 2 +- Test/baseResults/spv.smBuiltins.vert.out | 2 +- Test/baseResults/spv.sparseTexture.frag.out | 2 +- Test/baseResults/spv.sparseTextureClamp.frag.out | 2 +- Test/baseResults/spv.specConst.vert.out | 2 +- Test/baseResults/spv.specConstant.comp.out | 2 +- Test/baseResults/spv.specConstant.vert.out | 2 +- Test/baseResults/spv.specConstantComposite.vert.out | 2 +- Test/baseResults/spv.specConstantOperations.vert.out | 2 +- Test/baseResults/spv.ssbo.autoassign.frag.out | 2 +- Test/baseResults/spv.ssboAlias.frag.out | 2 +- Test/baseResults/spv.stereoViewRendering.tesc.out | 2 +- Test/baseResults/spv.stereoViewRendering.vert.out | 2 +- Test/baseResults/spv.storageBuffer.vert.out | 2 +- Test/baseResults/spv.structAssignment.frag.out | 2 +- Test/baseResults/spv.structDeref.frag.out | 2 +- Test/baseResults/spv.structure.frag.out | 2 +- Test/baseResults/spv.subgroup.frag.out | 2 +- Test/baseResults/spv.subgroup.geom.out | 2 +- Test/baseResults/spv.subgroup.tesc.out | 2 +- Test/baseResults/spv.subgroup.tese.out | 2 +- Test/baseResults/spv.subgroup.vert.out | 2 +- Test/baseResults/spv.subgroupArithmetic.comp.out | 2 +- Test/baseResults/spv.subgroupBallot.comp.out | 2 +- Test/baseResults/spv.subgroupBasic.comp.out | 2 +- Test/baseResults/spv.subgroupClustered.comp.out | 2 +- Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out | 2 +- Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out | 2 +- Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out | 2 +- Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out | 2 +- Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out | 2 +- Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out | 2 +- .../spv.subgroupExtendedTypesShuffleRelative.comp.out | 2 +- Test/baseResults/spv.subgroupExtendedTypesVote.comp.out | 2 +- Test/baseResults/spv.subgroupPartitioned.comp.out | 2 +- Test/baseResults/spv.subgroupQuad.comp.out | 2 +- Test/baseResults/spv.subgroupShuffle.comp.out | 2 +- Test/baseResults/spv.subgroupShuffleRelative.comp.out | 2 +- Test/baseResults/spv.subgroupVote.comp.out | 2 +- Test/baseResults/spv.subpass.frag.out | 2 +- Test/baseResults/spv.switch.frag.out | 2 +- Test/baseResults/spv.swizzle.frag.out | 2 +- Test/baseResults/spv.swizzleInversion.frag.out | 2 +- Test/baseResults/spv.test.frag.out | 2 +- Test/baseResults/spv.test.vert.out | 2 +- Test/baseResults/spv.texture.frag.out | 2 +- Test/baseResults/spv.texture.sampler.transform.frag.out | 2 +- Test/baseResults/spv.texture.vert.out | 2 +- Test/baseResults/spv.textureBuffer.vert.out | 2 +- Test/baseResults/spv.textureGatherBiasLod.frag.out | 2 +- Test/baseResults/spv.types.frag.out | 2 +- Test/baseResults/spv.uint.frag.out | 2 +- Test/baseResults/spv.uniformArray.frag.out | 2 +- Test/baseResults/spv.unit1.frag.out | 2 +- Test/baseResults/spv.variableArrayIndex.frag.out | 2 +- Test/baseResults/spv.varyingArray.frag.out | 2 +- Test/baseResults/spv.varyingArrayIndirect.frag.out | 2 +- Test/baseResults/spv.vecMatConstruct.frag.out | 2 +- Test/baseResults/spv.viewportArray2.tesc.out | 2 +- Test/baseResults/spv.viewportArray2.vert.out | 2 +- Test/baseResults/spv.voidFunction.frag.out | 2 +- Test/baseResults/spv.volatileAtomic.comp.out | 2 +- Test/baseResults/spv.vulkan110.int16.frag.out | 2 +- Test/baseResults/spv.vulkan110.storageBuffer.vert.out | 2 +- Test/baseResults/spv.while-continue-break.vert.out | 2 +- Test/baseResults/spv.while-simple.vert.out | 2 +- Test/baseResults/spv.whileLoop.frag.out | 2 +- Test/baseResults/spv.xfb.vert.out | 2 +- Test/baseResults/spv.xfb2.vert.out | 2 +- Test/baseResults/spv.xfb3.vert.out | 2 +- .../baseResults/spv.xfbOffsetOnBlockMembersAssignment.vert.out | 2 +- .../spv.xfbOffsetOnStructMembersAssignment.vert.out | 2 +- .../spv.xfbOverlapOffsetCheckWithBlockAndMember.vert.out | 2 +- Test/baseResults/spv.xfbStrideJustOnce.vert.out | 2 +- Test/baseResults/vulkan.ast.vert.out | 2 +- glslang/Include/revision.h | 2 +- 635 files changed, 636 insertions(+), 635 deletions(-) mode change 100644 => 100755 SPIRV/GlslangToSpv.cpp diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp old mode 100644 new mode 100755 index df424583..ad16396f --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -8197,7 +8197,8 @@ int GetSpirvGeneratorVersion() // return 5; // make OpArrayLength result type be an int with signedness of 0 // return 6; // revert version 5 change, which makes a different (new) kind of incorrect code, // versions 4 and 6 each generate OpArrayLength as it has long been done - return 7; // GLSL volatile keyword maps to both SPIR-V decorations Volatile and Coherent + // return 7; // GLSL volatile keyword maps to both SPIR-V decorations Volatile and Coherent + return 8; // switch to new dead block eliminator; use OpUnreachable } // Write SPIR-V out to a binary file diff --git a/SPIRV/spvIR.h b/SPIRV/spvIR.h index 9495fcef..994224d1 100755 --- a/SPIRV/spvIR.h +++ b/SPIRV/spvIR.h @@ -300,7 +300,7 @@ protected: }; // The different reasons for reaching a block in the inReadableOrder traversal. -typedef enum ReachReason { +enum ReachReason { // Reachable from the entry block via transfers of control, i.e. branches. ReachViaControlFlow = 0, // A continue target that is not reachable via control flow. diff --git a/Test/baseLegalResults/hlsl.aliasOpaque.frag.out b/Test/baseLegalResults/hlsl.aliasOpaque.frag.out index 2e58bdd0..887e4acd 100644 --- a/Test/baseLegalResults/hlsl.aliasOpaque.frag.out +++ b/Test/baseLegalResults/hlsl.aliasOpaque.frag.out @@ -1,6 +1,6 @@ hlsl.aliasOpaque.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 87 Capability Shader diff --git a/Test/baseLegalResults/hlsl.flattenOpaque.frag.out b/Test/baseLegalResults/hlsl.flattenOpaque.frag.out index d334b7e6..ad9e6c10 100644 --- a/Test/baseLegalResults/hlsl.flattenOpaque.frag.out +++ b/Test/baseLegalResults/hlsl.flattenOpaque.frag.out @@ -1,6 +1,6 @@ hlsl.flattenOpaque.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 185 Capability Shader diff --git a/Test/baseLegalResults/hlsl.flattenOpaqueInit.vert.out b/Test/baseLegalResults/hlsl.flattenOpaqueInit.vert.out index 921cb96a..6ed8da21 100644 --- a/Test/baseLegalResults/hlsl.flattenOpaqueInit.vert.out +++ b/Test/baseLegalResults/hlsl.flattenOpaqueInit.vert.out @@ -1,6 +1,6 @@ hlsl.flattenOpaqueInit.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 134 Capability Shader diff --git a/Test/baseLegalResults/hlsl.flattenOpaqueInitMix.vert.out b/Test/baseLegalResults/hlsl.flattenOpaqueInitMix.vert.out index 39770f45..81ab5e60 100644 --- a/Test/baseLegalResults/hlsl.flattenOpaqueInitMix.vert.out +++ b/Test/baseLegalResults/hlsl.flattenOpaqueInitMix.vert.out @@ -1,6 +1,6 @@ hlsl.flattenOpaqueInitMix.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 97 Capability Shader diff --git a/Test/baseLegalResults/hlsl.flattenSubset.frag.out b/Test/baseLegalResults/hlsl.flattenSubset.frag.out index 4628479a..562070d6 100644 --- a/Test/baseLegalResults/hlsl.flattenSubset.frag.out +++ b/Test/baseLegalResults/hlsl.flattenSubset.frag.out @@ -1,6 +1,6 @@ hlsl.flattenSubset.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 66 Capability Shader diff --git a/Test/baseLegalResults/hlsl.flattenSubset2.frag.out b/Test/baseLegalResults/hlsl.flattenSubset2.frag.out index 0d7ab560..5cc280bf 100644 --- a/Test/baseLegalResults/hlsl.flattenSubset2.frag.out +++ b/Test/baseLegalResults/hlsl.flattenSubset2.frag.out @@ -1,6 +1,6 @@ hlsl.flattenSubset2.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 53 Capability Shader diff --git a/Test/baseLegalResults/hlsl.partialFlattenLocal.vert.out b/Test/baseLegalResults/hlsl.partialFlattenLocal.vert.out index 27482b34..f4c9c5ab 100644 --- a/Test/baseLegalResults/hlsl.partialFlattenLocal.vert.out +++ b/Test/baseLegalResults/hlsl.partialFlattenLocal.vert.out @@ -1,6 +1,6 @@ hlsl.partialFlattenLocal.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 158 Capability Shader diff --git a/Test/baseLegalResults/hlsl.partialFlattenMixed.vert.out b/Test/baseLegalResults/hlsl.partialFlattenMixed.vert.out index e54fb7ef..7be570bd 100644 --- a/Test/baseLegalResults/hlsl.partialFlattenMixed.vert.out +++ b/Test/baseLegalResults/hlsl.partialFlattenMixed.vert.out @@ -1,6 +1,6 @@ hlsl.partialFlattenMixed.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 36 Capability Shader diff --git a/Test/baseResults/glspv.esversion.vert.out b/Test/baseResults/glspv.esversion.vert.out index 395d7f37..9f925133 100644 --- a/Test/baseResults/glspv.esversion.vert.out +++ b/Test/baseResults/glspv.esversion.vert.out @@ -1,6 +1,6 @@ glspv.esversion.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 10 Capability Shader diff --git a/Test/baseResults/glspv.version.frag.out b/Test/baseResults/glspv.version.frag.out index 4a45b5bf..42c73ddb 100644 --- a/Test/baseResults/glspv.version.frag.out +++ b/Test/baseResults/glspv.version.frag.out @@ -2,7 +2,7 @@ glspv.version.frag ERROR: #version: compilation for SPIR-V does not support the compatibility profile // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 6 Capability Shader diff --git a/Test/baseResults/hlsl.PointSize.geom.out b/Test/baseResults/hlsl.PointSize.geom.out index 77cdc7db..80fee613 100644 --- a/Test/baseResults/hlsl.PointSize.geom.out +++ b/Test/baseResults/hlsl.PointSize.geom.out @@ -71,7 +71,7 @@ output primitive = line_strip Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 36 Capability Geometry diff --git a/Test/baseResults/hlsl.PointSize.vert.out b/Test/baseResults/hlsl.PointSize.vert.out index bda0030e..2390a5af 100644 --- a/Test/baseResults/hlsl.PointSize.vert.out +++ b/Test/baseResults/hlsl.PointSize.vert.out @@ -38,7 +38,7 @@ Shader version: 500 0:? '@entryPointOutput' ( out float PointSize) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 16 Capability Shader diff --git a/Test/baseResults/hlsl.aliasOpaque.frag.out b/Test/baseResults/hlsl.aliasOpaque.frag.out index 63d29fa4..d22bac6b 100644 --- a/Test/baseResults/hlsl.aliasOpaque.frag.out +++ b/Test/baseResults/hlsl.aliasOpaque.frag.out @@ -143,7 +143,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 64 Capability Shader diff --git a/Test/baseResults/hlsl.amend.frag.out b/Test/baseResults/hlsl.amend.frag.out index e273abeb..7fd07270 100644 --- a/Test/baseResults/hlsl.amend.frag.out +++ b/Test/baseResults/hlsl.amend.frag.out @@ -160,7 +160,7 @@ gl_FragCoord origin is upper left 0:? 'm' ( global 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 57 Capability Shader diff --git a/Test/baseResults/hlsl.array.flatten.frag.out b/Test/baseResults/hlsl.array.flatten.frag.out index 80d51539..4c2a8c11 100644 --- a/Test/baseResults/hlsl.array.flatten.frag.out +++ b/Test/baseResults/hlsl.array.flatten.frag.out @@ -345,7 +345,7 @@ gl_FragCoord origin is upper left 0:? 'ps_output.color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 143 Capability Shader diff --git a/Test/baseResults/hlsl.array.frag.out b/Test/baseResults/hlsl.array.frag.out index 2e706d76..71781027 100644 --- a/Test/baseResults/hlsl.array.frag.out +++ b/Test/baseResults/hlsl.array.frag.out @@ -290,7 +290,7 @@ gl_FragCoord origin is upper left 0:? 'input' (layout( location=1) in 3-element array of 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 126 Capability Shader diff --git a/Test/baseResults/hlsl.array.implicit-size.frag.out b/Test/baseResults/hlsl.array.implicit-size.frag.out index 9af6fed2..402807e9 100644 --- a/Test/baseResults/hlsl.array.implicit-size.frag.out +++ b/Test/baseResults/hlsl.array.implicit-size.frag.out @@ -163,7 +163,7 @@ gl_FragCoord origin is upper left 0:? 'g_mystruct' ( global 2-element array of structure{ temp int i, temp float f}) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 72 Capability Shader diff --git a/Test/baseResults/hlsl.array.multidim.frag.out b/Test/baseResults/hlsl.array.multidim.frag.out index 94629996..6c852c37 100644 --- a/Test/baseResults/hlsl.array.multidim.frag.out +++ b/Test/baseResults/hlsl.array.multidim.frag.out @@ -134,7 +134,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 57 Capability Shader diff --git a/Test/baseResults/hlsl.assoc.frag.out b/Test/baseResults/hlsl.assoc.frag.out index 562a8633..2002b0df 100644 --- a/Test/baseResults/hlsl.assoc.frag.out +++ b/Test/baseResults/hlsl.assoc.frag.out @@ -132,7 +132,7 @@ gl_FragCoord origin is upper left 0:? 'a5' (layout( location=4) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 58 Capability Shader diff --git a/Test/baseResults/hlsl.attribute.expression.comp.out b/Test/baseResults/hlsl.attribute.expression.comp.out index 1b3ffdbc..1ff21238 100644 --- a/Test/baseResults/hlsl.attribute.expression.comp.out +++ b/Test/baseResults/hlsl.attribute.expression.comp.out @@ -82,7 +82,7 @@ local_size = (4, 6, 8) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 39 Capability Shader diff --git a/Test/baseResults/hlsl.attribute.frag.out b/Test/baseResults/hlsl.attribute.frag.out index 44e963e0..2290cd80 100644 --- a/Test/baseResults/hlsl.attribute.frag.out +++ b/Test/baseResults/hlsl.attribute.frag.out @@ -50,7 +50,7 @@ gl_FragCoord origin is upper left 0:? 'input' (layout( location=0) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 24 Capability Shader diff --git a/Test/baseResults/hlsl.attributeC11.frag.out b/Test/baseResults/hlsl.attributeC11.frag.out index 47dd96a7..14bdcddd 100644 --- a/Test/baseResults/hlsl.attributeC11.frag.out +++ b/Test/baseResults/hlsl.attributeC11.frag.out @@ -95,7 +95,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 51 Capability Shader diff --git a/Test/baseResults/hlsl.attributeGlobalBuffer.frag.out b/Test/baseResults/hlsl.attributeGlobalBuffer.frag.out index e3784473..a486d1e9 100644 --- a/Test/baseResults/hlsl.attributeGlobalBuffer.frag.out +++ b/Test/baseResults/hlsl.attributeGlobalBuffer.frag.out @@ -56,7 +56,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 28 Capability Shader diff --git a/Test/baseResults/hlsl.basic.comp.out b/Test/baseResults/hlsl.basic.comp.out index d84642e9..fb26bc31 100644 --- a/Test/baseResults/hlsl.basic.comp.out +++ b/Test/baseResults/hlsl.basic.comp.out @@ -64,7 +64,7 @@ local_size = (1, 1, 1) 0:? 'gti' ( in 3-component vector of int LocalInvocationID) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 38 Capability Shader diff --git a/Test/baseResults/hlsl.basic.geom.out b/Test/baseResults/hlsl.basic.geom.out index f4116d4e..ee123d44 100644 --- a/Test/baseResults/hlsl.basic.geom.out +++ b/Test/baseResults/hlsl.basic.geom.out @@ -188,7 +188,7 @@ output primitive = line_strip 0:? 'OutputStream.something' (layout( location=1) out int) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 68 Capability Geometry diff --git a/Test/baseResults/hlsl.boolConv.vert.out b/Test/baseResults/hlsl.boolConv.vert.out index d88955fa..8762faf4 100644 --- a/Test/baseResults/hlsl.boolConv.vert.out +++ b/Test/baseResults/hlsl.boolConv.vert.out @@ -204,7 +204,7 @@ Shader version: 500 0:? '@entryPointOutput' ( out 4-component vector of float Position) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 99 Capability Shader diff --git a/Test/baseResults/hlsl.buffer.frag.out b/Test/baseResults/hlsl.buffer.frag.out index 25a79630..e41c02d9 100644 --- a/Test/baseResults/hlsl.buffer.frag.out +++ b/Test/baseResults/hlsl.buffer.frag.out @@ -147,7 +147,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 73 Capability Shader diff --git a/Test/baseResults/hlsl.calculatelod.dx10.frag.out b/Test/baseResults/hlsl.calculatelod.dx10.frag.out index f3278834..698350cb 100644 --- a/Test/baseResults/hlsl.calculatelod.dx10.frag.out +++ b/Test/baseResults/hlsl.calculatelod.dx10.frag.out @@ -358,7 +358,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 148 Capability Shader diff --git a/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out b/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out index 85dafcc7..e4bcb61d 100644 --- a/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out +++ b/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out @@ -358,7 +358,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 148 Capability Shader diff --git a/Test/baseResults/hlsl.cast.frag.out b/Test/baseResults/hlsl.cast.frag.out index 0aa11bea..aa657f37 100644 --- a/Test/baseResults/hlsl.cast.frag.out +++ b/Test/baseResults/hlsl.cast.frag.out @@ -70,7 +70,7 @@ gl_FragCoord origin is upper left 0:? 'input' (layout( location=0) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 34 Capability Shader diff --git a/Test/baseResults/hlsl.cbuffer-identifier.vert.out b/Test/baseResults/hlsl.cbuffer-identifier.vert.out index f7225f84..5cec136e 100644 --- a/Test/baseResults/hlsl.cbuffer-identifier.vert.out +++ b/Test/baseResults/hlsl.cbuffer-identifier.vert.out @@ -250,7 +250,7 @@ Shader version: 500 0:? 'input.Norm' (layout( location=1) in 3-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 93 Capability Shader diff --git a/Test/baseResults/hlsl.charLit.vert.out b/Test/baseResults/hlsl.charLit.vert.out index b09fc81f..4846f8f2 100644 --- a/Test/baseResults/hlsl.charLit.vert.out +++ b/Test/baseResults/hlsl.charLit.vert.out @@ -146,7 +146,7 @@ Shader version: 500 0:? '@entryPointOutput' ( out 4-component vector of float Position) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 58 Capability Shader diff --git a/Test/baseResults/hlsl.clip.frag.out b/Test/baseResults/hlsl.clip.frag.out index dbf99bf5..a0ebb745 100644 --- a/Test/baseResults/hlsl.clip.frag.out +++ b/Test/baseResults/hlsl.clip.frag.out @@ -74,7 +74,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 30 Capability Shader diff --git a/Test/baseResults/hlsl.clipdistance-1.frag.out b/Test/baseResults/hlsl.clipdistance-1.frag.out index f223ddc4..43825052 100644 --- a/Test/baseResults/hlsl.clipdistance-1.frag.out +++ b/Test/baseResults/hlsl.clipdistance-1.frag.out @@ -98,7 +98,7 @@ gl_FragCoord origin is upper left 0:? 'cull' ( in 1-element array of float CullDistance) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 53 Capability Shader diff --git a/Test/baseResults/hlsl.clipdistance-1.geom.out b/Test/baseResults/hlsl.clipdistance-1.geom.out index 144b8775..53483598 100644 --- a/Test/baseResults/hlsl.clipdistance-1.geom.out +++ b/Test/baseResults/hlsl.clipdistance-1.geom.out @@ -550,7 +550,7 @@ output primitive = line_strip 0:? 'OutputStream.clip' ( out 2-element array of float ClipDistance) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 118 Capability Geometry diff --git a/Test/baseResults/hlsl.clipdistance-1.vert.out b/Test/baseResults/hlsl.clipdistance-1.vert.out index d1d1370a..7d8b49f8 100644 --- a/Test/baseResults/hlsl.clipdistance-1.vert.out +++ b/Test/baseResults/hlsl.clipdistance-1.vert.out @@ -108,7 +108,7 @@ Shader version: 500 0:? 'cull' ( out 1-element array of float CullDistance) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 46 Capability Shader diff --git a/Test/baseResults/hlsl.clipdistance-2.frag.out b/Test/baseResults/hlsl.clipdistance-2.frag.out index 64604ebb..d1da7bc2 100644 --- a/Test/baseResults/hlsl.clipdistance-2.frag.out +++ b/Test/baseResults/hlsl.clipdistance-2.frag.out @@ -290,7 +290,7 @@ gl_FragCoord origin is upper left 0:? 'cull' ( in 4-element array of float CullDistance) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 84 Capability Shader diff --git a/Test/baseResults/hlsl.clipdistance-2.geom.out b/Test/baseResults/hlsl.clipdistance-2.geom.out index a8abd02f..bdee84f8 100644 --- a/Test/baseResults/hlsl.clipdistance-2.geom.out +++ b/Test/baseResults/hlsl.clipdistance-2.geom.out @@ -724,7 +724,7 @@ output primitive = line_strip 0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 128 Capability Geometry diff --git a/Test/baseResults/hlsl.clipdistance-2.vert.out b/Test/baseResults/hlsl.clipdistance-2.vert.out index 397a25d7..77bd23d4 100644 --- a/Test/baseResults/hlsl.clipdistance-2.vert.out +++ b/Test/baseResults/hlsl.clipdistance-2.vert.out @@ -420,7 +420,7 @@ Shader version: 500 0:? 'cull' ( out 4-element array of float CullDistance) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 89 Capability Shader diff --git a/Test/baseResults/hlsl.clipdistance-3.frag.out b/Test/baseResults/hlsl.clipdistance-3.frag.out index 3b5082e8..c7eda56f 100644 --- a/Test/baseResults/hlsl.clipdistance-3.frag.out +++ b/Test/baseResults/hlsl.clipdistance-3.frag.out @@ -98,7 +98,7 @@ gl_FragCoord origin is upper left 0:? 'cull' ( in 2-element array of float CullDistance) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 53 Capability Shader diff --git a/Test/baseResults/hlsl.clipdistance-3.geom.out b/Test/baseResults/hlsl.clipdistance-3.geom.out index f8ba5c6d..2e6b5f64 100644 --- a/Test/baseResults/hlsl.clipdistance-3.geom.out +++ b/Test/baseResults/hlsl.clipdistance-3.geom.out @@ -630,7 +630,7 @@ output primitive = line_strip 0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 127 Capability Geometry diff --git a/Test/baseResults/hlsl.clipdistance-3.vert.out b/Test/baseResults/hlsl.clipdistance-3.vert.out index 01afd179..c9289a53 100644 --- a/Test/baseResults/hlsl.clipdistance-3.vert.out +++ b/Test/baseResults/hlsl.clipdistance-3.vert.out @@ -136,7 +136,7 @@ Shader version: 500 0:? 'cull' ( out 2-element array of float CullDistance) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 51 Capability Shader diff --git a/Test/baseResults/hlsl.clipdistance-4.frag.out b/Test/baseResults/hlsl.clipdistance-4.frag.out index 95f81c95..8a46b157 100644 --- a/Test/baseResults/hlsl.clipdistance-4.frag.out +++ b/Test/baseResults/hlsl.clipdistance-4.frag.out @@ -174,7 +174,7 @@ gl_FragCoord origin is upper left 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 57 Capability Shader diff --git a/Test/baseResults/hlsl.clipdistance-4.geom.out b/Test/baseResults/hlsl.clipdistance-4.geom.out index 1096e02c..31d32051 100644 --- a/Test/baseResults/hlsl.clipdistance-4.geom.out +++ b/Test/baseResults/hlsl.clipdistance-4.geom.out @@ -612,7 +612,7 @@ output primitive = line_strip 0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 130 Capability Geometry diff --git a/Test/baseResults/hlsl.clipdistance-4.vert.out b/Test/baseResults/hlsl.clipdistance-4.vert.out index d05fae41..7fca9d4e 100644 --- a/Test/baseResults/hlsl.clipdistance-4.vert.out +++ b/Test/baseResults/hlsl.clipdistance-4.vert.out @@ -270,7 +270,7 @@ Shader version: 500 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 72 Capability Shader diff --git a/Test/baseResults/hlsl.clipdistance-5.frag.out b/Test/baseResults/hlsl.clipdistance-5.frag.out index afdd4c4d..f0adb05b 100644 --- a/Test/baseResults/hlsl.clipdistance-5.frag.out +++ b/Test/baseResults/hlsl.clipdistance-5.frag.out @@ -232,7 +232,7 @@ gl_FragCoord origin is upper left 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 62 Capability Shader diff --git a/Test/baseResults/hlsl.clipdistance-5.vert.out b/Test/baseResults/hlsl.clipdistance-5.vert.out index 3e8f1fe7..264c22c2 100644 --- a/Test/baseResults/hlsl.clipdistance-5.vert.out +++ b/Test/baseResults/hlsl.clipdistance-5.vert.out @@ -318,7 +318,7 @@ Shader version: 500 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 73 Capability Shader diff --git a/Test/baseResults/hlsl.clipdistance-6.frag.out b/Test/baseResults/hlsl.clipdistance-6.frag.out index 3ee8065a..49c225a2 100644 --- a/Test/baseResults/hlsl.clipdistance-6.frag.out +++ b/Test/baseResults/hlsl.clipdistance-6.frag.out @@ -282,7 +282,7 @@ gl_FragCoord origin is upper left 0:? 'v.clip1' ( in 8-element array of float ClipDistance) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 79 Capability Shader diff --git a/Test/baseResults/hlsl.clipdistance-6.vert.out b/Test/baseResults/hlsl.clipdistance-6.vert.out index a386d0ac..024d0285 100644 --- a/Test/baseResults/hlsl.clipdistance-6.vert.out +++ b/Test/baseResults/hlsl.clipdistance-6.vert.out @@ -428,7 +428,7 @@ Shader version: 500 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 86 Capability Shader diff --git a/Test/baseResults/hlsl.clipdistance-7.frag.out b/Test/baseResults/hlsl.clipdistance-7.frag.out index 94b6a791..5ff568e7 100644 --- a/Test/baseResults/hlsl.clipdistance-7.frag.out +++ b/Test/baseResults/hlsl.clipdistance-7.frag.out @@ -270,7 +270,7 @@ gl_FragCoord origin is upper left 0:? 'v.clip1' ( in 8-element array of float ClipDistance) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 78 Capability Shader diff --git a/Test/baseResults/hlsl.clipdistance-7.vert.out b/Test/baseResults/hlsl.clipdistance-7.vert.out index 87e34bd8..24eced89 100644 --- a/Test/baseResults/hlsl.clipdistance-7.vert.out +++ b/Test/baseResults/hlsl.clipdistance-7.vert.out @@ -384,7 +384,7 @@ Shader version: 500 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 81 Capability Shader diff --git a/Test/baseResults/hlsl.clipdistance-8.frag.out b/Test/baseResults/hlsl.clipdistance-8.frag.out index 98c9505c..f4e55acb 100644 --- a/Test/baseResults/hlsl.clipdistance-8.frag.out +++ b/Test/baseResults/hlsl.clipdistance-8.frag.out @@ -186,7 +186,7 @@ gl_FragCoord origin is upper left 0:? 'v.clip1' ( in 4-element array of float ClipDistance) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 65 Capability Shader diff --git a/Test/baseResults/hlsl.clipdistance-8.vert.out b/Test/baseResults/hlsl.clipdistance-8.vert.out index 88800e3c..456e11f5 100644 --- a/Test/baseResults/hlsl.clipdistance-8.vert.out +++ b/Test/baseResults/hlsl.clipdistance-8.vert.out @@ -240,7 +240,7 @@ Shader version: 500 0:? '@entryPointOutput.clip1' ( out 4-element array of float ClipDistance) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 62 Capability Shader diff --git a/Test/baseResults/hlsl.clipdistance-9.frag.out b/Test/baseResults/hlsl.clipdistance-9.frag.out index ff7f2619..0a17eafa 100644 --- a/Test/baseResults/hlsl.clipdistance-9.frag.out +++ b/Test/baseResults/hlsl.clipdistance-9.frag.out @@ -144,7 +144,7 @@ gl_FragCoord origin is upper left 0:? 'clip0' ( in 4-element array of float ClipDistance) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 68 Capability Shader diff --git a/Test/baseResults/hlsl.clipdistance-9.vert.out b/Test/baseResults/hlsl.clipdistance-9.vert.out index 2d0c9b02..61b996fb 100644 --- a/Test/baseResults/hlsl.clipdistance-9.vert.out +++ b/Test/baseResults/hlsl.clipdistance-9.vert.out @@ -194,7 +194,7 @@ Shader version: 500 0:? 'clip0' ( out 4-element array of float ClipDistance) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 67 Capability Shader diff --git a/Test/baseResults/hlsl.color.hull.tesc.out b/Test/baseResults/hlsl.color.hull.tesc.out index 72e0b7e7..c5be8e40 100644 --- a/Test/baseResults/hlsl.color.hull.tesc.out +++ b/Test/baseResults/hlsl.color.hull.tesc.out @@ -356,7 +356,7 @@ triangle order = cw 0:? '@patchConstantOutput.inside' ( patch out 2-element array of float TessLevelInner) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 127 Capability Tessellation diff --git a/Test/baseResults/hlsl.comparison.vec.frag.out b/Test/baseResults/hlsl.comparison.vec.frag.out index ff73e178..5936c9a9 100644 --- a/Test/baseResults/hlsl.comparison.vec.frag.out +++ b/Test/baseResults/hlsl.comparison.vec.frag.out @@ -262,7 +262,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 96 Capability Shader diff --git a/Test/baseResults/hlsl.conditional.frag.out b/Test/baseResults/hlsl.conditional.frag.out index 7df88e7f..e23d49c9 100644 --- a/Test/baseResults/hlsl.conditional.frag.out +++ b/Test/baseResults/hlsl.conditional.frag.out @@ -522,7 +522,7 @@ gl_FragCoord origin is upper left 0:? 'input' (layout( location=0) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 206 Capability Shader diff --git a/Test/baseResults/hlsl.constantbuffer.frag.out b/Test/baseResults/hlsl.constantbuffer.frag.out index 99c67ae6..48d849b4 100644 --- a/Test/baseResults/hlsl.constantbuffer.frag.out +++ b/Test/baseResults/hlsl.constantbuffer.frag.out @@ -133,7 +133,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 66 Capability Shader diff --git a/Test/baseResults/hlsl.constructArray.vert.out b/Test/baseResults/hlsl.constructArray.vert.out index 6e18ad97..8ba41bc9 100644 --- a/Test/baseResults/hlsl.constructArray.vert.out +++ b/Test/baseResults/hlsl.constructArray.vert.out @@ -268,7 +268,7 @@ Shader version: 500 0:? '@entryPointOutput' ( out 4-component vector of float Position) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 89 Capability Shader diff --git a/Test/baseResults/hlsl.constructexpr.frag.out b/Test/baseResults/hlsl.constructexpr.frag.out index 227c7e17..085821ab 100644 --- a/Test/baseResults/hlsl.constructexpr.frag.out +++ b/Test/baseResults/hlsl.constructexpr.frag.out @@ -104,7 +104,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 40 Capability Shader diff --git a/Test/baseResults/hlsl.constructimat.frag.out b/Test/baseResults/hlsl.constructimat.frag.out index 075dabb5..a5014db4 100644 --- a/Test/baseResults/hlsl.constructimat.frag.out +++ b/Test/baseResults/hlsl.constructimat.frag.out @@ -545,7 +545,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 98 Capability Shader diff --git a/Test/baseResults/hlsl.coverage.frag.out b/Test/baseResults/hlsl.coverage.frag.out index 691d6436..a1480735 100644 --- a/Test/baseResults/hlsl.coverage.frag.out +++ b/Test/baseResults/hlsl.coverage.frag.out @@ -119,7 +119,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 52 Capability Shader diff --git a/Test/baseResults/hlsl.depthGreater.frag.out b/Test/baseResults/hlsl.depthGreater.frag.out index df6311f6..70928024 100644 --- a/Test/baseResults/hlsl.depthGreater.frag.out +++ b/Test/baseResults/hlsl.depthGreater.frag.out @@ -50,7 +50,7 @@ using depth_greater 0:? 'depth' ( out float FragDepth) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 20 Capability Shader diff --git a/Test/baseResults/hlsl.depthLess.frag.out b/Test/baseResults/hlsl.depthLess.frag.out index d2b9d8ed..275eaf13 100644 --- a/Test/baseResults/hlsl.depthLess.frag.out +++ b/Test/baseResults/hlsl.depthLess.frag.out @@ -42,7 +42,7 @@ using depth_less 0:? '@entryPointOutput' ( out float FragDepth) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 16 Capability Shader diff --git a/Test/baseResults/hlsl.discard.frag.out b/Test/baseResults/hlsl.discard.frag.out index cc7c8666..23ed871b 100644 --- a/Test/baseResults/hlsl.discard.frag.out +++ b/Test/baseResults/hlsl.discard.frag.out @@ -108,7 +108,7 @@ gl_FragCoord origin is upper left 0:? 'input' (layout( location=0) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 50 Capability Shader diff --git a/Test/baseResults/hlsl.doLoop.frag.out b/Test/baseResults/hlsl.doLoop.frag.out index 2366d796..2b65a76b 100644 --- a/Test/baseResults/hlsl.doLoop.frag.out +++ b/Test/baseResults/hlsl.doLoop.frag.out @@ -198,7 +198,7 @@ gl_FragCoord origin is upper left 0:? 'input' (layout( location=0) in float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 99 Capability Shader diff --git a/Test/baseResults/hlsl.domain.1.tese.out b/Test/baseResults/hlsl.domain.1.tese.out index 4bc8bac5..0b7b2756 100644 --- a/Test/baseResults/hlsl.domain.1.tese.out +++ b/Test/baseResults/hlsl.domain.1.tese.out @@ -286,7 +286,7 @@ triangle order = none 0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 103 Capability Tessellation diff --git a/Test/baseResults/hlsl.domain.2.tese.out b/Test/baseResults/hlsl.domain.2.tese.out index 827f80f7..e6ec924a 100644 --- a/Test/baseResults/hlsl.domain.2.tese.out +++ b/Test/baseResults/hlsl.domain.2.tese.out @@ -284,7 +284,7 @@ triangle order = none 0:? 'pcf_data.foo' (layout( location=2) patch in float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 98 Capability Tessellation diff --git a/Test/baseResults/hlsl.domain.3.tese.out b/Test/baseResults/hlsl.domain.3.tese.out index dd3d502a..4b8584c9 100644 --- a/Test/baseResults/hlsl.domain.3.tese.out +++ b/Test/baseResults/hlsl.domain.3.tese.out @@ -264,7 +264,7 @@ triangle order = none 0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 100 Capability Tessellation diff --git a/Test/baseResults/hlsl.earlydepthstencil.frag.out b/Test/baseResults/hlsl.earlydepthstencil.frag.out index e598a519..f30b89ad 100755 --- a/Test/baseResults/hlsl.earlydepthstencil.frag.out +++ b/Test/baseResults/hlsl.earlydepthstencil.frag.out @@ -108,7 +108,7 @@ using early_fragment_tests 0:? 'input.Position' ( in 4-component vector of float FragCoord) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 50 Capability Shader diff --git a/Test/baseResults/hlsl.emptystruct.init.vert.out b/Test/baseResults/hlsl.emptystruct.init.vert.out index 410915cf..c3c3aef8 100644 --- a/Test/baseResults/hlsl.emptystruct.init.vert.out +++ b/Test/baseResults/hlsl.emptystruct.init.vert.out @@ -60,7 +60,7 @@ Shader version: 500 0:? 'vertexIndex' (layout( location=0) in uint) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 29 Capability Shader diff --git a/Test/baseResults/hlsl.emptystructreturn.frag.out b/Test/baseResults/hlsl.emptystructreturn.frag.out index 1c9953b5..bb9c26c3 100644 --- a/Test/baseResults/hlsl.emptystructreturn.frag.out +++ b/Test/baseResults/hlsl.emptystructreturn.frag.out @@ -51,7 +51,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 27 Capability Shader diff --git a/Test/baseResults/hlsl.emptystructreturn.vert.out b/Test/baseResults/hlsl.emptystructreturn.vert.out index 65d326d4..22027bfd 100644 --- a/Test/baseResults/hlsl.emptystructreturn.vert.out +++ b/Test/baseResults/hlsl.emptystructreturn.vert.out @@ -49,7 +49,7 @@ Shader version: 500 Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 27 Capability Shader diff --git a/Test/baseResults/hlsl.entry-in.frag.out b/Test/baseResults/hlsl.entry-in.frag.out index dc9eea4a..d65532df 100644 --- a/Test/baseResults/hlsl.entry-in.frag.out +++ b/Test/baseResults/hlsl.entry-in.frag.out @@ -166,7 +166,7 @@ gl_FragCoord origin is upper left 0:? 'i.i2' (layout( location=1) flat in 2-component vector of int) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 74 Capability Shader diff --git a/Test/baseResults/hlsl.entry-out.frag.out b/Test/baseResults/hlsl.entry-out.frag.out index 6ca3011b..e1af2846 100644 --- a/Test/baseResults/hlsl.entry-out.frag.out +++ b/Test/baseResults/hlsl.entry-out.frag.out @@ -244,7 +244,7 @@ gl_FragCoord origin is upper left 0:? 'out3.i' (layout( location=5) out 2-component vector of int) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 89 Capability Shader diff --git a/Test/baseResults/hlsl.flatten.return.frag.out b/Test/baseResults/hlsl.flatten.return.frag.out index e47fe3eb..bc388f85 100644 --- a/Test/baseResults/hlsl.flatten.return.frag.out +++ b/Test/baseResults/hlsl.flatten.return.frag.out @@ -118,7 +118,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.other_struct_member3' (layout( location=3) out float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 49 Capability Shader diff --git a/Test/baseResults/hlsl.flattenOpaque.frag.out b/Test/baseResults/hlsl.flattenOpaque.frag.out index 94d02f49..688656c1 100644 --- a/Test/baseResults/hlsl.flattenOpaque.frag.out +++ b/Test/baseResults/hlsl.flattenOpaque.frag.out @@ -295,7 +295,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 122 Capability Shader diff --git a/Test/baseResults/hlsl.flattenOpaqueInit.vert.out b/Test/baseResults/hlsl.flattenOpaqueInit.vert.out index a5a59442..6d168587 100644 --- a/Test/baseResults/hlsl.flattenOpaqueInit.vert.out +++ b/Test/baseResults/hlsl.flattenOpaqueInit.vert.out @@ -165,7 +165,7 @@ Shader version: 500 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 82 Capability Shader diff --git a/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out b/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out index 5a2aa2a1..62a2e8e7 100644 --- a/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out +++ b/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out @@ -107,7 +107,7 @@ Shader version: 500 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 59 Capability Shader diff --git a/Test/baseResults/hlsl.flattenSubset.frag.out b/Test/baseResults/hlsl.flattenSubset.frag.out index 262a29d6..f6da1a9e 100644 --- a/Test/baseResults/hlsl.flattenSubset.frag.out +++ b/Test/baseResults/hlsl.flattenSubset.frag.out @@ -115,7 +115,7 @@ gl_FragCoord origin is upper left 0:? 'vpos' (layout( location=0) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 54 Capability Shader diff --git a/Test/baseResults/hlsl.flattenSubset2.frag.out b/Test/baseResults/hlsl.flattenSubset2.frag.out index 77dc4cd5..40d92a95 100644 --- a/Test/baseResults/hlsl.flattenSubset2.frag.out +++ b/Test/baseResults/hlsl.flattenSubset2.frag.out @@ -149,7 +149,7 @@ gl_FragCoord origin is upper left 0:? 'vpos' (layout( location=0) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 56 Capability Shader diff --git a/Test/baseResults/hlsl.float1.frag.out b/Test/baseResults/hlsl.float1.frag.out index 49827dcf..0f7600e0 100644 --- a/Test/baseResults/hlsl.float1.frag.out +++ b/Test/baseResults/hlsl.float1.frag.out @@ -65,7 +65,7 @@ gl_FragCoord origin is upper left 0:? 'scalar' ( global float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 27 Capability Shader diff --git a/Test/baseResults/hlsl.float4.frag.out b/Test/baseResults/hlsl.float4.frag.out index 8dc33078..8e8c821f 100644 --- a/Test/baseResults/hlsl.float4.frag.out +++ b/Test/baseResults/hlsl.float4.frag.out @@ -42,7 +42,7 @@ gl_FragCoord origin is upper left 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor, uniform bool ff1, layout( offset=20) uniform float ff2, layout( binding=0 offset=32) uniform 4-component vector of float ff3, layout( binding=1 offset=48) uniform 4-component vector of float ff4}) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 26 Capability Shader diff --git a/Test/baseResults/hlsl.forLoop.frag.out b/Test/baseResults/hlsl.forLoop.frag.out index b8f59e88..b6c27101 100644 --- a/Test/baseResults/hlsl.forLoop.frag.out +++ b/Test/baseResults/hlsl.forLoop.frag.out @@ -510,7 +510,7 @@ gl_FragCoord origin is upper left 0:? 'input' (layout( location=0) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 240 Capability Shader diff --git a/Test/baseResults/hlsl.format.rwtexture.frag.out b/Test/baseResults/hlsl.format.rwtexture.frag.out index 7ab53299..699dafeb 100644 --- a/Test/baseResults/hlsl.format.rwtexture.frag.out +++ b/Test/baseResults/hlsl.format.rwtexture.frag.out @@ -184,7 +184,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 160 Capability Shader diff --git a/Test/baseResults/hlsl.fraggeom.frag.out b/Test/baseResults/hlsl.fraggeom.frag.out index af3564d1..7509ddc8 100644 --- a/Test/baseResults/hlsl.fraggeom.frag.out +++ b/Test/baseResults/hlsl.fraggeom.frag.out @@ -64,7 +64,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 25 Capability Shader diff --git a/Test/baseResults/hlsl.gather.array.dx10.frag.out b/Test/baseResults/hlsl.gather.array.dx10.frag.out index 32d27ab0..b954c2b6 100644 --- a/Test/baseResults/hlsl.gather.array.dx10.frag.out +++ b/Test/baseResults/hlsl.gather.array.dx10.frag.out @@ -262,7 +262,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 124 Capability Shader diff --git a/Test/baseResults/hlsl.gather.basic.dx10.frag.out b/Test/baseResults/hlsl.gather.basic.dx10.frag.out index 57e4499d..530bccd8 100644 --- a/Test/baseResults/hlsl.gather.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.gather.basic.dx10.frag.out @@ -258,7 +258,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 135 Capability Shader diff --git a/Test/baseResults/hlsl.gather.basic.dx10.vert.out b/Test/baseResults/hlsl.gather.basic.dx10.vert.out index a0c8d159..de745d1b 100644 --- a/Test/baseResults/hlsl.gather.basic.dx10.vert.out +++ b/Test/baseResults/hlsl.gather.basic.dx10.vert.out @@ -220,7 +220,7 @@ Shader version: 500 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 126 Capability Shader diff --git a/Test/baseResults/hlsl.gather.offset.dx10.frag.out b/Test/baseResults/hlsl.gather.offset.dx10.frag.out index 85ba2945..3a897121 100644 --- a/Test/baseResults/hlsl.gather.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.gather.offset.dx10.frag.out @@ -208,7 +208,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 114 Capability Shader diff --git a/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out index c73547e3..36011878 100644 --- a/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out @@ -202,7 +202,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 97 Capability Shader diff --git a/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out index ac6c8174..c2a49018 100644 --- a/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out +++ b/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out @@ -750,7 +750,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 255 Capability Shader diff --git a/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out index 8617d701..8bb01d53 100644 --- a/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out @@ -758,7 +758,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 265 Capability Shader diff --git a/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out index 4a0d77a0..a7776780 100644 --- a/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out @@ -1263,7 +1263,7 @@ using depth_any Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 399 Capability Shader diff --git a/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out index c9740b05..2acc9753 100644 --- a/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out @@ -1255,7 +1255,7 @@ using depth_any Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 389 Capability Shader diff --git a/Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out b/Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out index 5e2d4221..8ad84cd7 100644 --- a/Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out @@ -456,7 +456,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 164 Capability Shader diff --git a/Test/baseResults/hlsl.getdimensions.dx10.frag.out b/Test/baseResults/hlsl.getdimensions.dx10.frag.out index eb92fbb0..cf406ed4 100644 --- a/Test/baseResults/hlsl.getdimensions.dx10.frag.out +++ b/Test/baseResults/hlsl.getdimensions.dx10.frag.out @@ -2318,7 +2318,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 550 Capability Shader diff --git a/Test/baseResults/hlsl.getdimensions.dx10.vert.out b/Test/baseResults/hlsl.getdimensions.dx10.vert.out index cccdfeb2..51368b6d 100644 --- a/Test/baseResults/hlsl.getdimensions.dx10.vert.out +++ b/Test/baseResults/hlsl.getdimensions.dx10.vert.out @@ -116,7 +116,7 @@ Shader version: 500 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 48 Capability Shader diff --git a/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out b/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out index d8675a20..d096c381 100644 --- a/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out +++ b/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out @@ -718,7 +718,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 232 Capability Shader diff --git a/Test/baseResults/hlsl.getsampleposition.dx10.frag.out b/Test/baseResults/hlsl.getsampleposition.dx10.frag.out index d1e28447..7c46c8e1 100644 --- a/Test/baseResults/hlsl.getsampleposition.dx10.frag.out +++ b/Test/baseResults/hlsl.getsampleposition.dx10.frag.out @@ -580,7 +580,7 @@ using depth_any 0:? 'sample' (layout( location=0) flat in int) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 198 Capability Shader diff --git a/Test/baseResults/hlsl.global-const-init.frag.out b/Test/baseResults/hlsl.global-const-init.frag.out index a1aa55b5..828c0c59 100644 --- a/Test/baseResults/hlsl.global-const-init.frag.out +++ b/Test/baseResults/hlsl.global-const-init.frag.out @@ -102,7 +102,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 50 Capability Shader diff --git a/Test/baseResults/hlsl.groupid.comp.out b/Test/baseResults/hlsl.groupid.comp.out index a76db505..65804b73 100644 --- a/Test/baseResults/hlsl.groupid.comp.out +++ b/Test/baseResults/hlsl.groupid.comp.out @@ -82,7 +82,7 @@ local_size = (8, 8, 1) 0:? 'vGroupId' ( in 3-component vector of uint WorkGroupID) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 37 Capability Shader diff --git a/Test/baseResults/hlsl.gs-hs-mix.tesc.out b/Test/baseResults/hlsl.gs-hs-mix.tesc.out index 4971371a..fabc1109 100644 --- a/Test/baseResults/hlsl.gs-hs-mix.tesc.out +++ b/Test/baseResults/hlsl.gs-hs-mix.tesc.out @@ -798,7 +798,7 @@ triangle order = ccw 0:? '@patchConstantOutput' (layout( location=1) patch out structure{ temp 3-element array of 3-component vector of float NormalWS}) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 216 Capability Tessellation diff --git a/Test/baseResults/hlsl.hull.1.tesc.out b/Test/baseResults/hlsl.hull.1.tesc.out index 1be14987..ca4417d7 100644 --- a/Test/baseResults/hlsl.hull.1.tesc.out +++ b/Test/baseResults/hlsl.hull.1.tesc.out @@ -224,7 +224,7 @@ vertex spacing = equal_spacing 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 89 Capability Tessellation diff --git a/Test/baseResults/hlsl.hull.2.tesc.out b/Test/baseResults/hlsl.hull.2.tesc.out index c8218d23..70fc4f1e 100644 --- a/Test/baseResults/hlsl.hull.2.tesc.out +++ b/Test/baseResults/hlsl.hull.2.tesc.out @@ -220,7 +220,7 @@ vertex spacing = equal_spacing 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 91 Capability Tessellation diff --git a/Test/baseResults/hlsl.hull.3.tesc.out b/Test/baseResults/hlsl.hull.3.tesc.out index 4ff01985..fba7fac8 100644 --- a/Test/baseResults/hlsl.hull.3.tesc.out +++ b/Test/baseResults/hlsl.hull.3.tesc.out @@ -220,7 +220,7 @@ vertex spacing = equal_spacing 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 91 Capability Tessellation diff --git a/Test/baseResults/hlsl.hull.4.tesc.out b/Test/baseResults/hlsl.hull.4.tesc.out index a99730d0..253bdc64 100644 --- a/Test/baseResults/hlsl.hull.4.tesc.out +++ b/Test/baseResults/hlsl.hull.4.tesc.out @@ -476,7 +476,7 @@ triangle order = cw 0:? '@patchConstantOutput.fInsideTessFactor' ( patch out 2-element array of float TessLevelInner) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 127 Capability Tessellation diff --git a/Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out b/Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out index 41f3c0a4..2bf3c7c7 100644 --- a/Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out +++ b/Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out @@ -396,7 +396,7 @@ triangle order = cw 0:? '@patchConstantOutput.flInFactor' ( patch out 2-element array of float TessLevelInner) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 124 Capability Tessellation diff --git a/Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out b/Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out index 986e1102..62e48f74 100644 --- a/Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out +++ b/Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out @@ -414,7 +414,7 @@ triangle order = cw 0:? '@patchConstantOutput.flInFactor' ( patch out 2-element array of float TessLevelInner) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 126 Capability Tessellation diff --git a/Test/baseResults/hlsl.hull.void.tesc.out b/Test/baseResults/hlsl.hull.void.tesc.out index c44c7e4d..7c006db3 100644 --- a/Test/baseResults/hlsl.hull.void.tesc.out +++ b/Test/baseResults/hlsl.hull.void.tesc.out @@ -108,7 +108,7 @@ triangle order = ccw 0:? 'InvocationId' ( in uint InvocationID) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 55 Capability Tessellation diff --git a/Test/baseResults/hlsl.identifier.sample.frag.out b/Test/baseResults/hlsl.identifier.sample.frag.out index a23451ec..ddc4c51d 100644 --- a/Test/baseResults/hlsl.identifier.sample.frag.out +++ b/Test/baseResults/hlsl.identifier.sample.frag.out @@ -86,7 +86,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 33 Capability Shader diff --git a/Test/baseResults/hlsl.if.frag.out b/Test/baseResults/hlsl.if.frag.out index 255345ad..6b6de9c5 100644 --- a/Test/baseResults/hlsl.if.frag.out +++ b/Test/baseResults/hlsl.if.frag.out @@ -240,7 +240,7 @@ gl_FragCoord origin is upper left 0:? 'input' (layout( location=0) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 117 Capability Shader diff --git a/Test/baseResults/hlsl.imagefetch-subvec4.comp.out b/Test/baseResults/hlsl.imagefetch-subvec4.comp.out index 721aeead..304f24b6 100644 --- a/Test/baseResults/hlsl.imagefetch-subvec4.comp.out +++ b/Test/baseResults/hlsl.imagefetch-subvec4.comp.out @@ -72,7 +72,7 @@ local_size = (8, 8, 8) 0:? 'tid' ( in 3-component vector of uint GlobalInvocationID) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 39 Capability Shader diff --git a/Test/baseResults/hlsl.implicitBool.frag.out b/Test/baseResults/hlsl.implicitBool.frag.out index c6161258..8b5dcde7 100644 --- a/Test/baseResults/hlsl.implicitBool.frag.out +++ b/Test/baseResults/hlsl.implicitBool.frag.out @@ -332,7 +332,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 139 Capability Shader diff --git a/Test/baseResults/hlsl.inf.vert.out b/Test/baseResults/hlsl.inf.vert.out index 1cedc55f..02326b3b 100644 --- a/Test/baseResults/hlsl.inf.vert.out +++ b/Test/baseResults/hlsl.inf.vert.out @@ -112,7 +112,7 @@ Shader version: 500 0:? '@entryPointOutput' ( out 4-component vector of float Position) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 37 Capability Shader diff --git a/Test/baseResults/hlsl.init.frag.out b/Test/baseResults/hlsl.init.frag.out index 1d9a5efa..2139adb4 100644 --- a/Test/baseResults/hlsl.init.frag.out +++ b/Test/baseResults/hlsl.init.frag.out @@ -331,7 +331,7 @@ gl_FragCoord origin is upper left 0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform float a, layout( row_major std140) uniform float b, layout( row_major std140) uniform float c}) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 110 Capability Shader diff --git a/Test/baseResults/hlsl.init2.frag.out b/Test/baseResults/hlsl.init2.frag.out index 9e03de3a..0ba8bd27 100644 --- a/Test/baseResults/hlsl.init2.frag.out +++ b/Test/baseResults/hlsl.init2.frag.out @@ -358,7 +358,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 112 Capability Shader diff --git a/Test/baseResults/hlsl.inoutquals.frag.out b/Test/baseResults/hlsl.inoutquals.frag.out index 42adb1a8..2ffa3c56 100644 --- a/Test/baseResults/hlsl.inoutquals.frag.out +++ b/Test/baseResults/hlsl.inoutquals.frag.out @@ -214,7 +214,7 @@ using depth_any 0:? 'sampleMask' ( out 1-element array of int SampleMaskIn) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 92 Capability Shader diff --git a/Test/baseResults/hlsl.int.dot.frag.out b/Test/baseResults/hlsl.int.dot.frag.out index afe44c85..a691836f 100644 --- a/Test/baseResults/hlsl.int.dot.frag.out +++ b/Test/baseResults/hlsl.int.dot.frag.out @@ -224,7 +224,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 84 Capability Shader diff --git a/Test/baseResults/hlsl.intrinsic.frexp.frag.out b/Test/baseResults/hlsl.intrinsic.frexp.frag.out index 3a9d6fd5..9fb9cc55 100644 --- a/Test/baseResults/hlsl.intrinsic.frexp.frag.out +++ b/Test/baseResults/hlsl.intrinsic.frexp.frag.out @@ -190,7 +190,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 98 Capability Shader diff --git a/Test/baseResults/hlsl.intrinsic.frexp.vert.out b/Test/baseResults/hlsl.intrinsic.frexp.vert.out index 92bd7ef0..7069ecec 100644 --- a/Test/baseResults/hlsl.intrinsic.frexp.vert.out +++ b/Test/baseResults/hlsl.intrinsic.frexp.vert.out @@ -113,7 +113,7 @@ Shader version: 500 0:? Linker Objects // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 78 Capability Shader diff --git a/Test/baseResults/hlsl.intrinsics.barriers.comp.out b/Test/baseResults/hlsl.intrinsics.barriers.comp.out index 13fe5780..a078978e 100644 --- a/Test/baseResults/hlsl.intrinsics.barriers.comp.out +++ b/Test/baseResults/hlsl.intrinsics.barriers.comp.out @@ -52,7 +52,7 @@ local_size = (1, 1, 1) 0:? '@entryPointOutput' (layout( location=0) out float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 22 Capability Shader diff --git a/Test/baseResults/hlsl.intrinsics.comp.out b/Test/baseResults/hlsl.intrinsics.comp.out index 3329c5cb..761a3b3d 100644 --- a/Test/baseResults/hlsl.intrinsics.comp.out +++ b/Test/baseResults/hlsl.intrinsics.comp.out @@ -717,7 +717,7 @@ local_size = (1, 1, 1) Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 265 Capability Shader diff --git a/Test/baseResults/hlsl.intrinsics.d3dcolortoubyte4.frag.out b/Test/baseResults/hlsl.intrinsics.d3dcolortoubyte4.frag.out index f2216def..48322416 100644 --- a/Test/baseResults/hlsl.intrinsics.d3dcolortoubyte4.frag.out +++ b/Test/baseResults/hlsl.intrinsics.d3dcolortoubyte4.frag.out @@ -74,7 +74,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of int) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 29 Capability Shader diff --git a/Test/baseResults/hlsl.intrinsics.double.frag.out b/Test/baseResults/hlsl.intrinsics.double.frag.out index 55a102f5..472f31b2 100644 --- a/Test/baseResults/hlsl.intrinsics.double.frag.out +++ b/Test/baseResults/hlsl.intrinsics.double.frag.out @@ -164,7 +164,7 @@ gl_FragCoord origin is upper left 0:? 'inU1b' (layout( location=9) flat in uint) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 90 Capability Shader diff --git a/Test/baseResults/hlsl.intrinsics.evalfns.frag.out b/Test/baseResults/hlsl.intrinsics.evalfns.frag.out index 3f69827d..0260b937 100644 --- a/Test/baseResults/hlsl.intrinsics.evalfns.frag.out +++ b/Test/baseResults/hlsl.intrinsics.evalfns.frag.out @@ -155,7 +155,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 80 Capability Shader diff --git a/Test/baseResults/hlsl.intrinsics.f1632.frag.out b/Test/baseResults/hlsl.intrinsics.f1632.frag.out index c5619efa..785b083d 100644 --- a/Test/baseResults/hlsl.intrinsics.f1632.frag.out +++ b/Test/baseResults/hlsl.intrinsics.f1632.frag.out @@ -260,7 +260,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 103 Capability Shader diff --git a/Test/baseResults/hlsl.intrinsics.f3216.frag.out b/Test/baseResults/hlsl.intrinsics.f3216.frag.out index c447efc4..77826b3b 100644 --- a/Test/baseResults/hlsl.intrinsics.f3216.frag.out +++ b/Test/baseResults/hlsl.intrinsics.f3216.frag.out @@ -270,7 +270,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 106 Capability Shader diff --git a/Test/baseResults/hlsl.intrinsics.frag.out b/Test/baseResults/hlsl.intrinsics.frag.out index b8add071..42563828 100644 --- a/Test/baseResults/hlsl.intrinsics.frag.out +++ b/Test/baseResults/hlsl.intrinsics.frag.out @@ -5645,7 +5645,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 1836 Capability Shader diff --git a/Test/baseResults/hlsl.intrinsics.lit.frag.out b/Test/baseResults/hlsl.intrinsics.lit.frag.out index 8b1454b8..9a8cb292 100644 --- a/Test/baseResults/hlsl.intrinsics.lit.frag.out +++ b/Test/baseResults/hlsl.intrinsics.lit.frag.out @@ -118,7 +118,7 @@ gl_FragCoord origin is upper left 0:? 'm' (layout( location=2) in float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 48 Capability Shader diff --git a/Test/baseResults/hlsl.intrinsics.negative.comp.out b/Test/baseResults/hlsl.intrinsics.negative.comp.out index 97d67198..920038f2 100644 --- a/Test/baseResults/hlsl.intrinsics.negative.comp.out +++ b/Test/baseResults/hlsl.intrinsics.negative.comp.out @@ -180,7 +180,7 @@ local_size = (1, 1, 1) 0:? 'inI0' (layout( location=3) in 4-component vector of int) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 99 Capability Shader diff --git a/Test/baseResults/hlsl.intrinsics.negative.vert.out b/Test/baseResults/hlsl.intrinsics.negative.vert.out index c2711c65..3b1bac8d 100644 --- a/Test/baseResults/hlsl.intrinsics.negative.vert.out +++ b/Test/baseResults/hlsl.intrinsics.negative.vert.out @@ -308,7 +308,7 @@ Shader version: 500 0:? 'inI0' (layout( location=3) in 4-component vector of int) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 155 Capability Shader diff --git a/Test/baseResults/hlsl.intrinsics.promote.down.frag.out b/Test/baseResults/hlsl.intrinsics.promote.down.frag.out index 84ea6f49..21716984 100644 --- a/Test/baseResults/hlsl.intrinsics.promote.down.frag.out +++ b/Test/baseResults/hlsl.intrinsics.promote.down.frag.out @@ -104,7 +104,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 50 Capability Shader diff --git a/Test/baseResults/hlsl.intrinsics.promote.frag.out b/Test/baseResults/hlsl.intrinsics.promote.frag.out index 988432e8..41b1c68c 100644 --- a/Test/baseResults/hlsl.intrinsics.promote.frag.out +++ b/Test/baseResults/hlsl.intrinsics.promote.frag.out @@ -888,7 +888,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 322 Capability Shader diff --git a/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out b/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out index 9f8ecf27..143fa728 100644 --- a/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out +++ b/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out @@ -204,7 +204,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 80 Capability Shader diff --git a/Test/baseResults/hlsl.intrinsics.vert.out b/Test/baseResults/hlsl.intrinsics.vert.out index 460785e7..28e8e41d 100644 --- a/Test/baseResults/hlsl.intrinsics.vert.out +++ b/Test/baseResults/hlsl.intrinsics.vert.out @@ -2780,7 +2780,7 @@ Shader version: 500 Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 1225 Capability Shader diff --git a/Test/baseResults/hlsl.isfinite.frag.out b/Test/baseResults/hlsl.isfinite.frag.out index 7b8287fc..a68bd1b9 100644 --- a/Test/baseResults/hlsl.isfinite.frag.out +++ b/Test/baseResults/hlsl.isfinite.frag.out @@ -172,7 +172,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 85 Capability Shader diff --git a/Test/baseResults/hlsl.layout.frag.out b/Test/baseResults/hlsl.layout.frag.out index 6a3eb04f..1e4f171d 100644 --- a/Test/baseResults/hlsl.layout.frag.out +++ b/Test/baseResults/hlsl.layout.frag.out @@ -88,7 +88,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 44 Capability Shader diff --git a/Test/baseResults/hlsl.layoutOverride.vert.out b/Test/baseResults/hlsl.layoutOverride.vert.out index 31593aa9..cc09653b 100644 --- a/Test/baseResults/hlsl.layoutOverride.vert.out +++ b/Test/baseResults/hlsl.layoutOverride.vert.out @@ -52,7 +52,7 @@ Shader version: 500 0:? '@entryPointOutput' ( out 4-component vector of float Position) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 32 Capability Shader diff --git a/Test/baseResults/hlsl.load.2dms.dx10.frag.out b/Test/baseResults/hlsl.load.2dms.dx10.frag.out index 8d7f70f3..95977621 100644 --- a/Test/baseResults/hlsl.load.2dms.dx10.frag.out +++ b/Test/baseResults/hlsl.load.2dms.dx10.frag.out @@ -358,7 +358,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 130 Capability Shader diff --git a/Test/baseResults/hlsl.load.array.dx10.frag.out b/Test/baseResults/hlsl.load.array.dx10.frag.out index e5c0f6e1..f26d7dfb 100644 --- a/Test/baseResults/hlsl.load.array.dx10.frag.out +++ b/Test/baseResults/hlsl.load.array.dx10.frag.out @@ -388,7 +388,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 159 Capability Shader diff --git a/Test/baseResults/hlsl.load.basic.dx10.frag.out b/Test/baseResults/hlsl.load.basic.dx10.frag.out index b47e037c..895a1096 100644 --- a/Test/baseResults/hlsl.load.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.load.basic.dx10.frag.out @@ -490,7 +490,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 179 Capability Shader diff --git a/Test/baseResults/hlsl.load.basic.dx10.vert.out b/Test/baseResults/hlsl.load.basic.dx10.vert.out index 99f36673..99a57a74 100644 --- a/Test/baseResults/hlsl.load.basic.dx10.vert.out +++ b/Test/baseResults/hlsl.load.basic.dx10.vert.out @@ -452,7 +452,7 @@ Shader version: 500 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 171 Capability Shader diff --git a/Test/baseResults/hlsl.load.buffer.dx10.frag.out b/Test/baseResults/hlsl.load.buffer.dx10.frag.out index 969a99f6..2255cf56 100644 --- a/Test/baseResults/hlsl.load.buffer.dx10.frag.out +++ b/Test/baseResults/hlsl.load.buffer.dx10.frag.out @@ -166,7 +166,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 72 Capability Shader diff --git a/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out b/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out index d404b27e..08a1c564 100644 --- a/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out +++ b/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out @@ -172,7 +172,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 75 Capability Shader diff --git a/Test/baseResults/hlsl.load.offset.dx10.frag.out b/Test/baseResults/hlsl.load.offset.dx10.frag.out index 089329e0..ebf1bd3b 100644 --- a/Test/baseResults/hlsl.load.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.load.offset.dx10.frag.out @@ -562,7 +562,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 201 Capability Shader diff --git a/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out index 7df846be..297c7377 100644 --- a/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out @@ -436,7 +436,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 174 Capability Shader diff --git a/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out b/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out index 62009e17..7ad197c8 100644 --- a/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out +++ b/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out @@ -110,7 +110,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 57 Capability Shader diff --git a/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out b/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out index f05b335f..77344ac2 100644 --- a/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out +++ b/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out @@ -208,7 +208,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 119 Capability Shader diff --git a/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out b/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out index c6e00ffd..bf9ea2de 100644 --- a/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out +++ b/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out @@ -244,7 +244,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 132 Capability Shader diff --git a/Test/baseResults/hlsl.logical.binary.frag.out b/Test/baseResults/hlsl.logical.binary.frag.out index 5b23a625..1df39664 100644 --- a/Test/baseResults/hlsl.logical.binary.frag.out +++ b/Test/baseResults/hlsl.logical.binary.frag.out @@ -124,7 +124,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 56 Capability Shader diff --git a/Test/baseResults/hlsl.logical.binary.vec.frag.out b/Test/baseResults/hlsl.logical.binary.vec.frag.out index 0e4f852a..bc469dc5 100644 --- a/Test/baseResults/hlsl.logical.binary.vec.frag.out +++ b/Test/baseResults/hlsl.logical.binary.vec.frag.out @@ -254,7 +254,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 115 Capability Shader diff --git a/Test/baseResults/hlsl.logical.unary.frag.out b/Test/baseResults/hlsl.logical.unary.frag.out index b342c349..57247c60 100644 --- a/Test/baseResults/hlsl.logical.unary.frag.out +++ b/Test/baseResults/hlsl.logical.unary.frag.out @@ -184,7 +184,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 84 Capability Shader diff --git a/Test/baseResults/hlsl.logicalConvert.frag.out b/Test/baseResults/hlsl.logicalConvert.frag.out index 6c595f8e..4757f331 100644 --- a/Test/baseResults/hlsl.logicalConvert.frag.out +++ b/Test/baseResults/hlsl.logicalConvert.frag.out @@ -254,7 +254,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 50 Capability Shader diff --git a/Test/baseResults/hlsl.loopattr.frag.out b/Test/baseResults/hlsl.loopattr.frag.out index cc0073ac..c6130f71 100644 --- a/Test/baseResults/hlsl.loopattr.frag.out +++ b/Test/baseResults/hlsl.loopattr.frag.out @@ -136,7 +136,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 54 Capability Shader diff --git a/Test/baseResults/hlsl.matNx1.frag.out b/Test/baseResults/hlsl.matNx1.frag.out index e8e0a7b3..1d92d5f3 100644 --- a/Test/baseResults/hlsl.matNx1.frag.out +++ b/Test/baseResults/hlsl.matNx1.frag.out @@ -153,7 +153,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 77 Capability Shader diff --git a/Test/baseResults/hlsl.matType.bool.frag.out b/Test/baseResults/hlsl.matType.bool.frag.out index b5543d8f..1362ee75 100644 --- a/Test/baseResults/hlsl.matType.bool.frag.out +++ b/Test/baseResults/hlsl.matType.bool.frag.out @@ -233,7 +233,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 130 Capability Shader diff --git a/Test/baseResults/hlsl.matType.frag.out b/Test/baseResults/hlsl.matType.frag.out index 80bb2167..ed089833 100644 --- a/Test/baseResults/hlsl.matType.frag.out +++ b/Test/baseResults/hlsl.matType.frag.out @@ -32,7 +32,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 30 Capability Shader diff --git a/Test/baseResults/hlsl.matType.int.frag.out b/Test/baseResults/hlsl.matType.int.frag.out index a1854aa2..ad0c3142 100644 --- a/Test/baseResults/hlsl.matType.int.frag.out +++ b/Test/baseResults/hlsl.matType.int.frag.out @@ -399,7 +399,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 232 Capability Shader diff --git a/Test/baseResults/hlsl.matpack-1.frag.out b/Test/baseResults/hlsl.matpack-1.frag.out index c0225875..829d0b11 100644 --- a/Test/baseResults/hlsl.matpack-1.frag.out +++ b/Test/baseResults/hlsl.matpack-1.frag.out @@ -100,7 +100,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 39 Capability Shader diff --git a/Test/baseResults/hlsl.matpack-pragma.frag.out b/Test/baseResults/hlsl.matpack-pragma.frag.out index 86e945ec..a5e351e1 100644 --- a/Test/baseResults/hlsl.matpack-pragma.frag.out +++ b/Test/baseResults/hlsl.matpack-pragma.frag.out @@ -170,7 +170,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 44 Capability Shader diff --git a/Test/baseResults/hlsl.matrixSwizzle.vert.out b/Test/baseResults/hlsl.matrixSwizzle.vert.out index 237ce5d4..7bc0c178 100644 --- a/Test/baseResults/hlsl.matrixSwizzle.vert.out +++ b/Test/baseResults/hlsl.matrixSwizzle.vert.out @@ -677,7 +677,7 @@ Shader version: 500 Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 118 Capability Shader diff --git a/Test/baseResults/hlsl.matrixindex.frag.out b/Test/baseResults/hlsl.matrixindex.frag.out index 63ddc4df..1e5fbb96 100644 --- a/Test/baseResults/hlsl.matrixindex.frag.out +++ b/Test/baseResults/hlsl.matrixindex.frag.out @@ -272,7 +272,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 83 Capability Shader diff --git a/Test/baseResults/hlsl.max.frag.out b/Test/baseResults/hlsl.max.frag.out index db215a2c..14cd8bf0 100644 --- a/Test/baseResults/hlsl.max.frag.out +++ b/Test/baseResults/hlsl.max.frag.out @@ -66,7 +66,7 @@ gl_FragCoord origin is upper left 0:? 'input2' (layout( location=1) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 33 Capability Shader diff --git a/Test/baseResults/hlsl.memberFunCall.frag.out b/Test/baseResults/hlsl.memberFunCall.frag.out index 01cb99ad..83dc86f5 100644 --- a/Test/baseResults/hlsl.memberFunCall.frag.out +++ b/Test/baseResults/hlsl.memberFunCall.frag.out @@ -152,7 +152,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 73 Capability Shader diff --git a/Test/baseResults/hlsl.mintypes.frag.out b/Test/baseResults/hlsl.mintypes.frag.out index 4824bcbe..2ce899ba 100644 --- a/Test/baseResults/hlsl.mintypes.frag.out +++ b/Test/baseResults/hlsl.mintypes.frag.out @@ -98,7 +98,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 70 Capability Shader diff --git a/Test/baseResults/hlsl.mip.operator.frag.out b/Test/baseResults/hlsl.mip.operator.frag.out index 478e808f..4123d238 100644 --- a/Test/baseResults/hlsl.mip.operator.frag.out +++ b/Test/baseResults/hlsl.mip.operator.frag.out @@ -128,7 +128,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 61 Capability Shader diff --git a/Test/baseResults/hlsl.mul-truncate.frag.out b/Test/baseResults/hlsl.mul-truncate.frag.out index a7de28c7..c337ed4b 100644 --- a/Test/baseResults/hlsl.mul-truncate.frag.out +++ b/Test/baseResults/hlsl.mul-truncate.frag.out @@ -383,7 +383,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 190 Capability Shader diff --git a/Test/baseResults/hlsl.multiEntry.vert.out b/Test/baseResults/hlsl.multiEntry.vert.out index c051591c..d6415122 100644 --- a/Test/baseResults/hlsl.multiEntry.vert.out +++ b/Test/baseResults/hlsl.multiEntry.vert.out @@ -70,7 +70,7 @@ Shader version: 500 0:? 'Index' ( in uint VertexIndex) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 41 Capability Shader diff --git a/Test/baseResults/hlsl.multiReturn.frag.out b/Test/baseResults/hlsl.multiReturn.frag.out index 6c41c77b..54b5107b 100644 --- a/Test/baseResults/hlsl.multiReturn.frag.out +++ b/Test/baseResults/hlsl.multiReturn.frag.out @@ -48,7 +48,7 @@ gl_FragCoord origin is upper left 0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{ temp float f, temp 3-component vector of float v, temp 3X3 matrix of float m} s}) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 42 Capability Shader diff --git a/Test/baseResults/hlsl.namespace.frag.out b/Test/baseResults/hlsl.namespace.frag.out index 8df43ad7..9431f66d 100644 --- a/Test/baseResults/hlsl.namespace.frag.out +++ b/Test/baseResults/hlsl.namespace.frag.out @@ -103,7 +103,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 54 Capability Shader diff --git a/Test/baseResults/hlsl.nonint-index.frag.out b/Test/baseResults/hlsl.nonint-index.frag.out index 131c1ec0..0b6bdbcd 100644 --- a/Test/baseResults/hlsl.nonint-index.frag.out +++ b/Test/baseResults/hlsl.nonint-index.frag.out @@ -88,7 +88,7 @@ gl_FragCoord origin is upper left 0:? 'input' (layout( location=0) in float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 39 Capability Shader diff --git a/Test/baseResults/hlsl.nonstaticMemberFunction.frag.out b/Test/baseResults/hlsl.nonstaticMemberFunction.frag.out index 1927a4cf..268e5637 100644 --- a/Test/baseResults/hlsl.nonstaticMemberFunction.frag.out +++ b/Test/baseResults/hlsl.nonstaticMemberFunction.frag.out @@ -268,7 +268,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 111 Capability Shader diff --git a/Test/baseResults/hlsl.numericsuffixes.frag.out b/Test/baseResults/hlsl.numericsuffixes.frag.out index b1fa856f..b4332667 100644 --- a/Test/baseResults/hlsl.numericsuffixes.frag.out +++ b/Test/baseResults/hlsl.numericsuffixes.frag.out @@ -192,7 +192,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 54 Capability Shader diff --git a/Test/baseResults/hlsl.numthreads.comp.out b/Test/baseResults/hlsl.numthreads.comp.out index fd7de34b..95cf29fd 100644 --- a/Test/baseResults/hlsl.numthreads.comp.out +++ b/Test/baseResults/hlsl.numthreads.comp.out @@ -44,7 +44,7 @@ local_size = (1, 4, 8) 0:? 'tid' ( in 3-component vector of uint GlobalInvocationID) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 23 Capability Shader diff --git a/Test/baseResults/hlsl.opaque-type-bug.frag.out b/Test/baseResults/hlsl.opaque-type-bug.frag.out index 918b462f..4ac7a91f 100644 --- a/Test/baseResults/hlsl.opaque-type-bug.frag.out +++ b/Test/baseResults/hlsl.opaque-type-bug.frag.out @@ -58,7 +58,7 @@ gl_FragCoord origin is upper left 0:? 'MyTexture' (layout( binding=0) uniform texture2D) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 27 Capability Shader diff --git a/Test/baseResults/hlsl.overload.frag.out b/Test/baseResults/hlsl.overload.frag.out index 5960d3d5..d93c3053 100644 --- a/Test/baseResults/hlsl.overload.frag.out +++ b/Test/baseResults/hlsl.overload.frag.out @@ -734,7 +734,7 @@ gl_FragCoord origin is upper left 0:? 'input' (layout( location=0) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 520 Capability Shader diff --git a/Test/baseResults/hlsl.params.default.frag.out b/Test/baseResults/hlsl.params.default.frag.out index d1ecfa61..5d054bf2 100644 --- a/Test/baseResults/hlsl.params.default.frag.out +++ b/Test/baseResults/hlsl.params.default.frag.out @@ -376,7 +376,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of int) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 178 Capability Shader diff --git a/Test/baseResults/hlsl.partialFlattenLocal.vert.out b/Test/baseResults/hlsl.partialFlattenLocal.vert.out index 46df2061..c3ed3a23 100644 --- a/Test/baseResults/hlsl.partialFlattenLocal.vert.out +++ b/Test/baseResults/hlsl.partialFlattenLocal.vert.out @@ -237,7 +237,7 @@ Shader version: 500 0:? 'pos' (layout( location=0) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 90 Capability Shader diff --git a/Test/baseResults/hlsl.partialFlattenMixed.vert.out b/Test/baseResults/hlsl.partialFlattenMixed.vert.out index da832b4b..520a0fb2 100644 --- a/Test/baseResults/hlsl.partialFlattenMixed.vert.out +++ b/Test/baseResults/hlsl.partialFlattenMixed.vert.out @@ -91,7 +91,7 @@ Shader version: 500 0:? 'pos' (layout( location=0) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 43 Capability Shader diff --git a/Test/baseResults/hlsl.partialInit.frag.out b/Test/baseResults/hlsl.partialInit.frag.out index 6881671e..551c579e 100644 --- a/Test/baseResults/hlsl.partialInit.frag.out +++ b/Test/baseResults/hlsl.partialInit.frag.out @@ -400,7 +400,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 104 Capability Shader diff --git a/Test/baseResults/hlsl.pp.line.frag.out b/Test/baseResults/hlsl.pp.line.frag.out index 2c06fe91..0416cf40 100644 --- a/Test/baseResults/hlsl.pp.line.frag.out +++ b/Test/baseResults/hlsl.pp.line.frag.out @@ -120,7 +120,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 42 Capability Shader diff --git a/Test/baseResults/hlsl.pp.line2.frag.out b/Test/baseResults/hlsl.pp.line2.frag.out index 10bbf6ad..338884a5 100644 --- a/Test/baseResults/hlsl.pp.line2.frag.out +++ b/Test/baseResults/hlsl.pp.line2.frag.out @@ -1,6 +1,6 @@ hlsl.pp.line2.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 80 Capability Shader diff --git a/Test/baseResults/hlsl.pp.line4.frag.out b/Test/baseResults/hlsl.pp.line4.frag.out index ff92b520..1ddb98bc 100644 --- a/Test/baseResults/hlsl.pp.line4.frag.out +++ b/Test/baseResults/hlsl.pp.line4.frag.out @@ -1,6 +1,6 @@ hlsl.pp.line4.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 115 Capability Shader diff --git a/Test/baseResults/hlsl.pp.vert.out b/Test/baseResults/hlsl.pp.vert.out index 24ddfd1d..5d4e9434 100644 --- a/Test/baseResults/hlsl.pp.vert.out +++ b/Test/baseResults/hlsl.pp.vert.out @@ -26,7 +26,7 @@ Shader version: 500 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int goodGlobal1, uniform int goodGlobal2}) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 13 Capability Shader diff --git a/Test/baseResults/hlsl.precedence.frag.out b/Test/baseResults/hlsl.precedence.frag.out index f4c53389..b51be0dd 100644 --- a/Test/baseResults/hlsl.precedence.frag.out +++ b/Test/baseResults/hlsl.precedence.frag.out @@ -148,7 +148,7 @@ gl_FragCoord origin is upper left 0:? 'a4' (layout( location=3) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 65 Capability Shader diff --git a/Test/baseResults/hlsl.precedence2.frag.out b/Test/baseResults/hlsl.precedence2.frag.out index 9ce674d6..7dd21a62 100644 --- a/Test/baseResults/hlsl.precedence2.frag.out +++ b/Test/baseResults/hlsl.precedence2.frag.out @@ -114,7 +114,7 @@ gl_FragCoord origin is upper left 0:? 'a4' (layout( location=3) flat in int) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 56 Capability Shader diff --git a/Test/baseResults/hlsl.precise.frag.out b/Test/baseResults/hlsl.precise.frag.out index dd450690..84b26481 100644 --- a/Test/baseResults/hlsl.precise.frag.out +++ b/Test/baseResults/hlsl.precise.frag.out @@ -76,7 +76,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.color' (layout( location=0) noContraction out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 37 Capability Shader diff --git a/Test/baseResults/hlsl.preprocessor.frag.out b/Test/baseResults/hlsl.preprocessor.frag.out index 3c36530e..11ec1ad2 100644 --- a/Test/baseResults/hlsl.preprocessor.frag.out +++ b/Test/baseResults/hlsl.preprocessor.frag.out @@ -94,7 +94,7 @@ gl_FragCoord origin is upper left 0:? 'input' (layout( location=0) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 40 Capability Shader diff --git a/Test/baseResults/hlsl.promote.atomic.frag.out b/Test/baseResults/hlsl.promote.atomic.frag.out index bd781bdb..4d56fbab 100644 --- a/Test/baseResults/hlsl.promote.atomic.frag.out +++ b/Test/baseResults/hlsl.promote.atomic.frag.out @@ -64,7 +64,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 36 Capability Shader diff --git a/Test/baseResults/hlsl.promote.binary.frag.out b/Test/baseResults/hlsl.promote.binary.frag.out index 624a5062..f63fc3eb 100644 --- a/Test/baseResults/hlsl.promote.binary.frag.out +++ b/Test/baseResults/hlsl.promote.binary.frag.out @@ -172,7 +172,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 83 Capability Shader diff --git a/Test/baseResults/hlsl.promote.vec1.frag.out b/Test/baseResults/hlsl.promote.vec1.frag.out index b92d7409..a6ad7ca9 100644 --- a/Test/baseResults/hlsl.promote.vec1.frag.out +++ b/Test/baseResults/hlsl.promote.vec1.frag.out @@ -80,7 +80,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 31 Capability Shader diff --git a/Test/baseResults/hlsl.promotions.frag.out b/Test/baseResults/hlsl.promotions.frag.out index cb799831..0a17395f 100644 --- a/Test/baseResults/hlsl.promotions.frag.out +++ b/Test/baseResults/hlsl.promotions.frag.out @@ -1582,7 +1582,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 596 Capability Shader diff --git a/Test/baseResults/hlsl.rw.atomics.frag.out b/Test/baseResults/hlsl.rw.atomics.frag.out index 02aa00ca..77b140b4 100644 --- a/Test/baseResults/hlsl.rw.atomics.frag.out +++ b/Test/baseResults/hlsl.rw.atomics.frag.out @@ -3946,7 +3946,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 1147 Capability Shader diff --git a/Test/baseResults/hlsl.rw.bracket.frag.out b/Test/baseResults/hlsl.rw.bracket.frag.out index dc60a297..70f8bbe4 100644 --- a/Test/baseResults/hlsl.rw.bracket.frag.out +++ b/Test/baseResults/hlsl.rw.bracket.frag.out @@ -1744,7 +1744,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 607 Capability Shader diff --git a/Test/baseResults/hlsl.rw.register.frag.out b/Test/baseResults/hlsl.rw.register.frag.out index 01f6c89c..6004512b 100644 --- a/Test/baseResults/hlsl.rw.register.frag.out +++ b/Test/baseResults/hlsl.rw.register.frag.out @@ -98,7 +98,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 42 Capability Shader diff --git a/Test/baseResults/hlsl.rw.scalar.bracket.frag.out b/Test/baseResults/hlsl.rw.scalar.bracket.frag.out index aabee593..a8e33ddc 100644 --- a/Test/baseResults/hlsl.rw.scalar.bracket.frag.out +++ b/Test/baseResults/hlsl.rw.scalar.bracket.frag.out @@ -1690,7 +1690,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 571 Capability Shader diff --git a/Test/baseResults/hlsl.rw.swizzle.frag.out b/Test/baseResults/hlsl.rw.swizzle.frag.out index 089c6037..267d7339 100644 --- a/Test/baseResults/hlsl.rw.swizzle.frag.out +++ b/Test/baseResults/hlsl.rw.swizzle.frag.out @@ -202,7 +202,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 63 Capability Shader diff --git a/Test/baseResults/hlsl.rw.vec2.bracket.frag.out b/Test/baseResults/hlsl.rw.vec2.bracket.frag.out index a3b52379..06c24e75 100644 --- a/Test/baseResults/hlsl.rw.vec2.bracket.frag.out +++ b/Test/baseResults/hlsl.rw.vec2.bracket.frag.out @@ -1708,7 +1708,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 605 Capability Shader diff --git a/Test/baseResults/hlsl.sample.array.dx10.frag.out b/Test/baseResults/hlsl.sample.array.dx10.frag.out index 9066a1d7..2d005310 100644 --- a/Test/baseResults/hlsl.sample.array.dx10.frag.out +++ b/Test/baseResults/hlsl.sample.array.dx10.frag.out @@ -322,7 +322,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 146 Capability Shader diff --git a/Test/baseResults/hlsl.sample.basic.dx10.frag.out b/Test/baseResults/hlsl.sample.basic.dx10.frag.out index 0940e101..17609029 100644 --- a/Test/baseResults/hlsl.sample.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.sample.basic.dx10.frag.out @@ -550,7 +550,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 198 Capability Shader diff --git a/Test/baseResults/hlsl.sample.dx9.frag.out b/Test/baseResults/hlsl.sample.dx9.frag.out index 7b3432af..ce6d5464 100644 --- a/Test/baseResults/hlsl.sample.dx9.frag.out +++ b/Test/baseResults/hlsl.sample.dx9.frag.out @@ -378,7 +378,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 135 Capability Shader diff --git a/Test/baseResults/hlsl.sample.dx9.vert.out b/Test/baseResults/hlsl.sample.dx9.vert.out index 732b0439..2b29c0c4 100644 --- a/Test/baseResults/hlsl.sample.dx9.vert.out +++ b/Test/baseResults/hlsl.sample.dx9.vert.out @@ -154,7 +154,7 @@ Shader version: 500 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 64 Capability Shader diff --git a/Test/baseResults/hlsl.sample.offset.dx10.frag.out b/Test/baseResults/hlsl.sample.offset.dx10.frag.out index 5eadb4a6..b641ad24 100644 --- a/Test/baseResults/hlsl.sample.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.sample.offset.dx10.frag.out @@ -364,7 +364,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 161 Capability Shader diff --git a/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out index edc5d314..54dc4679 100644 --- a/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out @@ -274,7 +274,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 118 Capability Shader diff --git a/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out b/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out index cc44567a..8aa0e7fe 100644 --- a/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out +++ b/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out @@ -154,7 +154,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 72 Capability Shader diff --git a/Test/baseResults/hlsl.samplebias.array.dx10.frag.out b/Test/baseResults/hlsl.samplebias.array.dx10.frag.out index c229502d..aec493db 100644 --- a/Test/baseResults/hlsl.samplebias.array.dx10.frag.out +++ b/Test/baseResults/hlsl.samplebias.array.dx10.frag.out @@ -358,7 +358,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 146 Capability Shader diff --git a/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out b/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out index c840fa4e..9a29c6d8 100644 --- a/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out @@ -424,7 +424,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 170 Capability Shader diff --git a/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out b/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out index be4b4f82..fb78b6c0 100644 --- a/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out @@ -401,7 +401,7 @@ using depth_any Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 161 Capability Shader diff --git a/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out index ae33f407..8b7bd373 100644 --- a/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out @@ -299,7 +299,7 @@ using depth_any Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 118 Capability Shader diff --git a/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out index 54cbc047..8d0ff463 100644 --- a/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out @@ -399,7 +399,7 @@ using depth_any Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 209 Capability Shader diff --git a/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out index 90e11731..c44f16bf 100644 --- a/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out @@ -381,7 +381,7 @@ using depth_any Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 198 Capability Shader diff --git a/Test/baseResults/hlsl.samplecmp.dualmode.frag.out b/Test/baseResults/hlsl.samplecmp.dualmode.frag.out index 7bcf0852..fd5dd3e1 100644 --- a/Test/baseResults/hlsl.samplecmp.dualmode.frag.out +++ b/Test/baseResults/hlsl.samplecmp.dualmode.frag.out @@ -85,7 +85,7 @@ gl_FragCoord origin is upper left 0:? 'g_tTex' (layout( binding=3) uniform texture1D) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 43 Capability Shader diff --git a/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out index 29d02dab..ca0fb8ca 100644 --- a/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out @@ -327,7 +327,7 @@ using depth_any Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 167 Capability Shader diff --git a/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out index bf7b6f02..3d0b8fd6 100644 --- a/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out @@ -339,7 +339,7 @@ using depth_any Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 178 Capability Shader diff --git a/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out index 5b21f702..ce13388e 100644 --- a/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out @@ -435,7 +435,7 @@ using depth_any Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 210 Capability Shader diff --git a/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out index fae6899e..4bf15ece 100644 --- a/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out @@ -417,7 +417,7 @@ using depth_any Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 199 Capability Shader diff --git a/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out index 0987ea83..b85daf03 100644 --- a/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out @@ -351,7 +351,7 @@ using depth_any Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 168 Capability Shader diff --git a/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out index 74345146..6f460d0c 100644 --- a/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out @@ -363,7 +363,7 @@ using depth_any Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 179 Capability Shader diff --git a/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out index 67b5692d..b2922a1a 100644 --- a/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out +++ b/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out @@ -430,7 +430,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 140 Capability Shader diff --git a/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out index 7edb8dad..161821ee 100644 --- a/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out @@ -532,7 +532,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 175 Capability Shader diff --git a/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out b/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out index 979d48f5..b683d98e 100644 --- a/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out +++ b/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out @@ -494,7 +494,7 @@ Shader version: 500 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 166 Capability Shader diff --git a/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out index 2620a67c..81fbc0bd 100644 --- a/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out @@ -472,7 +472,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 166 Capability Shader diff --git a/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out index 87ad78be..01ca547f 100644 --- a/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out @@ -340,7 +340,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 120 Capability Shader diff --git a/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out index 4f079507..a5ff45a8 100644 --- a/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out +++ b/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out @@ -358,7 +358,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 147 Capability Shader diff --git a/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out index ee982cc2..6b91c173 100644 --- a/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out @@ -426,7 +426,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 172 Capability Shader diff --git a/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out b/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out index 0a8ae49a..8f395ed5 100644 --- a/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out +++ b/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out @@ -386,7 +386,7 @@ Shader version: 500 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 162 Capability Shader diff --git a/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out index b007ee10..10b48ecc 100644 --- a/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out @@ -400,7 +400,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 162 Capability Shader diff --git a/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out index 302bc81e..5fb25a00 100644 --- a/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out @@ -298,7 +298,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 119 Capability Shader diff --git a/Test/baseResults/hlsl.scalar-length.frag.out b/Test/baseResults/hlsl.scalar-length.frag.out index aa11af55..ec808973 100644 --- a/Test/baseResults/hlsl.scalar-length.frag.out +++ b/Test/baseResults/hlsl.scalar-length.frag.out @@ -64,7 +64,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 30 Capability Shader diff --git a/Test/baseResults/hlsl.scalar2matrix.frag.out b/Test/baseResults/hlsl.scalar2matrix.frag.out index 57d250eb..cb996f6a 100644 --- a/Test/baseResults/hlsl.scalar2matrix.frag.out +++ b/Test/baseResults/hlsl.scalar2matrix.frag.out @@ -374,7 +374,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 96 Capability Shader diff --git a/Test/baseResults/hlsl.scalarCast.vert.out b/Test/baseResults/hlsl.scalarCast.vert.out index 0e07c9f6..40f0f204 100644 --- a/Test/baseResults/hlsl.scalarCast.vert.out +++ b/Test/baseResults/hlsl.scalarCast.vert.out @@ -322,7 +322,7 @@ Shader version: 500 0:? '@entryPointOutput.texCoord' (layout( location=0) out 2-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 120 Capability Shader diff --git a/Test/baseResults/hlsl.scope.frag.out b/Test/baseResults/hlsl.scope.frag.out index b563380e..882158e0 100644 --- a/Test/baseResults/hlsl.scope.frag.out +++ b/Test/baseResults/hlsl.scope.frag.out @@ -102,7 +102,7 @@ gl_FragCoord origin is upper left 0:? 'input' (layout( location=0) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 49 Capability Shader diff --git a/Test/baseResults/hlsl.self_cast.frag.out b/Test/baseResults/hlsl.self_cast.frag.out index 9d398ed9..6f0e1dd6 100644 --- a/Test/baseResults/hlsl.self_cast.frag.out +++ b/Test/baseResults/hlsl.self_cast.frag.out @@ -68,7 +68,7 @@ gl_FragCoord origin is upper left 0:? Linker Objects // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 32 Capability Shader diff --git a/Test/baseResults/hlsl.semantic-1.vert.out b/Test/baseResults/hlsl.semantic-1.vert.out index b5e40913..96c14a98 100644 --- a/Test/baseResults/hlsl.semantic-1.vert.out +++ b/Test/baseResults/hlsl.semantic-1.vert.out @@ -242,7 +242,7 @@ Shader version: 500 0:? 'v' (layout( location=0) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 84 Capability Shader diff --git a/Test/baseResults/hlsl.semantic.geom.out b/Test/baseResults/hlsl.semantic.geom.out index 773c8aa3..daf4eed2 100644 --- a/Test/baseResults/hlsl.semantic.geom.out +++ b/Test/baseResults/hlsl.semantic.geom.out @@ -157,7 +157,7 @@ output primitive = line_strip Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 65 Capability Geometry diff --git a/Test/baseResults/hlsl.semantic.vert.out b/Test/baseResults/hlsl.semantic.vert.out index 2dbcd57f..144df05e 100644 --- a/Test/baseResults/hlsl.semantic.vert.out +++ b/Test/baseResults/hlsl.semantic.vert.out @@ -210,7 +210,7 @@ Shader version: 500 0:? '@entryPointOutput.cull1' ( out 2-element array of float CullDistance) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 70 Capability Shader diff --git a/Test/baseResults/hlsl.semicolons.frag.out b/Test/baseResults/hlsl.semicolons.frag.out index 94307a6a..b45f59de 100644 --- a/Test/baseResults/hlsl.semicolons.frag.out +++ b/Test/baseResults/hlsl.semicolons.frag.out @@ -74,7 +74,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 31 Capability Shader diff --git a/Test/baseResults/hlsl.shapeConv.frag.out b/Test/baseResults/hlsl.shapeConv.frag.out index d2838099..8da8d48a 100644 --- a/Test/baseResults/hlsl.shapeConv.frag.out +++ b/Test/baseResults/hlsl.shapeConv.frag.out @@ -319,7 +319,7 @@ gl_FragCoord origin is upper left 0:? Linker Objects // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 127 Capability Shader diff --git a/Test/baseResults/hlsl.shapeConvRet.frag.out b/Test/baseResults/hlsl.shapeConvRet.frag.out index fc12f7f0..efcbe04d 100644 --- a/Test/baseResults/hlsl.shapeConvRet.frag.out +++ b/Test/baseResults/hlsl.shapeConvRet.frag.out @@ -68,7 +68,7 @@ gl_FragCoord origin is upper left 0:? 'f' (layout( location=0) in float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 35 Capability Shader diff --git a/Test/baseResults/hlsl.sin.frag.out b/Test/baseResults/hlsl.sin.frag.out index b92085e4..3128cec7 100644 --- a/Test/baseResults/hlsl.sin.frag.out +++ b/Test/baseResults/hlsl.sin.frag.out @@ -52,7 +52,7 @@ gl_FragCoord origin is upper left 0:? 'input' (layout( location=0) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 26 Capability Shader diff --git a/Test/baseResults/hlsl.snorm.uav.comp.out b/Test/baseResults/hlsl.snorm.uav.comp.out index 4c5e6039..739d77d8 100644 --- a/Test/baseResults/hlsl.snorm.uav.comp.out +++ b/Test/baseResults/hlsl.snorm.uav.comp.out @@ -112,7 +112,7 @@ local_size = (16, 16, 1) 0:? 'tid' ( in 3-component vector of uint GlobalInvocationID) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 54 Capability Shader diff --git a/Test/baseResults/hlsl.specConstant.frag.out b/Test/baseResults/hlsl.specConstant.frag.out index c2942e34..fdcc2a01 100755 --- a/Test/baseResults/hlsl.specConstant.frag.out +++ b/Test/baseResults/hlsl.specConstant.frag.out @@ -136,7 +136,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 61 Capability Shader diff --git a/Test/baseResults/hlsl.staticFuncInit.frag.out b/Test/baseResults/hlsl.staticFuncInit.frag.out index d468cec3..04924ed4 100644 --- a/Test/baseResults/hlsl.staticFuncInit.frag.out +++ b/Test/baseResults/hlsl.staticFuncInit.frag.out @@ -130,7 +130,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 57 Capability Shader diff --git a/Test/baseResults/hlsl.staticMemberFunction.frag.out b/Test/baseResults/hlsl.staticMemberFunction.frag.out index 2c7e4180..5ae189d7 100644 --- a/Test/baseResults/hlsl.staticMemberFunction.frag.out +++ b/Test/baseResults/hlsl.staticMemberFunction.frag.out @@ -118,7 +118,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 54 Capability Shader diff --git a/Test/baseResults/hlsl.store.rwbyteaddressbuffer.type.comp.out b/Test/baseResults/hlsl.store.rwbyteaddressbuffer.type.comp.out index 29a14c48..f5e004d2 100644 --- a/Test/baseResults/hlsl.store.rwbyteaddressbuffer.type.comp.out +++ b/Test/baseResults/hlsl.store.rwbyteaddressbuffer.type.comp.out @@ -96,7 +96,7 @@ local_size = (64, 1, 1) 0:? 'dispatchThreadID' ( in 3-component vector of uint GlobalInvocationID) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 42 Capability Shader diff --git a/Test/baseResults/hlsl.string.frag.out b/Test/baseResults/hlsl.string.frag.out index 9181b933..6ee1945a 100644 --- a/Test/baseResults/hlsl.string.frag.out +++ b/Test/baseResults/hlsl.string.frag.out @@ -50,7 +50,7 @@ gl_FragCoord origin is upper left 0:? 'f' (layout( location=0) in float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 24 Capability Shader diff --git a/Test/baseResults/hlsl.stringtoken.frag.out b/Test/baseResults/hlsl.stringtoken.frag.out index 15263c58..1b6e0a8c 100644 --- a/Test/baseResults/hlsl.stringtoken.frag.out +++ b/Test/baseResults/hlsl.stringtoken.frag.out @@ -70,7 +70,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 34 Capability Shader diff --git a/Test/baseResults/hlsl.struct.frag.out b/Test/baseResults/hlsl.struct.frag.out index 192041fa..a255b367 100644 --- a/Test/baseResults/hlsl.struct.frag.out +++ b/Test/baseResults/hlsl.struct.frag.out @@ -213,7 +213,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 102 Capability Shader diff --git a/Test/baseResults/hlsl.struct.split-1.vert.out b/Test/baseResults/hlsl.struct.split-1.vert.out index d7d6e92b..8c25ca26 100644 --- a/Test/baseResults/hlsl.struct.split-1.vert.out +++ b/Test/baseResults/hlsl.struct.split-1.vert.out @@ -196,7 +196,7 @@ Shader version: 500 0:? 'Pos_loose' (layout( location=3) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 70 Capability Shader diff --git a/Test/baseResults/hlsl.struct.split.array.geom.out b/Test/baseResults/hlsl.struct.split.array.geom.out index 081b05cb..c489ffb1 100644 --- a/Test/baseResults/hlsl.struct.split.array.geom.out +++ b/Test/baseResults/hlsl.struct.split.array.geom.out @@ -160,7 +160,7 @@ output primitive = triangle_strip 0:? 'OutputStream.VertexID' (layout( location=2) out uint) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 82 Capability Geometry diff --git a/Test/baseResults/hlsl.struct.split.assign.frag.out b/Test/baseResults/hlsl.struct.split.assign.frag.out index 24c88795..3209ab76 100644 --- a/Test/baseResults/hlsl.struct.split.assign.frag.out +++ b/Test/baseResults/hlsl.struct.split.assign.frag.out @@ -209,7 +209,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 66 Capability Shader diff --git a/Test/baseResults/hlsl.struct.split.call.vert.out b/Test/baseResults/hlsl.struct.split.call.vert.out index 50d1d2b1..7c65c065 100644 --- a/Test/baseResults/hlsl.struct.split.call.vert.out +++ b/Test/baseResults/hlsl.struct.split.call.vert.out @@ -214,7 +214,7 @@ Shader version: 500 0:? 'vsin.x1_in' (layout( location=2) in int) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 77 Capability Shader diff --git a/Test/baseResults/hlsl.struct.split.nested.geom.out b/Test/baseResults/hlsl.struct.split.nested.geom.out index 7a72a3f8..75b5003d 100644 --- a/Test/baseResults/hlsl.struct.split.nested.geom.out +++ b/Test/baseResults/hlsl.struct.split.nested.geom.out @@ -448,7 +448,7 @@ output primitive = triangle_strip 0:? 'ts.contains_no_builtin_io.m1' (layout( location=3) out int) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 100 Capability Geometry diff --git a/Test/baseResults/hlsl.struct.split.trivial.geom.out b/Test/baseResults/hlsl.struct.split.trivial.geom.out index 477fbd20..ecb929e3 100644 --- a/Test/baseResults/hlsl.struct.split.trivial.geom.out +++ b/Test/baseResults/hlsl.struct.split.trivial.geom.out @@ -192,7 +192,7 @@ output primitive = triangle_strip 0:? 'ts.pos' ( out 4-component vector of float Position) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 67 Capability Geometry diff --git a/Test/baseResults/hlsl.struct.split.trivial.vert.out b/Test/baseResults/hlsl.struct.split.trivial.vert.out index 8bf477e6..f516ea09 100644 --- a/Test/baseResults/hlsl.struct.split.trivial.vert.out +++ b/Test/baseResults/hlsl.struct.split.trivial.vert.out @@ -98,7 +98,7 @@ Shader version: 500 0:? 'Pos_loose' (layout( location=1) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 45 Capability Shader diff --git a/Test/baseResults/hlsl.structIoFourWay.frag.out b/Test/baseResults/hlsl.structIoFourWay.frag.out index 9938be8b..ae470376 100644 --- a/Test/baseResults/hlsl.structIoFourWay.frag.out +++ b/Test/baseResults/hlsl.structIoFourWay.frag.out @@ -162,7 +162,7 @@ using depth_greater 0:? 't.normal' (layout( location=3) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 65 Capability Shader diff --git a/Test/baseResults/hlsl.structStructName.frag.out b/Test/baseResults/hlsl.structStructName.frag.out index 183dcf63..6e767e48 100644 --- a/Test/baseResults/hlsl.structStructName.frag.out +++ b/Test/baseResults/hlsl.structStructName.frag.out @@ -44,7 +44,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out int) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 22 Capability Shader diff --git a/Test/baseResults/hlsl.structarray.flatten.frag.out b/Test/baseResults/hlsl.structarray.flatten.frag.out index 5d34aece..b654c32e 100644 --- a/Test/baseResults/hlsl.structarray.flatten.frag.out +++ b/Test/baseResults/hlsl.structarray.flatten.frag.out @@ -157,7 +157,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 80 Capability Shader diff --git a/Test/baseResults/hlsl.structarray.flatten.geom.out b/Test/baseResults/hlsl.structarray.flatten.geom.out index f88118d6..426214be 100644 --- a/Test/baseResults/hlsl.structarray.flatten.geom.out +++ b/Test/baseResults/hlsl.structarray.flatten.geom.out @@ -170,7 +170,7 @@ output primitive = triangle_strip 0:? 'outStream.uv' (layout( location=1) out 2-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 58 Capability Geometry diff --git a/Test/baseResults/hlsl.structbuffer.append.fn.frag.out b/Test/baseResults/hlsl.structbuffer.append.fn.frag.out index 36050fb3..c61b1d85 100644 --- a/Test/baseResults/hlsl.structbuffer.append.fn.frag.out +++ b/Test/baseResults/hlsl.structbuffer.append.fn.frag.out @@ -151,7 +151,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 70 Capability Shader diff --git a/Test/baseResults/hlsl.structbuffer.append.frag.out b/Test/baseResults/hlsl.structbuffer.append.frag.out index 2e5c5641..e213b4b4 100644 --- a/Test/baseResults/hlsl.structbuffer.append.frag.out +++ b/Test/baseResults/hlsl.structbuffer.append.frag.out @@ -124,7 +124,7 @@ gl_FragCoord origin is upper left 0:? 'pos' (layout( location=0) flat in uint) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 56 Capability Shader diff --git a/Test/baseResults/hlsl.structbuffer.atomics.frag.out b/Test/baseResults/hlsl.structbuffer.atomics.frag.out index e242cf6f..d038fbd8 100644 --- a/Test/baseResults/hlsl.structbuffer.atomics.frag.out +++ b/Test/baseResults/hlsl.structbuffer.atomics.frag.out @@ -475,7 +475,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 87 Capability Shader diff --git a/Test/baseResults/hlsl.structbuffer.byte.frag.out b/Test/baseResults/hlsl.structbuffer.byte.frag.out index 26c7a060..e0f11319 100644 --- a/Test/baseResults/hlsl.structbuffer.byte.frag.out +++ b/Test/baseResults/hlsl.structbuffer.byte.frag.out @@ -324,7 +324,7 @@ gl_FragCoord origin is upper left 0:? 'pos' (layout( location=0) flat in uint) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 114 Capability Shader diff --git a/Test/baseResults/hlsl.structbuffer.coherent.frag.out b/Test/baseResults/hlsl.structbuffer.coherent.frag.out index 96f1b978..34b029b8 100644 --- a/Test/baseResults/hlsl.structbuffer.coherent.frag.out +++ b/Test/baseResults/hlsl.structbuffer.coherent.frag.out @@ -176,7 +176,7 @@ gl_FragCoord origin is upper left 0:? 'pos' (layout( location=0) flat in uint) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 78 Capability Shader diff --git a/Test/baseResults/hlsl.structbuffer.floatidx.comp.out b/Test/baseResults/hlsl.structbuffer.floatidx.comp.out index fbb07c29..e1c5466a 100644 --- a/Test/baseResults/hlsl.structbuffer.floatidx.comp.out +++ b/Test/baseResults/hlsl.structbuffer.floatidx.comp.out @@ -180,7 +180,7 @@ local_size = (1, 1, 1) 0:? 'nThreadId' ( in 3-component vector of uint GlobalInvocationID) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 85 Capability Shader diff --git a/Test/baseResults/hlsl.structbuffer.fn.frag.out b/Test/baseResults/hlsl.structbuffer.fn.frag.out index 085d9dd0..1df58802 100644 --- a/Test/baseResults/hlsl.structbuffer.fn.frag.out +++ b/Test/baseResults/hlsl.structbuffer.fn.frag.out @@ -139,7 +139,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 78 Capability Shader diff --git a/Test/baseResults/hlsl.structbuffer.fn2.comp.out b/Test/baseResults/hlsl.structbuffer.fn2.comp.out index 517b48c8..d25446b3 100644 --- a/Test/baseResults/hlsl.structbuffer.fn2.comp.out +++ b/Test/baseResults/hlsl.structbuffer.fn2.comp.out @@ -136,7 +136,7 @@ local_size = (256, 1, 1) 0:? 'dispatchId' ( in 3-component vector of uint GlobalInvocationID) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 63 Capability Shader diff --git a/Test/baseResults/hlsl.structbuffer.frag.out b/Test/baseResults/hlsl.structbuffer.frag.out index 046c74d8..38e915d9 100644 --- a/Test/baseResults/hlsl.structbuffer.frag.out +++ b/Test/baseResults/hlsl.structbuffer.frag.out @@ -188,7 +188,7 @@ gl_FragCoord origin is upper left 0:? 'pos' (layout( location=0) flat in uint) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 96 Capability Shader diff --git a/Test/baseResults/hlsl.structbuffer.incdec.frag.out b/Test/baseResults/hlsl.structbuffer.incdec.frag.out index 452e9eeb..b9c16304 100644 --- a/Test/baseResults/hlsl.structbuffer.incdec.frag.out +++ b/Test/baseResults/hlsl.structbuffer.incdec.frag.out @@ -204,7 +204,7 @@ gl_FragCoord origin is upper left 0:? 'pos' (layout( location=0) flat in uint) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 70 Capability Shader diff --git a/Test/baseResults/hlsl.structbuffer.rw.frag.out b/Test/baseResults/hlsl.structbuffer.rw.frag.out index 49ba89ea..fbd48a27 100644 --- a/Test/baseResults/hlsl.structbuffer.rw.frag.out +++ b/Test/baseResults/hlsl.structbuffer.rw.frag.out @@ -176,7 +176,7 @@ gl_FragCoord origin is upper left 0:? 'pos' (layout( location=0) flat in uint) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 78 Capability Shader diff --git a/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out b/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out index 00a055e0..a061eace 100644 --- a/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out +++ b/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out @@ -1004,7 +1004,7 @@ gl_FragCoord origin is upper left 0:? 'pos' (layout( location=0) flat in uint) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 239 Capability Shader diff --git a/Test/baseResults/hlsl.structin.vert.out b/Test/baseResults/hlsl.structin.vert.out index d7f539d0..ad9c0d42 100644 --- a/Test/baseResults/hlsl.structin.vert.out +++ b/Test/baseResults/hlsl.structin.vert.out @@ -340,7 +340,7 @@ Shader version: 500 0:? 'e' (layout( location=5) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 94 Capability Shader diff --git a/Test/baseResults/hlsl.subpass.frag.out b/Test/baseResults/hlsl.subpass.frag.out index ad5a0132..8d480281 100644 --- a/Test/baseResults/hlsl.subpass.frag.out +++ b/Test/baseResults/hlsl.subpass.frag.out @@ -430,7 +430,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 204 Capability Shader diff --git a/Test/baseResults/hlsl.switch.frag.out b/Test/baseResults/hlsl.switch.frag.out index b72891ea..b94187d7 100644 --- a/Test/baseResults/hlsl.switch.frag.out +++ b/Test/baseResults/hlsl.switch.frag.out @@ -296,7 +296,7 @@ gl_FragCoord origin is upper left 0:? 'd' (layout( location=2) flat in int) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 106 Capability Shader diff --git a/Test/baseResults/hlsl.swizzle.frag.out b/Test/baseResults/hlsl.swizzle.frag.out index c734d509..87ccdc7b 100644 --- a/Test/baseResults/hlsl.swizzle.frag.out +++ b/Test/baseResults/hlsl.swizzle.frag.out @@ -77,7 +77,7 @@ gl_FragCoord origin is upper left 0:? 'AmbientColor' ( global 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 30 Capability Shader diff --git a/Test/baseResults/hlsl.synthesizeInput.frag.out b/Test/baseResults/hlsl.synthesizeInput.frag.out index bbe97434..31f7b7a0 100644 --- a/Test/baseResults/hlsl.synthesizeInput.frag.out +++ b/Test/baseResults/hlsl.synthesizeInput.frag.out @@ -98,7 +98,7 @@ gl_FragCoord origin is upper left 0:? 'input.no_interp' (layout( location=1) flat in uint) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 44 Capability Shader diff --git a/Test/baseResults/hlsl.target.frag.out b/Test/baseResults/hlsl.target.frag.out index 00017968..0ab23e8e 100644 --- a/Test/baseResults/hlsl.target.frag.out +++ b/Test/baseResults/hlsl.target.frag.out @@ -114,7 +114,7 @@ gl_FragCoord origin is upper left 0:? 'out2' (layout( location=3) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 50 Capability Shader diff --git a/Test/baseResults/hlsl.targetStruct1.frag.out b/Test/baseResults/hlsl.targetStruct1.frag.out index 371ce2a1..93d787c1 100644 --- a/Test/baseResults/hlsl.targetStruct1.frag.out +++ b/Test/baseResults/hlsl.targetStruct1.frag.out @@ -184,7 +184,7 @@ gl_FragCoord origin is upper left 0:? 'po' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 65 Capability Shader diff --git a/Test/baseResults/hlsl.targetStruct2.frag.out b/Test/baseResults/hlsl.targetStruct2.frag.out index e6099c9e..0fae66fa 100644 --- a/Test/baseResults/hlsl.targetStruct2.frag.out +++ b/Test/baseResults/hlsl.targetStruct2.frag.out @@ -184,7 +184,7 @@ gl_FragCoord origin is upper left 0:? 'po' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 65 Capability Shader diff --git a/Test/baseResults/hlsl.templatetypes.frag.out b/Test/baseResults/hlsl.templatetypes.frag.out index 3fc5846a..1dcfc46f 100644 --- a/Test/baseResults/hlsl.templatetypes.frag.out +++ b/Test/baseResults/hlsl.templatetypes.frag.out @@ -508,7 +508,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 153 Capability Shader diff --git a/Test/baseResults/hlsl.texture.struct.frag.out b/Test/baseResults/hlsl.texture.struct.frag.out index 6fc54285..7835d322 100644 --- a/Test/baseResults/hlsl.texture.struct.frag.out +++ b/Test/baseResults/hlsl.texture.struct.frag.out @@ -839,7 +839,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 240 Capability Shader diff --git a/Test/baseResults/hlsl.texture.subvec4.frag.out b/Test/baseResults/hlsl.texture.subvec4.frag.out index 1beb027d..01f32da6 100644 --- a/Test/baseResults/hlsl.texture.subvec4.frag.out +++ b/Test/baseResults/hlsl.texture.subvec4.frag.out @@ -356,7 +356,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 130 Capability Shader diff --git a/Test/baseResults/hlsl.texturebuffer.frag.out b/Test/baseResults/hlsl.texturebuffer.frag.out index 0f761af0..1aa9dbc3 100644 --- a/Test/baseResults/hlsl.texturebuffer.frag.out +++ b/Test/baseResults/hlsl.texturebuffer.frag.out @@ -70,7 +70,7 @@ gl_FragCoord origin is upper left 0:? 'pos' ( in 4-component vector of float FragCoord) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 39 Capability Shader diff --git a/Test/baseResults/hlsl.this.frag.out b/Test/baseResults/hlsl.this.frag.out index ac5fde8b..f32f109e 100644 --- a/Test/baseResults/hlsl.this.frag.out +++ b/Test/baseResults/hlsl.this.frag.out @@ -240,7 +240,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 98 Capability Shader diff --git a/Test/baseResults/hlsl.tristream-append.geom.out b/Test/baseResults/hlsl.tristream-append.geom.out index 94344cdd..514ce168 100644 --- a/Test/baseResults/hlsl.tristream-append.geom.out +++ b/Test/baseResults/hlsl.tristream-append.geom.out @@ -107,7 +107,7 @@ output primitive = triangle_strip Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 57 Capability Geometry diff --git a/Test/baseResults/hlsl.tx.bracket.frag.out b/Test/baseResults/hlsl.tx.bracket.frag.out index f5c82880..0e8fb5c3 100644 --- a/Test/baseResults/hlsl.tx.bracket.frag.out +++ b/Test/baseResults/hlsl.tx.bracket.frag.out @@ -422,7 +422,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 188 Capability Shader diff --git a/Test/baseResults/hlsl.tx.overload.frag.out b/Test/baseResults/hlsl.tx.overload.frag.out index 32779544..8556b9e6 100644 --- a/Test/baseResults/hlsl.tx.overload.frag.out +++ b/Test/baseResults/hlsl.tx.overload.frag.out @@ -134,7 +134,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 73 Capability Shader diff --git a/Test/baseResults/hlsl.type.half.frag.out b/Test/baseResults/hlsl.type.half.frag.out index 6b5a945b..719b1396 100644 --- a/Test/baseResults/hlsl.type.half.frag.out +++ b/Test/baseResults/hlsl.type.half.frag.out @@ -164,7 +164,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 60 Capability Shader diff --git a/Test/baseResults/hlsl.type.identifier.frag.out b/Test/baseResults/hlsl.type.identifier.frag.out index 2eaa2ae4..adec4a3f 100644 --- a/Test/baseResults/hlsl.type.identifier.frag.out +++ b/Test/baseResults/hlsl.type.identifier.frag.out @@ -266,7 +266,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 105 Capability Shader diff --git a/Test/baseResults/hlsl.type.type.conversion.valid.frag.out b/Test/baseResults/hlsl.type.type.conversion.valid.frag.out index fc672001..3e511ff4 100644 --- a/Test/baseResults/hlsl.type.type.conversion.valid.frag.out +++ b/Test/baseResults/hlsl.type.type.conversion.valid.frag.out @@ -1364,7 +1364,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 122 Capability Shader diff --git a/Test/baseResults/hlsl.typeGraphCopy.vert.out b/Test/baseResults/hlsl.typeGraphCopy.vert.out index 8509cc4b..1ca93bbe 100644 --- a/Test/baseResults/hlsl.typeGraphCopy.vert.out +++ b/Test/baseResults/hlsl.typeGraphCopy.vert.out @@ -62,7 +62,7 @@ Shader version: 500 0:? '@entryPointOutput' (layout( location=0) out float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 28 Capability Shader diff --git a/Test/baseResults/hlsl.typedef.frag.out b/Test/baseResults/hlsl.typedef.frag.out index 11fd1074..d4ab66e5 100644 --- a/Test/baseResults/hlsl.typedef.frag.out +++ b/Test/baseResults/hlsl.typedef.frag.out @@ -79,7 +79,7 @@ gl_FragCoord origin is upper left 0:? Linker Objects // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 34 Capability Shader diff --git a/Test/baseResults/hlsl.void.frag.out b/Test/baseResults/hlsl.void.frag.out index 30edd633..99de9d9e 100644 --- a/Test/baseResults/hlsl.void.frag.out +++ b/Test/baseResults/hlsl.void.frag.out @@ -54,7 +54,7 @@ gl_FragCoord origin is upper left 0:? 'input' (layout( location=0) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 27 Capability Shader diff --git a/Test/baseResults/hlsl.wavebroadcast.comp.out b/Test/baseResults/hlsl.wavebroadcast.comp.out index f1c9679b..a9fc9b4c 100644 --- a/Test/baseResults/hlsl.wavebroadcast.comp.out +++ b/Test/baseResults/hlsl.wavebroadcast.comp.out @@ -2298,7 +2298,7 @@ local_size = (32, 16, 1) 0:? 'dti' ( in 3-component vector of uint GlobalInvocationID) // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 359 Capability Shader diff --git a/Test/baseResults/hlsl.waveprefix.comp.out b/Test/baseResults/hlsl.waveprefix.comp.out index a9a4b759..3fc84973 100644 --- a/Test/baseResults/hlsl.waveprefix.comp.out +++ b/Test/baseResults/hlsl.waveprefix.comp.out @@ -2322,7 +2322,7 @@ local_size = (32, 16, 1) 0:? 'dti' ( in 3-component vector of uint GlobalInvocationID) // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 369 Capability Shader diff --git a/Test/baseResults/hlsl.wavequad.comp.out b/Test/baseResults/hlsl.wavequad.comp.out index e7e10f19..e237e15a 100644 --- a/Test/baseResults/hlsl.wavequad.comp.out +++ b/Test/baseResults/hlsl.wavequad.comp.out @@ -8026,7 +8026,7 @@ local_size = (32, 16, 1) 0:? 'dti' ( in 3-component vector of uint GlobalInvocationID) // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 1120 Capability Shader diff --git a/Test/baseResults/hlsl.wavequery.comp.out b/Test/baseResults/hlsl.wavequery.comp.out index 67da71d6..09cba4d2 100644 --- a/Test/baseResults/hlsl.wavequery.comp.out +++ b/Test/baseResults/hlsl.wavequery.comp.out @@ -60,7 +60,7 @@ local_size = (32, 16, 1) 0:? 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 28 Capability Shader diff --git a/Test/baseResults/hlsl.wavequery.frag.out b/Test/baseResults/hlsl.wavequery.frag.out index 3d446ed0..8848a159 100644 --- a/Test/baseResults/hlsl.wavequery.frag.out +++ b/Test/baseResults/hlsl.wavequery.frag.out @@ -72,7 +72,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 30 Capability Shader diff --git a/Test/baseResults/hlsl.wavereduction.comp.out b/Test/baseResults/hlsl.wavereduction.comp.out index 3e0d3fb5..c31f7f5f 100644 --- a/Test/baseResults/hlsl.wavereduction.comp.out +++ b/Test/baseResults/hlsl.wavereduction.comp.out @@ -6186,7 +6186,7 @@ local_size = (32, 16, 1) 0:? 'dti' ( in 3-component vector of uint GlobalInvocationID) // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 901 Capability Shader diff --git a/Test/baseResults/hlsl.wavevote.comp.out b/Test/baseResults/hlsl.wavevote.comp.out index 7b671bf9..b5c095db 100644 --- a/Test/baseResults/hlsl.wavevote.comp.out +++ b/Test/baseResults/hlsl.wavevote.comp.out @@ -204,7 +204,7 @@ local_size = (32, 16, 1) 0:? 'dti' ( in 3-component vector of uint GlobalInvocationID) // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 75 Capability Shader diff --git a/Test/baseResults/hlsl.whileLoop.frag.out b/Test/baseResults/hlsl.whileLoop.frag.out index babc77df..a63d006e 100644 --- a/Test/baseResults/hlsl.whileLoop.frag.out +++ b/Test/baseResults/hlsl.whileLoop.frag.out @@ -96,7 +96,7 @@ gl_FragCoord origin is upper left 0:? 'input' (layout( location=0) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 52 Capability Shader diff --git a/Test/baseResults/link1.vk.frag.out b/Test/baseResults/link1.vk.frag.out index 094a50d8..94debe14 100644 --- a/Test/baseResults/link1.vk.frag.out +++ b/Test/baseResults/link1.vk.frag.out @@ -197,7 +197,7 @@ gl_FragCoord origin is upper left 0:? 's2D' (layout( binding=1) uniform highp sampler2D) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 70 Capability Shader diff --git a/Test/baseResults/remap.basic.dcefunc.frag.out b/Test/baseResults/remap.basic.dcefunc.frag.out index 33ec069d..e985def6 100644 --- a/Test/baseResults/remap.basic.dcefunc.frag.out +++ b/Test/baseResults/remap.basic.dcefunc.frag.out @@ -1,6 +1,6 @@ remap.basic.dcefunc.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 22 Capability Shader diff --git a/Test/baseResults/remap.basic.everything.frag.out b/Test/baseResults/remap.basic.everything.frag.out index 858d629e..0f7034a8 100644 --- a/Test/baseResults/remap.basic.everything.frag.out +++ b/Test/baseResults/remap.basic.everything.frag.out @@ -1,6 +1,6 @@ remap.basic.everything.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 24969 Capability Shader diff --git a/Test/baseResults/remap.basic.none.frag.out b/Test/baseResults/remap.basic.none.frag.out index 1ad1d74c..44790dd4 100644 --- a/Test/baseResults/remap.basic.none.frag.out +++ b/Test/baseResults/remap.basic.none.frag.out @@ -1,6 +1,6 @@ remap.basic.none.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 22 Capability Shader diff --git a/Test/baseResults/remap.basic.strip.frag.out b/Test/baseResults/remap.basic.strip.frag.out index 3d876d0d..05f16bad 100644 --- a/Test/baseResults/remap.basic.strip.frag.out +++ b/Test/baseResults/remap.basic.strip.frag.out @@ -1,6 +1,6 @@ remap.basic.strip.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 22 Capability Shader diff --git a/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out b/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out index 7f180a9f..b9ce55e4 100644 --- a/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out +++ b/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out @@ -2,7 +2,7 @@ remap.hlsl.sample.basic.everything.frag WARNING: 0:4: 'immediate sampler state' : unimplemented // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 24878 Capability Shader diff --git a/Test/baseResults/remap.hlsl.sample.basic.none.frag.out b/Test/baseResults/remap.hlsl.sample.basic.none.frag.out index 577a1350..71b7de01 100644 --- a/Test/baseResults/remap.hlsl.sample.basic.none.frag.out +++ b/Test/baseResults/remap.hlsl.sample.basic.none.frag.out @@ -2,7 +2,7 @@ remap.hlsl.sample.basic.none.frag WARNING: 0:4: 'immediate sampler state' : unimplemented // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 198 Capability Shader diff --git a/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out b/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out index d7aea9f9..c65d237e 100644 --- a/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out +++ b/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out @@ -2,7 +2,7 @@ remap.hlsl.sample.basic.strip.frag WARNING: 0:4: 'immediate sampler state' : unimplemented // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 198 Capability Shader diff --git a/Test/baseResults/remap.hlsl.templatetypes.everything.frag.out b/Test/baseResults/remap.hlsl.templatetypes.everything.frag.out index aff0998c..ea390b50 100644 --- a/Test/baseResults/remap.hlsl.templatetypes.everything.frag.out +++ b/Test/baseResults/remap.hlsl.templatetypes.everything.frag.out @@ -1,6 +1,6 @@ remap.hlsl.templatetypes.everything.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 24954 Capability Shader diff --git a/Test/baseResults/remap.hlsl.templatetypes.none.frag.out b/Test/baseResults/remap.hlsl.templatetypes.none.frag.out index 282fd2a2..32b4e7ba 100644 --- a/Test/baseResults/remap.hlsl.templatetypes.none.frag.out +++ b/Test/baseResults/remap.hlsl.templatetypes.none.frag.out @@ -1,6 +1,6 @@ remap.hlsl.templatetypes.none.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 160 Capability Shader diff --git a/Test/baseResults/remap.if.everything.frag.out b/Test/baseResults/remap.if.everything.frag.out index cdb007b3..26cc3dca 100644 --- a/Test/baseResults/remap.if.everything.frag.out +++ b/Test/baseResults/remap.if.everything.frag.out @@ -1,6 +1,6 @@ remap.if.everything.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 22855 Capability Shader diff --git a/Test/baseResults/remap.if.none.frag.out b/Test/baseResults/remap.if.none.frag.out index 0c8d2783..48e85874 100644 --- a/Test/baseResults/remap.if.none.frag.out +++ b/Test/baseResults/remap.if.none.frag.out @@ -1,6 +1,6 @@ remap.if.none.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 25 Capability Shader diff --git a/Test/baseResults/remap.similar_1a.everything.frag.out b/Test/baseResults/remap.similar_1a.everything.frag.out index 17efb93b..6d5ce1c0 100644 --- a/Test/baseResults/remap.similar_1a.everything.frag.out +++ b/Test/baseResults/remap.similar_1a.everything.frag.out @@ -1,6 +1,6 @@ remap.similar_1a.everything.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 24916 Capability Shader diff --git a/Test/baseResults/remap.similar_1a.none.frag.out b/Test/baseResults/remap.similar_1a.none.frag.out index 57c71ac7..457f1bef 100644 --- a/Test/baseResults/remap.similar_1a.none.frag.out +++ b/Test/baseResults/remap.similar_1a.none.frag.out @@ -1,6 +1,6 @@ remap.similar_1a.none.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 86 Capability Shader diff --git a/Test/baseResults/remap.similar_1b.everything.frag.out b/Test/baseResults/remap.similar_1b.everything.frag.out index 4783d89f..67425c67 100644 --- a/Test/baseResults/remap.similar_1b.everything.frag.out +++ b/Test/baseResults/remap.similar_1b.everything.frag.out @@ -1,6 +1,6 @@ remap.similar_1b.everything.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 24916 Capability Shader diff --git a/Test/baseResults/remap.similar_1b.none.frag.out b/Test/baseResults/remap.similar_1b.none.frag.out index 08d09191..fe021e02 100644 --- a/Test/baseResults/remap.similar_1b.none.frag.out +++ b/Test/baseResults/remap.similar_1b.none.frag.out @@ -1,6 +1,6 @@ remap.similar_1b.none.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 91 Capability Shader diff --git a/Test/baseResults/remap.specconst.comp.out b/Test/baseResults/remap.specconst.comp.out index ee049f43..80d13b29 100644 --- a/Test/baseResults/remap.specconst.comp.out +++ b/Test/baseResults/remap.specconst.comp.out @@ -1,6 +1,6 @@ remap.specconst.comp // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 16104 Capability Shader diff --git a/Test/baseResults/remap.switch.everything.frag.out b/Test/baseResults/remap.switch.everything.frag.out index ffd64d4f..2362f671 100644 --- a/Test/baseResults/remap.switch.everything.frag.out +++ b/Test/baseResults/remap.switch.everything.frag.out @@ -3,7 +3,7 @@ WARNING: 0:5: '' : all default precisions are highp; use precision statements to "precision mediump int; precision highp float;" // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 23990 Capability Shader diff --git a/Test/baseResults/remap.switch.none.frag.out b/Test/baseResults/remap.switch.none.frag.out index 4dd78977..f8737b94 100644 --- a/Test/baseResults/remap.switch.none.frag.out +++ b/Test/baseResults/remap.switch.none.frag.out @@ -3,7 +3,7 @@ WARNING: 0:5: '' : all default precisions are highp; use precision statements to "precision mediump int; precision highp float;" // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 48 Capability Shader diff --git a/Test/baseResults/remap.uniformarray.everything.frag.out b/Test/baseResults/remap.uniformarray.everything.frag.out index c1f306e1..40429f24 100644 --- a/Test/baseResults/remap.uniformarray.everything.frag.out +++ b/Test/baseResults/remap.uniformarray.everything.frag.out @@ -1,6 +1,6 @@ remap.uniformarray.everything.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 25030 Capability Shader diff --git a/Test/baseResults/remap.uniformarray.none.frag.out b/Test/baseResults/remap.uniformarray.none.frag.out index 1087e5e7..42d55b97 100644 --- a/Test/baseResults/remap.uniformarray.none.frag.out +++ b/Test/baseResults/remap.uniformarray.none.frag.out @@ -1,6 +1,6 @@ remap.uniformarray.none.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 53 Capability Shader diff --git a/Test/baseResults/spv.1.3.8bitstorage-ssbo.vert.out b/Test/baseResults/spv.1.3.8bitstorage-ssbo.vert.out index cffc3a4f..105bbdb8 100644 --- a/Test/baseResults/spv.1.3.8bitstorage-ssbo.vert.out +++ b/Test/baseResults/spv.1.3.8bitstorage-ssbo.vert.out @@ -1,6 +1,6 @@ spv.1.3.8bitstorage-ssbo.vert // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 28 Capability Shader diff --git a/Test/baseResults/spv.1.3.8bitstorage-ubo.vert.out b/Test/baseResults/spv.1.3.8bitstorage-ubo.vert.out index 7bdda4af..77c15658 100644 --- a/Test/baseResults/spv.1.3.8bitstorage-ubo.vert.out +++ b/Test/baseResults/spv.1.3.8bitstorage-ubo.vert.out @@ -1,6 +1,6 @@ spv.1.3.8bitstorage-ubo.vert // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 29 Capability Shader diff --git a/Test/baseResults/spv.1.3.coopmat.comp.out b/Test/baseResults/spv.1.3.coopmat.comp.out index c1838479..29d914ff 100644 --- a/Test/baseResults/spv.1.3.coopmat.comp.out +++ b/Test/baseResults/spv.1.3.coopmat.comp.out @@ -1,6 +1,6 @@ spv.1.3.coopmat.comp // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 52 Capability Shader diff --git a/Test/baseResults/spv.1.4.LoopControl.frag.out b/Test/baseResults/spv.1.4.LoopControl.frag.out index c9a605b9..008ef470 100644 --- a/Test/baseResults/spv.1.4.LoopControl.frag.out +++ b/Test/baseResults/spv.1.4.LoopControl.frag.out @@ -3,7 +3,7 @@ WARNING: 0:15: 'min_iterations' : expected a single integer argument WARNING: 0:15: 'max_iterations' : expected a single integer argument // Module Version 10400 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 54 Capability Shader diff --git a/Test/baseResults/spv.1.4.NonWritable.frag.out b/Test/baseResults/spv.1.4.NonWritable.frag.out index 3f54661d..0207ed22 100755 --- a/Test/baseResults/spv.1.4.NonWritable.frag.out +++ b/Test/baseResults/spv.1.4.NonWritable.frag.out @@ -1,6 +1,6 @@ spv.1.4.NonWritable.frag // Module Version 10400 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 38 Capability Shader diff --git a/Test/baseResults/spv.1.4.OpCopyLogical.comp.out b/Test/baseResults/spv.1.4.OpCopyLogical.comp.out index d80bfee7..53e672fa 100644 --- a/Test/baseResults/spv.1.4.OpCopyLogical.comp.out +++ b/Test/baseResults/spv.1.4.OpCopyLogical.comp.out @@ -1,6 +1,6 @@ spv.1.4.OpCopyLogical.comp // Module Version 10400 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 65 Capability Shader diff --git a/Test/baseResults/spv.1.4.OpCopyLogical.funcall.frag.out b/Test/baseResults/spv.1.4.OpCopyLogical.funcall.frag.out index 85bfdb26..d7509b15 100644 --- a/Test/baseResults/spv.1.4.OpCopyLogical.funcall.frag.out +++ b/Test/baseResults/spv.1.4.OpCopyLogical.funcall.frag.out @@ -1,6 +1,6 @@ spv.1.4.OpCopyLogical.funcall.frag // Module Version 10400 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 60 Capability Shader diff --git a/Test/baseResults/spv.1.4.OpCopyLogicalBool.comp.out b/Test/baseResults/spv.1.4.OpCopyLogicalBool.comp.out index f2f85c10..2b60625f 100644 --- a/Test/baseResults/spv.1.4.OpCopyLogicalBool.comp.out +++ b/Test/baseResults/spv.1.4.OpCopyLogicalBool.comp.out @@ -1,6 +1,6 @@ spv.1.4.OpCopyLogicalBool.comp // Module Version 10400 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 135 Capability Shader diff --git a/Test/baseResults/spv.1.4.OpEntryPoint.frag.out b/Test/baseResults/spv.1.4.OpEntryPoint.frag.out index 694cff04..f06960c8 100644 --- a/Test/baseResults/spv.1.4.OpEntryPoint.frag.out +++ b/Test/baseResults/spv.1.4.OpEntryPoint.frag.out @@ -1,6 +1,6 @@ spv.1.4.OpEntryPoint.frag // Module Version 10400 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 64 Capability Shader diff --git a/Test/baseResults/spv.1.4.OpSelect.frag.out b/Test/baseResults/spv.1.4.OpSelect.frag.out index 31797170..6ba00a4a 100755 --- a/Test/baseResults/spv.1.4.OpSelect.frag.out +++ b/Test/baseResults/spv.1.4.OpSelect.frag.out @@ -1,6 +1,6 @@ spv.1.4.OpSelect.frag // Module Version 10400 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 98 Capability Shader diff --git a/Test/baseResults/spv.1.4.constructComposite.comp.out b/Test/baseResults/spv.1.4.constructComposite.comp.out index 5c0f5cfa..e5142869 100644 --- a/Test/baseResults/spv.1.4.constructComposite.comp.out +++ b/Test/baseResults/spv.1.4.constructComposite.comp.out @@ -1,6 +1,6 @@ spv.1.4.constructComposite.comp // Module Version 10400 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 27 Capability Shader diff --git a/Test/baseResults/spv.1.4.image.frag.out b/Test/baseResults/spv.1.4.image.frag.out index 4adfd4bd..98ffdcbc 100755 --- a/Test/baseResults/spv.1.4.image.frag.out +++ b/Test/baseResults/spv.1.4.image.frag.out @@ -1,6 +1,6 @@ spv.1.4.image.frag // Module Version 10400 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 104 Capability Shader diff --git a/Test/baseResults/spv.1.4.sparseTexture.frag.out b/Test/baseResults/spv.1.4.sparseTexture.frag.out index 292335ed..3b566c7c 100755 --- a/Test/baseResults/spv.1.4.sparseTexture.frag.out +++ b/Test/baseResults/spv.1.4.sparseTexture.frag.out @@ -1,6 +1,6 @@ spv.1.4.sparseTexture.frag // Module Version 10400 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 213 Capability Shader diff --git a/Test/baseResults/spv.1.4.texture.frag.out b/Test/baseResults/spv.1.4.texture.frag.out index 7c2de0bb..da3a24f5 100755 --- a/Test/baseResults/spv.1.4.texture.frag.out +++ b/Test/baseResults/spv.1.4.texture.frag.out @@ -1,6 +1,6 @@ spv.1.4.texture.frag // Module Version 10400 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 79 Capability Shader diff --git a/Test/baseResults/spv.100ops.frag.out b/Test/baseResults/spv.100ops.frag.out index 8f656ebb..d2b8f3e8 100644 --- a/Test/baseResults/spv.100ops.frag.out +++ b/Test/baseResults/spv.100ops.frag.out @@ -1,6 +1,6 @@ spv.100ops.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 49 Capability Shader diff --git a/Test/baseResults/spv.130.frag.out b/Test/baseResults/spv.130.frag.out index 67e2b824..ca1f9e38 100644 --- a/Test/baseResults/spv.130.frag.out +++ b/Test/baseResults/spv.130.frag.out @@ -3,7 +3,7 @@ WARNING: 0:31: '#extension' : extension is only partially supported: GL_ARB_gpu_ Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 205 Capability Shader diff --git a/Test/baseResults/spv.140.frag.out b/Test/baseResults/spv.140.frag.out index abfd13a9..45b75106 100644 --- a/Test/baseResults/spv.140.frag.out +++ b/Test/baseResults/spv.140.frag.out @@ -1,7 +1,7 @@ spv.140.frag Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 96 Capability Shader diff --git a/Test/baseResults/spv.150.geom.out b/Test/baseResults/spv.150.geom.out index 19bd7253..ab058462 100644 --- a/Test/baseResults/spv.150.geom.out +++ b/Test/baseResults/spv.150.geom.out @@ -1,6 +1,6 @@ spv.150.geom // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 71 Capability Geometry diff --git a/Test/baseResults/spv.150.vert.out b/Test/baseResults/spv.150.vert.out index db058fa3..9e1c9f49 100644 --- a/Test/baseResults/spv.150.vert.out +++ b/Test/baseResults/spv.150.vert.out @@ -1,6 +1,6 @@ spv.150.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 63 Capability Shader diff --git a/Test/baseResults/spv.16bitstorage-int.frag.out b/Test/baseResults/spv.16bitstorage-int.frag.out index c1aacb8e..80733cec 100644 --- a/Test/baseResults/spv.16bitstorage-int.frag.out +++ b/Test/baseResults/spv.16bitstorage-int.frag.out @@ -1,6 +1,6 @@ spv.16bitstorage-int.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 171 Capability Shader diff --git a/Test/baseResults/spv.16bitstorage-uint.frag.out b/Test/baseResults/spv.16bitstorage-uint.frag.out index ba2e0c6e..d4b1b759 100644 --- a/Test/baseResults/spv.16bitstorage-uint.frag.out +++ b/Test/baseResults/spv.16bitstorage-uint.frag.out @@ -1,6 +1,6 @@ spv.16bitstorage-uint.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 173 Capability Shader diff --git a/Test/baseResults/spv.16bitstorage.frag.out b/Test/baseResults/spv.16bitstorage.frag.out index 5530cf46..c73eb599 100644 --- a/Test/baseResults/spv.16bitstorage.frag.out +++ b/Test/baseResults/spv.16bitstorage.frag.out @@ -1,6 +1,6 @@ spv.16bitstorage.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 173 Capability Shader diff --git a/Test/baseResults/spv.16bitxfb.vert.out b/Test/baseResults/spv.16bitxfb.vert.out index 7d989c57..96cff799 100644 --- a/Test/baseResults/spv.16bitxfb.vert.out +++ b/Test/baseResults/spv.16bitxfb.vert.out @@ -1,6 +1,6 @@ spv.16bitxfb.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 59 Capability Shader diff --git a/Test/baseResults/spv.300BuiltIns.vert.out b/Test/baseResults/spv.300BuiltIns.vert.out index ee2c236e..2633645c 100644 --- a/Test/baseResults/spv.300BuiltIns.vert.out +++ b/Test/baseResults/spv.300BuiltIns.vert.out @@ -1,6 +1,6 @@ spv.300BuiltIns.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 42 Capability Shader diff --git a/Test/baseResults/spv.300layout.frag.out b/Test/baseResults/spv.300layout.frag.out index 10a6d00e..db069558 100644 --- a/Test/baseResults/spv.300layout.frag.out +++ b/Test/baseResults/spv.300layout.frag.out @@ -1,6 +1,6 @@ spv.300layout.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 37 Capability Shader diff --git a/Test/baseResults/spv.300layout.vert.out b/Test/baseResults/spv.300layout.vert.out index 4d4d7ea4..c97d217a 100644 --- a/Test/baseResults/spv.300layout.vert.out +++ b/Test/baseResults/spv.300layout.vert.out @@ -1,6 +1,6 @@ spv.300layout.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 163 Capability Shader diff --git a/Test/baseResults/spv.300layoutp.vert.out b/Test/baseResults/spv.300layoutp.vert.out index e12041fc..2b1ef83e 100644 --- a/Test/baseResults/spv.300layoutp.vert.out +++ b/Test/baseResults/spv.300layoutp.vert.out @@ -1,6 +1,6 @@ spv.300layoutp.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 115 Capability Shader diff --git a/Test/baseResults/spv.310.bitcast.frag.out b/Test/baseResults/spv.310.bitcast.frag.out index d7a244f8..e4f62b49 100644 --- a/Test/baseResults/spv.310.bitcast.frag.out +++ b/Test/baseResults/spv.310.bitcast.frag.out @@ -1,6 +1,6 @@ spv.310.bitcast.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 153 Capability Shader diff --git a/Test/baseResults/spv.310.comp.out b/Test/baseResults/spv.310.comp.out index bb8e6a7b..3b90d419 100644 --- a/Test/baseResults/spv.310.comp.out +++ b/Test/baseResults/spv.310.comp.out @@ -1,6 +1,6 @@ spv.310.comp // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 72 Capability Shader diff --git a/Test/baseResults/spv.320.meshShaderUserDefined.mesh.out b/Test/baseResults/spv.320.meshShaderUserDefined.mesh.out index 20b6fa24..6881084a 100644 --- a/Test/baseResults/spv.320.meshShaderUserDefined.mesh.out +++ b/Test/baseResults/spv.320.meshShaderUserDefined.mesh.out @@ -1,6 +1,6 @@ spv.320.meshShaderUserDefined.mesh // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 140 Capability MeshShadingNV diff --git a/Test/baseResults/spv.330.geom.out b/Test/baseResults/spv.330.geom.out index 1ccbfb6c..79e03b6f 100644 --- a/Test/baseResults/spv.330.geom.out +++ b/Test/baseResults/spv.330.geom.out @@ -1,6 +1,6 @@ spv.330.geom // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 32 Capability Geometry diff --git a/Test/baseResults/spv.400.frag.out b/Test/baseResults/spv.400.frag.out index 5433e4d3..b2f4a167 100644 --- a/Test/baseResults/spv.400.frag.out +++ b/Test/baseResults/spv.400.frag.out @@ -1,7 +1,7 @@ spv.400.frag Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 1118 Capability Shader diff --git a/Test/baseResults/spv.400.tesc.out b/Test/baseResults/spv.400.tesc.out index ce7c3afa..e84b420e 100644 --- a/Test/baseResults/spv.400.tesc.out +++ b/Test/baseResults/spv.400.tesc.out @@ -1,6 +1,6 @@ spv.400.tesc // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 92 Capability Tessellation diff --git a/Test/baseResults/spv.400.tese.out b/Test/baseResults/spv.400.tese.out index 43b6a915..5705fbd3 100644 --- a/Test/baseResults/spv.400.tese.out +++ b/Test/baseResults/spv.400.tese.out @@ -1,6 +1,6 @@ spv.400.tese // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 96 Capability Tessellation diff --git a/Test/baseResults/spv.420.geom.out b/Test/baseResults/spv.420.geom.out index fa91dd81..c75ae5d6 100644 --- a/Test/baseResults/spv.420.geom.out +++ b/Test/baseResults/spv.420.geom.out @@ -1,6 +1,6 @@ spv.420.geom // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 72 Capability Geometry diff --git a/Test/baseResults/spv.430.frag.out b/Test/baseResults/spv.430.frag.out index 330489f2..96ab1e96 100644 --- a/Test/baseResults/spv.430.frag.out +++ b/Test/baseResults/spv.430.frag.out @@ -1,6 +1,6 @@ spv.430.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 24 Capability Shader diff --git a/Test/baseResults/spv.430.vert.out b/Test/baseResults/spv.430.vert.out index 1cd9e619..89e5b16e 100644 --- a/Test/baseResults/spv.430.vert.out +++ b/Test/baseResults/spv.430.vert.out @@ -1,6 +1,6 @@ spv.430.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 66 Capability Shader diff --git a/Test/baseResults/spv.450.geom.out b/Test/baseResults/spv.450.geom.out index 7713e54e..1e7e8c50 100644 --- a/Test/baseResults/spv.450.geom.out +++ b/Test/baseResults/spv.450.geom.out @@ -1,6 +1,6 @@ spv.450.geom // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 31 Capability Geometry diff --git a/Test/baseResults/spv.450.noRedecl.tesc.out b/Test/baseResults/spv.450.noRedecl.tesc.out index b23061da..31c7b4da 100644 --- a/Test/baseResults/spv.450.noRedecl.tesc.out +++ b/Test/baseResults/spv.450.noRedecl.tesc.out @@ -1,6 +1,6 @@ spv.450.noRedecl.tesc // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 21 Capability Tessellation diff --git a/Test/baseResults/spv.450.tesc.out b/Test/baseResults/spv.450.tesc.out index 35653fde..0c22d9a7 100644 --- a/Test/baseResults/spv.450.tesc.out +++ b/Test/baseResults/spv.450.tesc.out @@ -1,6 +1,6 @@ spv.450.tesc // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 45 Capability Tessellation diff --git a/Test/baseResults/spv.460.comp.out b/Test/baseResults/spv.460.comp.out index 6ebf49fa..09256746 100644 --- a/Test/baseResults/spv.460.comp.out +++ b/Test/baseResults/spv.460.comp.out @@ -1,6 +1,6 @@ spv.460.comp // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 15 Capability Shader diff --git a/Test/baseResults/spv.460.frag.out b/Test/baseResults/spv.460.frag.out index 04393fbe..067bd43c 100644 --- a/Test/baseResults/spv.460.frag.out +++ b/Test/baseResults/spv.460.frag.out @@ -1,6 +1,6 @@ spv.460.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 32 Capability Shader diff --git a/Test/baseResults/spv.460.vert.out b/Test/baseResults/spv.460.vert.out index c2ef3024..a73b7e1d 100644 --- a/Test/baseResults/spv.460.vert.out +++ b/Test/baseResults/spv.460.vert.out @@ -1,6 +1,6 @@ spv.460.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 20 Capability Shader diff --git a/Test/baseResults/spv.8bitstorage-int.frag.out b/Test/baseResults/spv.8bitstorage-int.frag.out index 47e854f2..54a47afa 100644 --- a/Test/baseResults/spv.8bitstorage-int.frag.out +++ b/Test/baseResults/spv.8bitstorage-int.frag.out @@ -1,6 +1,6 @@ spv.8bitstorage-int.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 171 Capability Shader diff --git a/Test/baseResults/spv.8bitstorage-ssbo.vert.out b/Test/baseResults/spv.8bitstorage-ssbo.vert.out index d0379fa5..274639b1 100644 --- a/Test/baseResults/spv.8bitstorage-ssbo.vert.out +++ b/Test/baseResults/spv.8bitstorage-ssbo.vert.out @@ -1,6 +1,6 @@ spv.8bitstorage-ssbo.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 28 Capability Shader diff --git a/Test/baseResults/spv.8bitstorage-ubo.vert.out b/Test/baseResults/spv.8bitstorage-ubo.vert.out index c5ec89d4..af95a763 100644 --- a/Test/baseResults/spv.8bitstorage-ubo.vert.out +++ b/Test/baseResults/spv.8bitstorage-ubo.vert.out @@ -1,6 +1,6 @@ spv.8bitstorage-ubo.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 29 Capability Shader diff --git a/Test/baseResults/spv.8bitstorage-uint.frag.out b/Test/baseResults/spv.8bitstorage-uint.frag.out index a66c6a3b..65658825 100644 --- a/Test/baseResults/spv.8bitstorage-uint.frag.out +++ b/Test/baseResults/spv.8bitstorage-uint.frag.out @@ -1,6 +1,6 @@ spv.8bitstorage-uint.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 173 Capability Shader diff --git a/Test/baseResults/spv.AnyHitShader.rahit.out b/Test/baseResults/spv.AnyHitShader.rahit.out index 92b31d08..d044b973 100644 --- a/Test/baseResults/spv.AnyHitShader.rahit.out +++ b/Test/baseResults/spv.AnyHitShader.rahit.out @@ -1,6 +1,6 @@ spv.AnyHitShader.rahit // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 81 Capability RayTracingNV diff --git a/Test/baseResults/spv.AofA.frag.out b/Test/baseResults/spv.AofA.frag.out index 7433f177..c9f8b469 100644 --- a/Test/baseResults/spv.AofA.frag.out +++ b/Test/baseResults/spv.AofA.frag.out @@ -3,7 +3,7 @@ WARNING: 0:6: '[][]' : Generating SPIR-V array-of-arrays, but Vulkan only suppor Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 104 Capability Shader diff --git a/Test/baseResults/spv.ClosestHitShader.rchit.out b/Test/baseResults/spv.ClosestHitShader.rchit.out index b461462e..482008dc 100644 --- a/Test/baseResults/spv.ClosestHitShader.rchit.out +++ b/Test/baseResults/spv.ClosestHitShader.rchit.out @@ -1,6 +1,6 @@ spv.ClosestHitShader.rchit // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 88 Capability RayTracingNV diff --git a/Test/baseResults/spv.GeometryShaderPassthrough.geom.out b/Test/baseResults/spv.GeometryShaderPassthrough.geom.out index 5db845e5..7e62c575 100644 --- a/Test/baseResults/spv.GeometryShaderPassthrough.geom.out +++ b/Test/baseResults/spv.GeometryShaderPassthrough.geom.out @@ -1,6 +1,6 @@ spv.GeometryShaderPassthrough.geom // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 15 Capability Geometry diff --git a/Test/baseResults/spv.IntersectShader.rint.out b/Test/baseResults/spv.IntersectShader.rint.out index cbb70cd6..4fe4edf0 100644 --- a/Test/baseResults/spv.IntersectShader.rint.out +++ b/Test/baseResults/spv.IntersectShader.rint.out @@ -1,6 +1,6 @@ spv.IntersectShader.rint // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 71 Capability RayTracingNV diff --git a/Test/baseResults/spv.MissShader.rmiss.out b/Test/baseResults/spv.MissShader.rmiss.out index 0ad3341a..37fd3bda 100644 --- a/Test/baseResults/spv.MissShader.rmiss.out +++ b/Test/baseResults/spv.MissShader.rmiss.out @@ -1,6 +1,6 @@ spv.MissShader.rmiss // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 60 Capability RayTracingNV diff --git a/Test/baseResults/spv.OVR_multiview.vert.out b/Test/baseResults/spv.OVR_multiview.vert.out index 7013cedd..66168dce 100644 --- a/Test/baseResults/spv.OVR_multiview.vert.out +++ b/Test/baseResults/spv.OVR_multiview.vert.out @@ -1,6 +1,6 @@ spv.OVR_multiview.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 27 Capability Shader diff --git a/Test/baseResults/spv.Operations.frag.out b/Test/baseResults/spv.Operations.frag.out index 4113ddf1..22aeecd9 100644 --- a/Test/baseResults/spv.Operations.frag.out +++ b/Test/baseResults/spv.Operations.frag.out @@ -1,6 +1,6 @@ spv.Operations.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 532 Capability Shader diff --git a/Test/baseResults/spv.RayCallable.rcall.out b/Test/baseResults/spv.RayCallable.rcall.out index e399e634..31df5d1b 100644 --- a/Test/baseResults/spv.RayCallable.rcall.out +++ b/Test/baseResults/spv.RayCallable.rcall.out @@ -1,6 +1,6 @@ spv.RayCallable.rcall // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 30 Capability RayTracingNV diff --git a/Test/baseResults/spv.RayConstants.rgen.out b/Test/baseResults/spv.RayConstants.rgen.out index d939acfb..033e5455 100644 --- a/Test/baseResults/spv.RayConstants.rgen.out +++ b/Test/baseResults/spv.RayConstants.rgen.out @@ -1,6 +1,6 @@ spv.RayConstants.rgen // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 27 Capability RayTracingNV diff --git a/Test/baseResults/spv.RayGenShader.rgen.out b/Test/baseResults/spv.RayGenShader.rgen.out index 91f37e5c..59eabd0d 100644 --- a/Test/baseResults/spv.RayGenShader.rgen.out +++ b/Test/baseResults/spv.RayGenShader.rgen.out @@ -1,6 +1,6 @@ spv.RayGenShader.rgen // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 54 Capability RayTracingNV diff --git a/Test/baseResults/spv.RayGenShader11.rgen.out b/Test/baseResults/spv.RayGenShader11.rgen.out index 8f2c52b0..2d49b0fc 100755 --- a/Test/baseResults/spv.RayGenShader11.rgen.out +++ b/Test/baseResults/spv.RayGenShader11.rgen.out @@ -1,6 +1,6 @@ spv.RayGenShader11.rgen // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 53 Capability RayTracingNV diff --git a/Test/baseResults/spv.RayGenShaderArray.rgen.out b/Test/baseResults/spv.RayGenShaderArray.rgen.out index 74307569..e9143049 100644 --- a/Test/baseResults/spv.RayGenShaderArray.rgen.out +++ b/Test/baseResults/spv.RayGenShaderArray.rgen.out @@ -1,6 +1,6 @@ spv.RayGenShaderArray.rgen // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 89 Capability ShaderNonUniformEXT diff --git a/Test/baseResults/spv.accessChain.frag.out b/Test/baseResults/spv.accessChain.frag.out index bf878292..c5c71a5c 100644 --- a/Test/baseResults/spv.accessChain.frag.out +++ b/Test/baseResults/spv.accessChain.frag.out @@ -1,6 +1,6 @@ spv.accessChain.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 222 Capability Shader diff --git a/Test/baseResults/spv.aggOps.frag.out b/Test/baseResults/spv.aggOps.frag.out index f388e8ea..976c747a 100644 --- a/Test/baseResults/spv.aggOps.frag.out +++ b/Test/baseResults/spv.aggOps.frag.out @@ -3,7 +3,7 @@ WARNING: 0:4: '' : all default precisions are highp; use precision statements to "precision mediump int; precision highp float;" // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 215 Capability Shader diff --git a/Test/baseResults/spv.always-discard.frag.out b/Test/baseResults/spv.always-discard.frag.out index 8074cf82..fb4529e6 100644 --- a/Test/baseResults/spv.always-discard.frag.out +++ b/Test/baseResults/spv.always-discard.frag.out @@ -1,6 +1,6 @@ spv.always-discard.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 84 Capability Shader diff --git a/Test/baseResults/spv.always-discard2.frag.out b/Test/baseResults/spv.always-discard2.frag.out index e3fa43a3..2d8f66ef 100644 --- a/Test/baseResults/spv.always-discard2.frag.out +++ b/Test/baseResults/spv.always-discard2.frag.out @@ -1,6 +1,6 @@ spv.always-discard2.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 40 Capability Shader diff --git a/Test/baseResults/spv.arbPostDepthCoverage.frag.out b/Test/baseResults/spv.arbPostDepthCoverage.frag.out index f41c0121..d62c6775 100644 --- a/Test/baseResults/spv.arbPostDepthCoverage.frag.out +++ b/Test/baseResults/spv.arbPostDepthCoverage.frag.out @@ -1,6 +1,6 @@ spv.arbPostDepthCoverage.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 18 Capability Shader diff --git a/Test/baseResults/spv.atomic.comp.out b/Test/baseResults/spv.atomic.comp.out index 3dd88f39..08bd8302 100644 --- a/Test/baseResults/spv.atomic.comp.out +++ b/Test/baseResults/spv.atomic.comp.out @@ -1,6 +1,6 @@ spv.atomic.comp // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 74 Capability Shader diff --git a/Test/baseResults/spv.atomicInt64.comp.out b/Test/baseResults/spv.atomicInt64.comp.out index 9c66aecc..5ac910e3 100644 --- a/Test/baseResults/spv.atomicInt64.comp.out +++ b/Test/baseResults/spv.atomicInt64.comp.out @@ -1,6 +1,6 @@ spv.atomicInt64.comp // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 149 Capability Shader diff --git a/Test/baseResults/spv.barrier.vert.out b/Test/baseResults/spv.barrier.vert.out index b9369f27..ffc2eaac 100644 --- a/Test/baseResults/spv.barrier.vert.out +++ b/Test/baseResults/spv.barrier.vert.out @@ -1,6 +1,6 @@ spv.barrier.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 24 Capability Shader diff --git a/Test/baseResults/spv.bitCast.frag.out b/Test/baseResults/spv.bitCast.frag.out index a687b8da..f590ec7d 100644 --- a/Test/baseResults/spv.bitCast.frag.out +++ b/Test/baseResults/spv.bitCast.frag.out @@ -1,6 +1,6 @@ spv.bitCast.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 172 Capability Shader diff --git a/Test/baseResults/spv.bool.vert.out b/Test/baseResults/spv.bool.vert.out index 31eb54cf..3e5a1905 100644 --- a/Test/baseResults/spv.bool.vert.out +++ b/Test/baseResults/spv.bool.vert.out @@ -1,6 +1,6 @@ spv.bool.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 46 Capability Shader diff --git a/Test/baseResults/spv.boolInBlock.frag.out b/Test/baseResults/spv.boolInBlock.frag.out index e86ca6b3..b0a4023a 100644 --- a/Test/baseResults/spv.boolInBlock.frag.out +++ b/Test/baseResults/spv.boolInBlock.frag.out @@ -1,6 +1,6 @@ spv.boolInBlock.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 102 Capability Shader diff --git a/Test/baseResults/spv.branch-return.vert.out b/Test/baseResults/spv.branch-return.vert.out index ca447245..3aacca7e 100644 --- a/Test/baseResults/spv.branch-return.vert.out +++ b/Test/baseResults/spv.branch-return.vert.out @@ -1,6 +1,6 @@ spv.branch-return.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 38 Capability Shader diff --git a/Test/baseResults/spv.buffer.autoassign.frag.out b/Test/baseResults/spv.buffer.autoassign.frag.out index 507318f7..e526adaf 100644 --- a/Test/baseResults/spv.buffer.autoassign.frag.out +++ b/Test/baseResults/spv.buffer.autoassign.frag.out @@ -1,6 +1,6 @@ spv.buffer.autoassign.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 50 Capability Shader diff --git a/Test/baseResults/spv.bufferhandle1.frag.out b/Test/baseResults/spv.bufferhandle1.frag.out index 6e50c705..9d181882 100644 --- a/Test/baseResults/spv.bufferhandle1.frag.out +++ b/Test/baseResults/spv.bufferhandle1.frag.out @@ -1,6 +1,6 @@ spv.bufferhandle1.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 52 Capability Shader diff --git a/Test/baseResults/spv.bufferhandle10.frag.out b/Test/baseResults/spv.bufferhandle10.frag.out index a95dc719..5064c7e7 100644 --- a/Test/baseResults/spv.bufferhandle10.frag.out +++ b/Test/baseResults/spv.bufferhandle10.frag.out @@ -1,6 +1,6 @@ spv.bufferhandle10.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 40 Capability Shader diff --git a/Test/baseResults/spv.bufferhandle11.frag.out b/Test/baseResults/spv.bufferhandle11.frag.out index 3469715b..783577c9 100644 --- a/Test/baseResults/spv.bufferhandle11.frag.out +++ b/Test/baseResults/spv.bufferhandle11.frag.out @@ -3,7 +3,7 @@ WARNING: 0:6: '' : all default precisions are highp; use precision statements to "precision mediump int; precision highp float;" // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 61 Capability Shader diff --git a/Test/baseResults/spv.bufferhandle12.frag.out b/Test/baseResults/spv.bufferhandle12.frag.out index 6c20f02c..9f0f4fb7 100644 --- a/Test/baseResults/spv.bufferhandle12.frag.out +++ b/Test/baseResults/spv.bufferhandle12.frag.out @@ -3,7 +3,7 @@ WARNING: 0:6: '' : all default precisions are highp; use precision statements to "precision mediump int; precision highp float;" // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 183 Capability Shader diff --git a/Test/baseResults/spv.bufferhandle13.frag.out b/Test/baseResults/spv.bufferhandle13.frag.out index 1231cf67..516b9fc4 100644 --- a/Test/baseResults/spv.bufferhandle13.frag.out +++ b/Test/baseResults/spv.bufferhandle13.frag.out @@ -1,6 +1,6 @@ spv.bufferhandle13.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 58 Capability Shader diff --git a/Test/baseResults/spv.bufferhandle14.frag.out b/Test/baseResults/spv.bufferhandle14.frag.out index 940793d3..440a0329 100644 --- a/Test/baseResults/spv.bufferhandle14.frag.out +++ b/Test/baseResults/spv.bufferhandle14.frag.out @@ -1,6 +1,6 @@ spv.bufferhandle14.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 46 Capability Shader diff --git a/Test/baseResults/spv.bufferhandle15.frag.out b/Test/baseResults/spv.bufferhandle15.frag.out index ec7064d9..f018e21c 100644 --- a/Test/baseResults/spv.bufferhandle15.frag.out +++ b/Test/baseResults/spv.bufferhandle15.frag.out @@ -3,7 +3,7 @@ WARNING: 0:16: '' : all default precisions are highp; use precision statements t "precision mediump int; precision highp float;" // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 60 Capability Shader diff --git a/Test/baseResults/spv.bufferhandle16.frag.out b/Test/baseResults/spv.bufferhandle16.frag.out index 16e69d1d..cfc6f051 100644 --- a/Test/baseResults/spv.bufferhandle16.frag.out +++ b/Test/baseResults/spv.bufferhandle16.frag.out @@ -1,6 +1,6 @@ spv.bufferhandle16.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 48 Capability Shader diff --git a/Test/baseResults/spv.bufferhandle18.frag.out b/Test/baseResults/spv.bufferhandle18.frag.out index 567295d3..0a5f6fb5 100644 --- a/Test/baseResults/spv.bufferhandle18.frag.out +++ b/Test/baseResults/spv.bufferhandle18.frag.out @@ -1,6 +1,6 @@ spv.bufferhandle18.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 196 Capability Shader diff --git a/Test/baseResults/spv.bufferhandle2.frag.out b/Test/baseResults/spv.bufferhandle2.frag.out index 8fee6db6..6c43fbe7 100644 --- a/Test/baseResults/spv.bufferhandle2.frag.out +++ b/Test/baseResults/spv.bufferhandle2.frag.out @@ -1,6 +1,6 @@ spv.bufferhandle2.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 45 Capability Shader diff --git a/Test/baseResults/spv.bufferhandle3.frag.out b/Test/baseResults/spv.bufferhandle3.frag.out index c02c34cf..ba50eb1a 100644 --- a/Test/baseResults/spv.bufferhandle3.frag.out +++ b/Test/baseResults/spv.bufferhandle3.frag.out @@ -1,6 +1,6 @@ spv.bufferhandle3.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 50 Capability Shader diff --git a/Test/baseResults/spv.bufferhandle4.frag.out b/Test/baseResults/spv.bufferhandle4.frag.out index 3f568b0f..7dff09cb 100644 --- a/Test/baseResults/spv.bufferhandle4.frag.out +++ b/Test/baseResults/spv.bufferhandle4.frag.out @@ -1,6 +1,6 @@ spv.bufferhandle4.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 61 Capability Shader diff --git a/Test/baseResults/spv.bufferhandle5.frag.out b/Test/baseResults/spv.bufferhandle5.frag.out index 3f1d2141..209459b9 100644 --- a/Test/baseResults/spv.bufferhandle5.frag.out +++ b/Test/baseResults/spv.bufferhandle5.frag.out @@ -1,6 +1,6 @@ spv.bufferhandle5.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 22 Capability Shader diff --git a/Test/baseResults/spv.bufferhandle6.frag.out b/Test/baseResults/spv.bufferhandle6.frag.out index 866741f9..b373a2f1 100644 --- a/Test/baseResults/spv.bufferhandle6.frag.out +++ b/Test/baseResults/spv.bufferhandle6.frag.out @@ -1,6 +1,6 @@ spv.bufferhandle6.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 165 Capability Shader diff --git a/Test/baseResults/spv.bufferhandle7.frag.out b/Test/baseResults/spv.bufferhandle7.frag.out index d09eded3..9beaee18 100644 --- a/Test/baseResults/spv.bufferhandle7.frag.out +++ b/Test/baseResults/spv.bufferhandle7.frag.out @@ -1,6 +1,6 @@ spv.bufferhandle7.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 24 Capability Shader diff --git a/Test/baseResults/spv.bufferhandle8.frag.out b/Test/baseResults/spv.bufferhandle8.frag.out index c37fa3fe..95abfd94 100644 --- a/Test/baseResults/spv.bufferhandle8.frag.out +++ b/Test/baseResults/spv.bufferhandle8.frag.out @@ -1,6 +1,6 @@ spv.bufferhandle8.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 27 Capability Shader diff --git a/Test/baseResults/spv.bufferhandle9.frag.out b/Test/baseResults/spv.bufferhandle9.frag.out index 5b91eda9..b452acc2 100644 --- a/Test/baseResults/spv.bufferhandle9.frag.out +++ b/Test/baseResults/spv.bufferhandle9.frag.out @@ -1,6 +1,6 @@ spv.bufferhandle9.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 56 Capability Shader diff --git a/Test/baseResults/spv.bufferhandleUvec2.frag.out b/Test/baseResults/spv.bufferhandleUvec2.frag.out index 1e0cbcd3..b1944cf0 100755 --- a/Test/baseResults/spv.bufferhandleUvec2.frag.out +++ b/Test/baseResults/spv.bufferhandleUvec2.frag.out @@ -1,6 +1,6 @@ spv.bufferhandleUvec2.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 71 Capability Shader diff --git a/Test/baseResults/spv.builtInXFB.vert.out b/Test/baseResults/spv.builtInXFB.vert.out index 556a698c..7a8b17ae 100644 --- a/Test/baseResults/spv.builtInXFB.vert.out +++ b/Test/baseResults/spv.builtInXFB.vert.out @@ -1,6 +1,6 @@ spv.builtInXFB.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 21 Capability Shader diff --git a/Test/baseResults/spv.computeShaderDerivatives.comp.out b/Test/baseResults/spv.computeShaderDerivatives.comp.out index d332f352..052ac06c 100644 --- a/Test/baseResults/spv.computeShaderDerivatives.comp.out +++ b/Test/baseResults/spv.computeShaderDerivatives.comp.out @@ -1,6 +1,6 @@ spv.computeShaderDerivatives.comp // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 212 Capability Shader diff --git a/Test/baseResults/spv.computeShaderDerivatives2.comp.out b/Test/baseResults/spv.computeShaderDerivatives2.comp.out index be1919bd..3ef5ee48 100644 --- a/Test/baseResults/spv.computeShaderDerivatives2.comp.out +++ b/Test/baseResults/spv.computeShaderDerivatives2.comp.out @@ -1,6 +1,6 @@ spv.computeShaderDerivatives2.comp // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 212 Capability Shader diff --git a/Test/baseResults/spv.conditionalDemote.frag.out b/Test/baseResults/spv.conditionalDemote.frag.out index 10f2c23e..f2551760 100644 --- a/Test/baseResults/spv.conditionalDemote.frag.out +++ b/Test/baseResults/spv.conditionalDemote.frag.out @@ -1,6 +1,6 @@ spv.conditionalDemote.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 38 Capability Shader diff --git a/Test/baseResults/spv.conditionalDiscard.frag.out b/Test/baseResults/spv.conditionalDiscard.frag.out index 2f2dcf26..a05afb93 100644 --- a/Test/baseResults/spv.conditionalDiscard.frag.out +++ b/Test/baseResults/spv.conditionalDiscard.frag.out @@ -1,6 +1,6 @@ spv.conditionalDiscard.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 36 Capability Shader diff --git a/Test/baseResults/spv.constConstruct.vert.out b/Test/baseResults/spv.constConstruct.vert.out index 5922b34a..d3250a1a 100644 --- a/Test/baseResults/spv.constConstruct.vert.out +++ b/Test/baseResults/spv.constConstruct.vert.out @@ -1,7 +1,7 @@ spv.constConstruct.vert Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 150 Capability Shader diff --git a/Test/baseResults/spv.constStruct.vert.out b/Test/baseResults/spv.constStruct.vert.out index d04f33d1..1fce7289 100644 --- a/Test/baseResults/spv.constStruct.vert.out +++ b/Test/baseResults/spv.constStruct.vert.out @@ -1,6 +1,6 @@ spv.constStruct.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 23 Capability Shader diff --git a/Test/baseResults/spv.constructComposite.comp.out b/Test/baseResults/spv.constructComposite.comp.out index 6a23ecb2..f1179d47 100644 --- a/Test/baseResults/spv.constructComposite.comp.out +++ b/Test/baseResults/spv.constructComposite.comp.out @@ -1,6 +1,6 @@ spv.constructComposite.comp // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 29 Capability Shader diff --git a/Test/baseResults/spv.controlFlowAttributes.frag.out b/Test/baseResults/spv.controlFlowAttributes.frag.out index c424b742..c222f25c 100644 --- a/Test/baseResults/spv.controlFlowAttributes.frag.out +++ b/Test/baseResults/spv.controlFlowAttributes.frag.out @@ -9,7 +9,7 @@ WARNING: 0:33: '' : attribute with arguments not recognized, skipping Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 123 Capability Shader diff --git a/Test/baseResults/spv.conversion.frag.out b/Test/baseResults/spv.conversion.frag.out index a3215324..60129dd2 100644 --- a/Test/baseResults/spv.conversion.frag.out +++ b/Test/baseResults/spv.conversion.frag.out @@ -1,6 +1,6 @@ spv.conversion.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 455 Capability Shader diff --git a/Test/baseResults/spv.coopmat.comp.out b/Test/baseResults/spv.coopmat.comp.out index acdcbc4f..4ef70280 100644 --- a/Test/baseResults/spv.coopmat.comp.out +++ b/Test/baseResults/spv.coopmat.comp.out @@ -1,6 +1,6 @@ spv.coopmat.comp // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 228 Capability Shader diff --git a/Test/baseResults/spv.dataOut.frag.out b/Test/baseResults/spv.dataOut.frag.out index f3847213..5dc14ceb 100644 --- a/Test/baseResults/spv.dataOut.frag.out +++ b/Test/baseResults/spv.dataOut.frag.out @@ -1,6 +1,6 @@ spv.dataOut.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 20 Capability Shader diff --git a/Test/baseResults/spv.dataOutIndirect.frag.out b/Test/baseResults/spv.dataOutIndirect.frag.out index f3716010..fa6a0daa 100644 --- a/Test/baseResults/spv.dataOutIndirect.frag.out +++ b/Test/baseResults/spv.dataOutIndirect.frag.out @@ -1,6 +1,6 @@ spv.dataOutIndirect.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 26 Capability Shader diff --git a/Test/baseResults/spv.dataOutIndirect.vert.out b/Test/baseResults/spv.dataOutIndirect.vert.out index 9ba988c6..fab5e586 100644 --- a/Test/baseResults/spv.dataOutIndirect.vert.out +++ b/Test/baseResults/spv.dataOutIndirect.vert.out @@ -2,7 +2,7 @@ spv.dataOutIndirect.vert WARNING: 0:3: attribute deprecated in version 130; may be removed in future release // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 38 Capability Shader diff --git a/Test/baseResults/spv.dead-after-continue.vert.out b/Test/baseResults/spv.dead-after-continue.vert.out index 9d85fdc5..f3b8792a 100644 --- a/Test/baseResults/spv.dead-after-continue.vert.out +++ b/Test/baseResults/spv.dead-after-continue.vert.out @@ -1,6 +1,6 @@ spv.dead-after-continue.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 29 Capability Shader diff --git a/Test/baseResults/spv.dead-after-discard.frag.out b/Test/baseResults/spv.dead-after-discard.frag.out index 2c2a595c..f378d04d 100644 --- a/Test/baseResults/spv.dead-after-discard.frag.out +++ b/Test/baseResults/spv.dead-after-discard.frag.out @@ -1,6 +1,6 @@ spv.dead-after-discard.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 15 Capability Shader diff --git a/Test/baseResults/spv.dead-after-loop-break.vert.out b/Test/baseResults/spv.dead-after-loop-break.vert.out index 8cf187d9..b653e399 100644 --- a/Test/baseResults/spv.dead-after-loop-break.vert.out +++ b/Test/baseResults/spv.dead-after-loop-break.vert.out @@ -1,6 +1,6 @@ spv.dead-after-loop-break.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 36 Capability Shader diff --git a/Test/baseResults/spv.dead-after-return.vert.out b/Test/baseResults/spv.dead-after-return.vert.out index f8af0c42..d963f9ff 100644 --- a/Test/baseResults/spv.dead-after-return.vert.out +++ b/Test/baseResults/spv.dead-after-return.vert.out @@ -1,6 +1,6 @@ spv.dead-after-return.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 14 Capability Shader diff --git a/Test/baseResults/spv.dead-after-switch-break.vert.out b/Test/baseResults/spv.dead-after-switch-break.vert.out index 7b27fc77..a5060128 100644 --- a/Test/baseResults/spv.dead-after-switch-break.vert.out +++ b/Test/baseResults/spv.dead-after-switch-break.vert.out @@ -1,6 +1,6 @@ spv.dead-after-switch-break.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 21 Capability Shader diff --git a/Test/baseResults/spv.dead-complex-continue-after-return.vert.out b/Test/baseResults/spv.dead-complex-continue-after-return.vert.out index 23ac2007..60e81bd6 100644 --- a/Test/baseResults/spv.dead-complex-continue-after-return.vert.out +++ b/Test/baseResults/spv.dead-complex-continue-after-return.vert.out @@ -1,6 +1,6 @@ spv.dead-complex-continue-after-return.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 31 Capability Shader diff --git a/Test/baseResults/spv.dead-complex-merge-after-return.vert.out b/Test/baseResults/spv.dead-complex-merge-after-return.vert.out index 1c0867e5..609a3ceb 100644 --- a/Test/baseResults/spv.dead-complex-merge-after-return.vert.out +++ b/Test/baseResults/spv.dead-complex-merge-after-return.vert.out @@ -1,6 +1,6 @@ spv.dead-complex-merge-after-return.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 36 Capability Shader diff --git a/Test/baseResults/spv.deepRvalue.frag.out b/Test/baseResults/spv.deepRvalue.frag.out index 1869d76e..776fdf8d 100644 --- a/Test/baseResults/spv.deepRvalue.frag.out +++ b/Test/baseResults/spv.deepRvalue.frag.out @@ -1,6 +1,6 @@ spv.deepRvalue.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 152 Capability Shader diff --git a/Test/baseResults/spv.depthOut.frag.out b/Test/baseResults/spv.depthOut.frag.out index 59afd3e1..d212c897 100644 --- a/Test/baseResults/spv.depthOut.frag.out +++ b/Test/baseResults/spv.depthOut.frag.out @@ -1,6 +1,6 @@ spv.depthOut.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 15 Capability Shader diff --git a/Test/baseResults/spv.deviceGroup.frag.out b/Test/baseResults/spv.deviceGroup.frag.out index 6710b77f..2d16272c 100644 --- a/Test/baseResults/spv.deviceGroup.frag.out +++ b/Test/baseResults/spv.deviceGroup.frag.out @@ -1,6 +1,6 @@ spv.deviceGroup.frag // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 17 Capability Shader diff --git a/Test/baseResults/spv.discard-dce.frag.out b/Test/baseResults/spv.discard-dce.frag.out index 9d138f29..c4a5cb21 100644 --- a/Test/baseResults/spv.discard-dce.frag.out +++ b/Test/baseResults/spv.discard-dce.frag.out @@ -1,6 +1,6 @@ spv.discard-dce.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 84 Capability Shader diff --git a/Test/baseResults/spv.do-simple.vert.out b/Test/baseResults/spv.do-simple.vert.out index 6014dfec..826cc1ca 100644 --- a/Test/baseResults/spv.do-simple.vert.out +++ b/Test/baseResults/spv.do-simple.vert.out @@ -1,6 +1,6 @@ spv.do-simple.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 21 Capability Shader diff --git a/Test/baseResults/spv.do-while-continue-break.vert.out b/Test/baseResults/spv.do-while-continue-break.vert.out index 28388800..36315a2f 100644 --- a/Test/baseResults/spv.do-while-continue-break.vert.out +++ b/Test/baseResults/spv.do-while-continue-break.vert.out @@ -1,6 +1,6 @@ spv.do-while-continue-break.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 43 Capability Shader diff --git a/Test/baseResults/spv.doWhileLoop.frag.out b/Test/baseResults/spv.doWhileLoop.frag.out index 808466eb..945f0d7c 100644 --- a/Test/baseResults/spv.doWhileLoop.frag.out +++ b/Test/baseResults/spv.doWhileLoop.frag.out @@ -1,6 +1,6 @@ spv.doWhileLoop.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 34 Capability Shader diff --git a/Test/baseResults/spv.double.comp.out b/Test/baseResults/spv.double.comp.out index e9470ac6..7961fc62 100644 --- a/Test/baseResults/spv.double.comp.out +++ b/Test/baseResults/spv.double.comp.out @@ -1,6 +1,6 @@ spv.double.comp // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 60 Capability Shader diff --git a/Test/baseResults/spv.drawParams.vert.out b/Test/baseResults/spv.drawParams.vert.out index 8f3e2c0a..e9d49703 100644 --- a/Test/baseResults/spv.drawParams.vert.out +++ b/Test/baseResults/spv.drawParams.vert.out @@ -1,6 +1,6 @@ spv.drawParams.vert // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 29 Capability Shader diff --git a/Test/baseResults/spv.earlyReturnDiscard.frag.out b/Test/baseResults/spv.earlyReturnDiscard.frag.out index bb11b283..a4eb8cab 100644 --- a/Test/baseResults/spv.earlyReturnDiscard.frag.out +++ b/Test/baseResults/spv.earlyReturnDiscard.frag.out @@ -1,6 +1,6 @@ spv.earlyReturnDiscard.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 110 Capability Shader diff --git a/Test/baseResults/spv.explicittypes.frag.out b/Test/baseResults/spv.explicittypes.frag.out index c07f66d5..93189135 100644 --- a/Test/baseResults/spv.explicittypes.frag.out +++ b/Test/baseResults/spv.explicittypes.frag.out @@ -1,6 +1,6 @@ spv.explicittypes.frag // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 576 Capability Shader diff --git a/Test/baseResults/spv.extPostDepthCoverage.frag.out b/Test/baseResults/spv.extPostDepthCoverage.frag.out index 85a23593..28d207b7 100644 --- a/Test/baseResults/spv.extPostDepthCoverage.frag.out +++ b/Test/baseResults/spv.extPostDepthCoverage.frag.out @@ -1,6 +1,6 @@ spv.extPostDepthCoverage.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 6 Capability Shader diff --git a/Test/baseResults/spv.float16.frag.out b/Test/baseResults/spv.float16.frag.out index 1f955c22..ca1bca15 100644 --- a/Test/baseResults/spv.float16.frag.out +++ b/Test/baseResults/spv.float16.frag.out @@ -1,7 +1,7 @@ spv.float16.frag Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 534 Capability Shader diff --git a/Test/baseResults/spv.float16Fetch.frag.out b/Test/baseResults/spv.float16Fetch.frag.out index 45c80fec..92ff6313 100644 --- a/Test/baseResults/spv.float16Fetch.frag.out +++ b/Test/baseResults/spv.float16Fetch.frag.out @@ -1,7 +1,7 @@ spv.float16Fetch.frag Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 5923 Capability Shader diff --git a/Test/baseResults/spv.float16convertonlyarith.comp.out b/Test/baseResults/spv.float16convertonlyarith.comp.out index 6abf0d4a..5c8c2928 100644 --- a/Test/baseResults/spv.float16convertonlyarith.comp.out +++ b/Test/baseResults/spv.float16convertonlyarith.comp.out @@ -1,6 +1,6 @@ spv.float16convertonlyarith.comp // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 22 Capability Shader diff --git a/Test/baseResults/spv.float16convertonlystorage.comp.out b/Test/baseResults/spv.float16convertonlystorage.comp.out index a2ff1d09..b37bb6b4 100644 --- a/Test/baseResults/spv.float16convertonlystorage.comp.out +++ b/Test/baseResults/spv.float16convertonlystorage.comp.out @@ -1,6 +1,6 @@ spv.float16convertonlystorage.comp // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 22 Capability Shader diff --git a/Test/baseResults/spv.float32.frag.out b/Test/baseResults/spv.float32.frag.out index f1b0d029..db413c43 100644 --- a/Test/baseResults/spv.float32.frag.out +++ b/Test/baseResults/spv.float32.frag.out @@ -1,6 +1,6 @@ spv.float32.frag // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 533 Capability Shader diff --git a/Test/baseResults/spv.float64.frag.out b/Test/baseResults/spv.float64.frag.out index 231f0707..b98c8704 100644 --- a/Test/baseResults/spv.float64.frag.out +++ b/Test/baseResults/spv.float64.frag.out @@ -1,7 +1,7 @@ spv.float64.frag Validation failed // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 524 Capability Shader diff --git a/Test/baseResults/spv.flowControl.frag.out b/Test/baseResults/spv.flowControl.frag.out index 30c2a4b6..fc68306d 100644 --- a/Test/baseResults/spv.flowControl.frag.out +++ b/Test/baseResults/spv.flowControl.frag.out @@ -1,6 +1,6 @@ spv.flowControl.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 39 Capability Shader diff --git a/Test/baseResults/spv.for-complex-condition.vert.out b/Test/baseResults/spv.for-complex-condition.vert.out index 41275a45..78252ee9 100644 --- a/Test/baseResults/spv.for-complex-condition.vert.out +++ b/Test/baseResults/spv.for-complex-condition.vert.out @@ -1,6 +1,6 @@ spv.for-complex-condition.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 31 Capability Shader diff --git a/Test/baseResults/spv.for-continue-break.vert.out b/Test/baseResults/spv.for-continue-break.vert.out index ff94a931..50c034e6 100644 --- a/Test/baseResults/spv.for-continue-break.vert.out +++ b/Test/baseResults/spv.for-continue-break.vert.out @@ -1,6 +1,6 @@ spv.for-continue-break.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 45 Capability Shader diff --git a/Test/baseResults/spv.for-nobody.vert.out b/Test/baseResults/spv.for-nobody.vert.out index 2a3bcf40..26844c2f 100644 --- a/Test/baseResults/spv.for-nobody.vert.out +++ b/Test/baseResults/spv.for-nobody.vert.out @@ -1,6 +1,6 @@ spv.for-nobody.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 25 Capability Shader diff --git a/Test/baseResults/spv.for-notest.vert.out b/Test/baseResults/spv.for-notest.vert.out index c9d5b4cd..ff85cb42 100644 --- a/Test/baseResults/spv.for-notest.vert.out +++ b/Test/baseResults/spv.for-notest.vert.out @@ -1,6 +1,6 @@ spv.for-notest.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 20 Capability Shader diff --git a/Test/baseResults/spv.for-simple.vert.out b/Test/baseResults/spv.for-simple.vert.out index ecb539f9..a3e5d867 100644 --- a/Test/baseResults/spv.for-simple.vert.out +++ b/Test/baseResults/spv.for-simple.vert.out @@ -1,6 +1,6 @@ spv.for-simple.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 24 Capability Shader diff --git a/Test/baseResults/spv.forLoop.frag.out b/Test/baseResults/spv.forLoop.frag.out index a07921ce..b4b0f5d4 100644 --- a/Test/baseResults/spv.forLoop.frag.out +++ b/Test/baseResults/spv.forLoop.frag.out @@ -1,6 +1,6 @@ spv.forLoop.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 131 Capability Shader diff --git a/Test/baseResults/spv.forwardFun.frag.out b/Test/baseResults/spv.forwardFun.frag.out index 3e96403e..26140aff 100644 --- a/Test/baseResults/spv.forwardFun.frag.out +++ b/Test/baseResults/spv.forwardFun.frag.out @@ -1,6 +1,6 @@ spv.forwardFun.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 60 Capability Shader diff --git a/Test/baseResults/spv.fragmentDensity-es.frag.out b/Test/baseResults/spv.fragmentDensity-es.frag.out index 01ac3833..69f92c8a 100644 --- a/Test/baseResults/spv.fragmentDensity-es.frag.out +++ b/Test/baseResults/spv.fragmentDensity-es.frag.out @@ -1,6 +1,6 @@ spv.fragmentDensity-es.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 18 Capability Shader diff --git a/Test/baseResults/spv.fragmentDensity.frag.out b/Test/baseResults/spv.fragmentDensity.frag.out index 8bbc37cc..5bdb43a7 100644 --- a/Test/baseResults/spv.fragmentDensity.frag.out +++ b/Test/baseResults/spv.fragmentDensity.frag.out @@ -1,6 +1,6 @@ spv.fragmentDensity.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 21 Capability Shader diff --git a/Test/baseResults/spv.fragmentShaderBarycentric.frag.out b/Test/baseResults/spv.fragmentShaderBarycentric.frag.out index ffb3527c..fbded6e4 100644 --- a/Test/baseResults/spv.fragmentShaderBarycentric.frag.out +++ b/Test/baseResults/spv.fragmentShaderBarycentric.frag.out @@ -1,6 +1,6 @@ spv.fragmentShaderBarycentric.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 43 Capability Shader diff --git a/Test/baseResults/spv.fragmentShaderBarycentric2.frag.out b/Test/baseResults/spv.fragmentShaderBarycentric2.frag.out index 05dce7a7..22b84ba8 100644 --- a/Test/baseResults/spv.fragmentShaderBarycentric2.frag.out +++ b/Test/baseResults/spv.fragmentShaderBarycentric2.frag.out @@ -1,6 +1,6 @@ spv.fragmentShaderBarycentric2.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 42 Capability Shader diff --git a/Test/baseResults/spv.fsi.frag.out b/Test/baseResults/spv.fsi.frag.out index 51fb0688..b0c97134 100644 --- a/Test/baseResults/spv.fsi.frag.out +++ b/Test/baseResults/spv.fsi.frag.out @@ -1,6 +1,6 @@ spv.fsi.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 24 Capability Shader diff --git a/Test/baseResults/spv.fullyCovered.frag.out b/Test/baseResults/spv.fullyCovered.frag.out index 76c8e44d..4dbea15f 100644 --- a/Test/baseResults/spv.fullyCovered.frag.out +++ b/Test/baseResults/spv.fullyCovered.frag.out @@ -1,6 +1,6 @@ spv.fullyCovered.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 18 Capability Shader diff --git a/Test/baseResults/spv.functionCall.frag.out b/Test/baseResults/spv.functionCall.frag.out index a8b7ad15..4fa7863b 100644 --- a/Test/baseResults/spv.functionCall.frag.out +++ b/Test/baseResults/spv.functionCall.frag.out @@ -4,7 +4,7 @@ WARNING: 0:4: varying deprecated in version 130; may be removed in future releas WARNING: 0:5: varying deprecated in version 130; may be removed in future release // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 76 Capability Shader diff --git a/Test/baseResults/spv.functionNestedOpaque.vert.out b/Test/baseResults/spv.functionNestedOpaque.vert.out index df590c19..4543895e 100644 --- a/Test/baseResults/spv.functionNestedOpaque.vert.out +++ b/Test/baseResults/spv.functionNestedOpaque.vert.out @@ -1,7 +1,7 @@ spv.functionNestedOpaque.vert Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 39 Capability Shader diff --git a/Test/baseResults/spv.functionParameterTypes.frag.out b/Test/baseResults/spv.functionParameterTypes.frag.out index 24e780e2..decc1904 100644 --- a/Test/baseResults/spv.functionParameterTypes.frag.out +++ b/Test/baseResults/spv.functionParameterTypes.frag.out @@ -1,6 +1,6 @@ spv.functionParameterTypes.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 34 Capability Shader diff --git a/Test/baseResults/spv.functionSemantics.frag.out b/Test/baseResults/spv.functionSemantics.frag.out index 49bdf7cd..000a7bc9 100644 --- a/Test/baseResults/spv.functionSemantics.frag.out +++ b/Test/baseResults/spv.functionSemantics.frag.out @@ -1,6 +1,6 @@ spv.functionSemantics.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 156 Capability Shader diff --git a/Test/baseResults/spv.glFragColor.frag.out b/Test/baseResults/spv.glFragColor.frag.out index 55fb24f1..af252804 100644 --- a/Test/baseResults/spv.glFragColor.frag.out +++ b/Test/baseResults/spv.glFragColor.frag.out @@ -1,6 +1,6 @@ spv.glFragColor.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 12 Capability Shader diff --git a/Test/baseResults/spv.glsl.register.autoassign.frag.out b/Test/baseResults/spv.glsl.register.autoassign.frag.out index 9c8ccb50..9872f4a4 100644 --- a/Test/baseResults/spv.glsl.register.autoassign.frag.out +++ b/Test/baseResults/spv.glsl.register.autoassign.frag.out @@ -1,6 +1,6 @@ spv.glsl.register.autoassign.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 142 Capability Shader diff --git a/Test/baseResults/spv.glsl.register.noautoassign.frag.out b/Test/baseResults/spv.glsl.register.noautoassign.frag.out index 44d63ed1..b52e2201 100644 --- a/Test/baseResults/spv.glsl.register.noautoassign.frag.out +++ b/Test/baseResults/spv.glsl.register.noautoassign.frag.out @@ -1,6 +1,6 @@ spv.glsl.register.noautoassign.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 142 Capability Shader diff --git a/Test/baseResults/spv.image.frag.out b/Test/baseResults/spv.image.frag.out index 0fefd01a..63d26d8d 100644 --- a/Test/baseResults/spv.image.frag.out +++ b/Test/baseResults/spv.image.frag.out @@ -1,7 +1,7 @@ spv.image.frag Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 395 Capability Shader diff --git a/Test/baseResults/spv.imageLoadStoreLod.frag.out b/Test/baseResults/spv.imageLoadStoreLod.frag.out index 28cd4f96..526d7392 100644 --- a/Test/baseResults/spv.imageLoadStoreLod.frag.out +++ b/Test/baseResults/spv.imageLoadStoreLod.frag.out @@ -1,7 +1,7 @@ spv.imageLoadStoreLod.frag Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 82 Capability Shader diff --git a/Test/baseResults/spv.int16.amd.frag.out b/Test/baseResults/spv.int16.amd.frag.out index 26c701db..3f6179b9 100644 --- a/Test/baseResults/spv.int16.amd.frag.out +++ b/Test/baseResults/spv.int16.amd.frag.out @@ -1,6 +1,6 @@ spv.int16.amd.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 560 Capability Shader diff --git a/Test/baseResults/spv.int16.frag.out b/Test/baseResults/spv.int16.frag.out index a7b9bfe6..ff8a4462 100644 --- a/Test/baseResults/spv.int16.frag.out +++ b/Test/baseResults/spv.int16.frag.out @@ -1,6 +1,6 @@ spv.int16.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 523 Capability Shader diff --git a/Test/baseResults/spv.int32.frag.out b/Test/baseResults/spv.int32.frag.out index e5c78894..1e8cd702 100644 --- a/Test/baseResults/spv.int32.frag.out +++ b/Test/baseResults/spv.int32.frag.out @@ -1,6 +1,6 @@ spv.int32.frag // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 493 Capability Shader diff --git a/Test/baseResults/spv.int64.frag.out b/Test/baseResults/spv.int64.frag.out index b1375a66..4510134d 100644 --- a/Test/baseResults/spv.int64.frag.out +++ b/Test/baseResults/spv.int64.frag.out @@ -1,7 +1,7 @@ spv.int64.frag Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 489 Capability Shader diff --git a/Test/baseResults/spv.int8.frag.out b/Test/baseResults/spv.int8.frag.out index 0a4740d3..c84ca7e0 100644 --- a/Test/baseResults/spv.int8.frag.out +++ b/Test/baseResults/spv.int8.frag.out @@ -1,6 +1,6 @@ spv.int8.frag // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 518 Capability Shader diff --git a/Test/baseResults/spv.intOps.vert.out b/Test/baseResults/spv.intOps.vert.out index 2a637832..272233ec 100644 --- a/Test/baseResults/spv.intOps.vert.out +++ b/Test/baseResults/spv.intOps.vert.out @@ -1,6 +1,6 @@ spv.intOps.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 268 Capability Shader diff --git a/Test/baseResults/spv.intcoopmat.comp.out b/Test/baseResults/spv.intcoopmat.comp.out index 06f5623d..940ba331 100644 --- a/Test/baseResults/spv.intcoopmat.comp.out +++ b/Test/baseResults/spv.intcoopmat.comp.out @@ -1,6 +1,6 @@ spv.intcoopmat.comp // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 262 Capability Shader diff --git a/Test/baseResults/spv.interpOps.frag.out b/Test/baseResults/spv.interpOps.frag.out index 699524dd..7ec4f9f4 100644 --- a/Test/baseResults/spv.interpOps.frag.out +++ b/Test/baseResults/spv.interpOps.frag.out @@ -1,6 +1,6 @@ spv.interpOps.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 100 Capability Shader diff --git a/Test/baseResults/spv.layoutNested.vert.out b/Test/baseResults/spv.layoutNested.vert.out index b5ef8834..44d58abf 100644 --- a/Test/baseResults/spv.layoutNested.vert.out +++ b/Test/baseResults/spv.layoutNested.vert.out @@ -1,6 +1,6 @@ spv.layoutNested.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 66 Capability Shader diff --git a/Test/baseResults/spv.length.frag.out b/Test/baseResults/spv.length.frag.out index 8e799fbb..de391bc5 100644 --- a/Test/baseResults/spv.length.frag.out +++ b/Test/baseResults/spv.length.frag.out @@ -1,6 +1,6 @@ spv.length.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 33 Capability Shader diff --git a/Test/baseResults/spv.localAggregates.frag.out b/Test/baseResults/spv.localAggregates.frag.out index f5fad547..adfa0fd1 100644 --- a/Test/baseResults/spv.localAggregates.frag.out +++ b/Test/baseResults/spv.localAggregates.frag.out @@ -1,6 +1,6 @@ spv.localAggregates.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 136 Capability Shader diff --git a/Test/baseResults/spv.loops.frag.out b/Test/baseResults/spv.loops.frag.out index 046360f6..a3a34238 100644 --- a/Test/baseResults/spv.loops.frag.out +++ b/Test/baseResults/spv.loops.frag.out @@ -1,6 +1,6 @@ spv.loops.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 725 Capability Shader diff --git a/Test/baseResults/spv.loopsArtificial.frag.out b/Test/baseResults/spv.loopsArtificial.frag.out index d0d60542..65329d4c 100644 --- a/Test/baseResults/spv.loopsArtificial.frag.out +++ b/Test/baseResults/spv.loopsArtificial.frag.out @@ -1,6 +1,6 @@ spv.loopsArtificial.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 158 Capability Shader diff --git a/Test/baseResults/spv.matFun.vert.out b/Test/baseResults/spv.matFun.vert.out index 8ed378f8..d39160d0 100644 --- a/Test/baseResults/spv.matFun.vert.out +++ b/Test/baseResults/spv.matFun.vert.out @@ -1,6 +1,6 @@ spv.matFun.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 103 Capability Shader diff --git a/Test/baseResults/spv.matrix.frag.out b/Test/baseResults/spv.matrix.frag.out index c2b4a1f6..f7b6ce30 100644 --- a/Test/baseResults/spv.matrix.frag.out +++ b/Test/baseResults/spv.matrix.frag.out @@ -1,6 +1,6 @@ spv.matrix.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 286 Capability Shader diff --git a/Test/baseResults/spv.matrix2.frag.out b/Test/baseResults/spv.matrix2.frag.out index dc574a40..77a098a8 100644 --- a/Test/baseResults/spv.matrix2.frag.out +++ b/Test/baseResults/spv.matrix2.frag.out @@ -1,6 +1,6 @@ spv.matrix2.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 221 Capability Shader diff --git a/Test/baseResults/spv.memoryQualifier.frag.out b/Test/baseResults/spv.memoryQualifier.frag.out index 93c6b2db..737e862a 100644 --- a/Test/baseResults/spv.memoryQualifier.frag.out +++ b/Test/baseResults/spv.memoryQualifier.frag.out @@ -1,7 +1,7 @@ spv.memoryQualifier.frag Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 97 Capability Shader diff --git a/Test/baseResults/spv.memoryScopeSemantics.comp.out b/Test/baseResults/spv.memoryScopeSemantics.comp.out index 8c4e5763..29675915 100644 --- a/Test/baseResults/spv.memoryScopeSemantics.comp.out +++ b/Test/baseResults/spv.memoryScopeSemantics.comp.out @@ -1,6 +1,6 @@ spv.memoryScopeSemantics.comp // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 163 Capability Shader diff --git a/Test/baseResults/spv.merge-unreachable.frag.out b/Test/baseResults/spv.merge-unreachable.frag.out index 1c2234d4..3eab4ec9 100644 --- a/Test/baseResults/spv.merge-unreachable.frag.out +++ b/Test/baseResults/spv.merge-unreachable.frag.out @@ -1,6 +1,6 @@ spv.merge-unreachable.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 25 Capability Shader diff --git a/Test/baseResults/spv.meshShaderBuiltins.mesh.out b/Test/baseResults/spv.meshShaderBuiltins.mesh.out index 38d363bb..cea7e4d7 100644 --- a/Test/baseResults/spv.meshShaderBuiltins.mesh.out +++ b/Test/baseResults/spv.meshShaderBuiltins.mesh.out @@ -1,6 +1,6 @@ spv.meshShaderBuiltins.mesh // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 148 Capability ClipDistance diff --git a/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out b/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out index b912acaf..75f8c63a 100644 --- a/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out +++ b/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out @@ -1,6 +1,6 @@ spv.meshShaderPerViewBuiltins.mesh // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 126 Capability MultiViewport diff --git a/Test/baseResults/spv.meshShaderPerViewUserDefined.mesh.out b/Test/baseResults/spv.meshShaderPerViewUserDefined.mesh.out index 266f662d..de019a2b 100644 --- a/Test/baseResults/spv.meshShaderPerViewUserDefined.mesh.out +++ b/Test/baseResults/spv.meshShaderPerViewUserDefined.mesh.out @@ -1,6 +1,6 @@ spv.meshShaderPerViewUserDefined.mesh // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 108 Capability MeshShadingNV diff --git a/Test/baseResults/spv.meshShaderRedeclBuiltins.mesh.out b/Test/baseResults/spv.meshShaderRedeclBuiltins.mesh.out index 4afbef9f..e9ebd44c 100644 --- a/Test/baseResults/spv.meshShaderRedeclBuiltins.mesh.out +++ b/Test/baseResults/spv.meshShaderRedeclBuiltins.mesh.out @@ -1,6 +1,6 @@ spv.meshShaderRedeclBuiltins.mesh // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 129 Capability ClipDistance diff --git a/Test/baseResults/spv.meshShaderRedeclPerViewBuiltins.mesh.out b/Test/baseResults/spv.meshShaderRedeclPerViewBuiltins.mesh.out index 6672dc24..38542d5c 100644 --- a/Test/baseResults/spv.meshShaderRedeclPerViewBuiltins.mesh.out +++ b/Test/baseResults/spv.meshShaderRedeclPerViewBuiltins.mesh.out @@ -1,6 +1,6 @@ spv.meshShaderRedeclPerViewBuiltins.mesh // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 120 Capability PerViewAttributesNV diff --git a/Test/baseResults/spv.meshShaderSharedMem.mesh.out b/Test/baseResults/spv.meshShaderSharedMem.mesh.out index dd0003dd..adac07ff 100644 --- a/Test/baseResults/spv.meshShaderSharedMem.mesh.out +++ b/Test/baseResults/spv.meshShaderSharedMem.mesh.out @@ -1,6 +1,6 @@ spv.meshShaderSharedMem.mesh // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 77 Capability StorageImageWriteWithoutFormat diff --git a/Test/baseResults/spv.meshShaderTaskMem.mesh.out b/Test/baseResults/spv.meshShaderTaskMem.mesh.out index e14f7a85..057e0fdd 100644 --- a/Test/baseResults/spv.meshShaderTaskMem.mesh.out +++ b/Test/baseResults/spv.meshShaderTaskMem.mesh.out @@ -1,6 +1,6 @@ spv.meshShaderTaskMem.mesh // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 58 Capability MeshShadingNV diff --git a/Test/baseResults/spv.meshShaderUserDefined.mesh.out b/Test/baseResults/spv.meshShaderUserDefined.mesh.out index c3ec9150..43579bb4 100644 --- a/Test/baseResults/spv.meshShaderUserDefined.mesh.out +++ b/Test/baseResults/spv.meshShaderUserDefined.mesh.out @@ -1,6 +1,6 @@ spv.meshShaderUserDefined.mesh // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 138 Capability MeshShadingNV diff --git a/Test/baseResults/spv.meshTaskShader.task.out b/Test/baseResults/spv.meshTaskShader.task.out index a835d7fe..96d37c4a 100644 --- a/Test/baseResults/spv.meshTaskShader.task.out +++ b/Test/baseResults/spv.meshTaskShader.task.out @@ -1,6 +1,6 @@ spv.meshTaskShader.task // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 116 Capability StorageImageWriteWithoutFormat diff --git a/Test/baseResults/spv.multiStruct.comp.out b/Test/baseResults/spv.multiStruct.comp.out index 7e88a590..679a4bd7 100644 --- a/Test/baseResults/spv.multiStruct.comp.out +++ b/Test/baseResults/spv.multiStruct.comp.out @@ -1,6 +1,6 @@ spv.multiStruct.comp // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 161 Capability Shader diff --git a/Test/baseResults/spv.multiStructFuncall.frag.out b/Test/baseResults/spv.multiStructFuncall.frag.out index a3a4480a..9312fe92 100644 --- a/Test/baseResults/spv.multiStructFuncall.frag.out +++ b/Test/baseResults/spv.multiStructFuncall.frag.out @@ -1,6 +1,6 @@ spv.multiStructFuncall.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 66 Capability Shader diff --git a/Test/baseResults/spv.multiView.frag.out b/Test/baseResults/spv.multiView.frag.out index 9dbd36b9..53633525 100644 --- a/Test/baseResults/spv.multiView.frag.out +++ b/Test/baseResults/spv.multiView.frag.out @@ -1,6 +1,6 @@ spv.multiView.frag // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 17 Capability Shader diff --git a/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out b/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out index c06a890b..16e81a1e 100644 --- a/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out +++ b/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out @@ -1,6 +1,6 @@ spv.multiviewPerViewAttributes.tesc // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 41 Capability Tessellation diff --git a/Test/baseResults/spv.multiviewPerViewAttributes.vert.out b/Test/baseResults/spv.multiviewPerViewAttributes.vert.out index c8377cfa..acca44ee 100644 --- a/Test/baseResults/spv.multiviewPerViewAttributes.vert.out +++ b/Test/baseResults/spv.multiviewPerViewAttributes.vert.out @@ -1,6 +1,6 @@ spv.multiviewPerViewAttributes.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 29 Capability Shader diff --git a/Test/baseResults/spv.newTexture.frag.out b/Test/baseResults/spv.newTexture.frag.out index 1bad3fa7..6bbb0328 100644 --- a/Test/baseResults/spv.newTexture.frag.out +++ b/Test/baseResults/spv.newTexture.frag.out @@ -1,7 +1,7 @@ spv.newTexture.frag Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 284 Capability Shader diff --git a/Test/baseResults/spv.noDeadDecorations.vert.out b/Test/baseResults/spv.noDeadDecorations.vert.out index d7e37027..a555ba25 100644 --- a/Test/baseResults/spv.noDeadDecorations.vert.out +++ b/Test/baseResults/spv.noDeadDecorations.vert.out @@ -1,6 +1,6 @@ spv.noDeadDecorations.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 32 Capability Shader diff --git a/Test/baseResults/spv.noWorkgroup.comp.out b/Test/baseResults/spv.noWorkgroup.comp.out index 2624fdcd..92ae6706 100644 --- a/Test/baseResults/spv.noWorkgroup.comp.out +++ b/Test/baseResults/spv.noWorkgroup.comp.out @@ -1,6 +1,6 @@ spv.noWorkgroup.comp // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 12 Capability Shader diff --git a/Test/baseResults/spv.nonSquare.vert.out b/Test/baseResults/spv.nonSquare.vert.out index 679a5f0f..9746fe01 100644 --- a/Test/baseResults/spv.nonSquare.vert.out +++ b/Test/baseResults/spv.nonSquare.vert.out @@ -1,6 +1,6 @@ spv.nonSquare.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 90 Capability Shader diff --git a/Test/baseResults/spv.nonuniform.frag.out b/Test/baseResults/spv.nonuniform.frag.out index 3aaa8733..32b64662 100644 --- a/Test/baseResults/spv.nonuniform.frag.out +++ b/Test/baseResults/spv.nonuniform.frag.out @@ -1,6 +1,6 @@ spv.nonuniform.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 212 Capability Shader diff --git a/Test/baseResults/spv.nonuniform2.frag.out b/Test/baseResults/spv.nonuniform2.frag.out index 3f101fe1..db24f417 100644 --- a/Test/baseResults/spv.nonuniform2.frag.out +++ b/Test/baseResults/spv.nonuniform2.frag.out @@ -1,6 +1,6 @@ spv.nonuniform2.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 24 Capability Shader diff --git a/Test/baseResults/spv.offsets.frag.out b/Test/baseResults/spv.offsets.frag.out index 17d7b86e..08a75e94 100644 --- a/Test/baseResults/spv.offsets.frag.out +++ b/Test/baseResults/spv.offsets.frag.out @@ -1,6 +1,6 @@ spv.offsets.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 15 Capability Shader diff --git a/Test/baseResults/spv.paramMemory.frag.out b/Test/baseResults/spv.paramMemory.frag.out index cba2fbd0..df13c65f 100644 --- a/Test/baseResults/spv.paramMemory.frag.out +++ b/Test/baseResults/spv.paramMemory.frag.out @@ -1,7 +1,7 @@ spv.paramMemory.frag Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 64 Capability Shader diff --git a/Test/baseResults/spv.perprimitiveNV.frag.out b/Test/baseResults/spv.perprimitiveNV.frag.out index eaff400c..9943ee9e 100644 --- a/Test/baseResults/spv.perprimitiveNV.frag.out +++ b/Test/baseResults/spv.perprimitiveNV.frag.out @@ -1,6 +1,6 @@ spv.perprimitiveNV.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 23 Capability Shader diff --git a/Test/baseResults/spv.pp.line.frag.out b/Test/baseResults/spv.pp.line.frag.out index 5794177f..12c5fa5f 100644 --- a/Test/baseResults/spv.pp.line.frag.out +++ b/Test/baseResults/spv.pp.line.frag.out @@ -3,7 +3,7 @@ WARNING: spv.pp.line.frag:6: varying deprecated in version 130; may be removed i WARNING: spv.pp.line.frag:7: varying deprecated in version 130; may be removed in future release // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 65 Capability Shader diff --git a/Test/baseResults/spv.precise.tesc.out b/Test/baseResults/spv.precise.tesc.out index 95a048fc..840e7b3b 100644 --- a/Test/baseResults/spv.precise.tesc.out +++ b/Test/baseResults/spv.precise.tesc.out @@ -1,6 +1,6 @@ spv.precise.tesc // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 72 Capability Tessellation diff --git a/Test/baseResults/spv.precise.tese.out b/Test/baseResults/spv.precise.tese.out index a73cbd83..b59ac0ec 100644 --- a/Test/baseResults/spv.precise.tese.out +++ b/Test/baseResults/spv.precise.tese.out @@ -1,6 +1,6 @@ spv.precise.tese // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 119 Capability Tessellation diff --git a/Test/baseResults/spv.precision.frag.out b/Test/baseResults/spv.precision.frag.out index 5ddb4927..ac4c0aa5 100644 --- a/Test/baseResults/spv.precision.frag.out +++ b/Test/baseResults/spv.precision.frag.out @@ -1,6 +1,6 @@ spv.precision.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 127 Capability Shader diff --git a/Test/baseResults/spv.precisionNonESSamp.frag.out b/Test/baseResults/spv.precisionNonESSamp.frag.out index 0620c41e..97681f36 100644 --- a/Test/baseResults/spv.precisionNonESSamp.frag.out +++ b/Test/baseResults/spv.precisionNonESSamp.frag.out @@ -1,6 +1,6 @@ spv.precisionNonESSamp.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 47 Capability Shader diff --git a/Test/baseResults/spv.prepost.frag.out b/Test/baseResults/spv.prepost.frag.out index 3b4bfd8a..a0dbbd46 100644 --- a/Test/baseResults/spv.prepost.frag.out +++ b/Test/baseResults/spv.prepost.frag.out @@ -1,6 +1,6 @@ spv.prepost.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 94 Capability Shader diff --git a/Test/baseResults/spv.privateVariableTypes.frag.out b/Test/baseResults/spv.privateVariableTypes.frag.out index 9b4063ed..1b8e1a5c 100644 --- a/Test/baseResults/spv.privateVariableTypes.frag.out +++ b/Test/baseResults/spv.privateVariableTypes.frag.out @@ -1,6 +1,6 @@ spv.privateVariableTypes.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 27 Capability Shader diff --git a/Test/baseResults/spv.pushConstant.vert.out b/Test/baseResults/spv.pushConstant.vert.out index 40ee3284..5348edb4 100644 --- a/Test/baseResults/spv.pushConstant.vert.out +++ b/Test/baseResults/spv.pushConstant.vert.out @@ -1,6 +1,6 @@ spv.pushConstant.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 35 Capability Shader diff --git a/Test/baseResults/spv.pushConstantAnon.vert.out b/Test/baseResults/spv.pushConstantAnon.vert.out index b03855da..3932b42e 100644 --- a/Test/baseResults/spv.pushConstantAnon.vert.out +++ b/Test/baseResults/spv.pushConstantAnon.vert.out @@ -1,6 +1,6 @@ spv.pushConstantAnon.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 38 Capability Shader diff --git a/Test/baseResults/spv.qualifiers.vert.out b/Test/baseResults/spv.qualifiers.vert.out index ffdc6f80..47f73a0a 100644 --- a/Test/baseResults/spv.qualifiers.vert.out +++ b/Test/baseResults/spv.qualifiers.vert.out @@ -1,6 +1,6 @@ spv.qualifiers.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 21 Capability Shader diff --git a/Test/baseResults/spv.queryL.frag.out b/Test/baseResults/spv.queryL.frag.out index 87dbb8c1..97d845a1 100644 --- a/Test/baseResults/spv.queryL.frag.out +++ b/Test/baseResults/spv.queryL.frag.out @@ -1,7 +1,7 @@ spv.queryL.frag Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 224 Capability Shader diff --git a/Test/baseResults/spv.rankShift.comp.out b/Test/baseResults/spv.rankShift.comp.out index 3ca75145..e0fba776 100644 --- a/Test/baseResults/spv.rankShift.comp.out +++ b/Test/baseResults/spv.rankShift.comp.out @@ -1,6 +1,6 @@ spv.rankShift.comp // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 33 Capability Shader diff --git a/Test/baseResults/spv.register.autoassign-2.frag.out b/Test/baseResults/spv.register.autoassign-2.frag.out index 533e3880..9fd317ef 100644 --- a/Test/baseResults/spv.register.autoassign-2.frag.out +++ b/Test/baseResults/spv.register.autoassign-2.frag.out @@ -1,6 +1,6 @@ spv.register.autoassign-2.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 47 Capability Shader diff --git a/Test/baseResults/spv.register.autoassign.frag.out b/Test/baseResults/spv.register.autoassign.frag.out index 123ea356..74118efc 100644 --- a/Test/baseResults/spv.register.autoassign.frag.out +++ b/Test/baseResults/spv.register.autoassign.frag.out @@ -1,6 +1,6 @@ spv.register.autoassign.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 155 Capability Shader diff --git a/Test/baseResults/spv.register.noautoassign.frag.out b/Test/baseResults/spv.register.noautoassign.frag.out index 3259f41f..1292b0b2 100644 --- a/Test/baseResults/spv.register.noautoassign.frag.out +++ b/Test/baseResults/spv.register.noautoassign.frag.out @@ -1,6 +1,6 @@ spv.register.noautoassign.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 155 Capability Shader diff --git a/Test/baseResults/spv.register.subpass.frag.out b/Test/baseResults/spv.register.subpass.frag.out index c42832a9..21f79558 100644 --- a/Test/baseResults/spv.register.subpass.frag.out +++ b/Test/baseResults/spv.register.subpass.frag.out @@ -1,6 +1,6 @@ spv.register.subpass.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 40 Capability Shader diff --git a/Test/baseResults/spv.rw.autoassign.frag.out b/Test/baseResults/spv.rw.autoassign.frag.out index 2ee30bc5..a575e786 100644 --- a/Test/baseResults/spv.rw.autoassign.frag.out +++ b/Test/baseResults/spv.rw.autoassign.frag.out @@ -1,6 +1,6 @@ spv.rw.autoassign.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 42 Capability Shader diff --git a/Test/baseResults/spv.sample.frag.out b/Test/baseResults/spv.sample.frag.out index e4d38f35..57fbf31d 100644 --- a/Test/baseResults/spv.sample.frag.out +++ b/Test/baseResults/spv.sample.frag.out @@ -1,6 +1,6 @@ spv.sample.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 13 Capability Shader diff --git a/Test/baseResults/spv.sampleId.frag.out b/Test/baseResults/spv.sampleId.frag.out index 894d8db8..1412da26 100644 --- a/Test/baseResults/spv.sampleId.frag.out +++ b/Test/baseResults/spv.sampleId.frag.out @@ -1,6 +1,6 @@ spv.sampleId.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 26 Capability Shader diff --git a/Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out b/Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out index 3a9872e3..28923255 100644 --- a/Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out +++ b/Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out @@ -1,6 +1,6 @@ spv.sampleMaskOverrideCoverage.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 20 Capability Shader diff --git a/Test/baseResults/spv.samplePosition.frag.out b/Test/baseResults/spv.samplePosition.frag.out index 882423ee..b06c7685 100644 --- a/Test/baseResults/spv.samplePosition.frag.out +++ b/Test/baseResults/spv.samplePosition.frag.out @@ -1,6 +1,6 @@ spv.samplePosition.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 30 Capability Shader diff --git a/Test/baseResults/spv.samplerlessTextureFunctions.frag.out b/Test/baseResults/spv.samplerlessTextureFunctions.frag.out index 0f09b43e..c12201e3 100644 --- a/Test/baseResults/spv.samplerlessTextureFunctions.frag.out +++ b/Test/baseResults/spv.samplerlessTextureFunctions.frag.out @@ -1,6 +1,6 @@ spv.samplerlessTextureFunctions.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 51 Capability Shader diff --git a/Test/baseResults/spv.scalarlayout.frag.out b/Test/baseResults/spv.scalarlayout.frag.out index 0168bc3e..1b26242d 100644 --- a/Test/baseResults/spv.scalarlayout.frag.out +++ b/Test/baseResults/spv.scalarlayout.frag.out @@ -1,7 +1,7 @@ spv.scalarlayout.frag Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 20 Capability Shader diff --git a/Test/baseResults/spv.scalarlayoutfloat16.frag.out b/Test/baseResults/spv.scalarlayoutfloat16.frag.out index dac7e3a3..c88fa7f2 100644 --- a/Test/baseResults/spv.scalarlayoutfloat16.frag.out +++ b/Test/baseResults/spv.scalarlayoutfloat16.frag.out @@ -1,7 +1,7 @@ spv.scalarlayoutfloat16.frag Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 18 Capability Shader diff --git a/Test/baseResults/spv.separate.frag.out b/Test/baseResults/spv.separate.frag.out index 27cd3be0..690ab2f6 100644 --- a/Test/baseResults/spv.separate.frag.out +++ b/Test/baseResults/spv.separate.frag.out @@ -1,7 +1,7 @@ spv.separate.frag Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 319 Capability Shader diff --git a/Test/baseResults/spv.set.vert.out b/Test/baseResults/spv.set.vert.out index 16d771fc..fe4326f2 100644 --- a/Test/baseResults/spv.set.vert.out +++ b/Test/baseResults/spv.set.vert.out @@ -1,6 +1,6 @@ spv.set.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 22 Capability Shader diff --git a/Test/baseResults/spv.shaderBallot.comp.out b/Test/baseResults/spv.shaderBallot.comp.out index 1c616ee5..3ddee0f2 100644 --- a/Test/baseResults/spv.shaderBallot.comp.out +++ b/Test/baseResults/spv.shaderBallot.comp.out @@ -1,6 +1,6 @@ spv.shaderBallot.comp // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 318 Capability Shader diff --git a/Test/baseResults/spv.shaderBallotAMD.comp.out b/Test/baseResults/spv.shaderBallotAMD.comp.out index 62ce6f27..eb8f404f 100644 --- a/Test/baseResults/spv.shaderBallotAMD.comp.out +++ b/Test/baseResults/spv.shaderBallotAMD.comp.out @@ -1,6 +1,6 @@ spv.shaderBallotAMD.comp // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 1343 Capability Shader diff --git a/Test/baseResults/spv.shaderDrawParams.vert.out b/Test/baseResults/spv.shaderDrawParams.vert.out index d6b43e8f..ad51de19 100644 --- a/Test/baseResults/spv.shaderDrawParams.vert.out +++ b/Test/baseResults/spv.shaderDrawParams.vert.out @@ -1,6 +1,6 @@ spv.shaderDrawParams.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 53 Capability Shader diff --git a/Test/baseResults/spv.shaderFragMaskAMD.frag.out b/Test/baseResults/spv.shaderFragMaskAMD.frag.out index 788d3ee6..b1e5c0d6 100644 --- a/Test/baseResults/spv.shaderFragMaskAMD.frag.out +++ b/Test/baseResults/spv.shaderFragMaskAMD.frag.out @@ -1,6 +1,6 @@ spv.shaderFragMaskAMD.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 80 Capability Shader diff --git a/Test/baseResults/spv.shaderGroupVote.comp.out b/Test/baseResults/spv.shaderGroupVote.comp.out index e45f5858..a09e798d 100644 --- a/Test/baseResults/spv.shaderGroupVote.comp.out +++ b/Test/baseResults/spv.shaderGroupVote.comp.out @@ -1,6 +1,6 @@ spv.shaderGroupVote.comp // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 33 Capability Shader diff --git a/Test/baseResults/spv.shaderImageFootprint.frag.out b/Test/baseResults/spv.shaderImageFootprint.frag.out index 8218ee42..75595648 100644 --- a/Test/baseResults/spv.shaderImageFootprint.frag.out +++ b/Test/baseResults/spv.shaderImageFootprint.frag.out @@ -1,6 +1,6 @@ spv.shaderImageFootprint.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 622 Capability Shader diff --git a/Test/baseResults/spv.shaderStencilExport.frag.out b/Test/baseResults/spv.shaderStencilExport.frag.out index 8fc691ee..37fce5fc 100644 --- a/Test/baseResults/spv.shaderStencilExport.frag.out +++ b/Test/baseResults/spv.shaderStencilExport.frag.out @@ -1,6 +1,6 @@ spv.shaderStencilExport.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 10 Capability Shader diff --git a/Test/baseResults/spv.shadingRate.frag.out b/Test/baseResults/spv.shadingRate.frag.out index 11477769..ce561132 100644 --- a/Test/baseResults/spv.shadingRate.frag.out +++ b/Test/baseResults/spv.shadingRate.frag.out @@ -1,6 +1,6 @@ spv.shadingRate.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 21 Capability Shader diff --git a/Test/baseResults/spv.shiftOps.frag.out b/Test/baseResults/spv.shiftOps.frag.out index 3085a55d..15df2365 100644 --- a/Test/baseResults/spv.shiftOps.frag.out +++ b/Test/baseResults/spv.shiftOps.frag.out @@ -1,6 +1,6 @@ spv.shiftOps.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 38 Capability Shader diff --git a/Test/baseResults/spv.shortCircuit.frag.out b/Test/baseResults/spv.shortCircuit.frag.out index d6518245..6104b04c 100644 --- a/Test/baseResults/spv.shortCircuit.frag.out +++ b/Test/baseResults/spv.shortCircuit.frag.out @@ -1,6 +1,6 @@ spv.shortCircuit.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 147 Capability Shader diff --git a/Test/baseResults/spv.simpleFunctionCall.frag.out b/Test/baseResults/spv.simpleFunctionCall.frag.out index 627b31c1..8e666a60 100644 --- a/Test/baseResults/spv.simpleFunctionCall.frag.out +++ b/Test/baseResults/spv.simpleFunctionCall.frag.out @@ -1,6 +1,6 @@ spv.simpleFunctionCall.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 19 Capability Shader diff --git a/Test/baseResults/spv.simpleMat.vert.out b/Test/baseResults/spv.simpleMat.vert.out index 85574585..ff51dc0d 100644 --- a/Test/baseResults/spv.simpleMat.vert.out +++ b/Test/baseResults/spv.simpleMat.vert.out @@ -2,7 +2,7 @@ spv.simpleMat.vert WARNING: 0:3: varying deprecated in version 130; may be removed in future release // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 39 Capability Shader diff --git a/Test/baseResults/spv.smBuiltins.frag.out b/Test/baseResults/spv.smBuiltins.frag.out index fda06eb5..9f4cc60f 100644 --- a/Test/baseResults/spv.smBuiltins.frag.out +++ b/Test/baseResults/spv.smBuiltins.frag.out @@ -1,6 +1,6 @@ spv.smBuiltins.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 20 Capability Shader diff --git a/Test/baseResults/spv.smBuiltins.vert.out b/Test/baseResults/spv.smBuiltins.vert.out index 8423e5b8..0453b0cf 100644 --- a/Test/baseResults/spv.smBuiltins.vert.out +++ b/Test/baseResults/spv.smBuiltins.vert.out @@ -1,6 +1,6 @@ spv.smBuiltins.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 29 Capability Shader diff --git a/Test/baseResults/spv.sparseTexture.frag.out b/Test/baseResults/spv.sparseTexture.frag.out index 7fdea0c4..34142008 100644 --- a/Test/baseResults/spv.sparseTexture.frag.out +++ b/Test/baseResults/spv.sparseTexture.frag.out @@ -1,7 +1,7 @@ spv.sparseTexture.frag Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 438 Capability Shader diff --git a/Test/baseResults/spv.sparseTextureClamp.frag.out b/Test/baseResults/spv.sparseTextureClamp.frag.out index ff7dce56..fedd64aa 100644 --- a/Test/baseResults/spv.sparseTextureClamp.frag.out +++ b/Test/baseResults/spv.sparseTextureClamp.frag.out @@ -1,7 +1,7 @@ spv.sparseTextureClamp.frag Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 360 Capability Shader diff --git a/Test/baseResults/spv.specConst.vert.out b/Test/baseResults/spv.specConst.vert.out index 70fbd09e..116c136f 100644 --- a/Test/baseResults/spv.specConst.vert.out +++ b/Test/baseResults/spv.specConst.vert.out @@ -1,6 +1,6 @@ spv.specConst.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 27 Capability Shader diff --git a/Test/baseResults/spv.specConstant.comp.out b/Test/baseResults/spv.specConstant.comp.out index 2f641501..e0ad6991 100644 --- a/Test/baseResults/spv.specConstant.comp.out +++ b/Test/baseResults/spv.specConstant.comp.out @@ -1,6 +1,6 @@ spv.specConstant.comp // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 27 Capability Shader diff --git a/Test/baseResults/spv.specConstant.vert.out b/Test/baseResults/spv.specConstant.vert.out index 49bcca69..1be39501 100644 --- a/Test/baseResults/spv.specConstant.vert.out +++ b/Test/baseResults/spv.specConstant.vert.out @@ -1,6 +1,6 @@ spv.specConstant.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 81 Capability Shader diff --git a/Test/baseResults/spv.specConstantComposite.vert.out b/Test/baseResults/spv.specConstantComposite.vert.out index 58d4b6a3..20a071b1 100644 --- a/Test/baseResults/spv.specConstantComposite.vert.out +++ b/Test/baseResults/spv.specConstantComposite.vert.out @@ -1,6 +1,6 @@ spv.specConstantComposite.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 43 Capability Shader diff --git a/Test/baseResults/spv.specConstantOperations.vert.out b/Test/baseResults/spv.specConstantOperations.vert.out index 0f141e38..747d50b5 100644 --- a/Test/baseResults/spv.specConstantOperations.vert.out +++ b/Test/baseResults/spv.specConstantOperations.vert.out @@ -1,6 +1,6 @@ spv.specConstantOperations.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 162 Capability Shader diff --git a/Test/baseResults/spv.ssbo.autoassign.frag.out b/Test/baseResults/spv.ssbo.autoassign.frag.out index 40afa15f..7d648479 100644 --- a/Test/baseResults/spv.ssbo.autoassign.frag.out +++ b/Test/baseResults/spv.ssbo.autoassign.frag.out @@ -1,6 +1,6 @@ spv.ssbo.autoassign.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 99 Capability Shader diff --git a/Test/baseResults/spv.ssboAlias.frag.out b/Test/baseResults/spv.ssboAlias.frag.out index f03d2ca9..1711d9d9 100644 --- a/Test/baseResults/spv.ssboAlias.frag.out +++ b/Test/baseResults/spv.ssboAlias.frag.out @@ -1,6 +1,6 @@ spv.ssboAlias.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 44 Capability Shader diff --git a/Test/baseResults/spv.stereoViewRendering.tesc.out b/Test/baseResults/spv.stereoViewRendering.tesc.out index 43afff97..2cab0640 100644 --- a/Test/baseResults/spv.stereoViewRendering.tesc.out +++ b/Test/baseResults/spv.stereoViewRendering.tesc.out @@ -1,6 +1,6 @@ spv.stereoViewRendering.tesc // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 42 Capability Geometry diff --git a/Test/baseResults/spv.stereoViewRendering.vert.out b/Test/baseResults/spv.stereoViewRendering.vert.out index afd8c75a..acb8338c 100644 --- a/Test/baseResults/spv.stereoViewRendering.vert.out +++ b/Test/baseResults/spv.stereoViewRendering.vert.out @@ -1,6 +1,6 @@ spv.stereoViewRendering.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 27 Capability Shader diff --git a/Test/baseResults/spv.storageBuffer.vert.out b/Test/baseResults/spv.storageBuffer.vert.out index 5006e4cc..79cf9f19 100644 --- a/Test/baseResults/spv.storageBuffer.vert.out +++ b/Test/baseResults/spv.storageBuffer.vert.out @@ -1,6 +1,6 @@ spv.storageBuffer.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 31 Capability Shader diff --git a/Test/baseResults/spv.structAssignment.frag.out b/Test/baseResults/spv.structAssignment.frag.out index 4b357da8..d61c0e49 100644 --- a/Test/baseResults/spv.structAssignment.frag.out +++ b/Test/baseResults/spv.structAssignment.frag.out @@ -3,7 +3,7 @@ WARNING: 0:6: '' : all default precisions are highp; use precision statements to "precision mediump int; precision highp float;" // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 50 Capability Shader diff --git a/Test/baseResults/spv.structDeref.frag.out b/Test/baseResults/spv.structDeref.frag.out index 6888a850..2a114d72 100644 --- a/Test/baseResults/spv.structDeref.frag.out +++ b/Test/baseResults/spv.structDeref.frag.out @@ -1,6 +1,6 @@ spv.structDeref.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 123 Capability Shader diff --git a/Test/baseResults/spv.structure.frag.out b/Test/baseResults/spv.structure.frag.out index f1da59fa..e8f8b394 100644 --- a/Test/baseResults/spv.structure.frag.out +++ b/Test/baseResults/spv.structure.frag.out @@ -1,6 +1,6 @@ spv.structure.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 60 Capability Shader diff --git a/Test/baseResults/spv.subgroup.frag.out b/Test/baseResults/spv.subgroup.frag.out index 4dd636e5..ee932bfc 100644 --- a/Test/baseResults/spv.subgroup.frag.out +++ b/Test/baseResults/spv.subgroup.frag.out @@ -1,6 +1,6 @@ spv.subgroup.frag // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 17 Capability Shader diff --git a/Test/baseResults/spv.subgroup.geom.out b/Test/baseResults/spv.subgroup.geom.out index a68343af..279e6466 100644 --- a/Test/baseResults/spv.subgroup.geom.out +++ b/Test/baseResults/spv.subgroup.geom.out @@ -1,6 +1,6 @@ spv.subgroup.geom // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 26 Capability Geometry diff --git a/Test/baseResults/spv.subgroup.tesc.out b/Test/baseResults/spv.subgroup.tesc.out index 4e362e2d..bc55b4e7 100644 --- a/Test/baseResults/spv.subgroup.tesc.out +++ b/Test/baseResults/spv.subgroup.tesc.out @@ -1,6 +1,6 @@ spv.subgroup.tesc // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 26 Capability Tessellation diff --git a/Test/baseResults/spv.subgroup.tese.out b/Test/baseResults/spv.subgroup.tese.out index e09f558d..6b0a5ce7 100644 --- a/Test/baseResults/spv.subgroup.tese.out +++ b/Test/baseResults/spv.subgroup.tese.out @@ -1,6 +1,6 @@ spv.subgroup.tese // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 26 Capability Tessellation diff --git a/Test/baseResults/spv.subgroup.vert.out b/Test/baseResults/spv.subgroup.vert.out index 2fbc92ba..6deaf552 100644 --- a/Test/baseResults/spv.subgroup.vert.out +++ b/Test/baseResults/spv.subgroup.vert.out @@ -1,6 +1,6 @@ spv.subgroup.vert // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 26 Capability Shader diff --git a/Test/baseResults/spv.subgroupArithmetic.comp.out b/Test/baseResults/spv.subgroupArithmetic.comp.out index f4e251a0..29ea9ece 100644 --- a/Test/baseResults/spv.subgroupArithmetic.comp.out +++ b/Test/baseResults/spv.subgroupArithmetic.comp.out @@ -1,6 +1,6 @@ spv.subgroupArithmetic.comp // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 2085 Capability Shader diff --git a/Test/baseResults/spv.subgroupBallot.comp.out b/Test/baseResults/spv.subgroupBallot.comp.out index ea152d9a..9fe19648 100644 --- a/Test/baseResults/spv.subgroupBallot.comp.out +++ b/Test/baseResults/spv.subgroupBallot.comp.out @@ -1,6 +1,6 @@ spv.subgroupBallot.comp // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 397 Capability Shader diff --git a/Test/baseResults/spv.subgroupBasic.comp.out b/Test/baseResults/spv.subgroupBasic.comp.out index 641534d5..2f6571b4 100644 --- a/Test/baseResults/spv.subgroupBasic.comp.out +++ b/Test/baseResults/spv.subgroupBasic.comp.out @@ -1,6 +1,6 @@ spv.subgroupBasic.comp // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 40 Capability Shader diff --git a/Test/baseResults/spv.subgroupClustered.comp.out b/Test/baseResults/spv.subgroupClustered.comp.out index 150eb8aa..39712813 100644 --- a/Test/baseResults/spv.subgroupClustered.comp.out +++ b/Test/baseResults/spv.subgroupClustered.comp.out @@ -1,6 +1,6 @@ spv.subgroupClustered.comp // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 737 Capability Shader diff --git a/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out b/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out index 453d6fc8..263f48d0 100644 --- a/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out +++ b/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out @@ -1,6 +1,6 @@ spv.subgroupExtendedTypesArithmetic.comp // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 3665 Capability Shader diff --git a/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out b/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out index 4e1b2dc1..9f6a8c0f 100644 --- a/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out +++ b/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out @@ -1,6 +1,6 @@ spv.subgroupExtendedTypesBallot.comp // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 441 Capability Shader diff --git a/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out b/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out index b0b94b50..af3385ef 100644 --- a/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out +++ b/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out @@ -1,6 +1,6 @@ spv.subgroupExtendedTypesClustered.comp // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 1273 Capability Shader diff --git a/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out b/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out index 2f5a5703..9de4b981 100644 --- a/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out +++ b/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out @@ -1,6 +1,6 @@ spv.subgroupExtendedTypesPartitioned.comp // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 1558 Capability Shader diff --git a/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out b/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out index 7d37a410..ebd6132e 100644 --- a/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out +++ b/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out @@ -1,6 +1,6 @@ spv.subgroupExtendedTypesQuad.comp // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 806 Capability Shader diff --git a/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out b/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out index d647ded5..f2413892 100644 --- a/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out +++ b/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out @@ -1,6 +1,6 @@ spv.subgroupExtendedTypesShuffle.comp // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 497 Capability Shader diff --git a/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out b/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out index ef5def56..06150b03 100644 --- a/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out +++ b/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out @@ -1,6 +1,6 @@ spv.subgroupExtendedTypesShuffleRelative.comp // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 497 Capability Shader diff --git a/Test/baseResults/spv.subgroupExtendedTypesVote.comp.out b/Test/baseResults/spv.subgroupExtendedTypesVote.comp.out index a32c25d2..63cc844d 100644 --- a/Test/baseResults/spv.subgroupExtendedTypesVote.comp.out +++ b/Test/baseResults/spv.subgroupExtendedTypesVote.comp.out @@ -1,6 +1,6 @@ spv.subgroupExtendedTypesVote.comp // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 277 Capability Shader diff --git a/Test/baseResults/spv.subgroupPartitioned.comp.out b/Test/baseResults/spv.subgroupPartitioned.comp.out index 742e5bc4..e16e3091 100644 --- a/Test/baseResults/spv.subgroupPartitioned.comp.out +++ b/Test/baseResults/spv.subgroupPartitioned.comp.out @@ -1,6 +1,6 @@ spv.subgroupPartitioned.comp // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 2506 Capability Shader diff --git a/Test/baseResults/spv.subgroupQuad.comp.out b/Test/baseResults/spv.subgroupQuad.comp.out index 435c490f..1c5e9634 100644 --- a/Test/baseResults/spv.subgroupQuad.comp.out +++ b/Test/baseResults/spv.subgroupQuad.comp.out @@ -1,6 +1,6 @@ spv.subgroupQuad.comp // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 616 Capability Shader diff --git a/Test/baseResults/spv.subgroupShuffle.comp.out b/Test/baseResults/spv.subgroupShuffle.comp.out index 991c6fa7..532b0d28 100644 --- a/Test/baseResults/spv.subgroupShuffle.comp.out +++ b/Test/baseResults/spv.subgroupShuffle.comp.out @@ -1,6 +1,6 @@ spv.subgroupShuffle.comp // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 379 Capability Shader diff --git a/Test/baseResults/spv.subgroupShuffleRelative.comp.out b/Test/baseResults/spv.subgroupShuffleRelative.comp.out index 3aad7605..ae5589af 100644 --- a/Test/baseResults/spv.subgroupShuffleRelative.comp.out +++ b/Test/baseResults/spv.subgroupShuffleRelative.comp.out @@ -1,6 +1,6 @@ spv.subgroupShuffleRelative.comp // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 379 Capability Shader diff --git a/Test/baseResults/spv.subgroupVote.comp.out b/Test/baseResults/spv.subgroupVote.comp.out index 4fdbb0be..6f6f8cfe 100644 --- a/Test/baseResults/spv.subgroupVote.comp.out +++ b/Test/baseResults/spv.subgroupVote.comp.out @@ -1,6 +1,6 @@ spv.subgroupVote.comp // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 216 Capability Shader diff --git a/Test/baseResults/spv.subpass.frag.out b/Test/baseResults/spv.subpass.frag.out index 706624df..4bc556ad 100644 --- a/Test/baseResults/spv.subpass.frag.out +++ b/Test/baseResults/spv.subpass.frag.out @@ -1,6 +1,6 @@ spv.subpass.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 67 Capability Shader diff --git a/Test/baseResults/spv.switch.frag.out b/Test/baseResults/spv.switch.frag.out index 47cc5d4c..729257c5 100644 --- a/Test/baseResults/spv.switch.frag.out +++ b/Test/baseResults/spv.switch.frag.out @@ -4,7 +4,7 @@ WARNING: 0:134: 'switch' : last case/default label not followed by statements WARNING: 0:139: 'switch' : last case/default label not followed by statements // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 269 Capability Shader diff --git a/Test/baseResults/spv.swizzle.frag.out b/Test/baseResults/spv.swizzle.frag.out index 2a132d58..9b31a268 100644 --- a/Test/baseResults/spv.swizzle.frag.out +++ b/Test/baseResults/spv.swizzle.frag.out @@ -1,6 +1,6 @@ spv.swizzle.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 108 Capability Shader diff --git a/Test/baseResults/spv.swizzleInversion.frag.out b/Test/baseResults/spv.swizzleInversion.frag.out index 0aee7ae7..79643607 100644 --- a/Test/baseResults/spv.swizzleInversion.frag.out +++ b/Test/baseResults/spv.swizzleInversion.frag.out @@ -1,6 +1,6 @@ spv.swizzleInversion.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 46 Capability Shader diff --git a/Test/baseResults/spv.test.frag.out b/Test/baseResults/spv.test.frag.out index 02e4f669..db77cbbc 100644 --- a/Test/baseResults/spv.test.frag.out +++ b/Test/baseResults/spv.test.frag.out @@ -1,6 +1,6 @@ spv.test.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 55 Capability Shader diff --git a/Test/baseResults/spv.test.vert.out b/Test/baseResults/spv.test.vert.out index 3303c88b..3b06c666 100644 --- a/Test/baseResults/spv.test.vert.out +++ b/Test/baseResults/spv.test.vert.out @@ -2,7 +2,7 @@ spv.test.vert WARNING: 0:5: attribute deprecated in version 130; may be removed in future release // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 24 Capability Shader diff --git a/Test/baseResults/spv.texture.frag.out b/Test/baseResults/spv.texture.frag.out index d518ad7b..3ea73382 100644 --- a/Test/baseResults/spv.texture.frag.out +++ b/Test/baseResults/spv.texture.frag.out @@ -4,7 +4,7 @@ WARNING: 0:11: varying deprecated in version 130; may be removed in future relea WARNING: 0:12: varying deprecated in version 130; may be removed in future release // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 305 Capability Shader diff --git a/Test/baseResults/spv.texture.sampler.transform.frag.out b/Test/baseResults/spv.texture.sampler.transform.frag.out index 612f2a90..f2306e73 100644 --- a/Test/baseResults/spv.texture.sampler.transform.frag.out +++ b/Test/baseResults/spv.texture.sampler.transform.frag.out @@ -1,6 +1,6 @@ spv.texture.sampler.transform.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 20 Capability Shader diff --git a/Test/baseResults/spv.texture.vert.out b/Test/baseResults/spv.texture.vert.out index f3f979c9..3f9336ba 100644 --- a/Test/baseResults/spv.texture.vert.out +++ b/Test/baseResults/spv.texture.vert.out @@ -1,6 +1,6 @@ spv.texture.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 150 Capability Shader diff --git a/Test/baseResults/spv.textureBuffer.vert.out b/Test/baseResults/spv.textureBuffer.vert.out index 252a9c82..46312902 100644 --- a/Test/baseResults/spv.textureBuffer.vert.out +++ b/Test/baseResults/spv.textureBuffer.vert.out @@ -1,6 +1,6 @@ spv.textureBuffer.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 42 Capability Shader diff --git a/Test/baseResults/spv.textureGatherBiasLod.frag.out b/Test/baseResults/spv.textureGatherBiasLod.frag.out index cd18688f..aada70db 100644 --- a/Test/baseResults/spv.textureGatherBiasLod.frag.out +++ b/Test/baseResults/spv.textureGatherBiasLod.frag.out @@ -1,7 +1,7 @@ spv.textureGatherBiasLod.frag Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 298 Capability Shader diff --git a/Test/baseResults/spv.types.frag.out b/Test/baseResults/spv.types.frag.out index e6fd3e0c..3f7fd127 100644 --- a/Test/baseResults/spv.types.frag.out +++ b/Test/baseResults/spv.types.frag.out @@ -1,6 +1,6 @@ spv.types.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 260 Capability Shader diff --git a/Test/baseResults/spv.uint.frag.out b/Test/baseResults/spv.uint.frag.out index e6fe5e4d..612b323f 100644 --- a/Test/baseResults/spv.uint.frag.out +++ b/Test/baseResults/spv.uint.frag.out @@ -1,6 +1,6 @@ spv.uint.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 213 Capability Shader diff --git a/Test/baseResults/spv.uniformArray.frag.out b/Test/baseResults/spv.uniformArray.frag.out index 0f9883e4..339d1dec 100644 --- a/Test/baseResults/spv.uniformArray.frag.out +++ b/Test/baseResults/spv.uniformArray.frag.out @@ -1,6 +1,6 @@ spv.uniformArray.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 53 Capability Shader diff --git a/Test/baseResults/spv.unit1.frag.out b/Test/baseResults/spv.unit1.frag.out index d64d437f..b2ec724b 100644 --- a/Test/baseResults/spv.unit1.frag.out +++ b/Test/baseResults/spv.unit1.frag.out @@ -193,7 +193,7 @@ gl_FragCoord origin is upper left 0:? 'h3' ( global highp float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 69 Capability Shader diff --git a/Test/baseResults/spv.variableArrayIndex.frag.out b/Test/baseResults/spv.variableArrayIndex.frag.out index 87d934ec..cc6d96b3 100644 --- a/Test/baseResults/spv.variableArrayIndex.frag.out +++ b/Test/baseResults/spv.variableArrayIndex.frag.out @@ -1,6 +1,6 @@ spv.variableArrayIndex.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 93 Capability Shader diff --git a/Test/baseResults/spv.varyingArray.frag.out b/Test/baseResults/spv.varyingArray.frag.out index 2628f829..d5a59aea 100644 --- a/Test/baseResults/spv.varyingArray.frag.out +++ b/Test/baseResults/spv.varyingArray.frag.out @@ -1,6 +1,6 @@ spv.varyingArray.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 61 Capability Shader diff --git a/Test/baseResults/spv.varyingArrayIndirect.frag.out b/Test/baseResults/spv.varyingArrayIndirect.frag.out index 60e9857b..799def9e 100644 --- a/Test/baseResults/spv.varyingArrayIndirect.frag.out +++ b/Test/baseResults/spv.varyingArrayIndirect.frag.out @@ -1,6 +1,6 @@ spv.varyingArrayIndirect.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 70 Capability Shader diff --git a/Test/baseResults/spv.vecMatConstruct.frag.out b/Test/baseResults/spv.vecMatConstruct.frag.out index 57ecd67e..004b2bc6 100644 --- a/Test/baseResults/spv.vecMatConstruct.frag.out +++ b/Test/baseResults/spv.vecMatConstruct.frag.out @@ -1,6 +1,6 @@ spv.vecMatConstruct.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 62 Capability Shader diff --git a/Test/baseResults/spv.viewportArray2.tesc.out b/Test/baseResults/spv.viewportArray2.tesc.out index a4016d40..78ee00df 100644 --- a/Test/baseResults/spv.viewportArray2.tesc.out +++ b/Test/baseResults/spv.viewportArray2.tesc.out @@ -1,7 +1,7 @@ spv.viewportArray2.tesc Validation failed // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 25 Capability Geometry diff --git a/Test/baseResults/spv.viewportArray2.vert.out b/Test/baseResults/spv.viewportArray2.vert.out index df116cfc..6d419a62 100644 --- a/Test/baseResults/spv.viewportArray2.vert.out +++ b/Test/baseResults/spv.viewportArray2.vert.out @@ -1,6 +1,6 @@ spv.viewportArray2.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 19 Capability Shader diff --git a/Test/baseResults/spv.voidFunction.frag.out b/Test/baseResults/spv.voidFunction.frag.out index fbaee878..804b32ca 100644 --- a/Test/baseResults/spv.voidFunction.frag.out +++ b/Test/baseResults/spv.voidFunction.frag.out @@ -1,6 +1,6 @@ spv.voidFunction.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 43 Capability Shader diff --git a/Test/baseResults/spv.volatileAtomic.comp.out b/Test/baseResults/spv.volatileAtomic.comp.out index aa2d211a..8326374d 100644 --- a/Test/baseResults/spv.volatileAtomic.comp.out +++ b/Test/baseResults/spv.volatileAtomic.comp.out @@ -1,6 +1,6 @@ spv.volatileAtomic.comp // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 18 Capability Shader diff --git a/Test/baseResults/spv.vulkan110.int16.frag.out b/Test/baseResults/spv.vulkan110.int16.frag.out index 11f1cd3e..b94593c8 100644 --- a/Test/baseResults/spv.vulkan110.int16.frag.out +++ b/Test/baseResults/spv.vulkan110.int16.frag.out @@ -1,6 +1,6 @@ spv.vulkan110.int16.frag // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 523 Capability Shader diff --git a/Test/baseResults/spv.vulkan110.storageBuffer.vert.out b/Test/baseResults/spv.vulkan110.storageBuffer.vert.out index a0194713..7592cf71 100644 --- a/Test/baseResults/spv.vulkan110.storageBuffer.vert.out +++ b/Test/baseResults/spv.vulkan110.storageBuffer.vert.out @@ -1,6 +1,6 @@ spv.vulkan110.storageBuffer.vert // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 31 Capability Shader diff --git a/Test/baseResults/spv.while-continue-break.vert.out b/Test/baseResults/spv.while-continue-break.vert.out index d49bca09..132f5030 100644 --- a/Test/baseResults/spv.while-continue-break.vert.out +++ b/Test/baseResults/spv.while-continue-break.vert.out @@ -1,6 +1,6 @@ spv.while-continue-break.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 41 Capability Shader diff --git a/Test/baseResults/spv.while-simple.vert.out b/Test/baseResults/spv.while-simple.vert.out index b507da3e..ea9a9801 100644 --- a/Test/baseResults/spv.while-simple.vert.out +++ b/Test/baseResults/spv.while-simple.vert.out @@ -1,6 +1,6 @@ spv.while-simple.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 22 Capability Shader diff --git a/Test/baseResults/spv.whileLoop.frag.out b/Test/baseResults/spv.whileLoop.frag.out index e2949723..67d44f4e 100644 --- a/Test/baseResults/spv.whileLoop.frag.out +++ b/Test/baseResults/spv.whileLoop.frag.out @@ -1,6 +1,6 @@ spv.whileLoop.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 35 Capability Shader diff --git a/Test/baseResults/spv.xfb.vert.out b/Test/baseResults/spv.xfb.vert.out index 3cd93d50..7eb38b39 100644 --- a/Test/baseResults/spv.xfb.vert.out +++ b/Test/baseResults/spv.xfb.vert.out @@ -1,6 +1,6 @@ spv.xfb.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 16 Capability Shader diff --git a/Test/baseResults/spv.xfb2.vert.out b/Test/baseResults/spv.xfb2.vert.out index a8551a1a..0f593dae 100644 --- a/Test/baseResults/spv.xfb2.vert.out +++ b/Test/baseResults/spv.xfb2.vert.out @@ -1,6 +1,6 @@ spv.xfb2.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 35 Capability Shader diff --git a/Test/baseResults/spv.xfb3.vert.out b/Test/baseResults/spv.xfb3.vert.out index 0218847e..77894b49 100644 --- a/Test/baseResults/spv.xfb3.vert.out +++ b/Test/baseResults/spv.xfb3.vert.out @@ -1,6 +1,6 @@ spv.xfb3.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 35 Capability Shader diff --git a/Test/baseResults/spv.xfbOffsetOnBlockMembersAssignment.vert.out b/Test/baseResults/spv.xfbOffsetOnBlockMembersAssignment.vert.out index 066aa3a0..52ce9652 100644 --- a/Test/baseResults/spv.xfbOffsetOnBlockMembersAssignment.vert.out +++ b/Test/baseResults/spv.xfbOffsetOnBlockMembersAssignment.vert.out @@ -1,6 +1,6 @@ spv.xfbOffsetOnBlockMembersAssignment.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 33 Capability Shader diff --git a/Test/baseResults/spv.xfbOffsetOnStructMembersAssignment.vert.out b/Test/baseResults/spv.xfbOffsetOnStructMembersAssignment.vert.out index 668d24a5..13be843b 100644 --- a/Test/baseResults/spv.xfbOffsetOnStructMembersAssignment.vert.out +++ b/Test/baseResults/spv.xfbOffsetOnStructMembersAssignment.vert.out @@ -1,6 +1,6 @@ spv.xfbOffsetOnStructMembersAssignment.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 40 Capability Shader diff --git a/Test/baseResults/spv.xfbOverlapOffsetCheckWithBlockAndMember.vert.out b/Test/baseResults/spv.xfbOverlapOffsetCheckWithBlockAndMember.vert.out index ebc49629..7159f4a8 100644 --- a/Test/baseResults/spv.xfbOverlapOffsetCheckWithBlockAndMember.vert.out +++ b/Test/baseResults/spv.xfbOverlapOffsetCheckWithBlockAndMember.vert.out @@ -1,6 +1,6 @@ spv.xfbOverlapOffsetCheckWithBlockAndMember.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 39 Capability Shader diff --git a/Test/baseResults/spv.xfbStrideJustOnce.vert.out b/Test/baseResults/spv.xfbStrideJustOnce.vert.out index 9b459b50..270d17a1 100644 --- a/Test/baseResults/spv.xfbStrideJustOnce.vert.out +++ b/Test/baseResults/spv.xfbStrideJustOnce.vert.out @@ -1,6 +1,6 @@ spv.xfbStrideJustOnce.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 33 Capability Shader diff --git a/Test/baseResults/vulkan.ast.vert.out b/Test/baseResults/vulkan.ast.vert.out index 72a45705..2bf2065a 100644 --- a/Test/baseResults/vulkan.ast.vert.out +++ b/Test/baseResults/vulkan.ast.vert.out @@ -258,7 +258,7 @@ Shader version: 450 0:? 2 (const int) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 50 Capability Shader diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index fcb57f73..5933bce5 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -1,3 +1,3 @@ // This header is generated by the make-revision script. -#define GLSLANG_PATCH_LEVEL 3496 +#define GLSLANG_PATCH_LEVEL 3500 From 18d6b6b63e9adc2aa2cce1ce85d1c348f9475118 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Sun, 3 Nov 2019 00:22:47 -0600 Subject: [PATCH 70/94] Tests: Add more test results for the previous generator version bump. --- Test/baseResults/compoundsuffix.frag.hlsl | 2 +- Test/baseResults/glsl.entryPointRename.vert.bad.out | 2 +- Test/baseResults/glsl.entryPointRename.vert.out | 2 +- Test/baseResults/hlsl.dashI.vert.out | 2 +- Test/baseResults/hlsl.deadFunctionMissingBody.vert.out | 2 +- Test/baseResults/hlsl.entry.rename.frag.out | 2 +- Test/baseResults/hlsl.explicitDescriptorSet-2.frag.out | 2 +- Test/baseResults/hlsl.explicitDescriptorSet.frag.out | 2 +- Test/baseResults/hlsl.hlslOffset.vert.out | 2 +- Test/baseResults/hlsl.include.vert.out | 2 +- Test/baseResults/hlsl.multiDescriptorSet.frag.out | 2 +- Test/baseResults/hlsl.noSemantic.functionality1.comp.out | 2 +- Test/baseResults/hlsl.pp.line3.frag.out | 2 +- Test/baseResults/hlsl.structbuffer.incdec.frag.hlslfun1.out | 2 +- Test/baseResults/hlsl.y-negate-1.vert.out | 2 +- Test/baseResults/hlsl.y-negate-2.vert.out | 2 +- Test/baseResults/hlsl.y-negate-3.vert.out | 2 +- Test/baseResults/spv.400.frag.nanclamp.out | 2 +- Test/baseResults/spv.debugInfo.1.1.frag.out | 2 +- Test/baseResults/spv.debugInfo.frag.out | 2 +- Test/baseResults/spv.hlslDebugInfo.frag.out | 2 +- Test/baseResults/spv.hlslOffsets.vert.out | 2 +- Test/baseResults/spv.noBuiltInLoc.vert.out | 2 +- 23 files changed, 23 insertions(+), 23 deletions(-) diff --git a/Test/baseResults/compoundsuffix.frag.hlsl b/Test/baseResults/compoundsuffix.frag.hlsl index f47c97dc..650d1d0b 100644 --- a/Test/baseResults/compoundsuffix.frag.hlsl +++ b/Test/baseResults/compoundsuffix.frag.hlsl @@ -1,6 +1,6 @@ compoundsuffix.frag.hlsl // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 22 Capability Shader diff --git a/Test/baseResults/glsl.entryPointRename.vert.bad.out b/Test/baseResults/glsl.entryPointRename.vert.bad.out index c7ea97e0..7b99bbe8 100644 --- a/Test/baseResults/glsl.entryPointRename.vert.bad.out +++ b/Test/baseResults/glsl.entryPointRename.vert.bad.out @@ -2,7 +2,7 @@ glsl.entryPointRename.vert ERROR: Source entry point must be "main" // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 20 Capability Shader diff --git a/Test/baseResults/glsl.entryPointRename.vert.out b/Test/baseResults/glsl.entryPointRename.vert.out index 3dbe13ba..3044deec 100644 --- a/Test/baseResults/glsl.entryPointRename.vert.out +++ b/Test/baseResults/glsl.entryPointRename.vert.out @@ -1,6 +1,6 @@ glsl.entryPointRename.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 20 Capability Shader diff --git a/Test/baseResults/hlsl.dashI.vert.out b/Test/baseResults/hlsl.dashI.vert.out index eb9406b2..d5e7e209 100644 --- a/Test/baseResults/hlsl.dashI.vert.out +++ b/Test/baseResults/hlsl.dashI.vert.out @@ -1,6 +1,6 @@ hlsl.dashI.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 40 Capability Shader diff --git a/Test/baseResults/hlsl.deadFunctionMissingBody.vert.out b/Test/baseResults/hlsl.deadFunctionMissingBody.vert.out index 2bc08dab..559708d1 100644 --- a/Test/baseResults/hlsl.deadFunctionMissingBody.vert.out +++ b/Test/baseResults/hlsl.deadFunctionMissingBody.vert.out @@ -1,6 +1,6 @@ hlsl.deadFunctionMissingBody.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 18 Capability Shader diff --git a/Test/baseResults/hlsl.entry.rename.frag.out b/Test/baseResults/hlsl.entry.rename.frag.out index 9e23396a..b0e958b3 100644 --- a/Test/baseResults/hlsl.entry.rename.frag.out +++ b/Test/baseResults/hlsl.entry.rename.frag.out @@ -72,7 +72,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 32 Capability Shader diff --git a/Test/baseResults/hlsl.explicitDescriptorSet-2.frag.out b/Test/baseResults/hlsl.explicitDescriptorSet-2.frag.out index 61367d6c..c4e6baf0 100644 --- a/Test/baseResults/hlsl.explicitDescriptorSet-2.frag.out +++ b/Test/baseResults/hlsl.explicitDescriptorSet-2.frag.out @@ -1,6 +1,6 @@ hlsl.explicitDescriptorSet.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 31 Capability Shader diff --git a/Test/baseResults/hlsl.explicitDescriptorSet.frag.out b/Test/baseResults/hlsl.explicitDescriptorSet.frag.out index 9bc2f019..9665ad25 100644 --- a/Test/baseResults/hlsl.explicitDescriptorSet.frag.out +++ b/Test/baseResults/hlsl.explicitDescriptorSet.frag.out @@ -1,6 +1,6 @@ hlsl.explicitDescriptorSet.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 31 Capability Shader diff --git a/Test/baseResults/hlsl.hlslOffset.vert.out b/Test/baseResults/hlsl.hlslOffset.vert.out index b0c04672..099318cb 100644 --- a/Test/baseResults/hlsl.hlslOffset.vert.out +++ b/Test/baseResults/hlsl.hlslOffset.vert.out @@ -26,7 +26,7 @@ Shader version: 500 0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform float m0, layout( row_major std140) uniform 3-component vector of float m4, layout( row_major std140) uniform float m16, layout( row_major std140 offset=20) uniform 3-component vector of float m20, layout( row_major std140 offset=36) uniform 3-component vector of float m36, layout( row_major std140 offset=56) uniform 2-component vector of float m56, layout( row_major std140) uniform float m64, layout( row_major std140) uniform 2-component vector of float m68, layout( row_major std140) uniform float m76, layout( row_major std140) uniform float m80, layout( row_major std140) uniform 1-element array of 2-component vector of float m96}) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 18 Capability Shader diff --git a/Test/baseResults/hlsl.include.vert.out b/Test/baseResults/hlsl.include.vert.out index 88ee8e78..4a814ae9 100644 --- a/Test/baseResults/hlsl.include.vert.out +++ b/Test/baseResults/hlsl.include.vert.out @@ -1,6 +1,6 @@ ../Test/hlsl.include.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 44 Capability Shader diff --git a/Test/baseResults/hlsl.multiDescriptorSet.frag.out b/Test/baseResults/hlsl.multiDescriptorSet.frag.out index 8bd1ad85..fa480922 100644 --- a/Test/baseResults/hlsl.multiDescriptorSet.frag.out +++ b/Test/baseResults/hlsl.multiDescriptorSet.frag.out @@ -1,6 +1,6 @@ hlsl.multiDescriptorSet.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 92 Capability Shader diff --git a/Test/baseResults/hlsl.noSemantic.functionality1.comp.out b/Test/baseResults/hlsl.noSemantic.functionality1.comp.out index 3ede90e6..fc51e9c3 100644 --- a/Test/baseResults/hlsl.noSemantic.functionality1.comp.out +++ b/Test/baseResults/hlsl.noSemantic.functionality1.comp.out @@ -1,6 +1,6 @@ hlsl.noSemantic.functionality1.comp // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 30 Capability Shader diff --git a/Test/baseResults/hlsl.pp.line3.frag.out b/Test/baseResults/hlsl.pp.line3.frag.out index 33e5d55a..e94547cc 100644 --- a/Test/baseResults/hlsl.pp.line3.frag.out +++ b/Test/baseResults/hlsl.pp.line3.frag.out @@ -1,6 +1,6 @@ hlsl.pp.line3.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 78 Capability Shader diff --git a/Test/baseResults/hlsl.structbuffer.incdec.frag.hlslfun1.out b/Test/baseResults/hlsl.structbuffer.incdec.frag.hlslfun1.out index 5c73619f..57f387c3 100644 --- a/Test/baseResults/hlsl.structbuffer.incdec.frag.hlslfun1.out +++ b/Test/baseResults/hlsl.structbuffer.incdec.frag.hlslfun1.out @@ -1,6 +1,6 @@ hlsl.structbuffer.incdec.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 70 Capability Shader diff --git a/Test/baseResults/hlsl.y-negate-1.vert.out b/Test/baseResults/hlsl.y-negate-1.vert.out index c086cc07..08413d22 100644 --- a/Test/baseResults/hlsl.y-negate-1.vert.out +++ b/Test/baseResults/hlsl.y-negate-1.vert.out @@ -72,7 +72,7 @@ Shader version: 500 0:? '@entryPointOutput' ( out 4-component vector of float Position) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 34 Capability Shader diff --git a/Test/baseResults/hlsl.y-negate-2.vert.out b/Test/baseResults/hlsl.y-negate-2.vert.out index 4e6f189a..9e90d3b4 100644 --- a/Test/baseResults/hlsl.y-negate-2.vert.out +++ b/Test/baseResults/hlsl.y-negate-2.vert.out @@ -80,7 +80,7 @@ Shader version: 500 0:? 'position' ( out 4-component vector of float Position) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 37 Capability Shader diff --git a/Test/baseResults/hlsl.y-negate-3.vert.out b/Test/baseResults/hlsl.y-negate-3.vert.out index 63745519..29f63f12 100644 --- a/Test/baseResults/hlsl.y-negate-3.vert.out +++ b/Test/baseResults/hlsl.y-negate-3.vert.out @@ -126,7 +126,7 @@ Shader version: 500 0:? '@entryPointOutput.somethingelse' (layout( location=0) out int) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 50 Capability Shader diff --git a/Test/baseResults/spv.400.frag.nanclamp.out b/Test/baseResults/spv.400.frag.nanclamp.out index 5305ee4c..448aa5ef 100644 --- a/Test/baseResults/spv.400.frag.nanclamp.out +++ b/Test/baseResults/spv.400.frag.nanclamp.out @@ -1,6 +1,6 @@ spv.400.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 1118 Capability Shader diff --git a/Test/baseResults/spv.debugInfo.1.1.frag.out b/Test/baseResults/spv.debugInfo.1.1.frag.out index e2120892..b68de49e 100644 --- a/Test/baseResults/spv.debugInfo.1.1.frag.out +++ b/Test/baseResults/spv.debugInfo.1.1.frag.out @@ -2,7 +2,7 @@ spv.debugInfo.frag error: SPIRV-Tools Validation Errors error: Invalid SPIR-V binary version 1.3 for target environment SPIR-V 1.0 (under OpenGL 4.5 semantics). // Module Version 10300 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 124 Capability Shader diff --git a/Test/baseResults/spv.debugInfo.frag.out b/Test/baseResults/spv.debugInfo.frag.out index aaa988d4..f27aac01 100644 --- a/Test/baseResults/spv.debugInfo.frag.out +++ b/Test/baseResults/spv.debugInfo.frag.out @@ -1,6 +1,6 @@ spv.debugInfo.frag // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 124 Capability Shader diff --git a/Test/baseResults/spv.hlslDebugInfo.frag.out b/Test/baseResults/spv.hlslDebugInfo.frag.out index 35a6a4d9..1d2e6b49 100644 --- a/Test/baseResults/spv.hlslDebugInfo.frag.out +++ b/Test/baseResults/spv.hlslDebugInfo.frag.out @@ -1,6 +1,6 @@ spv.hlslDebugInfo.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 19 Capability Shader diff --git a/Test/baseResults/spv.hlslOffsets.vert.out b/Test/baseResults/spv.hlslOffsets.vert.out index 72367546..b1cdb6b5 100644 --- a/Test/baseResults/spv.hlslOffsets.vert.out +++ b/Test/baseResults/spv.hlslOffsets.vert.out @@ -18,7 +18,7 @@ Shader version: 450 0:? 'anon@0' (layout( binding=0 column_major std430) buffer block{layout( column_major std430) buffer highp float m0, layout( column_major std430) buffer highp 3-component vector of float m4, layout( column_major std430) buffer highp float m16, layout( column_major std430 offset=20) buffer highp 3-component vector of float m20, layout( column_major std430) buffer highp 3-component vector of float m32, layout( column_major std430) buffer highp 2-component vector of float m48, layout( column_major std430) buffer highp 2-component vector of float m56, layout( column_major std430) buffer highp float m64, layout( column_major std430) buffer highp 2-component vector of float m68, layout( column_major std430) buffer highp float m76, layout( column_major std430) buffer highp float m80, layout( column_major std430 offset=88) buffer highp 2-component vector of float m88, layout( column_major std430) buffer highp 2-component vector of float m96, layout( column_major std430) buffer 2-component vector of double m112}) // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 14 Capability Shader diff --git a/Test/baseResults/spv.noBuiltInLoc.vert.out b/Test/baseResults/spv.noBuiltInLoc.vert.out index 066f81f7..7a45e727 100644 --- a/Test/baseResults/spv.noBuiltInLoc.vert.out +++ b/Test/baseResults/spv.noBuiltInLoc.vert.out @@ -1,6 +1,6 @@ spv.noBuiltInLoc.vert // Module Version 10000 -// Generated by (magic number): 80007 +// Generated by (magic number): 80008 // Id's are bound by 35 Capability Shader From 0552c0acc85befed4f8d62d9c82d098ea77a0e73 Mon Sep 17 00:00:00 2001 From: Ryan Harrison Date: Mon, 4 Nov 2019 16:23:11 -0500 Subject: [PATCH 71/94] Remove std::move that is breaking chromium roll This is causing the following error: moving a temporary object prevents copy elision [-Werror,-Wpessimizing-move] --- SPIRV/spvIR.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SPIRV/spvIR.h b/SPIRV/spvIR.h index 994224d1..cf6a7115 100755 --- a/SPIRV/spvIR.h +++ b/SPIRV/spvIR.h @@ -252,7 +252,7 @@ public: assert(header != nullptr); Instruction* branch = new Instruction(OpBranch); branch->addIdOperand(header->getId()); - addInstruction(std::move(std::unique_ptr(branch))); + addInstruction(std::unique_ptr(branch)); successors.push_back(header); } From 199d115e1542fe0a8427efda5fa36158474fb6cf Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Tue, 5 Nov 2019 18:05:42 -0700 Subject: [PATCH 72/94] Fix #1959 by reverting 7b0e236 to put files in two places. --- SPIRV/CMakeLists.txt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) mode change 100644 => 100755 SPIRV/CMakeLists.txt diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt old mode 100644 new mode 100755 index e25ec0a1..9869bafd --- a/SPIRV/CMakeLists.txt +++ b/SPIRV/CMakeLists.txt @@ -90,9 +90,10 @@ if(ENABLE_GLSLANG_INSTALL) install(TARGETS SPIRV EXPORT SPIRVTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() - - install(EXPORT SPVRemapperTargets DESTINATION lib/cmake) - install(EXPORT SPIRVTargets DESTINATION lib/cmake) + install(EXPORT SPVRemapperTargets DESTINATION lib/cmake) + install(EXPORT SPIRVTargets DESTINATION lib/cmake) + + install(FILES ${HEADERS} ${SPVREMAP_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/SPIRV/) install(FILES ${HEADERS} ${SPVREMAP_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang/SPIRV/) endif(ENABLE_GLSLANG_INSTALL) From af7c73b1c3bca503bd15513a0a1e7ac812f7d242 Mon Sep 17 00:00:00 2001 From: dan sinclair Date: Wed, 6 Nov 2019 09:50:40 -0500 Subject: [PATCH 73/94] Add deprecation for SPIRV/ install folder location. This Cl updates the README.md to reference the deprecation date for the current SPIRV/ install location. Issue #1964 --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index f5651e1d..f1f6a2bb 100755 --- a/README.md +++ b/README.md @@ -28,6 +28,15 @@ comment in `glslang/MachineIndependent/Versions.cpp`. Tasks waiting to be done are documented as GitHub issues. +Deprecations +------------ + +1. GLSLang, when installed through CMake, will install a `SPIRV` folder into +`${CMAKE_INSTALL_INCLUDEDIR}`. This `SPIRV` folder is being moved to +`glslang/SPIRV`. During the transition the `SPIRV` folder will be installed into +both locations. The old install of `SPIRV/` will be removed as a CMake install +target no sooner then May 1, 2020. See issue #1964. + Execution of Standalone Wrapper ------------------------------- From d87d3a062e097a6ed9d18834b43850719f080f62 Mon Sep 17 00:00:00 2001 From: Kai Ninomiya Date: Wed, 6 Nov 2019 18:06:00 -0800 Subject: [PATCH 74/94] Fix compileGLSLZeroCopy accidental minification --- glslang/OSDependent/Web/glslang.pre.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/glslang/OSDependent/Web/glslang.pre.js b/glslang/OSDependent/Web/glslang.pre.js index dd7100b3..7d3fd023 100644 --- a/glslang/OSDependent/Web/glslang.pre.js +++ b/glslang/OSDependent/Web/glslang.pre.js @@ -29,8 +29,8 @@ Module['compileGLSLZeroCopy'] = function(glsl, shader_stage, gen_debug) { var ret = {}; var outputIndexU32 = output / 4; - ret.data = Module['HEAPU32'].subarray(outputIndexU32, outputIndexU32 + output_len); - ret.free = function() { + ret['data'] = Module['HEAPU32'].subarray(outputIndexU32, outputIndexU32 + output_len); + ret['free'] = function() { Module['_destroy_output_buffer'](id); }; @@ -39,7 +39,7 @@ Module['compileGLSLZeroCopy'] = function(glsl, shader_stage, gen_debug) { Module['compileGLSL'] = function(glsl, shader_stage, gen_debug) { var compiled = Module['compileGLSLZeroCopy'](glsl, shader_stage, gen_debug); - var ret = compiled.data.slice() - compiled.free(); + var ret = compiled['data'].slice() + compiled['free'](); return ret; }; From e43e8ba9f385edc4a7f3255635f8fdb69a06de32 Mon Sep 17 00:00:00 2001 From: David Neto Date: Thu, 7 Nov 2019 17:55:22 -0500 Subject: [PATCH 75/94] SPIR-V postprocessing: WEB case only needs CFG mods The SPIR-V post-processing to discover capabilities and extensions does not apply to WebGPU compilation. So don't include that code. This reclaims some of the code space added by #1943 --- SPIRV/SpvBuilder.h | 7 +++++++ SPIRV/SpvPostProcess.cpp | 17 ++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index 8d8f34ba..31fee975 100644 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -687,10 +687,17 @@ public: // based on the resulting SPIR-V. void postProcess(); + // Prune unreachable blocks in the CFG and remove unneeded decorations. + void postProcessCFG(); + +#ifndef GLSLANG_WEB + // Add capabilities, extensions based on instructions in the module. + void postProcessFeatures(); // Hook to visit each instruction in a block in a function void postProcess(Instruction&); // Hook to visit each non-32-bit sized float/int operation in a block. void postProcessType(const Instruction&, spv::Id typeId); +#endif void dump(std::vector&) const; diff --git a/SPIRV/SpvPostProcess.cpp b/SPIRV/SpvPostProcess.cpp index 86fad580..d40174d1 100644 --- a/SPIRV/SpvPostProcess.cpp +++ b/SPIRV/SpvPostProcess.cpp @@ -58,6 +58,7 @@ namespace spv { namespace spv { +#ifndef GLSLANG_WEB // Hook to visit each operand type and result type of an instruction. // Will be called multiple times for one instruction, once for each typed // operand and the result. @@ -319,9 +320,10 @@ void Builder::postProcess(Instruction& inst) } } } +#endif // comment in header -void Builder::postProcess() +void Builder::postProcessCFG() { // reachableBlocks is the set of blockss reached via control flow, or which are // unreachable continue targert or unreachable merge. @@ -377,7 +379,11 @@ void Builder::postProcess() return unreachableDefinitions.count(decoration_id) != 0; }), decorations.end()); +} +#ifndef GLSLANG_WEB +// comment in header +void Builder::postProcessFeatures() { // Add per-instruction capabilities, extensions, etc., // Look for any 8/16 bit type in physical storage buffer class, and set the @@ -431,5 +437,14 @@ void Builder::postProcess() } } } +#endif + +// comment in header +void Builder::postProcess() { + postProcessCFG(); +#ifndef GLSLANG_WEB + postProcessFeatures(); +#endif +} }; // end spv namespace From 1b93de4f1df54ecad9a238506df668a56a3bfff2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20Fl=C3=B6jt?= Date: Mon, 11 Nov 2019 11:30:22 +0100 Subject: [PATCH 76/94] Fix construction issue for 8 and 16 bit types. The problem is that constructing a float16_t, int8_t, uint8_t, int16_t, or uint16_t with a non 32-bit argument generates an aggregate with the wrong construction op. For int8_t and uint8_t, this resulted in a crash. --- glslang/MachineIndependent/ParseHelper.cpp | 50 +++++++++++++++++----- 1 file changed, 40 insertions(+), 10 deletions(-) diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 619bf81d..e31bff51 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -7017,8 +7017,14 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T if (!intermediate.getArithemeticFloat16Enabled()) { TType tempType(EbtFloat, EvqTemporary, type.getVectorSize()); newNode = node; - if (tempType != newNode->getType()) - newNode = intermediate.setAggregateOperator(newNode, (TOperator)(EOpConstructVec2 + op - EOpConstructF16Vec2), tempType, node->getLoc()); + if (tempType != newNode->getType()) { + TOperator aggregateOp; + if (op == EOpConstructFloat16) + aggregateOp = EOpConstructFloat; + else + aggregateOp = (TOperator)(EOpConstructVec2 + op - EOpConstructF16Vec2); + newNode = intermediate.setAggregateOperator(newNode, aggregateOp, tempType, node->getLoc()); + } newNode = intermediate.addConversion(EbtFloat16, newNode); return newNode; } @@ -7034,8 +7040,14 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T if (!intermediate.getArithemeticInt8Enabled()) { TType tempType(EbtInt, EvqTemporary, type.getVectorSize()); newNode = node; - if (tempType != newNode->getType()) - newNode = intermediate.setAggregateOperator(newNode, (TOperator)(EOpConstructIVec2 + op - EOpConstructI8Vec2), tempType, node->getLoc()); + if (tempType != newNode->getType()) { + TOperator aggregateOp; + if (op == EOpConstructInt8) + aggregateOp = EOpConstructInt; + else + aggregateOp = (TOperator)(EOpConstructIVec2 + op - EOpConstructI8Vec2); + newNode = intermediate.setAggregateOperator(newNode, aggregateOp, tempType, node->getLoc()); + } newNode = intermediate.addConversion(EbtInt8, newNode); return newNode; } @@ -7051,8 +7063,14 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T if (!intermediate.getArithemeticInt8Enabled()) { TType tempType(EbtUint, EvqTemporary, type.getVectorSize()); newNode = node; - if (tempType != newNode->getType()) - newNode = intermediate.setAggregateOperator(newNode, (TOperator)(EOpConstructUVec2 + op - EOpConstructU8Vec2), tempType, node->getLoc()); + if (tempType != newNode->getType()) { + TOperator aggregateOp; + if (op == EOpConstructUint8) + aggregateOp = EOpConstructUint; + else + aggregateOp = (TOperator)(EOpConstructUVec2 + op - EOpConstructU8Vec2); + newNode = intermediate.setAggregateOperator(newNode, aggregateOp, tempType, node->getLoc()); + } newNode = intermediate.addConversion(EbtUint8, newNode); return newNode; } @@ -7068,8 +7086,14 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T if (!intermediate.getArithemeticInt16Enabled()) { TType tempType(EbtInt, EvqTemporary, type.getVectorSize()); newNode = node; - if (tempType != newNode->getType()) - newNode = intermediate.setAggregateOperator(newNode, (TOperator)(EOpConstructIVec2 + op - EOpConstructI16Vec2), tempType, node->getLoc()); + if (tempType != newNode->getType()) { + TOperator aggregateOp; + if (op == EOpConstructInt16) + aggregateOp = EOpConstructInt; + else + aggregateOp = (TOperator)(EOpConstructIVec2 + op - EOpConstructI16Vec2); + newNode = intermediate.setAggregateOperator(newNode, aggregateOp, tempType, node->getLoc()); + } newNode = intermediate.addConversion(EbtInt16, newNode); return newNode; } @@ -7085,8 +7109,14 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T if (!intermediate.getArithemeticInt16Enabled()) { TType tempType(EbtUint, EvqTemporary, type.getVectorSize()); newNode = node; - if (tempType != newNode->getType()) - newNode = intermediate.setAggregateOperator(newNode, (TOperator)(EOpConstructUVec2 + op - EOpConstructU16Vec2), tempType, node->getLoc()); + if (tempType != newNode->getType()) { + TOperator aggregateOp; + if (op == EOpConstructUint16) + aggregateOp = EOpConstructUint; + else + aggregateOp = (TOperator)(EOpConstructUVec2 + op - EOpConstructU16Vec2); + newNode = intermediate.setAggregateOperator(newNode, aggregateOp, tempType, node->getLoc()); + } newNode = intermediate.addConversion(EbtUint16, newNode); return newNode; } From e7cb9cb9c4f42c8e1b70101fcf1147f07c318f9c Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Tue, 12 Nov 2019 05:32:51 -0700 Subject: [PATCH 77/94] HLSL: Fix #1960: fmod() was not converting int args to float. --- Test/baseResults/hlsl.intrinsics.frag.out | 12149 +++++++++--------- Test/hlsl.intrinsics.frag | 1 + glslang/MachineIndependent/Intermediate.cpp | 1 + 3 files changed, 6086 insertions(+), 6065 deletions(-) mode change 100644 => 100755 Test/hlsl.intrinsics.frag mode change 100644 => 100755 glslang/MachineIndependent/Intermediate.cpp diff --git a/Test/baseResults/hlsl.intrinsics.frag.out b/Test/baseResults/hlsl.intrinsics.frag.out index 42563828..dca823b6 100644 --- a/Test/baseResults/hlsl.intrinsics.frag.out +++ b/Test/baseResults/hlsl.intrinsics.frag.out @@ -185,1073 +185,1068 @@ gl_FragCoord origin is upper left 0:55 'inF1' ( in float) 0:56 Sequence 0:56 move second child to first child ( temp float) -0:56 'r034' ( temp float) -0:56 Fraction ( temp float) +0:56 'r033i' ( temp float) +0:56 mod ( temp float) 0:56 'inF0' ( in float) +0:56 Constant: +0:56 2.000000 0:57 Sequence 0:57 move second child to first child ( temp float) -0:57 'r036' ( temp float) -0:57 fwidth ( temp float) +0:57 'r034' ( temp float) +0:57 Fraction ( temp float) 0:57 'inF0' ( in float) 0:58 Sequence -0:58 move second child to first child ( temp bool) -0:58 'r037' ( temp bool) -0:58 isinf ( temp bool) +0:58 move second child to first child ( temp float) +0:58 'r036' ( temp float) +0:58 fwidth ( temp float) 0:58 'inF0' ( in float) 0:59 Sequence 0:59 move second child to first child ( temp bool) -0:59 'r038' ( temp bool) -0:59 isnan ( temp bool) +0:59 'r037' ( temp bool) +0:59 isinf ( temp bool) 0:59 'inF0' ( in float) 0:60 Sequence -0:60 move second child to first child ( temp float) -0:60 'r039' ( temp float) -0:60 ldexp ( temp float) +0:60 move second child to first child ( temp bool) +0:60 'r038' ( temp bool) +0:60 isnan ( temp bool) 0:60 'inF0' ( in float) -0:60 'inF1' ( in float) 0:61 Sequence 0:61 move second child to first child ( temp float) -0:61 'r039a' ( temp float) -0:61 mix ( temp float) +0:61 'r039' ( temp float) +0:61 ldexp ( temp float) 0:61 'inF0' ( in float) 0:61 'inF1' ( in float) -0:61 'inF2' ( in float) 0:62 Sequence 0:62 move second child to first child ( temp float) -0:62 'r040' ( temp float) -0:62 log ( temp float) +0:62 'r039a' ( temp float) +0:62 mix ( temp float) 0:62 'inF0' ( in float) +0:62 'inF1' ( in float) +0:62 'inF2' ( in float) 0:63 Sequence 0:63 move second child to first child ( temp float) -0:63 'r041' ( temp float) -0:63 component-wise multiply ( temp float) -0:63 log2 ( temp float) -0:63 'inF0' ( in float) -0:63 Constant: -0:63 0.301030 +0:63 'r040' ( temp float) +0:63 log ( temp float) +0:63 'inF0' ( in float) 0:64 Sequence 0:64 move second child to first child ( temp float) -0:64 'r042' ( temp float) -0:64 log2 ( temp float) -0:64 'inF0' ( in float) +0:64 'r041' ( temp float) +0:64 component-wise multiply ( temp float) +0:64 log2 ( temp float) +0:64 'inF0' ( in float) +0:64 Constant: +0:64 0.301030 0:65 Sequence 0:65 move second child to first child ( temp float) -0:65 'r043' ( temp float) -0:65 max ( temp float) +0:65 'r042' ( temp float) +0:65 log2 ( temp float) 0:65 'inF0' ( in float) -0:65 'inF1' ( in float) 0:66 Sequence 0:66 move second child to first child ( temp float) -0:66 'r044' ( temp float) -0:66 min ( temp float) +0:66 'r043' ( temp float) +0:66 max ( temp float) 0:66 'inF0' ( in float) 0:66 'inF1' ( in float) 0:67 Sequence 0:67 move second child to first child ( temp float) -0:67 'r045' ( temp float) -0:67 pow ( temp float) +0:67 'r044' ( temp float) +0:67 min ( temp float) 0:67 'inF0' ( in float) 0:67 'inF1' ( in float) 0:68 Sequence 0:68 move second child to first child ( temp float) -0:68 'r046' ( temp float) -0:68 radians ( temp float) +0:68 'r045' ( temp float) +0:68 pow ( temp float) 0:68 'inF0' ( in float) +0:68 'inF1' ( in float) 0:69 Sequence 0:69 move second child to first child ( temp float) -0:69 'r047' ( temp float) -0:69 divide ( temp float) -0:69 Constant: -0:69 1.000000 +0:69 'r046' ( temp float) +0:69 radians ( temp float) 0:69 'inF0' ( in float) 0:70 Sequence -0:70 move second child to first child ( temp uint) -0:70 'r048' ( temp uint) -0:70 Convert int to uint ( temp uint) -0:70 bitFieldReverse ( temp int) -0:70 Constant: -0:70 2 (const int) +0:70 move second child to first child ( temp float) +0:70 'r047' ( temp float) +0:70 divide ( temp float) +0:70 Constant: +0:70 1.000000 +0:70 'inF0' ( in float) 0:71 Sequence -0:71 move second child to first child ( temp float) -0:71 'r049' ( temp float) -0:71 roundEven ( temp float) -0:71 'inF0' ( in float) +0:71 move second child to first child ( temp uint) +0:71 'r048' ( temp uint) +0:71 Convert int to uint ( temp uint) +0:71 bitFieldReverse ( temp int) +0:71 Constant: +0:71 2 (const int) 0:72 Sequence 0:72 move second child to first child ( temp float) -0:72 'r050' ( temp float) -0:72 inverse sqrt ( temp float) +0:72 'r049' ( temp float) +0:72 roundEven ( temp float) 0:72 'inF0' ( in float) 0:73 Sequence 0:73 move second child to first child ( temp float) -0:73 'r051' ( temp float) -0:73 clamp ( temp float) +0:73 'r050' ( temp float) +0:73 inverse sqrt ( temp float) 0:73 'inF0' ( in float) -0:73 Constant: -0:73 0.000000 -0:73 Constant: -0:73 1.000000 0:74 Sequence 0:74 move second child to first child ( temp float) -0:74 'r052' ( temp float) -0:74 Sign ( temp float) +0:74 'r051' ( temp float) +0:74 clamp ( temp float) 0:74 'inF0' ( in float) +0:74 Constant: +0:74 0.000000 +0:74 Constant: +0:74 1.000000 0:75 Sequence 0:75 move second child to first child ( temp float) -0:75 'r053' ( temp float) -0:75 sine ( temp float) +0:75 'r052' ( temp float) +0:75 Sign ( temp float) 0:75 'inF0' ( in float) 0:76 Sequence 0:76 move second child to first child ( temp float) -0:76 'inF1' ( in float) +0:76 'r053' ( temp float) 0:76 sine ( temp float) 0:76 'inF0' ( in float) -0:76 move second child to first child ( temp float) -0:76 'inF2' ( in float) -0:76 cosine ( temp float) -0:76 'inF0' ( in float) 0:77 Sequence 0:77 move second child to first child ( temp float) -0:77 'r055' ( temp float) -0:77 hyp. sine ( temp float) +0:77 'inF1' ( in float) +0:77 sine ( temp float) +0:77 'inF0' ( in float) +0:77 move second child to first child ( temp float) +0:77 'inF2' ( in float) +0:77 cosine ( temp float) 0:77 'inF0' ( in float) 0:78 Sequence 0:78 move second child to first child ( temp float) -0:78 'r056' ( temp float) -0:78 smoothstep ( temp float) +0:78 'r055' ( temp float) +0:78 hyp. sine ( temp float) 0:78 'inF0' ( in float) -0:78 'inF1' ( in float) -0:78 'inF2' ( in float) 0:79 Sequence 0:79 move second child to first child ( temp float) -0:79 'r057' ( temp float) -0:79 sqrt ( temp float) +0:79 'r056' ( temp float) +0:79 smoothstep ( temp float) 0:79 'inF0' ( in float) +0:79 'inF1' ( in float) +0:79 'inF2' ( in float) 0:80 Sequence 0:80 move second child to first child ( temp float) -0:80 'r058' ( temp float) -0:80 step ( temp float) +0:80 'r057' ( temp float) +0:80 sqrt ( temp float) 0:80 'inF0' ( in float) -0:80 'inF1' ( in float) 0:81 Sequence 0:81 move second child to first child ( temp float) -0:81 'r059' ( temp float) -0:81 tangent ( temp float) +0:81 'r058' ( temp float) +0:81 step ( temp float) 0:81 'inF0' ( in float) +0:81 'inF1' ( in float) 0:82 Sequence 0:82 move second child to first child ( temp float) -0:82 'r060' ( temp float) -0:82 hyp. tangent ( temp float) +0:82 'r059' ( temp float) +0:82 tangent ( temp float) 0:82 'inF0' ( in float) -0:84 Sequence -0:84 move second child to first child ( temp float) -0:84 'r061' ( temp float) -0:84 trunc ( temp float) -0:84 'inF0' ( in float) -0:86 Branch: Return with expression -0:86 Constant: -0:86 0.000000 -0:90 Function Definition: PixelShaderFunction1(vf1;vf1;vf1; ( temp 1-component vector of float) -0:90 Function Parameters: -0:90 'inF0' ( in 1-component vector of float) -0:90 'inF1' ( in 1-component vector of float) -0:90 'inF2' ( in 1-component vector of float) +0:83 Sequence +0:83 move second child to first child ( temp float) +0:83 'r060' ( temp float) +0:83 hyp. tangent ( temp float) +0:83 'inF0' ( in float) +0:85 Sequence +0:85 move second child to first child ( temp float) +0:85 'r061' ( temp float) +0:85 trunc ( temp float) +0:85 'inF0' ( in float) +0:87 Branch: Return with expression +0:87 Constant: +0:87 0.000000 +0:91 Function Definition: PixelShaderFunction1(vf1;vf1;vf1; ( temp 1-component vector of float) +0:91 Function Parameters: +0:91 'inF0' ( in 1-component vector of float) +0:91 'inF1' ( in 1-component vector of float) +0:91 'inF2' ( in 1-component vector of float) 0:? Sequence -0:92 Branch: Return with expression -0:92 Constant: -0:92 0.000000 -0:96 Function Definition: PixelShaderFunction2(vf2;vf2;vf2;vu2;vu2; ( temp 2-component vector of float) -0:96 Function Parameters: -0:96 'inF0' ( in 2-component vector of float) -0:96 'inF1' ( in 2-component vector of float) -0:96 'inF2' ( in 2-component vector of float) -0:96 'inU0' ( in 2-component vector of uint) -0:96 'inU1' ( in 2-component vector of uint) +0:93 Branch: Return with expression +0:93 Constant: +0:93 0.000000 +0:97 Function Definition: PixelShaderFunction2(vf2;vf2;vf2;vu2;vu2; ( temp 2-component vector of float) +0:97 Function Parameters: +0:97 'inF0' ( in 2-component vector of float) +0:97 'inF1' ( in 2-component vector of float) +0:97 'inF2' ( in 2-component vector of float) +0:97 'inU0' ( in 2-component vector of uint) +0:97 'inU1' ( in 2-component vector of uint) 0:? Sequence -0:99 Sequence -0:99 move second child to first child ( temp bool) -0:99 'r000' ( temp bool) -0:99 all ( temp bool) -0:99 Convert float to bool ( temp 2-component vector of bool) -0:99 'inF0' ( in 2-component vector of float) 0:100 Sequence -0:100 move second child to first child ( temp 2-component vector of float) -0:100 'r001' ( temp 2-component vector of float) -0:100 Absolute value ( temp 2-component vector of float) -0:100 'inF0' ( in 2-component vector of float) +0:100 move second child to first child ( temp bool) +0:100 'r000' ( temp bool) +0:100 all ( temp bool) +0:100 Convert float to bool ( temp 2-component vector of bool) +0:100 'inF0' ( in 2-component vector of float) 0:101 Sequence 0:101 move second child to first child ( temp 2-component vector of float) -0:101 'r002' ( temp 2-component vector of float) -0:101 arc cosine ( temp 2-component vector of float) +0:101 'r001' ( temp 2-component vector of float) +0:101 Absolute value ( temp 2-component vector of float) 0:101 'inF0' ( in 2-component vector of float) 0:102 Sequence -0:102 move second child to first child ( temp bool) -0:102 'r003' ( temp bool) -0:102 any ( temp bool) -0:102 Convert float to bool ( temp 2-component vector of bool) -0:102 'inF0' ( in 2-component vector of float) +0:102 move second child to first child ( temp 2-component vector of float) +0:102 'r002' ( temp 2-component vector of float) +0:102 arc cosine ( temp 2-component vector of float) +0:102 'inF0' ( in 2-component vector of float) 0:103 Sequence -0:103 move second child to first child ( temp 2-component vector of float) -0:103 'r004' ( temp 2-component vector of float) -0:103 arc sine ( temp 2-component vector of float) -0:103 'inF0' ( in 2-component vector of float) +0:103 move second child to first child ( temp bool) +0:103 'r003' ( temp bool) +0:103 any ( temp bool) +0:103 Convert float to bool ( temp 2-component vector of bool) +0:103 'inF0' ( in 2-component vector of float) 0:104 Sequence -0:104 move second child to first child ( temp 2-component vector of int) -0:104 'r005' ( temp 2-component vector of int) -0:104 floatBitsToInt ( temp 2-component vector of int) +0:104 move second child to first child ( temp 2-component vector of float) +0:104 'r004' ( temp 2-component vector of float) +0:104 arc sine ( temp 2-component vector of float) 0:104 'inF0' ( in 2-component vector of float) 0:105 Sequence -0:105 move second child to first child ( temp 2-component vector of uint) -0:105 'r006' ( temp 2-component vector of uint) -0:105 floatBitsToUint ( temp 2-component vector of uint) +0:105 move second child to first child ( temp 2-component vector of int) +0:105 'r005' ( temp 2-component vector of int) +0:105 floatBitsToInt ( temp 2-component vector of int) 0:105 'inF0' ( in 2-component vector of float) 0:106 Sequence -0:106 move second child to first child ( temp 2-component vector of float) -0:106 'r007' ( temp 2-component vector of float) -0:106 intBitsToFloat ( temp 2-component vector of float) -0:106 'inU0' ( in 2-component vector of uint) -0:108 Sequence -0:108 move second child to first child ( temp 2-component vector of float) -0:108 'r009' ( temp 2-component vector of float) -0:108 arc tangent ( temp 2-component vector of float) -0:108 'inF0' ( in 2-component vector of float) +0:106 move second child to first child ( temp 2-component vector of uint) +0:106 'r006' ( temp 2-component vector of uint) +0:106 floatBitsToUint ( temp 2-component vector of uint) +0:106 'inF0' ( in 2-component vector of float) +0:107 Sequence +0:107 move second child to first child ( temp 2-component vector of float) +0:107 'r007' ( temp 2-component vector of float) +0:107 intBitsToFloat ( temp 2-component vector of float) +0:107 'inU0' ( in 2-component vector of uint) 0:109 Sequence 0:109 move second child to first child ( temp 2-component vector of float) -0:109 'r010' ( temp 2-component vector of float) +0:109 'r009' ( temp 2-component vector of float) 0:109 arc tangent ( temp 2-component vector of float) 0:109 'inF0' ( in 2-component vector of float) -0:109 'inF1' ( in 2-component vector of float) 0:110 Sequence 0:110 move second child to first child ( temp 2-component vector of float) -0:110 'r011' ( temp 2-component vector of float) -0:110 Ceiling ( temp 2-component vector of float) +0:110 'r010' ( temp 2-component vector of float) +0:110 arc tangent ( temp 2-component vector of float) 0:110 'inF0' ( in 2-component vector of float) +0:110 'inF1' ( in 2-component vector of float) 0:111 Sequence 0:111 move second child to first child ( temp 2-component vector of float) -0:111 'r012' ( temp 2-component vector of float) -0:111 clamp ( temp 2-component vector of float) +0:111 'r011' ( temp 2-component vector of float) +0:111 Ceiling ( temp 2-component vector of float) 0:111 'inF0' ( in 2-component vector of float) -0:111 'inF1' ( in 2-component vector of float) -0:111 'inF2' ( in 2-component vector of float) -0:112 Test condition and select ( temp void) -0:112 Condition -0:112 any ( temp bool) -0:112 Compare Less Than ( temp 2-component vector of bool) +0:112 Sequence +0:112 move second child to first child ( temp 2-component vector of float) +0:112 'r012' ( temp 2-component vector of float) +0:112 clamp ( temp 2-component vector of float) 0:112 'inF0' ( in 2-component vector of float) -0:112 Constant: -0:112 0.000000 -0:112 0.000000 -0:112 true case -0:112 Branch: Kill +0:112 'inF1' ( in 2-component vector of float) +0:112 'inF2' ( in 2-component vector of float) 0:113 Test condition and select ( temp void) 0:113 Condition 0:113 any ( temp bool) 0:113 Compare Less Than ( temp 2-component vector of bool) -0:113 'inU0' ( in 2-component vector of uint) +0:113 'inF0' ( in 2-component vector of float) 0:113 Constant: 0:113 0.000000 0:113 0.000000 0:113 true case 0:113 Branch: Kill -0:114 Sequence -0:114 move second child to first child ( temp 2-component vector of float) -0:114 'r013' ( temp 2-component vector of float) -0:114 cosine ( temp 2-component vector of float) -0:114 'inF0' ( in 2-component vector of float) +0:114 Test condition and select ( temp void) +0:114 Condition +0:114 any ( temp bool) +0:114 Compare Less Than ( temp 2-component vector of bool) +0:114 'inU0' ( in 2-component vector of uint) +0:114 Constant: +0:114 0.000000 +0:114 0.000000 +0:114 true case +0:114 Branch: Kill 0:115 Sequence 0:115 move second child to first child ( temp 2-component vector of float) -0:115 'r015' ( temp 2-component vector of float) -0:115 hyp. cosine ( temp 2-component vector of float) +0:115 'r013' ( temp 2-component vector of float) +0:115 cosine ( temp 2-component vector of float) 0:115 'inF0' ( in 2-component vector of float) 0:116 Sequence -0:116 move second child to first child ( temp 2-component vector of int) -0:116 'r016' ( temp 2-component vector of int) +0:116 move second child to first child ( temp 2-component vector of float) +0:116 'r015' ( temp 2-component vector of float) +0:116 hyp. cosine ( temp 2-component vector of float) +0:116 'inF0' ( in 2-component vector of float) +0:117 Sequence +0:117 move second child to first child ( temp 2-component vector of int) +0:117 'r016' ( temp 2-component vector of int) 0:? bitCount ( temp 2-component vector of int) 0:? Constant: 0:? 7 (const int) 0:? 3 (const int) -0:117 Sequence -0:117 move second child to first child ( temp 2-component vector of float) -0:117 'r017' ( temp 2-component vector of float) -0:117 dPdx ( temp 2-component vector of float) -0:117 'inF0' ( in 2-component vector of float) 0:118 Sequence 0:118 move second child to first child ( temp 2-component vector of float) -0:118 'r018' ( temp 2-component vector of float) -0:118 dPdxCoarse ( temp 2-component vector of float) +0:118 'r017' ( temp 2-component vector of float) +0:118 dPdx ( temp 2-component vector of float) 0:118 'inF0' ( in 2-component vector of float) 0:119 Sequence 0:119 move second child to first child ( temp 2-component vector of float) -0:119 'r019' ( temp 2-component vector of float) -0:119 dPdxFine ( temp 2-component vector of float) +0:119 'r018' ( temp 2-component vector of float) +0:119 dPdxCoarse ( temp 2-component vector of float) 0:119 'inF0' ( in 2-component vector of float) 0:120 Sequence 0:120 move second child to first child ( temp 2-component vector of float) -0:120 'r020' ( temp 2-component vector of float) -0:120 dPdy ( temp 2-component vector of float) +0:120 'r019' ( temp 2-component vector of float) +0:120 dPdxFine ( temp 2-component vector of float) 0:120 'inF0' ( in 2-component vector of float) 0:121 Sequence 0:121 move second child to first child ( temp 2-component vector of float) -0:121 'r021' ( temp 2-component vector of float) -0:121 dPdyCoarse ( temp 2-component vector of float) +0:121 'r020' ( temp 2-component vector of float) +0:121 dPdy ( temp 2-component vector of float) 0:121 'inF0' ( in 2-component vector of float) 0:122 Sequence 0:122 move second child to first child ( temp 2-component vector of float) -0:122 'r022' ( temp 2-component vector of float) -0:122 dPdyFine ( temp 2-component vector of float) +0:122 'r021' ( temp 2-component vector of float) +0:122 dPdyCoarse ( temp 2-component vector of float) 0:122 'inF0' ( in 2-component vector of float) 0:123 Sequence 0:123 move second child to first child ( temp 2-component vector of float) -0:123 'r023' ( temp 2-component vector of float) -0:123 degrees ( temp 2-component vector of float) +0:123 'r022' ( temp 2-component vector of float) +0:123 dPdyFine ( temp 2-component vector of float) 0:123 'inF0' ( in 2-component vector of float) -0:127 Sequence -0:127 move second child to first child ( temp float) -0:127 'r026' ( temp float) -0:127 distance ( temp float) -0:127 'inF0' ( in 2-component vector of float) -0:127 'inF1' ( in 2-component vector of float) +0:124 Sequence +0:124 move second child to first child ( temp 2-component vector of float) +0:124 'r023' ( temp 2-component vector of float) +0:124 degrees ( temp 2-component vector of float) +0:124 'inF0' ( in 2-component vector of float) 0:128 Sequence 0:128 move second child to first child ( temp float) -0:128 'r027' ( temp float) -0:128 dot-product ( temp float) +0:128 'r026' ( temp float) +0:128 distance ( temp float) 0:128 'inF0' ( in 2-component vector of float) 0:128 'inF1' ( in 2-component vector of float) -0:132 Sequence -0:132 move second child to first child ( temp 2-component vector of float) -0:132 'r028' ( temp 2-component vector of float) -0:132 exp ( temp 2-component vector of float) -0:132 'inF0' ( in 2-component vector of float) +0:129 Sequence +0:129 move second child to first child ( temp float) +0:129 'r027' ( temp float) +0:129 dot-product ( temp float) +0:129 'inF0' ( in 2-component vector of float) +0:129 'inF1' ( in 2-component vector of float) 0:133 Sequence 0:133 move second child to first child ( temp 2-component vector of float) -0:133 'r029' ( temp 2-component vector of float) -0:133 exp2 ( temp 2-component vector of float) +0:133 'r028' ( temp 2-component vector of float) +0:133 exp ( temp 2-component vector of float) 0:133 'inF0' ( in 2-component vector of float) 0:134 Sequence 0:134 move second child to first child ( temp 2-component vector of float) -0:134 'r030' ( temp 2-component vector of float) -0:134 face-forward ( temp 2-component vector of float) +0:134 'r029' ( temp 2-component vector of float) +0:134 exp2 ( temp 2-component vector of float) 0:134 'inF0' ( in 2-component vector of float) -0:134 'inF1' ( in 2-component vector of float) -0:134 'inF2' ( in 2-component vector of float) 0:135 Sequence -0:135 move second child to first child ( temp 2-component vector of uint) -0:135 'r031' ( temp 2-component vector of uint) +0:135 move second child to first child ( temp 2-component vector of float) +0:135 'r030' ( temp 2-component vector of float) +0:135 face-forward ( temp 2-component vector of float) +0:135 'inF0' ( in 2-component vector of float) +0:135 'inF1' ( in 2-component vector of float) +0:135 'inF2' ( in 2-component vector of float) +0:136 Sequence +0:136 move second child to first child ( temp 2-component vector of uint) +0:136 'r031' ( temp 2-component vector of uint) 0:? findMSB ( temp 2-component vector of uint) 0:? Constant: 0:? 7 (const uint) 0:? 8 (const uint) -0:136 Sequence -0:136 move second child to first child ( temp 2-component vector of uint) -0:136 'r032' ( temp 2-component vector of uint) +0:137 Sequence +0:137 move second child to first child ( temp 2-component vector of uint) +0:137 'r032' ( temp 2-component vector of uint) 0:? findLSB ( temp 2-component vector of uint) 0:? Constant: 0:? 7 (const uint) 0:? 8 (const uint) -0:137 Sequence -0:137 move second child to first child ( temp 2-component vector of float) -0:137 'r033' ( temp 2-component vector of float) -0:137 Floor ( temp 2-component vector of float) -0:137 'inF0' ( in 2-component vector of float) -0:139 Sequence -0:139 move second child to first child ( temp 2-component vector of float) -0:139 'r035' ( temp 2-component vector of float) -0:139 mod ( temp 2-component vector of float) -0:139 'inF0' ( in 2-component vector of float) -0:139 'inF1' ( in 2-component vector of float) +0:138 Sequence +0:138 move second child to first child ( temp 2-component vector of float) +0:138 'r033' ( temp 2-component vector of float) +0:138 Floor ( temp 2-component vector of float) +0:138 'inF0' ( in 2-component vector of float) 0:140 Sequence 0:140 move second child to first child ( temp 2-component vector of float) -0:140 'r036' ( temp 2-component vector of float) -0:140 Fraction ( temp 2-component vector of float) +0:140 'r035' ( temp 2-component vector of float) +0:140 mod ( temp 2-component vector of float) 0:140 'inF0' ( in 2-component vector of float) +0:140 'inF1' ( in 2-component vector of float) 0:141 Sequence 0:141 move second child to first child ( temp 2-component vector of float) -0:141 'r038' ( temp 2-component vector of float) -0:141 fwidth ( temp 2-component vector of float) +0:141 'r036' ( temp 2-component vector of float) +0:141 Fraction ( temp 2-component vector of float) 0:141 'inF0' ( in 2-component vector of float) 0:142 Sequence -0:142 move second child to first child ( temp 2-component vector of bool) -0:142 'r039' ( temp 2-component vector of bool) -0:142 isinf ( temp 2-component vector of bool) +0:142 move second child to first child ( temp 2-component vector of float) +0:142 'r038' ( temp 2-component vector of float) +0:142 fwidth ( temp 2-component vector of float) 0:142 'inF0' ( in 2-component vector of float) 0:143 Sequence 0:143 move second child to first child ( temp 2-component vector of bool) -0:143 'r040' ( temp 2-component vector of bool) -0:143 isnan ( temp 2-component vector of bool) +0:143 'r039' ( temp 2-component vector of bool) +0:143 isinf ( temp 2-component vector of bool) 0:143 'inF0' ( in 2-component vector of float) 0:144 Sequence -0:144 move second child to first child ( temp 2-component vector of float) -0:144 'r041' ( temp 2-component vector of float) -0:144 ldexp ( temp 2-component vector of float) +0:144 move second child to first child ( temp 2-component vector of bool) +0:144 'r040' ( temp 2-component vector of bool) +0:144 isnan ( temp 2-component vector of bool) 0:144 'inF0' ( in 2-component vector of float) -0:144 'inF1' ( in 2-component vector of float) 0:145 Sequence 0:145 move second child to first child ( temp 2-component vector of float) -0:145 'r039a' ( temp 2-component vector of float) -0:145 mix ( temp 2-component vector of float) +0:145 'r041' ( temp 2-component vector of float) +0:145 ldexp ( temp 2-component vector of float) 0:145 'inF0' ( in 2-component vector of float) 0:145 'inF1' ( in 2-component vector of float) -0:145 'inF2' ( in 2-component vector of float) 0:146 Sequence -0:146 move second child to first child ( temp float) -0:146 'r042' ( temp float) -0:146 length ( temp float) +0:146 move second child to first child ( temp 2-component vector of float) +0:146 'r039a' ( temp 2-component vector of float) +0:146 mix ( temp 2-component vector of float) 0:146 'inF0' ( in 2-component vector of float) +0:146 'inF1' ( in 2-component vector of float) +0:146 'inF2' ( in 2-component vector of float) 0:147 Sequence -0:147 move second child to first child ( temp 2-component vector of float) -0:147 'r043' ( temp 2-component vector of float) -0:147 log ( temp 2-component vector of float) +0:147 move second child to first child ( temp float) +0:147 'r042' ( temp float) +0:147 length ( temp float) 0:147 'inF0' ( in 2-component vector of float) 0:148 Sequence 0:148 move second child to first child ( temp 2-component vector of float) -0:148 'r044' ( temp 2-component vector of float) -0:148 vector-scale ( temp 2-component vector of float) -0:148 log2 ( temp 2-component vector of float) -0:148 'inF0' ( in 2-component vector of float) -0:148 Constant: -0:148 0.301030 +0:148 'r043' ( temp 2-component vector of float) +0:148 log ( temp 2-component vector of float) +0:148 'inF0' ( in 2-component vector of float) 0:149 Sequence 0:149 move second child to first child ( temp 2-component vector of float) -0:149 'r045' ( temp 2-component vector of float) -0:149 log2 ( temp 2-component vector of float) -0:149 'inF0' ( in 2-component vector of float) +0:149 'r044' ( temp 2-component vector of float) +0:149 vector-scale ( temp 2-component vector of float) +0:149 log2 ( temp 2-component vector of float) +0:149 'inF0' ( in 2-component vector of float) +0:149 Constant: +0:149 0.301030 0:150 Sequence 0:150 move second child to first child ( temp 2-component vector of float) -0:150 'r046' ( temp 2-component vector of float) -0:150 max ( temp 2-component vector of float) +0:150 'r045' ( temp 2-component vector of float) +0:150 log2 ( temp 2-component vector of float) 0:150 'inF0' ( in 2-component vector of float) -0:150 'inF1' ( in 2-component vector of float) 0:151 Sequence 0:151 move second child to first child ( temp 2-component vector of float) -0:151 'r047' ( temp 2-component vector of float) -0:151 min ( temp 2-component vector of float) +0:151 'r046' ( temp 2-component vector of float) +0:151 max ( temp 2-component vector of float) 0:151 'inF0' ( in 2-component vector of float) 0:151 'inF1' ( in 2-component vector of float) 0:152 Sequence 0:152 move second child to first child ( temp 2-component vector of float) -0:152 'r048' ( temp 2-component vector of float) -0:152 normalize ( temp 2-component vector of float) +0:152 'r047' ( temp 2-component vector of float) +0:152 min ( temp 2-component vector of float) 0:152 'inF0' ( in 2-component vector of float) +0:152 'inF1' ( in 2-component vector of float) 0:153 Sequence 0:153 move second child to first child ( temp 2-component vector of float) -0:153 'r049' ( temp 2-component vector of float) -0:153 pow ( temp 2-component vector of float) +0:153 'r048' ( temp 2-component vector of float) +0:153 normalize ( temp 2-component vector of float) 0:153 'inF0' ( in 2-component vector of float) -0:153 'inF1' ( in 2-component vector of float) 0:154 Sequence 0:154 move second child to first child ( temp 2-component vector of float) -0:154 'r050' ( temp 2-component vector of float) -0:154 radians ( temp 2-component vector of float) +0:154 'r049' ( temp 2-component vector of float) +0:154 pow ( temp 2-component vector of float) 0:154 'inF0' ( in 2-component vector of float) +0:154 'inF1' ( in 2-component vector of float) 0:155 Sequence 0:155 move second child to first child ( temp 2-component vector of float) -0:155 'r051' ( temp 2-component vector of float) -0:155 divide ( temp 2-component vector of float) -0:155 Constant: -0:155 1.000000 +0:155 'r050' ( temp 2-component vector of float) +0:155 radians ( temp 2-component vector of float) 0:155 'inF0' ( in 2-component vector of float) 0:156 Sequence 0:156 move second child to first child ( temp 2-component vector of float) -0:156 'r052' ( temp 2-component vector of float) -0:156 reflect ( temp 2-component vector of float) +0:156 'r051' ( temp 2-component vector of float) +0:156 divide ( temp 2-component vector of float) +0:156 Constant: +0:156 1.000000 0:156 'inF0' ( in 2-component vector of float) -0:156 'inF1' ( in 2-component vector of float) 0:157 Sequence 0:157 move second child to first child ( temp 2-component vector of float) -0:157 'r053' ( temp 2-component vector of float) -0:157 refract ( temp 2-component vector of float) +0:157 'r052' ( temp 2-component vector of float) +0:157 reflect ( temp 2-component vector of float) 0:157 'inF0' ( in 2-component vector of float) 0:157 'inF1' ( in 2-component vector of float) -0:157 Constant: -0:157 2.000000 0:158 Sequence -0:158 move second child to first child ( temp 2-component vector of uint) -0:158 'r054' ( temp 2-component vector of uint) +0:158 move second child to first child ( temp 2-component vector of float) +0:158 'r053' ( temp 2-component vector of float) +0:158 refract ( temp 2-component vector of float) +0:158 'inF0' ( in 2-component vector of float) +0:158 'inF1' ( in 2-component vector of float) +0:158 Constant: +0:158 2.000000 +0:159 Sequence +0:159 move second child to first child ( temp 2-component vector of uint) +0:159 'r054' ( temp 2-component vector of uint) 0:? bitFieldReverse ( temp 2-component vector of uint) 0:? Constant: 0:? 1 (const uint) 0:? 2 (const uint) -0:159 Sequence -0:159 move second child to first child ( temp 2-component vector of float) -0:159 'r055' ( temp 2-component vector of float) -0:159 roundEven ( temp 2-component vector of float) -0:159 'inF0' ( in 2-component vector of float) 0:160 Sequence 0:160 move second child to first child ( temp 2-component vector of float) -0:160 'r056' ( temp 2-component vector of float) -0:160 inverse sqrt ( temp 2-component vector of float) +0:160 'r055' ( temp 2-component vector of float) +0:160 roundEven ( temp 2-component vector of float) 0:160 'inF0' ( in 2-component vector of float) 0:161 Sequence 0:161 move second child to first child ( temp 2-component vector of float) -0:161 'r057' ( temp 2-component vector of float) -0:161 clamp ( temp 2-component vector of float) +0:161 'r056' ( temp 2-component vector of float) +0:161 inverse sqrt ( temp 2-component vector of float) 0:161 'inF0' ( in 2-component vector of float) -0:161 Constant: -0:161 0.000000 -0:161 Constant: -0:161 1.000000 0:162 Sequence 0:162 move second child to first child ( temp 2-component vector of float) -0:162 'r058' ( temp 2-component vector of float) -0:162 Sign ( temp 2-component vector of float) +0:162 'r057' ( temp 2-component vector of float) +0:162 clamp ( temp 2-component vector of float) 0:162 'inF0' ( in 2-component vector of float) +0:162 Constant: +0:162 0.000000 +0:162 Constant: +0:162 1.000000 0:163 Sequence 0:163 move second child to first child ( temp 2-component vector of float) -0:163 'r059' ( temp 2-component vector of float) -0:163 sine ( temp 2-component vector of float) +0:163 'r058' ( temp 2-component vector of float) +0:163 Sign ( temp 2-component vector of float) 0:163 'inF0' ( in 2-component vector of float) 0:164 Sequence 0:164 move second child to first child ( temp 2-component vector of float) -0:164 'inF1' ( in 2-component vector of float) +0:164 'r059' ( temp 2-component vector of float) 0:164 sine ( temp 2-component vector of float) 0:164 'inF0' ( in 2-component vector of float) -0:164 move second child to first child ( temp 2-component vector of float) -0:164 'inF2' ( in 2-component vector of float) -0:164 cosine ( temp 2-component vector of float) -0:164 'inF0' ( in 2-component vector of float) 0:165 Sequence 0:165 move second child to first child ( temp 2-component vector of float) -0:165 'r060' ( temp 2-component vector of float) -0:165 hyp. sine ( temp 2-component vector of float) +0:165 'inF1' ( in 2-component vector of float) +0:165 sine ( temp 2-component vector of float) +0:165 'inF0' ( in 2-component vector of float) +0:165 move second child to first child ( temp 2-component vector of float) +0:165 'inF2' ( in 2-component vector of float) +0:165 cosine ( temp 2-component vector of float) 0:165 'inF0' ( in 2-component vector of float) 0:166 Sequence 0:166 move second child to first child ( temp 2-component vector of float) -0:166 'r061' ( temp 2-component vector of float) -0:166 smoothstep ( temp 2-component vector of float) +0:166 'r060' ( temp 2-component vector of float) +0:166 hyp. sine ( temp 2-component vector of float) 0:166 'inF0' ( in 2-component vector of float) -0:166 'inF1' ( in 2-component vector of float) -0:166 'inF2' ( in 2-component vector of float) 0:167 Sequence 0:167 move second child to first child ( temp 2-component vector of float) -0:167 'r062' ( temp 2-component vector of float) -0:167 sqrt ( temp 2-component vector of float) +0:167 'r061' ( temp 2-component vector of float) +0:167 smoothstep ( temp 2-component vector of float) 0:167 'inF0' ( in 2-component vector of float) +0:167 'inF1' ( in 2-component vector of float) +0:167 'inF2' ( in 2-component vector of float) 0:168 Sequence 0:168 move second child to first child ( temp 2-component vector of float) -0:168 'r063' ( temp 2-component vector of float) -0:168 step ( temp 2-component vector of float) +0:168 'r062' ( temp 2-component vector of float) +0:168 sqrt ( temp 2-component vector of float) 0:168 'inF0' ( in 2-component vector of float) -0:168 'inF1' ( in 2-component vector of float) 0:169 Sequence 0:169 move second child to first child ( temp 2-component vector of float) -0:169 'r064' ( temp 2-component vector of float) -0:169 tangent ( temp 2-component vector of float) +0:169 'r063' ( temp 2-component vector of float) +0:169 step ( temp 2-component vector of float) 0:169 'inF0' ( in 2-component vector of float) +0:169 'inF1' ( in 2-component vector of float) 0:170 Sequence 0:170 move second child to first child ( temp 2-component vector of float) -0:170 'r065' ( temp 2-component vector of float) -0:170 hyp. tangent ( temp 2-component vector of float) +0:170 'r064' ( temp 2-component vector of float) +0:170 tangent ( temp 2-component vector of float) 0:170 'inF0' ( in 2-component vector of float) -0:172 Sequence -0:172 move second child to first child ( temp 2-component vector of float) -0:172 'r066' ( temp 2-component vector of float) -0:172 trunc ( temp 2-component vector of float) -0:172 'inF0' ( in 2-component vector of float) -0:175 Branch: Return with expression +0:171 Sequence +0:171 move second child to first child ( temp 2-component vector of float) +0:171 'r065' ( temp 2-component vector of float) +0:171 hyp. tangent ( temp 2-component vector of float) +0:171 'inF0' ( in 2-component vector of float) +0:173 Sequence +0:173 move second child to first child ( temp 2-component vector of float) +0:173 'r066' ( temp 2-component vector of float) +0:173 trunc ( temp 2-component vector of float) +0:173 'inF0' ( in 2-component vector of float) +0:176 Branch: Return with expression 0:? Constant: 0:? 1.000000 0:? 2.000000 -0:179 Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vu3;vu3; ( temp 3-component vector of float) -0:179 Function Parameters: -0:179 'inF0' ( in 3-component vector of float) -0:179 'inF1' ( in 3-component vector of float) -0:179 'inF2' ( in 3-component vector of float) -0:179 'inU0' ( in 3-component vector of uint) -0:179 'inU1' ( in 3-component vector of uint) +0:180 Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vu3;vu3; ( temp 3-component vector of float) +0:180 Function Parameters: +0:180 'inF0' ( in 3-component vector of float) +0:180 'inF1' ( in 3-component vector of float) +0:180 'inF2' ( in 3-component vector of float) +0:180 'inU0' ( in 3-component vector of uint) +0:180 'inU1' ( in 3-component vector of uint) 0:? Sequence -0:182 Sequence -0:182 move second child to first child ( temp bool) -0:182 'r000' ( temp bool) -0:182 all ( temp bool) -0:182 Convert float to bool ( temp 3-component vector of bool) -0:182 'inF0' ( in 3-component vector of float) 0:183 Sequence -0:183 move second child to first child ( temp 3-component vector of float) -0:183 'r001' ( temp 3-component vector of float) -0:183 Absolute value ( temp 3-component vector of float) -0:183 'inF0' ( in 3-component vector of float) +0:183 move second child to first child ( temp bool) +0:183 'r000' ( temp bool) +0:183 all ( temp bool) +0:183 Convert float to bool ( temp 3-component vector of bool) +0:183 'inF0' ( in 3-component vector of float) 0:184 Sequence 0:184 move second child to first child ( temp 3-component vector of float) -0:184 'r002' ( temp 3-component vector of float) -0:184 arc cosine ( temp 3-component vector of float) +0:184 'r001' ( temp 3-component vector of float) +0:184 Absolute value ( temp 3-component vector of float) 0:184 'inF0' ( in 3-component vector of float) 0:185 Sequence -0:185 move second child to first child ( temp bool) -0:185 'r003' ( temp bool) -0:185 any ( temp bool) -0:185 Convert float to bool ( temp 3-component vector of bool) -0:185 'inF0' ( in 3-component vector of float) +0:185 move second child to first child ( temp 3-component vector of float) +0:185 'r002' ( temp 3-component vector of float) +0:185 arc cosine ( temp 3-component vector of float) +0:185 'inF0' ( in 3-component vector of float) 0:186 Sequence -0:186 move second child to first child ( temp 3-component vector of float) -0:186 'r004' ( temp 3-component vector of float) -0:186 arc sine ( temp 3-component vector of float) -0:186 'inF0' ( in 3-component vector of float) +0:186 move second child to first child ( temp bool) +0:186 'r003' ( temp bool) +0:186 any ( temp bool) +0:186 Convert float to bool ( temp 3-component vector of bool) +0:186 'inF0' ( in 3-component vector of float) 0:187 Sequence -0:187 move second child to first child ( temp 3-component vector of int) -0:187 'r005' ( temp 3-component vector of int) -0:187 floatBitsToInt ( temp 3-component vector of int) +0:187 move second child to first child ( temp 3-component vector of float) +0:187 'r004' ( temp 3-component vector of float) +0:187 arc sine ( temp 3-component vector of float) 0:187 'inF0' ( in 3-component vector of float) 0:188 Sequence -0:188 move second child to first child ( temp 3-component vector of uint) -0:188 'r006' ( temp 3-component vector of uint) -0:188 floatBitsToUint ( temp 3-component vector of uint) +0:188 move second child to first child ( temp 3-component vector of int) +0:188 'r005' ( temp 3-component vector of int) +0:188 floatBitsToInt ( temp 3-component vector of int) 0:188 'inF0' ( in 3-component vector of float) 0:189 Sequence -0:189 move second child to first child ( temp 3-component vector of float) -0:189 'r007' ( temp 3-component vector of float) -0:189 intBitsToFloat ( temp 3-component vector of float) -0:189 'inU0' ( in 3-component vector of uint) -0:191 Sequence -0:191 move second child to first child ( temp 3-component vector of float) -0:191 'r009' ( temp 3-component vector of float) -0:191 arc tangent ( temp 3-component vector of float) -0:191 'inF0' ( in 3-component vector of float) +0:189 move second child to first child ( temp 3-component vector of uint) +0:189 'r006' ( temp 3-component vector of uint) +0:189 floatBitsToUint ( temp 3-component vector of uint) +0:189 'inF0' ( in 3-component vector of float) +0:190 Sequence +0:190 move second child to first child ( temp 3-component vector of float) +0:190 'r007' ( temp 3-component vector of float) +0:190 intBitsToFloat ( temp 3-component vector of float) +0:190 'inU0' ( in 3-component vector of uint) 0:192 Sequence 0:192 move second child to first child ( temp 3-component vector of float) -0:192 'r010' ( temp 3-component vector of float) +0:192 'r009' ( temp 3-component vector of float) 0:192 arc tangent ( temp 3-component vector of float) 0:192 'inF0' ( in 3-component vector of float) -0:192 'inF1' ( in 3-component vector of float) 0:193 Sequence 0:193 move second child to first child ( temp 3-component vector of float) -0:193 'r011' ( temp 3-component vector of float) -0:193 Ceiling ( temp 3-component vector of float) +0:193 'r010' ( temp 3-component vector of float) +0:193 arc tangent ( temp 3-component vector of float) 0:193 'inF0' ( in 3-component vector of float) +0:193 'inF1' ( in 3-component vector of float) 0:194 Sequence 0:194 move second child to first child ( temp 3-component vector of float) -0:194 'r012' ( temp 3-component vector of float) -0:194 clamp ( temp 3-component vector of float) +0:194 'r011' ( temp 3-component vector of float) +0:194 Ceiling ( temp 3-component vector of float) 0:194 'inF0' ( in 3-component vector of float) -0:194 'inF1' ( in 3-component vector of float) -0:194 'inF2' ( in 3-component vector of float) -0:195 Test condition and select ( temp void) -0:195 Condition -0:195 any ( temp bool) -0:195 Compare Less Than ( temp 3-component vector of bool) +0:195 Sequence +0:195 move second child to first child ( temp 3-component vector of float) +0:195 'r012' ( temp 3-component vector of float) +0:195 clamp ( temp 3-component vector of float) 0:195 'inF0' ( in 3-component vector of float) -0:195 Constant: -0:195 0.000000 -0:195 0.000000 -0:195 0.000000 -0:195 true case -0:195 Branch: Kill +0:195 'inF1' ( in 3-component vector of float) +0:195 'inF2' ( in 3-component vector of float) 0:196 Test condition and select ( temp void) 0:196 Condition 0:196 any ( temp bool) 0:196 Compare Less Than ( temp 3-component vector of bool) -0:196 'inU0' ( in 3-component vector of uint) +0:196 'inF0' ( in 3-component vector of float) 0:196 Constant: 0:196 0.000000 0:196 0.000000 0:196 0.000000 0:196 true case 0:196 Branch: Kill -0:197 Sequence -0:197 move second child to first child ( temp 3-component vector of float) -0:197 'r013' ( temp 3-component vector of float) -0:197 cosine ( temp 3-component vector of float) -0:197 'inF0' ( in 3-component vector of float) +0:197 Test condition and select ( temp void) +0:197 Condition +0:197 any ( temp bool) +0:197 Compare Less Than ( temp 3-component vector of bool) +0:197 'inU0' ( in 3-component vector of uint) +0:197 Constant: +0:197 0.000000 +0:197 0.000000 +0:197 0.000000 +0:197 true case +0:197 Branch: Kill 0:198 Sequence 0:198 move second child to first child ( temp 3-component vector of float) -0:198 'r014' ( temp 3-component vector of float) -0:198 hyp. cosine ( temp 3-component vector of float) +0:198 'r013' ( temp 3-component vector of float) +0:198 cosine ( temp 3-component vector of float) 0:198 'inF0' ( in 3-component vector of float) 0:199 Sequence -0:199 move second child to first child ( temp 3-component vector of uint) -0:199 'r015' ( temp 3-component vector of uint) +0:199 move second child to first child ( temp 3-component vector of float) +0:199 'r014' ( temp 3-component vector of float) +0:199 hyp. cosine ( temp 3-component vector of float) +0:199 'inF0' ( in 3-component vector of float) +0:200 Sequence +0:200 move second child to first child ( temp 3-component vector of uint) +0:200 'r015' ( temp 3-component vector of uint) 0:? bitCount ( temp 3-component vector of uint) 0:? Constant: 0:? 7 (const uint) 0:? 3 (const uint) 0:? 5 (const uint) -0:200 Sequence -0:200 move second child to first child ( temp 3-component vector of float) -0:200 'r016' ( temp 3-component vector of float) -0:200 cross-product ( temp 3-component vector of float) -0:200 'inF0' ( in 3-component vector of float) -0:200 'inF1' ( in 3-component vector of float) 0:201 Sequence 0:201 move second child to first child ( temp 3-component vector of float) -0:201 'r017' ( temp 3-component vector of float) -0:201 dPdx ( temp 3-component vector of float) +0:201 'r016' ( temp 3-component vector of float) +0:201 cross-product ( temp 3-component vector of float) 0:201 'inF0' ( in 3-component vector of float) +0:201 'inF1' ( in 3-component vector of float) 0:202 Sequence 0:202 move second child to first child ( temp 3-component vector of float) -0:202 'r018' ( temp 3-component vector of float) -0:202 dPdxCoarse ( temp 3-component vector of float) +0:202 'r017' ( temp 3-component vector of float) +0:202 dPdx ( temp 3-component vector of float) 0:202 'inF0' ( in 3-component vector of float) 0:203 Sequence 0:203 move second child to first child ( temp 3-component vector of float) -0:203 'r019' ( temp 3-component vector of float) -0:203 dPdxFine ( temp 3-component vector of float) +0:203 'r018' ( temp 3-component vector of float) +0:203 dPdxCoarse ( temp 3-component vector of float) 0:203 'inF0' ( in 3-component vector of float) 0:204 Sequence 0:204 move second child to first child ( temp 3-component vector of float) -0:204 'r020' ( temp 3-component vector of float) -0:204 dPdy ( temp 3-component vector of float) +0:204 'r019' ( temp 3-component vector of float) +0:204 dPdxFine ( temp 3-component vector of float) 0:204 'inF0' ( in 3-component vector of float) 0:205 Sequence 0:205 move second child to first child ( temp 3-component vector of float) -0:205 'r021' ( temp 3-component vector of float) -0:205 dPdyCoarse ( temp 3-component vector of float) +0:205 'r020' ( temp 3-component vector of float) +0:205 dPdy ( temp 3-component vector of float) 0:205 'inF0' ( in 3-component vector of float) 0:206 Sequence 0:206 move second child to first child ( temp 3-component vector of float) -0:206 'r022' ( temp 3-component vector of float) -0:206 dPdyFine ( temp 3-component vector of float) +0:206 'r021' ( temp 3-component vector of float) +0:206 dPdyCoarse ( temp 3-component vector of float) 0:206 'inF0' ( in 3-component vector of float) 0:207 Sequence 0:207 move second child to first child ( temp 3-component vector of float) -0:207 'r023' ( temp 3-component vector of float) -0:207 degrees ( temp 3-component vector of float) +0:207 'r022' ( temp 3-component vector of float) +0:207 dPdyFine ( temp 3-component vector of float) 0:207 'inF0' ( in 3-component vector of float) 0:208 Sequence -0:208 move second child to first child ( temp float) -0:208 'r024' ( temp float) -0:208 distance ( temp float) +0:208 move second child to first child ( temp 3-component vector of float) +0:208 'r023' ( temp 3-component vector of float) +0:208 degrees ( temp 3-component vector of float) 0:208 'inF0' ( in 3-component vector of float) -0:208 'inF1' ( in 3-component vector of float) 0:209 Sequence 0:209 move second child to first child ( temp float) -0:209 'r025' ( temp float) -0:209 dot-product ( temp float) +0:209 'r024' ( temp float) +0:209 distance ( temp float) 0:209 'inF0' ( in 3-component vector of float) 0:209 'inF1' ( in 3-component vector of float) -0:213 Sequence -0:213 move second child to first child ( temp 3-component vector of float) -0:213 'r029' ( temp 3-component vector of float) -0:213 exp ( temp 3-component vector of float) -0:213 'inF0' ( in 3-component vector of float) +0:210 Sequence +0:210 move second child to first child ( temp float) +0:210 'r025' ( temp float) +0:210 dot-product ( temp float) +0:210 'inF0' ( in 3-component vector of float) +0:210 'inF1' ( in 3-component vector of float) 0:214 Sequence 0:214 move second child to first child ( temp 3-component vector of float) -0:214 'r030' ( temp 3-component vector of float) -0:214 exp2 ( temp 3-component vector of float) +0:214 'r029' ( temp 3-component vector of float) +0:214 exp ( temp 3-component vector of float) 0:214 'inF0' ( in 3-component vector of float) 0:215 Sequence 0:215 move second child to first child ( temp 3-component vector of float) -0:215 'r031' ( temp 3-component vector of float) -0:215 face-forward ( temp 3-component vector of float) +0:215 'r030' ( temp 3-component vector of float) +0:215 exp2 ( temp 3-component vector of float) 0:215 'inF0' ( in 3-component vector of float) -0:215 'inF1' ( in 3-component vector of float) -0:215 'inF2' ( in 3-component vector of float) 0:216 Sequence -0:216 move second child to first child ( temp 3-component vector of uint) -0:216 'r032' ( temp 3-component vector of uint) +0:216 move second child to first child ( temp 3-component vector of float) +0:216 'r031' ( temp 3-component vector of float) +0:216 face-forward ( temp 3-component vector of float) +0:216 'inF0' ( in 3-component vector of float) +0:216 'inF1' ( in 3-component vector of float) +0:216 'inF2' ( in 3-component vector of float) +0:217 Sequence +0:217 move second child to first child ( temp 3-component vector of uint) +0:217 'r032' ( temp 3-component vector of uint) 0:? findMSB ( temp 3-component vector of uint) 0:? Constant: 0:? 2 (const uint) 0:? 3 (const uint) 0:? 4 (const uint) -0:217 Sequence -0:217 move second child to first child ( temp 3-component vector of uint) -0:217 'r033' ( temp 3-component vector of uint) +0:218 Sequence +0:218 move second child to first child ( temp 3-component vector of uint) +0:218 'r033' ( temp 3-component vector of uint) 0:? findLSB ( temp 3-component vector of uint) 0:? Constant: 0:? 2 (const uint) 0:? 3 (const uint) 0:? 4 (const uint) -0:218 Sequence -0:218 move second child to first child ( temp 3-component vector of float) -0:218 'r034' ( temp 3-component vector of float) -0:218 Floor ( temp 3-component vector of float) -0:218 'inF0' ( in 3-component vector of float) -0:220 Sequence -0:220 move second child to first child ( temp 3-component vector of float) -0:220 'r036' ( temp 3-component vector of float) -0:220 mod ( temp 3-component vector of float) -0:220 'inF0' ( in 3-component vector of float) -0:220 'inF1' ( in 3-component vector of float) +0:219 Sequence +0:219 move second child to first child ( temp 3-component vector of float) +0:219 'r034' ( temp 3-component vector of float) +0:219 Floor ( temp 3-component vector of float) +0:219 'inF0' ( in 3-component vector of float) 0:221 Sequence 0:221 move second child to first child ( temp 3-component vector of float) -0:221 'r037' ( temp 3-component vector of float) -0:221 Fraction ( temp 3-component vector of float) +0:221 'r036' ( temp 3-component vector of float) +0:221 mod ( temp 3-component vector of float) 0:221 'inF0' ( in 3-component vector of float) +0:221 'inF1' ( in 3-component vector of float) 0:222 Sequence 0:222 move second child to first child ( temp 3-component vector of float) -0:222 'r039' ( temp 3-component vector of float) -0:222 fwidth ( temp 3-component vector of float) +0:222 'r037' ( temp 3-component vector of float) +0:222 Fraction ( temp 3-component vector of float) 0:222 'inF0' ( in 3-component vector of float) 0:223 Sequence -0:223 move second child to first child ( temp 3-component vector of bool) -0:223 'r040' ( temp 3-component vector of bool) -0:223 isinf ( temp 3-component vector of bool) +0:223 move second child to first child ( temp 3-component vector of float) +0:223 'r039' ( temp 3-component vector of float) +0:223 fwidth ( temp 3-component vector of float) 0:223 'inF0' ( in 3-component vector of float) 0:224 Sequence 0:224 move second child to first child ( temp 3-component vector of bool) -0:224 'r041' ( temp 3-component vector of bool) -0:224 isnan ( temp 3-component vector of bool) +0:224 'r040' ( temp 3-component vector of bool) +0:224 isinf ( temp 3-component vector of bool) 0:224 'inF0' ( in 3-component vector of float) 0:225 Sequence -0:225 move second child to first child ( temp 3-component vector of float) -0:225 'r042' ( temp 3-component vector of float) -0:225 ldexp ( temp 3-component vector of float) +0:225 move second child to first child ( temp 3-component vector of bool) +0:225 'r041' ( temp 3-component vector of bool) +0:225 isnan ( temp 3-component vector of bool) 0:225 'inF0' ( in 3-component vector of float) -0:225 'inF1' ( in 3-component vector of float) 0:226 Sequence 0:226 move second child to first child ( temp 3-component vector of float) -0:226 'r039a' ( temp 3-component vector of float) -0:226 mix ( temp 3-component vector of float) +0:226 'r042' ( temp 3-component vector of float) +0:226 ldexp ( temp 3-component vector of float) 0:226 'inF0' ( in 3-component vector of float) 0:226 'inF1' ( in 3-component vector of float) -0:226 'inF2' ( in 3-component vector of float) 0:227 Sequence 0:227 move second child to first child ( temp 3-component vector of float) -0:227 'r039b' ( temp 3-component vector of float) +0:227 'r039a' ( temp 3-component vector of float) 0:227 mix ( temp 3-component vector of float) 0:227 'inF0' ( in 3-component vector of float) 0:227 'inF1' ( in 3-component vector of float) -0:227 Constant: -0:227 0.300000 +0:227 'inF2' ( in 3-component vector of float) 0:228 Sequence -0:228 move second child to first child ( temp float) -0:228 'r043' ( temp float) -0:228 length ( temp float) +0:228 move second child to first child ( temp 3-component vector of float) +0:228 'r039b' ( temp 3-component vector of float) +0:228 mix ( temp 3-component vector of float) 0:228 'inF0' ( in 3-component vector of float) +0:228 'inF1' ( in 3-component vector of float) +0:228 Constant: +0:228 0.300000 0:229 Sequence -0:229 move second child to first child ( temp 3-component vector of float) -0:229 'r044' ( temp 3-component vector of float) -0:229 log ( temp 3-component vector of float) +0:229 move second child to first child ( temp float) +0:229 'r043' ( temp float) +0:229 length ( temp float) 0:229 'inF0' ( in 3-component vector of float) 0:230 Sequence 0:230 move second child to first child ( temp 3-component vector of float) -0:230 'r045' ( temp 3-component vector of float) -0:230 vector-scale ( temp 3-component vector of float) -0:230 log2 ( temp 3-component vector of float) -0:230 'inF0' ( in 3-component vector of float) -0:230 Constant: -0:230 0.301030 +0:230 'r044' ( temp 3-component vector of float) +0:230 log ( temp 3-component vector of float) +0:230 'inF0' ( in 3-component vector of float) 0:231 Sequence 0:231 move second child to first child ( temp 3-component vector of float) -0:231 'r046' ( temp 3-component vector of float) -0:231 log2 ( temp 3-component vector of float) -0:231 'inF0' ( in 3-component vector of float) +0:231 'r045' ( temp 3-component vector of float) +0:231 vector-scale ( temp 3-component vector of float) +0:231 log2 ( temp 3-component vector of float) +0:231 'inF0' ( in 3-component vector of float) +0:231 Constant: +0:231 0.301030 0:232 Sequence 0:232 move second child to first child ( temp 3-component vector of float) -0:232 'r047' ( temp 3-component vector of float) -0:232 max ( temp 3-component vector of float) +0:232 'r046' ( temp 3-component vector of float) +0:232 log2 ( temp 3-component vector of float) 0:232 'inF0' ( in 3-component vector of float) -0:232 'inF1' ( in 3-component vector of float) 0:233 Sequence 0:233 move second child to first child ( temp 3-component vector of float) -0:233 'r048' ( temp 3-component vector of float) -0:233 min ( temp 3-component vector of float) +0:233 'r047' ( temp 3-component vector of float) +0:233 max ( temp 3-component vector of float) 0:233 'inF0' ( in 3-component vector of float) 0:233 'inF1' ( in 3-component vector of float) 0:234 Sequence 0:234 move second child to first child ( temp 3-component vector of float) -0:234 'r049' ( temp 3-component vector of float) -0:234 normalize ( temp 3-component vector of float) +0:234 'r048' ( temp 3-component vector of float) +0:234 min ( temp 3-component vector of float) 0:234 'inF0' ( in 3-component vector of float) +0:234 'inF1' ( in 3-component vector of float) 0:235 Sequence 0:235 move second child to first child ( temp 3-component vector of float) -0:235 'r050' ( temp 3-component vector of float) -0:235 pow ( temp 3-component vector of float) +0:235 'r049' ( temp 3-component vector of float) +0:235 normalize ( temp 3-component vector of float) 0:235 'inF0' ( in 3-component vector of float) -0:235 'inF1' ( in 3-component vector of float) 0:236 Sequence 0:236 move second child to first child ( temp 3-component vector of float) -0:236 'r051' ( temp 3-component vector of float) -0:236 radians ( temp 3-component vector of float) +0:236 'r050' ( temp 3-component vector of float) +0:236 pow ( temp 3-component vector of float) 0:236 'inF0' ( in 3-component vector of float) +0:236 'inF1' ( in 3-component vector of float) 0:237 Sequence 0:237 move second child to first child ( temp 3-component vector of float) -0:237 'r052' ( temp 3-component vector of float) -0:237 divide ( temp 3-component vector of float) -0:237 Constant: -0:237 1.000000 +0:237 'r051' ( temp 3-component vector of float) +0:237 radians ( temp 3-component vector of float) 0:237 'inF0' ( in 3-component vector of float) 0:238 Sequence 0:238 move second child to first child ( temp 3-component vector of float) -0:238 'r053' ( temp 3-component vector of float) -0:238 reflect ( temp 3-component vector of float) +0:238 'r052' ( temp 3-component vector of float) +0:238 divide ( temp 3-component vector of float) +0:238 Constant: +0:238 1.000000 0:238 'inF0' ( in 3-component vector of float) -0:238 'inF1' ( in 3-component vector of float) 0:239 Sequence 0:239 move second child to first child ( temp 3-component vector of float) -0:239 'r054' ( temp 3-component vector of float) -0:239 refract ( temp 3-component vector of float) +0:239 'r053' ( temp 3-component vector of float) +0:239 reflect ( temp 3-component vector of float) 0:239 'inF0' ( in 3-component vector of float) 0:239 'inF1' ( in 3-component vector of float) -0:239 Constant: -0:239 2.000000 0:240 Sequence -0:240 move second child to first child ( temp 3-component vector of uint) -0:240 'r055' ( temp 3-component vector of uint) +0:240 move second child to first child ( temp 3-component vector of float) +0:240 'r054' ( temp 3-component vector of float) +0:240 refract ( temp 3-component vector of float) +0:240 'inF0' ( in 3-component vector of float) +0:240 'inF1' ( in 3-component vector of float) +0:240 Constant: +0:240 2.000000 +0:241 Sequence +0:241 move second child to first child ( temp 3-component vector of uint) +0:241 'r055' ( temp 3-component vector of uint) 0:? bitFieldReverse ( temp 3-component vector of uint) 0:? Constant: 0:? 1 (const uint) 0:? 2 (const uint) 0:? 3 (const uint) -0:241 Sequence -0:241 move second child to first child ( temp 3-component vector of float) -0:241 'r056' ( temp 3-component vector of float) -0:241 roundEven ( temp 3-component vector of float) -0:241 'inF0' ( in 3-component vector of float) 0:242 Sequence 0:242 move second child to first child ( temp 3-component vector of float) -0:242 'r057' ( temp 3-component vector of float) -0:242 inverse sqrt ( temp 3-component vector of float) +0:242 'r056' ( temp 3-component vector of float) +0:242 roundEven ( temp 3-component vector of float) 0:242 'inF0' ( in 3-component vector of float) 0:243 Sequence 0:243 move second child to first child ( temp 3-component vector of float) -0:243 'r058' ( temp 3-component vector of float) -0:243 clamp ( temp 3-component vector of float) +0:243 'r057' ( temp 3-component vector of float) +0:243 inverse sqrt ( temp 3-component vector of float) 0:243 'inF0' ( in 3-component vector of float) -0:243 Constant: -0:243 0.000000 -0:243 Constant: -0:243 1.000000 0:244 Sequence 0:244 move second child to first child ( temp 3-component vector of float) -0:244 'r059' ( temp 3-component vector of float) -0:244 Sign ( temp 3-component vector of float) +0:244 'r058' ( temp 3-component vector of float) +0:244 clamp ( temp 3-component vector of float) 0:244 'inF0' ( in 3-component vector of float) +0:244 Constant: +0:244 0.000000 +0:244 Constant: +0:244 1.000000 0:245 Sequence 0:245 move second child to first child ( temp 3-component vector of float) -0:245 'r060' ( temp 3-component vector of float) -0:245 sine ( temp 3-component vector of float) +0:245 'r059' ( temp 3-component vector of float) +0:245 Sign ( temp 3-component vector of float) 0:245 'inF0' ( in 3-component vector of float) 0:246 Sequence 0:246 move second child to first child ( temp 3-component vector of float) -0:246 'inF1' ( in 3-component vector of float) +0:246 'r060' ( temp 3-component vector of float) 0:246 sine ( temp 3-component vector of float) 0:246 'inF0' ( in 3-component vector of float) -0:246 move second child to first child ( temp 3-component vector of float) -0:246 'inF2' ( in 3-component vector of float) -0:246 cosine ( temp 3-component vector of float) -0:246 'inF0' ( in 3-component vector of float) 0:247 Sequence 0:247 move second child to first child ( temp 3-component vector of float) -0:247 'r061' ( temp 3-component vector of float) -0:247 hyp. sine ( temp 3-component vector of float) +0:247 'inF1' ( in 3-component vector of float) +0:247 sine ( temp 3-component vector of float) +0:247 'inF0' ( in 3-component vector of float) +0:247 move second child to first child ( temp 3-component vector of float) +0:247 'inF2' ( in 3-component vector of float) +0:247 cosine ( temp 3-component vector of float) 0:247 'inF0' ( in 3-component vector of float) 0:248 Sequence 0:248 move second child to first child ( temp 3-component vector of float) -0:248 'r062' ( temp 3-component vector of float) -0:248 smoothstep ( temp 3-component vector of float) +0:248 'r061' ( temp 3-component vector of float) +0:248 hyp. sine ( temp 3-component vector of float) 0:248 'inF0' ( in 3-component vector of float) -0:248 'inF1' ( in 3-component vector of float) -0:248 'inF2' ( in 3-component vector of float) 0:249 Sequence 0:249 move second child to first child ( temp 3-component vector of float) -0:249 'r063' ( temp 3-component vector of float) -0:249 sqrt ( temp 3-component vector of float) +0:249 'r062' ( temp 3-component vector of float) +0:249 smoothstep ( temp 3-component vector of float) 0:249 'inF0' ( in 3-component vector of float) +0:249 'inF1' ( in 3-component vector of float) +0:249 'inF2' ( in 3-component vector of float) 0:250 Sequence 0:250 move second child to first child ( temp 3-component vector of float) -0:250 'r064' ( temp 3-component vector of float) -0:250 step ( temp 3-component vector of float) +0:250 'r063' ( temp 3-component vector of float) +0:250 sqrt ( temp 3-component vector of float) 0:250 'inF0' ( in 3-component vector of float) -0:250 'inF1' ( in 3-component vector of float) 0:251 Sequence 0:251 move second child to first child ( temp 3-component vector of float) -0:251 'r065' ( temp 3-component vector of float) -0:251 tangent ( temp 3-component vector of float) +0:251 'r064' ( temp 3-component vector of float) +0:251 step ( temp 3-component vector of float) 0:251 'inF0' ( in 3-component vector of float) +0:251 'inF1' ( in 3-component vector of float) 0:252 Sequence 0:252 move second child to first child ( temp 3-component vector of float) -0:252 'r066' ( temp 3-component vector of float) -0:252 hyp. tangent ( temp 3-component vector of float) +0:252 'r065' ( temp 3-component vector of float) +0:252 tangent ( temp 3-component vector of float) 0:252 'inF0' ( in 3-component vector of float) -0:254 Sequence -0:254 move second child to first child ( temp 3-component vector of float) -0:254 'r067' ( temp 3-component vector of float) -0:254 trunc ( temp 3-component vector of float) -0:254 'inF0' ( in 3-component vector of float) -0:257 Branch: Return with expression +0:253 Sequence +0:253 move second child to first child ( temp 3-component vector of float) +0:253 'r066' ( temp 3-component vector of float) +0:253 hyp. tangent ( temp 3-component vector of float) +0:253 'inF0' ( in 3-component vector of float) +0:255 Sequence +0:255 move second child to first child ( temp 3-component vector of float) +0:255 'r067' ( temp 3-component vector of float) +0:255 trunc ( temp 3-component vector of float) +0:255 'inF0' ( in 3-component vector of float) +0:258 Branch: Return with expression 0:? Constant: 0:? 1.000000 0:? 2.000000 0:? 3.000000 -0:261 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vu4;vu4; ( temp 4-component vector of float) -0:261 Function Parameters: -0:261 'inF0' ( in 4-component vector of float) -0:261 'inF1' ( in 4-component vector of float) -0:261 'inF2' ( in 4-component vector of float) -0:261 'inU0' ( in 4-component vector of uint) -0:261 'inU1' ( in 4-component vector of uint) +0:262 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vu4;vu4; ( temp 4-component vector of float) +0:262 Function Parameters: +0:262 'inF0' ( in 4-component vector of float) +0:262 'inF1' ( in 4-component vector of float) +0:262 'inF2' ( in 4-component vector of float) +0:262 'inU0' ( in 4-component vector of uint) +0:262 'inU1' ( in 4-component vector of uint) 0:? Sequence -0:264 Sequence -0:264 move second child to first child ( temp bool) -0:264 'r000' ( temp bool) -0:264 all ( temp bool) -0:264 Convert float to bool ( temp 4-component vector of bool) -0:264 'inF0' ( in 4-component vector of float) 0:265 Sequence -0:265 move second child to first child ( temp 4-component vector of float) -0:265 'r001' ( temp 4-component vector of float) -0:265 Absolute value ( temp 4-component vector of float) -0:265 'inF0' ( in 4-component vector of float) +0:265 move second child to first child ( temp bool) +0:265 'r000' ( temp bool) +0:265 all ( temp bool) +0:265 Convert float to bool ( temp 4-component vector of bool) +0:265 'inF0' ( in 4-component vector of float) 0:266 Sequence 0:266 move second child to first child ( temp 4-component vector of float) -0:266 'r002' ( temp 4-component vector of float) -0:266 arc cosine ( temp 4-component vector of float) +0:266 'r001' ( temp 4-component vector of float) +0:266 Absolute value ( temp 4-component vector of float) 0:266 'inF0' ( in 4-component vector of float) 0:267 Sequence -0:267 move second child to first child ( temp bool) -0:267 'r003' ( temp bool) -0:267 any ( temp bool) -0:267 Convert float to bool ( temp 4-component vector of bool) -0:267 'inF0' ( in 4-component vector of float) +0:267 move second child to first child ( temp 4-component vector of float) +0:267 'r002' ( temp 4-component vector of float) +0:267 arc cosine ( temp 4-component vector of float) +0:267 'inF0' ( in 4-component vector of float) 0:268 Sequence -0:268 move second child to first child ( temp 4-component vector of float) -0:268 'r004' ( temp 4-component vector of float) -0:268 arc sine ( temp 4-component vector of float) -0:268 'inF0' ( in 4-component vector of float) +0:268 move second child to first child ( temp bool) +0:268 'r003' ( temp bool) +0:268 any ( temp bool) +0:268 Convert float to bool ( temp 4-component vector of bool) +0:268 'inF0' ( in 4-component vector of float) 0:269 Sequence -0:269 move second child to first child ( temp 4-component vector of int) -0:269 'r005' ( temp 4-component vector of int) -0:269 floatBitsToInt ( temp 4-component vector of int) +0:269 move second child to first child ( temp 4-component vector of float) +0:269 'r004' ( temp 4-component vector of float) +0:269 arc sine ( temp 4-component vector of float) 0:269 'inF0' ( in 4-component vector of float) 0:270 Sequence -0:270 move second child to first child ( temp 4-component vector of uint) -0:270 'r006' ( temp 4-component vector of uint) -0:270 floatBitsToUint ( temp 4-component vector of uint) +0:270 move second child to first child ( temp 4-component vector of int) +0:270 'r005' ( temp 4-component vector of int) +0:270 floatBitsToInt ( temp 4-component vector of int) 0:270 'inF0' ( in 4-component vector of float) 0:271 Sequence -0:271 move second child to first child ( temp 4-component vector of float) -0:271 'r007' ( temp 4-component vector of float) -0:271 intBitsToFloat ( temp 4-component vector of float) -0:271 'inU0' ( in 4-component vector of uint) -0:273 Sequence -0:273 move second child to first child ( temp 4-component vector of float) -0:273 'r009' ( temp 4-component vector of float) -0:273 arc tangent ( temp 4-component vector of float) -0:273 'inF0' ( in 4-component vector of float) +0:271 move second child to first child ( temp 4-component vector of uint) +0:271 'r006' ( temp 4-component vector of uint) +0:271 floatBitsToUint ( temp 4-component vector of uint) +0:271 'inF0' ( in 4-component vector of float) +0:272 Sequence +0:272 move second child to first child ( temp 4-component vector of float) +0:272 'r007' ( temp 4-component vector of float) +0:272 intBitsToFloat ( temp 4-component vector of float) +0:272 'inU0' ( in 4-component vector of uint) 0:274 Sequence 0:274 move second child to first child ( temp 4-component vector of float) -0:274 'r010' ( temp 4-component vector of float) +0:274 'r009' ( temp 4-component vector of float) 0:274 arc tangent ( temp 4-component vector of float) 0:274 'inF0' ( in 4-component vector of float) -0:274 'inF1' ( in 4-component vector of float) 0:275 Sequence 0:275 move second child to first child ( temp 4-component vector of float) -0:275 'r011' ( temp 4-component vector of float) -0:275 Ceiling ( temp 4-component vector of float) +0:275 'r010' ( temp 4-component vector of float) +0:275 arc tangent ( temp 4-component vector of float) 0:275 'inF0' ( in 4-component vector of float) +0:275 'inF1' ( in 4-component vector of float) 0:276 Sequence 0:276 move second child to first child ( temp 4-component vector of float) -0:276 'r012' ( temp 4-component vector of float) -0:276 clamp ( temp 4-component vector of float) +0:276 'r011' ( temp 4-component vector of float) +0:276 Ceiling ( temp 4-component vector of float) 0:276 'inF0' ( in 4-component vector of float) -0:276 'inF1' ( in 4-component vector of float) -0:276 'inF2' ( in 4-component vector of float) -0:277 Test condition and select ( temp void) -0:277 Condition -0:277 any ( temp bool) -0:277 Compare Less Than ( temp 4-component vector of bool) +0:277 Sequence +0:277 move second child to first child ( temp 4-component vector of float) +0:277 'r012' ( temp 4-component vector of float) +0:277 clamp ( temp 4-component vector of float) 0:277 'inF0' ( in 4-component vector of float) -0:277 Constant: -0:277 0.000000 -0:277 0.000000 -0:277 0.000000 -0:277 0.000000 -0:277 true case -0:277 Branch: Kill +0:277 'inF1' ( in 4-component vector of float) +0:277 'inF2' ( in 4-component vector of float) 0:278 Test condition and select ( temp void) 0:278 Condition 0:278 any ( temp bool) 0:278 Compare Less Than ( temp 4-component vector of bool) -0:278 'inU0' ( in 4-component vector of uint) +0:278 'inF0' ( in 4-component vector of float) 0:278 Constant: 0:278 0.000000 0:278 0.000000 @@ -1259,905 +1254,917 @@ gl_FragCoord origin is upper left 0:278 0.000000 0:278 true case 0:278 Branch: Kill -0:279 Sequence -0:279 move second child to first child ( temp 4-component vector of float) -0:279 'r013' ( temp 4-component vector of float) -0:279 cosine ( temp 4-component vector of float) -0:279 'inF0' ( in 4-component vector of float) +0:279 Test condition and select ( temp void) +0:279 Condition +0:279 any ( temp bool) +0:279 Compare Less Than ( temp 4-component vector of bool) +0:279 'inU0' ( in 4-component vector of uint) +0:279 Constant: +0:279 0.000000 +0:279 0.000000 +0:279 0.000000 +0:279 0.000000 +0:279 true case +0:279 Branch: Kill 0:280 Sequence 0:280 move second child to first child ( temp 4-component vector of float) -0:280 'r014' ( temp 4-component vector of float) -0:280 hyp. cosine ( temp 4-component vector of float) +0:280 'r013' ( temp 4-component vector of float) +0:280 cosine ( temp 4-component vector of float) 0:280 'inF0' ( in 4-component vector of float) 0:281 Sequence -0:281 move second child to first child ( temp 4-component vector of uint) -0:281 'r015' ( temp 4-component vector of uint) +0:281 move second child to first child ( temp 4-component vector of float) +0:281 'r014' ( temp 4-component vector of float) +0:281 hyp. cosine ( temp 4-component vector of float) +0:281 'inF0' ( in 4-component vector of float) +0:282 Sequence +0:282 move second child to first child ( temp 4-component vector of uint) +0:282 'r015' ( temp 4-component vector of uint) 0:? bitCount ( temp 4-component vector of uint) 0:? Constant: 0:? 7 (const uint) 0:? 3 (const uint) 0:? 5 (const uint) 0:? 2 (const uint) -0:282 Sequence -0:282 move second child to first child ( temp 4-component vector of float) -0:282 'r016' ( temp 4-component vector of float) -0:282 dPdx ( temp 4-component vector of float) -0:282 'inF0' ( in 4-component vector of float) 0:283 Sequence 0:283 move second child to first child ( temp 4-component vector of float) -0:283 'r017' ( temp 4-component vector of float) -0:283 dPdxCoarse ( temp 4-component vector of float) +0:283 'r016' ( temp 4-component vector of float) +0:283 dPdx ( temp 4-component vector of float) 0:283 'inF0' ( in 4-component vector of float) 0:284 Sequence 0:284 move second child to first child ( temp 4-component vector of float) -0:284 'r018' ( temp 4-component vector of float) -0:284 dPdxFine ( temp 4-component vector of float) +0:284 'r017' ( temp 4-component vector of float) +0:284 dPdxCoarse ( temp 4-component vector of float) 0:284 'inF0' ( in 4-component vector of float) 0:285 Sequence 0:285 move second child to first child ( temp 4-component vector of float) -0:285 'r019' ( temp 4-component vector of float) -0:285 dPdy ( temp 4-component vector of float) +0:285 'r018' ( temp 4-component vector of float) +0:285 dPdxFine ( temp 4-component vector of float) 0:285 'inF0' ( in 4-component vector of float) 0:286 Sequence 0:286 move second child to first child ( temp 4-component vector of float) -0:286 'r020' ( temp 4-component vector of float) -0:286 dPdyCoarse ( temp 4-component vector of float) +0:286 'r019' ( temp 4-component vector of float) +0:286 dPdy ( temp 4-component vector of float) 0:286 'inF0' ( in 4-component vector of float) 0:287 Sequence 0:287 move second child to first child ( temp 4-component vector of float) -0:287 'r021' ( temp 4-component vector of float) -0:287 dPdyFine ( temp 4-component vector of float) +0:287 'r020' ( temp 4-component vector of float) +0:287 dPdyCoarse ( temp 4-component vector of float) 0:287 'inF0' ( in 4-component vector of float) 0:288 Sequence 0:288 move second child to first child ( temp 4-component vector of float) -0:288 'r022' ( temp 4-component vector of float) -0:288 degrees ( temp 4-component vector of float) +0:288 'r021' ( temp 4-component vector of float) +0:288 dPdyFine ( temp 4-component vector of float) 0:288 'inF0' ( in 4-component vector of float) 0:289 Sequence -0:289 move second child to first child ( temp float) -0:289 'r023' ( temp float) -0:289 distance ( temp float) +0:289 move second child to first child ( temp 4-component vector of float) +0:289 'r022' ( temp 4-component vector of float) +0:289 degrees ( temp 4-component vector of float) 0:289 'inF0' ( in 4-component vector of float) -0:289 'inF1' ( in 4-component vector of float) 0:290 Sequence 0:290 move second child to first child ( temp float) -0:290 'r024' ( temp float) -0:290 dot-product ( temp float) +0:290 'r023' ( temp float) +0:290 distance ( temp float) 0:290 'inF0' ( in 4-component vector of float) 0:290 'inF1' ( in 4-component vector of float) 0:291 Sequence -0:291 move second child to first child ( temp 4-component vector of float) -0:291 'r025' ( temp 4-component vector of float) -0:291 Construct vec4 ( temp 4-component vector of float) -0:291 Constant: -0:291 1.000000 -0:291 component-wise multiply ( temp float) -0:291 direct index ( temp float) -0:291 'inF0' ( in 4-component vector of float) -0:291 Constant: -0:291 1 (const int) -0:291 direct index ( temp float) -0:291 'inF1' ( in 4-component vector of float) -0:291 Constant: -0:291 1 (const int) -0:291 direct index ( temp float) -0:291 'inF0' ( in 4-component vector of float) -0:291 Constant: -0:291 2 (const int) -0:291 direct index ( temp float) -0:291 'inF1' ( in 4-component vector of float) -0:291 Constant: -0:291 3 (const int) -0:295 Sequence -0:295 move second child to first child ( temp 4-component vector of float) -0:295 'r029' ( temp 4-component vector of float) -0:295 exp ( temp 4-component vector of float) -0:295 'inF0' ( in 4-component vector of float) +0:291 move second child to first child ( temp float) +0:291 'r024' ( temp float) +0:291 dot-product ( temp float) +0:291 'inF0' ( in 4-component vector of float) +0:291 'inF1' ( in 4-component vector of float) +0:292 Sequence +0:292 move second child to first child ( temp 4-component vector of float) +0:292 'r025' ( temp 4-component vector of float) +0:292 Construct vec4 ( temp 4-component vector of float) +0:292 Constant: +0:292 1.000000 +0:292 component-wise multiply ( temp float) +0:292 direct index ( temp float) +0:292 'inF0' ( in 4-component vector of float) +0:292 Constant: +0:292 1 (const int) +0:292 direct index ( temp float) +0:292 'inF1' ( in 4-component vector of float) +0:292 Constant: +0:292 1 (const int) +0:292 direct index ( temp float) +0:292 'inF0' ( in 4-component vector of float) +0:292 Constant: +0:292 2 (const int) +0:292 direct index ( temp float) +0:292 'inF1' ( in 4-component vector of float) +0:292 Constant: +0:292 3 (const int) 0:296 Sequence 0:296 move second child to first child ( temp 4-component vector of float) -0:296 'r030' ( temp 4-component vector of float) -0:296 exp2 ( temp 4-component vector of float) +0:296 'r029' ( temp 4-component vector of float) +0:296 exp ( temp 4-component vector of float) 0:296 'inF0' ( in 4-component vector of float) 0:297 Sequence 0:297 move second child to first child ( temp 4-component vector of float) -0:297 'r031' ( temp 4-component vector of float) -0:297 face-forward ( temp 4-component vector of float) +0:297 'r030' ( temp 4-component vector of float) +0:297 exp2 ( temp 4-component vector of float) 0:297 'inF0' ( in 4-component vector of float) -0:297 'inF1' ( in 4-component vector of float) -0:297 'inF2' ( in 4-component vector of float) 0:298 Sequence -0:298 move second child to first child ( temp 4-component vector of uint) -0:298 'r032' ( temp 4-component vector of uint) +0:298 move second child to first child ( temp 4-component vector of float) +0:298 'r031' ( temp 4-component vector of float) +0:298 face-forward ( temp 4-component vector of float) +0:298 'inF0' ( in 4-component vector of float) +0:298 'inF1' ( in 4-component vector of float) +0:298 'inF2' ( in 4-component vector of float) +0:299 Sequence +0:299 move second child to first child ( temp 4-component vector of uint) +0:299 'r032' ( temp 4-component vector of uint) 0:? findMSB ( temp 4-component vector of uint) 0:? Constant: 0:? 7 (const uint) 0:? 8 (const uint) 0:? 9 (const uint) 0:? 10 (const uint) -0:299 Sequence -0:299 move second child to first child ( temp 4-component vector of uint) -0:299 'r033' ( temp 4-component vector of uint) +0:300 Sequence +0:300 move second child to first child ( temp 4-component vector of uint) +0:300 'r033' ( temp 4-component vector of uint) 0:? findLSB ( temp 4-component vector of uint) 0:? Constant: 0:? 7 (const uint) 0:? 8 (const uint) 0:? 9 (const uint) 0:? 10 (const uint) -0:300 Sequence -0:300 move second child to first child ( temp 4-component vector of float) -0:300 'r034' ( temp 4-component vector of float) -0:300 Floor ( temp 4-component vector of float) -0:300 'inF0' ( in 4-component vector of float) -0:302 Sequence -0:302 move second child to first child ( temp 4-component vector of float) -0:302 'r036' ( temp 4-component vector of float) -0:302 mod ( temp 4-component vector of float) -0:302 'inF0' ( in 4-component vector of float) -0:302 'inF1' ( in 4-component vector of float) +0:301 Sequence +0:301 move second child to first child ( temp 4-component vector of float) +0:301 'r034' ( temp 4-component vector of float) +0:301 Floor ( temp 4-component vector of float) +0:301 'inF0' ( in 4-component vector of float) 0:303 Sequence 0:303 move second child to first child ( temp 4-component vector of float) -0:303 'r037' ( temp 4-component vector of float) -0:303 Fraction ( temp 4-component vector of float) +0:303 'r036' ( temp 4-component vector of float) +0:303 mod ( temp 4-component vector of float) 0:303 'inF0' ( in 4-component vector of float) +0:303 'inF1' ( in 4-component vector of float) 0:304 Sequence 0:304 move second child to first child ( temp 4-component vector of float) -0:304 'r039' ( temp 4-component vector of float) -0:304 fwidth ( temp 4-component vector of float) +0:304 'r037' ( temp 4-component vector of float) +0:304 Fraction ( temp 4-component vector of float) 0:304 'inF0' ( in 4-component vector of float) 0:305 Sequence -0:305 move second child to first child ( temp 4-component vector of bool) -0:305 'r040' ( temp 4-component vector of bool) -0:305 isinf ( temp 4-component vector of bool) +0:305 move second child to first child ( temp 4-component vector of float) +0:305 'r039' ( temp 4-component vector of float) +0:305 fwidth ( temp 4-component vector of float) 0:305 'inF0' ( in 4-component vector of float) 0:306 Sequence 0:306 move second child to first child ( temp 4-component vector of bool) -0:306 'r041' ( temp 4-component vector of bool) -0:306 isnan ( temp 4-component vector of bool) +0:306 'r040' ( temp 4-component vector of bool) +0:306 isinf ( temp 4-component vector of bool) 0:306 'inF0' ( in 4-component vector of float) 0:307 Sequence -0:307 move second child to first child ( temp 4-component vector of float) -0:307 'r042' ( temp 4-component vector of float) -0:307 ldexp ( temp 4-component vector of float) +0:307 move second child to first child ( temp 4-component vector of bool) +0:307 'r041' ( temp 4-component vector of bool) +0:307 isnan ( temp 4-component vector of bool) 0:307 'inF0' ( in 4-component vector of float) -0:307 'inF1' ( in 4-component vector of float) 0:308 Sequence 0:308 move second child to first child ( temp 4-component vector of float) -0:308 'r039a' ( temp 4-component vector of float) -0:308 mix ( temp 4-component vector of float) +0:308 'r042' ( temp 4-component vector of float) +0:308 ldexp ( temp 4-component vector of float) 0:308 'inF0' ( in 4-component vector of float) 0:308 'inF1' ( in 4-component vector of float) -0:308 'inF2' ( in 4-component vector of float) 0:309 Sequence -0:309 move second child to first child ( temp float) -0:309 'r043' ( temp float) -0:309 length ( temp float) +0:309 move second child to first child ( temp 4-component vector of float) +0:309 'r039a' ( temp 4-component vector of float) +0:309 mix ( temp 4-component vector of float) 0:309 'inF0' ( in 4-component vector of float) +0:309 'inF1' ( in 4-component vector of float) +0:309 'inF2' ( in 4-component vector of float) 0:310 Sequence -0:310 move second child to first child ( temp 4-component vector of float) -0:310 'r044' ( temp 4-component vector of float) -0:310 log ( temp 4-component vector of float) +0:310 move second child to first child ( temp float) +0:310 'r043' ( temp float) +0:310 length ( temp float) 0:310 'inF0' ( in 4-component vector of float) 0:311 Sequence 0:311 move second child to first child ( temp 4-component vector of float) -0:311 'r045' ( temp 4-component vector of float) -0:311 vector-scale ( temp 4-component vector of float) -0:311 log2 ( temp 4-component vector of float) -0:311 'inF0' ( in 4-component vector of float) -0:311 Constant: -0:311 0.301030 +0:311 'r044' ( temp 4-component vector of float) +0:311 log ( temp 4-component vector of float) +0:311 'inF0' ( in 4-component vector of float) 0:312 Sequence 0:312 move second child to first child ( temp 4-component vector of float) -0:312 'r046' ( temp 4-component vector of float) -0:312 log2 ( temp 4-component vector of float) -0:312 'inF0' ( in 4-component vector of float) +0:312 'r045' ( temp 4-component vector of float) +0:312 vector-scale ( temp 4-component vector of float) +0:312 log2 ( temp 4-component vector of float) +0:312 'inF0' ( in 4-component vector of float) +0:312 Constant: +0:312 0.301030 0:313 Sequence 0:313 move second child to first child ( temp 4-component vector of float) -0:313 'r047' ( temp 4-component vector of float) -0:313 max ( temp 4-component vector of float) +0:313 'r046' ( temp 4-component vector of float) +0:313 log2 ( temp 4-component vector of float) 0:313 'inF0' ( in 4-component vector of float) -0:313 'inF1' ( in 4-component vector of float) 0:314 Sequence 0:314 move second child to first child ( temp 4-component vector of float) -0:314 'r048' ( temp 4-component vector of float) -0:314 min ( temp 4-component vector of float) +0:314 'r047' ( temp 4-component vector of float) +0:314 max ( temp 4-component vector of float) 0:314 'inF0' ( in 4-component vector of float) 0:314 'inF1' ( in 4-component vector of float) 0:315 Sequence 0:315 move second child to first child ( temp 4-component vector of float) -0:315 'r049' ( temp 4-component vector of float) -0:315 normalize ( temp 4-component vector of float) +0:315 'r048' ( temp 4-component vector of float) +0:315 min ( temp 4-component vector of float) 0:315 'inF0' ( in 4-component vector of float) +0:315 'inF1' ( in 4-component vector of float) 0:316 Sequence 0:316 move second child to first child ( temp 4-component vector of float) -0:316 'r050' ( temp 4-component vector of float) -0:316 pow ( temp 4-component vector of float) +0:316 'r049' ( temp 4-component vector of float) +0:316 normalize ( temp 4-component vector of float) 0:316 'inF0' ( in 4-component vector of float) -0:316 'inF1' ( in 4-component vector of float) 0:317 Sequence 0:317 move second child to first child ( temp 4-component vector of float) -0:317 'r051' ( temp 4-component vector of float) -0:317 radians ( temp 4-component vector of float) +0:317 'r050' ( temp 4-component vector of float) +0:317 pow ( temp 4-component vector of float) 0:317 'inF0' ( in 4-component vector of float) +0:317 'inF1' ( in 4-component vector of float) 0:318 Sequence 0:318 move second child to first child ( temp 4-component vector of float) -0:318 'r052' ( temp 4-component vector of float) -0:318 divide ( temp 4-component vector of float) -0:318 Constant: -0:318 1.000000 +0:318 'r051' ( temp 4-component vector of float) +0:318 radians ( temp 4-component vector of float) 0:318 'inF0' ( in 4-component vector of float) 0:319 Sequence 0:319 move second child to first child ( temp 4-component vector of float) -0:319 'r053' ( temp 4-component vector of float) -0:319 reflect ( temp 4-component vector of float) +0:319 'r052' ( temp 4-component vector of float) +0:319 divide ( temp 4-component vector of float) +0:319 Constant: +0:319 1.000000 0:319 'inF0' ( in 4-component vector of float) -0:319 'inF1' ( in 4-component vector of float) 0:320 Sequence 0:320 move second child to first child ( temp 4-component vector of float) -0:320 'r054' ( temp 4-component vector of float) -0:320 refract ( temp 4-component vector of float) +0:320 'r053' ( temp 4-component vector of float) +0:320 reflect ( temp 4-component vector of float) 0:320 'inF0' ( in 4-component vector of float) 0:320 'inF1' ( in 4-component vector of float) -0:320 Constant: -0:320 2.000000 0:321 Sequence -0:321 move second child to first child ( temp 4-component vector of uint) -0:321 'r055' ( temp 4-component vector of uint) +0:321 move second child to first child ( temp 4-component vector of float) +0:321 'r054' ( temp 4-component vector of float) +0:321 refract ( temp 4-component vector of float) +0:321 'inF0' ( in 4-component vector of float) +0:321 'inF1' ( in 4-component vector of float) +0:321 Constant: +0:321 2.000000 +0:322 Sequence +0:322 move second child to first child ( temp 4-component vector of uint) +0:322 'r055' ( temp 4-component vector of uint) 0:? bitFieldReverse ( temp 4-component vector of uint) 0:? Constant: 0:? 1 (const uint) 0:? 2 (const uint) 0:? 3 (const uint) 0:? 4 (const uint) -0:322 Sequence -0:322 move second child to first child ( temp 4-component vector of float) -0:322 'r056' ( temp 4-component vector of float) -0:322 roundEven ( temp 4-component vector of float) -0:322 'inF0' ( in 4-component vector of float) 0:323 Sequence 0:323 move second child to first child ( temp 4-component vector of float) -0:323 'r057' ( temp 4-component vector of float) -0:323 inverse sqrt ( temp 4-component vector of float) +0:323 'r056' ( temp 4-component vector of float) +0:323 roundEven ( temp 4-component vector of float) 0:323 'inF0' ( in 4-component vector of float) 0:324 Sequence 0:324 move second child to first child ( temp 4-component vector of float) -0:324 'r058' ( temp 4-component vector of float) -0:324 clamp ( temp 4-component vector of float) +0:324 'r057' ( temp 4-component vector of float) +0:324 inverse sqrt ( temp 4-component vector of float) 0:324 'inF0' ( in 4-component vector of float) -0:324 Constant: -0:324 0.000000 -0:324 Constant: -0:324 1.000000 0:325 Sequence 0:325 move second child to first child ( temp 4-component vector of float) -0:325 'r059' ( temp 4-component vector of float) -0:325 Sign ( temp 4-component vector of float) +0:325 'r058' ( temp 4-component vector of float) +0:325 clamp ( temp 4-component vector of float) 0:325 'inF0' ( in 4-component vector of float) +0:325 Constant: +0:325 0.000000 +0:325 Constant: +0:325 1.000000 0:326 Sequence 0:326 move second child to first child ( temp 4-component vector of float) -0:326 'r060' ( temp 4-component vector of float) -0:326 sine ( temp 4-component vector of float) +0:326 'r059' ( temp 4-component vector of float) +0:326 Sign ( temp 4-component vector of float) 0:326 'inF0' ( in 4-component vector of float) 0:327 Sequence 0:327 move second child to first child ( temp 4-component vector of float) -0:327 'inF1' ( in 4-component vector of float) +0:327 'r060' ( temp 4-component vector of float) 0:327 sine ( temp 4-component vector of float) 0:327 'inF0' ( in 4-component vector of float) -0:327 move second child to first child ( temp 4-component vector of float) -0:327 'inF2' ( in 4-component vector of float) -0:327 cosine ( temp 4-component vector of float) -0:327 'inF0' ( in 4-component vector of float) 0:328 Sequence 0:328 move second child to first child ( temp 4-component vector of float) -0:328 'r061' ( temp 4-component vector of float) -0:328 hyp. sine ( temp 4-component vector of float) +0:328 'inF1' ( in 4-component vector of float) +0:328 sine ( temp 4-component vector of float) +0:328 'inF0' ( in 4-component vector of float) +0:328 move second child to first child ( temp 4-component vector of float) +0:328 'inF2' ( in 4-component vector of float) +0:328 cosine ( temp 4-component vector of float) 0:328 'inF0' ( in 4-component vector of float) 0:329 Sequence 0:329 move second child to first child ( temp 4-component vector of float) -0:329 'r062' ( temp 4-component vector of float) -0:329 smoothstep ( temp 4-component vector of float) +0:329 'r061' ( temp 4-component vector of float) +0:329 hyp. sine ( temp 4-component vector of float) 0:329 'inF0' ( in 4-component vector of float) -0:329 'inF1' ( in 4-component vector of float) -0:329 'inF2' ( in 4-component vector of float) 0:330 Sequence 0:330 move second child to first child ( temp 4-component vector of float) -0:330 'r063' ( temp 4-component vector of float) -0:330 sqrt ( temp 4-component vector of float) +0:330 'r062' ( temp 4-component vector of float) +0:330 smoothstep ( temp 4-component vector of float) 0:330 'inF0' ( in 4-component vector of float) +0:330 'inF1' ( in 4-component vector of float) +0:330 'inF2' ( in 4-component vector of float) 0:331 Sequence 0:331 move second child to first child ( temp 4-component vector of float) -0:331 'r064' ( temp 4-component vector of float) -0:331 step ( temp 4-component vector of float) +0:331 'r063' ( temp 4-component vector of float) +0:331 sqrt ( temp 4-component vector of float) 0:331 'inF0' ( in 4-component vector of float) -0:331 'inF1' ( in 4-component vector of float) 0:332 Sequence 0:332 move second child to first child ( temp 4-component vector of float) -0:332 'r065' ( temp 4-component vector of float) -0:332 tangent ( temp 4-component vector of float) +0:332 'r064' ( temp 4-component vector of float) +0:332 step ( temp 4-component vector of float) 0:332 'inF0' ( in 4-component vector of float) +0:332 'inF1' ( in 4-component vector of float) 0:333 Sequence 0:333 move second child to first child ( temp 4-component vector of float) -0:333 'r066' ( temp 4-component vector of float) -0:333 hyp. tangent ( temp 4-component vector of float) +0:333 'r065' ( temp 4-component vector of float) +0:333 tangent ( temp 4-component vector of float) 0:333 'inF0' ( in 4-component vector of float) -0:335 Sequence -0:335 move second child to first child ( temp 4-component vector of float) -0:335 'r067' ( temp 4-component vector of float) -0:335 trunc ( temp 4-component vector of float) -0:335 'inF0' ( in 4-component vector of float) -0:338 Branch: Return with expression +0:334 Sequence +0:334 move second child to first child ( temp 4-component vector of float) +0:334 'r066' ( temp 4-component vector of float) +0:334 hyp. tangent ( temp 4-component vector of float) +0:334 'inF0' ( in 4-component vector of float) +0:336 Sequence +0:336 move second child to first child ( temp 4-component vector of float) +0:336 'r067' ( temp 4-component vector of float) +0:336 trunc ( temp 4-component vector of float) +0:336 'inF0' ( in 4-component vector of float) +0:339 Branch: Return with expression 0:? Constant: 0:? 1.000000 0:? 2.000000 0:? 3.000000 0:? 4.000000 -0:401 Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; ( temp 2X2 matrix of float) -0:401 Function Parameters: -0:401 'inF0' ( in 2X2 matrix of float) -0:401 'inF1' ( in 2X2 matrix of float) -0:401 'inF2' ( in 2X2 matrix of float) +0:402 Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; ( temp 2X2 matrix of float) +0:402 Function Parameters: +0:402 'inF0' ( in 2X2 matrix of float) +0:402 'inF1' ( in 2X2 matrix of float) +0:402 'inF2' ( in 2X2 matrix of float) 0:? Sequence -0:403 Sequence -0:403 move second child to first child ( temp bool) -0:403 'r000' ( temp bool) -0:403 all ( temp bool) -0:403 Convert float to bool ( temp 2X2 matrix of bool) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r001' ( temp 2X2 matrix of float) -0:403 Absolute value ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 arc cosine ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp bool) -0:403 'r003' ( temp bool) -0:403 any ( temp bool) -0:403 Convert float to bool ( temp 2X2 matrix of bool) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r004' ( temp 2X2 matrix of float) -0:403 arc sine ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r005' ( temp 2X2 matrix of float) -0:403 arc tangent ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r006' ( temp 2X2 matrix of float) -0:403 arc tangent ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 'inF1' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r007' ( temp 2X2 matrix of float) -0:403 Ceiling ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Test condition and select ( temp void) -0:403 Condition -0:403 any ( temp bool) -0:403 Compare Less Than ( temp 2X2 matrix of bool) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Constant: -0:403 0.000000 -0:403 0.000000 -0:403 0.000000 -0:403 0.000000 -0:403 true case -0:403 Branch: Kill -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r008' ( temp 2X2 matrix of float) -0:403 clamp ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 'inF1' ( in 2X2 matrix of float) -0:403 'inF2' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r009' ( temp 2X2 matrix of float) -0:403 cosine ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r010' ( temp 2X2 matrix of float) -0:403 hyp. cosine ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r011' ( temp 2X2 matrix of float) -0:403 dPdx ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r012' ( temp 2X2 matrix of float) -0:403 dPdxCoarse ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r013' ( temp 2X2 matrix of float) -0:403 dPdxFine ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r014' ( temp 2X2 matrix of float) -0:403 dPdy ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r015' ( temp 2X2 matrix of float) -0:403 dPdyCoarse ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r016' ( temp 2X2 matrix of float) -0:403 dPdyFine ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r017' ( temp 2X2 matrix of float) -0:403 degrees ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp float) -0:403 'r018' ( temp float) -0:403 determinant ( temp float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r019' ( temp 2X2 matrix of float) -0:403 exp ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'R020' ( temp 2X2 matrix of float) -0:403 exp2 ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r021' ( temp 2X2 matrix of float) -0:403 Floor ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r022' ( temp 2X2 matrix of float) -0:403 mod ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 'inF1' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r023' ( temp 2X2 matrix of float) -0:403 Fraction ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r025' ( temp 2X2 matrix of float) -0:403 fwidth ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r026' ( temp 2X2 matrix of float) -0:403 ldexp ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 'inF1' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r026a' ( temp 2X2 matrix of float) -0:403 mix ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 'inF1' ( in 2X2 matrix of float) -0:403 'inF2' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r027' ( temp 2X2 matrix of float) -0:403 log ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r028' ( temp 2X2 matrix of float) -0:403 matrix-scale ( temp 2X2 matrix of float) -0:403 log2 ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Constant: -0:403 0.301030 -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r029' ( temp 2X2 matrix of float) -0:403 log2 ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r030' ( temp 2X2 matrix of float) -0:403 max ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 'inF1' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r031' ( temp 2X2 matrix of float) -0:403 min ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 'inF1' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r032' ( temp 2X2 matrix of float) -0:403 pow ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 'inF1' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r033' ( temp 2X2 matrix of float) -0:403 radians ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r034' ( temp 2X2 matrix of float) -0:403 roundEven ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r035' ( temp 2X2 matrix of float) -0:403 inverse sqrt ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r036' ( temp 2X2 matrix of float) -0:403 clamp ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Constant: -0:403 0.000000 -0:403 Constant: -0:403 1.000000 -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r037' ( temp 2X2 matrix of float) -0:403 Sign ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r038' ( temp 2X2 matrix of float) -0:403 sine ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'inF1' ( in 2X2 matrix of float) -0:403 sine ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'inF2' ( in 2X2 matrix of float) -0:403 cosine ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r039' ( temp 2X2 matrix of float) -0:403 hyp. sine ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r049' ( temp 2X2 matrix of float) -0:403 smoothstep ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 'inF1' ( in 2X2 matrix of float) -0:403 'inF2' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r041' ( temp 2X2 matrix of float) -0:403 sqrt ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r042' ( temp 2X2 matrix of float) -0:403 step ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 'inF1' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r043' ( temp 2X2 matrix of float) -0:403 tangent ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r044' ( temp 2X2 matrix of float) -0:403 hyp. tangent ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 transpose ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r046' ( temp 2X2 matrix of float) -0:403 trunc ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:406 Branch: Return with expression +0:404 Sequence +0:404 move second child to first child ( temp bool) +0:404 'r000' ( temp bool) +0:404 all ( temp bool) +0:404 Convert float to bool ( temp 2X2 matrix of bool) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r001' ( temp 2X2 matrix of float) +0:404 Absolute value ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 arc cosine ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp bool) +0:404 'r003' ( temp bool) +0:404 any ( temp bool) +0:404 Convert float to bool ( temp 2X2 matrix of bool) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r004' ( temp 2X2 matrix of float) +0:404 arc sine ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r005' ( temp 2X2 matrix of float) +0:404 arc tangent ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r006' ( temp 2X2 matrix of float) +0:404 arc tangent ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 'inF1' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r007' ( temp 2X2 matrix of float) +0:404 Ceiling ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Test condition and select ( temp void) +0:404 Condition +0:404 any ( temp bool) +0:404 Compare Less Than ( temp 2X2 matrix of bool) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Constant: +0:404 0.000000 +0:404 0.000000 +0:404 0.000000 +0:404 0.000000 +0:404 true case +0:404 Branch: Kill +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r008' ( temp 2X2 matrix of float) +0:404 clamp ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 'inF1' ( in 2X2 matrix of float) +0:404 'inF2' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r009' ( temp 2X2 matrix of float) +0:404 cosine ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r010' ( temp 2X2 matrix of float) +0:404 hyp. cosine ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r011' ( temp 2X2 matrix of float) +0:404 dPdx ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r012' ( temp 2X2 matrix of float) +0:404 dPdxCoarse ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r013' ( temp 2X2 matrix of float) +0:404 dPdxFine ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r014' ( temp 2X2 matrix of float) +0:404 dPdy ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r015' ( temp 2X2 matrix of float) +0:404 dPdyCoarse ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r016' ( temp 2X2 matrix of float) +0:404 dPdyFine ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r017' ( temp 2X2 matrix of float) +0:404 degrees ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp float) +0:404 'r018' ( temp float) +0:404 determinant ( temp float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r019' ( temp 2X2 matrix of float) +0:404 exp ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'R020' ( temp 2X2 matrix of float) +0:404 exp2 ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r021' ( temp 2X2 matrix of float) +0:404 Floor ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r022' ( temp 2X2 matrix of float) +0:404 mod ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 'inF1' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r023' ( temp 2X2 matrix of float) +0:404 Fraction ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r025' ( temp 2X2 matrix of float) +0:404 fwidth ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r026' ( temp 2X2 matrix of float) +0:404 ldexp ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 'inF1' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r026a' ( temp 2X2 matrix of float) +0:404 mix ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 'inF1' ( in 2X2 matrix of float) +0:404 'inF2' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r027' ( temp 2X2 matrix of float) +0:404 log ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r028' ( temp 2X2 matrix of float) +0:404 matrix-scale ( temp 2X2 matrix of float) +0:404 log2 ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Constant: +0:404 0.301030 +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r029' ( temp 2X2 matrix of float) +0:404 log2 ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r030' ( temp 2X2 matrix of float) +0:404 max ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 'inF1' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r031' ( temp 2X2 matrix of float) +0:404 min ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 'inF1' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r032' ( temp 2X2 matrix of float) +0:404 pow ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 'inF1' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r033' ( temp 2X2 matrix of float) +0:404 radians ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r034' ( temp 2X2 matrix of float) +0:404 roundEven ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r035' ( temp 2X2 matrix of float) +0:404 inverse sqrt ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r036' ( temp 2X2 matrix of float) +0:404 clamp ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Constant: +0:404 0.000000 +0:404 Constant: +0:404 1.000000 +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r037' ( temp 2X2 matrix of float) +0:404 Sign ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r038' ( temp 2X2 matrix of float) +0:404 sine ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'inF1' ( in 2X2 matrix of float) +0:404 sine ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'inF2' ( in 2X2 matrix of float) +0:404 cosine ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r039' ( temp 2X2 matrix of float) +0:404 hyp. sine ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r049' ( temp 2X2 matrix of float) +0:404 smoothstep ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 'inF1' ( in 2X2 matrix of float) +0:404 'inF2' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r041' ( temp 2X2 matrix of float) +0:404 sqrt ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r042' ( temp 2X2 matrix of float) +0:404 step ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 'inF1' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r043' ( temp 2X2 matrix of float) +0:404 tangent ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r044' ( temp 2X2 matrix of float) +0:404 hyp. tangent ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 transpose ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r046' ( temp 2X2 matrix of float) +0:404 trunc ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:407 Branch: Return with expression 0:? Constant: 0:? 2.000000 0:? 2.000000 0:? 2.000000 0:? 2.000000 -0:410 Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; ( temp 3X3 matrix of float) -0:410 Function Parameters: -0:410 'inF0' ( in 3X3 matrix of float) -0:410 'inF1' ( in 3X3 matrix of float) -0:410 'inF2' ( in 3X3 matrix of float) +0:411 Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; ( temp 3X3 matrix of float) +0:411 Function Parameters: +0:411 'inF0' ( in 3X3 matrix of float) +0:411 'inF1' ( in 3X3 matrix of float) +0:411 'inF2' ( in 3X3 matrix of float) 0:? Sequence -0:412 Sequence -0:412 move second child to first child ( temp bool) -0:412 'r000' ( temp bool) -0:412 all ( temp bool) -0:412 Convert float to bool ( temp 3X3 matrix of bool) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r001' ( temp 3X3 matrix of float) -0:412 Absolute value ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 arc cosine ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp bool) -0:412 'r003' ( temp bool) -0:412 any ( temp bool) -0:412 Convert float to bool ( temp 3X3 matrix of bool) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r004' ( temp 3X3 matrix of float) -0:412 arc sine ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r005' ( temp 3X3 matrix of float) -0:412 arc tangent ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r006' ( temp 3X3 matrix of float) -0:412 arc tangent ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 'inF1' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r007' ( temp 3X3 matrix of float) -0:412 Ceiling ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Test condition and select ( temp void) -0:412 Condition -0:412 any ( temp bool) -0:412 Compare Less Than ( temp 3X3 matrix of bool) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Constant: -0:412 0.000000 -0:412 0.000000 -0:412 0.000000 -0:412 0.000000 -0:412 0.000000 -0:412 0.000000 -0:412 0.000000 -0:412 0.000000 -0:412 0.000000 -0:412 true case -0:412 Branch: Kill -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r008' ( temp 3X3 matrix of float) -0:412 clamp ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 'inF1' ( in 3X3 matrix of float) -0:412 'inF2' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r009' ( temp 3X3 matrix of float) -0:412 cosine ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r010' ( temp 3X3 matrix of float) -0:412 hyp. cosine ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r011' ( temp 3X3 matrix of float) -0:412 dPdx ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r012' ( temp 3X3 matrix of float) -0:412 dPdxCoarse ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r013' ( temp 3X3 matrix of float) -0:412 dPdxFine ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r014' ( temp 3X3 matrix of float) -0:412 dPdy ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r015' ( temp 3X3 matrix of float) -0:412 dPdyCoarse ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r016' ( temp 3X3 matrix of float) -0:412 dPdyFine ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r017' ( temp 3X3 matrix of float) -0:412 degrees ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp float) -0:412 'r018' ( temp float) -0:412 determinant ( temp float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r019' ( temp 3X3 matrix of float) -0:412 exp ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'R020' ( temp 3X3 matrix of float) -0:412 exp2 ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r021' ( temp 3X3 matrix of float) -0:412 Floor ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r022' ( temp 3X3 matrix of float) -0:412 mod ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 'inF1' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r023' ( temp 3X3 matrix of float) -0:412 Fraction ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r025' ( temp 3X3 matrix of float) -0:412 fwidth ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r026' ( temp 3X3 matrix of float) -0:412 ldexp ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 'inF1' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r026a' ( temp 3X3 matrix of float) -0:412 mix ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 'inF1' ( in 3X3 matrix of float) -0:412 'inF2' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r027' ( temp 3X3 matrix of float) -0:412 log ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r028' ( temp 3X3 matrix of float) -0:412 matrix-scale ( temp 3X3 matrix of float) -0:412 log2 ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Constant: -0:412 0.301030 -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r029' ( temp 3X3 matrix of float) -0:412 log2 ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r030' ( temp 3X3 matrix of float) -0:412 max ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 'inF1' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r031' ( temp 3X3 matrix of float) -0:412 min ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 'inF1' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r032' ( temp 3X3 matrix of float) -0:412 pow ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 'inF1' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r033' ( temp 3X3 matrix of float) -0:412 radians ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r034' ( temp 3X3 matrix of float) -0:412 roundEven ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r035' ( temp 3X3 matrix of float) -0:412 inverse sqrt ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r036' ( temp 3X3 matrix of float) -0:412 clamp ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Constant: -0:412 0.000000 -0:412 Constant: -0:412 1.000000 -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r037' ( temp 3X3 matrix of float) -0:412 Sign ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r038' ( temp 3X3 matrix of float) -0:412 sine ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'inF1' ( in 3X3 matrix of float) -0:412 sine ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'inF2' ( in 3X3 matrix of float) -0:412 cosine ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r039' ( temp 3X3 matrix of float) -0:412 hyp. sine ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r049' ( temp 3X3 matrix of float) -0:412 smoothstep ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 'inF1' ( in 3X3 matrix of float) -0:412 'inF2' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r041' ( temp 3X3 matrix of float) -0:412 sqrt ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r042' ( temp 3X3 matrix of float) -0:412 step ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 'inF1' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r043' ( temp 3X3 matrix of float) -0:412 tangent ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r044' ( temp 3X3 matrix of float) -0:412 hyp. tangent ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 transpose ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r046' ( temp 3X3 matrix of float) -0:412 trunc ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:415 Branch: Return with expression +0:413 Sequence +0:413 move second child to first child ( temp bool) +0:413 'r000' ( temp bool) +0:413 all ( temp bool) +0:413 Convert float to bool ( temp 3X3 matrix of bool) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r001' ( temp 3X3 matrix of float) +0:413 Absolute value ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 arc cosine ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp bool) +0:413 'r003' ( temp bool) +0:413 any ( temp bool) +0:413 Convert float to bool ( temp 3X3 matrix of bool) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r004' ( temp 3X3 matrix of float) +0:413 arc sine ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r005' ( temp 3X3 matrix of float) +0:413 arc tangent ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r006' ( temp 3X3 matrix of float) +0:413 arc tangent ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 'inF1' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r007' ( temp 3X3 matrix of float) +0:413 Ceiling ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Test condition and select ( temp void) +0:413 Condition +0:413 any ( temp bool) +0:413 Compare Less Than ( temp 3X3 matrix of bool) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Constant: +0:413 0.000000 +0:413 0.000000 +0:413 0.000000 +0:413 0.000000 +0:413 0.000000 +0:413 0.000000 +0:413 0.000000 +0:413 0.000000 +0:413 0.000000 +0:413 true case +0:413 Branch: Kill +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r008' ( temp 3X3 matrix of float) +0:413 clamp ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 'inF1' ( in 3X3 matrix of float) +0:413 'inF2' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r009' ( temp 3X3 matrix of float) +0:413 cosine ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r010' ( temp 3X3 matrix of float) +0:413 hyp. cosine ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r011' ( temp 3X3 matrix of float) +0:413 dPdx ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r012' ( temp 3X3 matrix of float) +0:413 dPdxCoarse ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r013' ( temp 3X3 matrix of float) +0:413 dPdxFine ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r014' ( temp 3X3 matrix of float) +0:413 dPdy ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r015' ( temp 3X3 matrix of float) +0:413 dPdyCoarse ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r016' ( temp 3X3 matrix of float) +0:413 dPdyFine ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r017' ( temp 3X3 matrix of float) +0:413 degrees ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp float) +0:413 'r018' ( temp float) +0:413 determinant ( temp float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r019' ( temp 3X3 matrix of float) +0:413 exp ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'R020' ( temp 3X3 matrix of float) +0:413 exp2 ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r021' ( temp 3X3 matrix of float) +0:413 Floor ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r022' ( temp 3X3 matrix of float) +0:413 mod ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 'inF1' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r023' ( temp 3X3 matrix of float) +0:413 Fraction ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r025' ( temp 3X3 matrix of float) +0:413 fwidth ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r026' ( temp 3X3 matrix of float) +0:413 ldexp ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 'inF1' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r026a' ( temp 3X3 matrix of float) +0:413 mix ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 'inF1' ( in 3X3 matrix of float) +0:413 'inF2' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r027' ( temp 3X3 matrix of float) +0:413 log ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r028' ( temp 3X3 matrix of float) +0:413 matrix-scale ( temp 3X3 matrix of float) +0:413 log2 ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Constant: +0:413 0.301030 +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r029' ( temp 3X3 matrix of float) +0:413 log2 ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r030' ( temp 3X3 matrix of float) +0:413 max ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 'inF1' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r031' ( temp 3X3 matrix of float) +0:413 min ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 'inF1' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r032' ( temp 3X3 matrix of float) +0:413 pow ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 'inF1' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r033' ( temp 3X3 matrix of float) +0:413 radians ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r034' ( temp 3X3 matrix of float) +0:413 roundEven ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r035' ( temp 3X3 matrix of float) +0:413 inverse sqrt ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r036' ( temp 3X3 matrix of float) +0:413 clamp ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Constant: +0:413 0.000000 +0:413 Constant: +0:413 1.000000 +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r037' ( temp 3X3 matrix of float) +0:413 Sign ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r038' ( temp 3X3 matrix of float) +0:413 sine ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'inF1' ( in 3X3 matrix of float) +0:413 sine ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'inF2' ( in 3X3 matrix of float) +0:413 cosine ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r039' ( temp 3X3 matrix of float) +0:413 hyp. sine ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r049' ( temp 3X3 matrix of float) +0:413 smoothstep ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 'inF1' ( in 3X3 matrix of float) +0:413 'inF2' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r041' ( temp 3X3 matrix of float) +0:413 sqrt ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r042' ( temp 3X3 matrix of float) +0:413 step ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 'inF1' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r043' ( temp 3X3 matrix of float) +0:413 tangent ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r044' ( temp 3X3 matrix of float) +0:413 hyp. tangent ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 transpose ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r046' ( temp 3X3 matrix of float) +0:413 trunc ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:416 Branch: Return with expression 0:? Constant: 0:? 3.000000 0:? 3.000000 @@ -2168,297 +2175,297 @@ gl_FragCoord origin is upper left 0:? 3.000000 0:? 3.000000 0:? 3.000000 -0:419 Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; ( temp 4X4 matrix of float) -0:419 Function Parameters: -0:419 'inF0' ( in 4X4 matrix of float) -0:419 'inF1' ( in 4X4 matrix of float) -0:419 'inF2' ( in 4X4 matrix of float) +0:420 Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; ( temp 4X4 matrix of float) +0:420 Function Parameters: +0:420 'inF0' ( in 4X4 matrix of float) +0:420 'inF1' ( in 4X4 matrix of float) +0:420 'inF2' ( in 4X4 matrix of float) 0:? Sequence -0:421 Sequence -0:421 move second child to first child ( temp bool) -0:421 'r000' ( temp bool) -0:421 all ( temp bool) -0:421 Convert float to bool ( temp 4X4 matrix of bool) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r001' ( temp 4X4 matrix of float) -0:421 Absolute value ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 arc cosine ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp bool) -0:421 'r003' ( temp bool) -0:421 any ( temp bool) -0:421 Convert float to bool ( temp 4X4 matrix of bool) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r004' ( temp 4X4 matrix of float) -0:421 arc sine ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r005' ( temp 4X4 matrix of float) -0:421 arc tangent ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r006' ( temp 4X4 matrix of float) -0:421 arc tangent ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 'inF1' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r007' ( temp 4X4 matrix of float) -0:421 Ceiling ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Test condition and select ( temp void) -0:421 Condition -0:421 any ( temp bool) -0:421 Compare Less Than ( temp 4X4 matrix of bool) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Constant: -0:421 0.000000 -0:421 0.000000 -0:421 0.000000 -0:421 0.000000 -0:421 0.000000 -0:421 0.000000 -0:421 0.000000 -0:421 0.000000 -0:421 0.000000 -0:421 0.000000 -0:421 0.000000 -0:421 0.000000 -0:421 0.000000 -0:421 0.000000 -0:421 0.000000 -0:421 0.000000 -0:421 true case -0:421 Branch: Kill -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r008' ( temp 4X4 matrix of float) -0:421 clamp ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 'inF1' ( in 4X4 matrix of float) -0:421 'inF2' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r009' ( temp 4X4 matrix of float) -0:421 cosine ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r010' ( temp 4X4 matrix of float) -0:421 hyp. cosine ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r011' ( temp 4X4 matrix of float) -0:421 dPdx ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r012' ( temp 4X4 matrix of float) -0:421 dPdxCoarse ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r013' ( temp 4X4 matrix of float) -0:421 dPdxFine ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r014' ( temp 4X4 matrix of float) -0:421 dPdy ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r015' ( temp 4X4 matrix of float) -0:421 dPdyCoarse ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r016' ( temp 4X4 matrix of float) -0:421 dPdyFine ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r017' ( temp 4X4 matrix of float) -0:421 degrees ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp float) -0:421 'r018' ( temp float) -0:421 determinant ( temp float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r019' ( temp 4X4 matrix of float) -0:421 exp ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'R020' ( temp 4X4 matrix of float) -0:421 exp2 ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r021' ( temp 4X4 matrix of float) -0:421 Floor ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r022' ( temp 4X4 matrix of float) -0:421 mod ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 'inF1' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r023' ( temp 4X4 matrix of float) -0:421 Fraction ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r025' ( temp 4X4 matrix of float) -0:421 fwidth ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r026' ( temp 4X4 matrix of float) -0:421 ldexp ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 'inF1' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r026a' ( temp 4X4 matrix of float) -0:421 mix ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 'inF1' ( in 4X4 matrix of float) -0:421 'inF2' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r027' ( temp 4X4 matrix of float) -0:421 log ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r028' ( temp 4X4 matrix of float) -0:421 matrix-scale ( temp 4X4 matrix of float) -0:421 log2 ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Constant: -0:421 0.301030 -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r029' ( temp 4X4 matrix of float) -0:421 log2 ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r030' ( temp 4X4 matrix of float) -0:421 max ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 'inF1' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r031' ( temp 4X4 matrix of float) -0:421 min ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 'inF1' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r032' ( temp 4X4 matrix of float) -0:421 pow ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 'inF1' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r033' ( temp 4X4 matrix of float) -0:421 radians ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r034' ( temp 4X4 matrix of float) -0:421 roundEven ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r035' ( temp 4X4 matrix of float) -0:421 inverse sqrt ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r036' ( temp 4X4 matrix of float) -0:421 clamp ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Constant: -0:421 0.000000 -0:421 Constant: -0:421 1.000000 -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r037' ( temp 4X4 matrix of float) -0:421 Sign ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r038' ( temp 4X4 matrix of float) -0:421 sine ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'inF1' ( in 4X4 matrix of float) -0:421 sine ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'inF2' ( in 4X4 matrix of float) -0:421 cosine ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r039' ( temp 4X4 matrix of float) -0:421 hyp. sine ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r049' ( temp 4X4 matrix of float) -0:421 smoothstep ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 'inF1' ( in 4X4 matrix of float) -0:421 'inF2' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r041' ( temp 4X4 matrix of float) -0:421 sqrt ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r042' ( temp 4X4 matrix of float) -0:421 step ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 'inF1' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r043' ( temp 4X4 matrix of float) -0:421 tangent ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r044' ( temp 4X4 matrix of float) -0:421 hyp. tangent ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 transpose ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r046' ( temp 4X4 matrix of float) -0:421 trunc ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:424 Branch: Return with expression +0:422 Sequence +0:422 move second child to first child ( temp bool) +0:422 'r000' ( temp bool) +0:422 all ( temp bool) +0:422 Convert float to bool ( temp 4X4 matrix of bool) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r001' ( temp 4X4 matrix of float) +0:422 Absolute value ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 arc cosine ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp bool) +0:422 'r003' ( temp bool) +0:422 any ( temp bool) +0:422 Convert float to bool ( temp 4X4 matrix of bool) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r004' ( temp 4X4 matrix of float) +0:422 arc sine ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r005' ( temp 4X4 matrix of float) +0:422 arc tangent ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r006' ( temp 4X4 matrix of float) +0:422 arc tangent ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 'inF1' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r007' ( temp 4X4 matrix of float) +0:422 Ceiling ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Test condition and select ( temp void) +0:422 Condition +0:422 any ( temp bool) +0:422 Compare Less Than ( temp 4X4 matrix of bool) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Constant: +0:422 0.000000 +0:422 0.000000 +0:422 0.000000 +0:422 0.000000 +0:422 0.000000 +0:422 0.000000 +0:422 0.000000 +0:422 0.000000 +0:422 0.000000 +0:422 0.000000 +0:422 0.000000 +0:422 0.000000 +0:422 0.000000 +0:422 0.000000 +0:422 0.000000 +0:422 0.000000 +0:422 true case +0:422 Branch: Kill +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r008' ( temp 4X4 matrix of float) +0:422 clamp ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 'inF1' ( in 4X4 matrix of float) +0:422 'inF2' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r009' ( temp 4X4 matrix of float) +0:422 cosine ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r010' ( temp 4X4 matrix of float) +0:422 hyp. cosine ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r011' ( temp 4X4 matrix of float) +0:422 dPdx ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r012' ( temp 4X4 matrix of float) +0:422 dPdxCoarse ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r013' ( temp 4X4 matrix of float) +0:422 dPdxFine ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r014' ( temp 4X4 matrix of float) +0:422 dPdy ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r015' ( temp 4X4 matrix of float) +0:422 dPdyCoarse ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r016' ( temp 4X4 matrix of float) +0:422 dPdyFine ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r017' ( temp 4X4 matrix of float) +0:422 degrees ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp float) +0:422 'r018' ( temp float) +0:422 determinant ( temp float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r019' ( temp 4X4 matrix of float) +0:422 exp ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'R020' ( temp 4X4 matrix of float) +0:422 exp2 ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r021' ( temp 4X4 matrix of float) +0:422 Floor ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r022' ( temp 4X4 matrix of float) +0:422 mod ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 'inF1' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r023' ( temp 4X4 matrix of float) +0:422 Fraction ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r025' ( temp 4X4 matrix of float) +0:422 fwidth ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r026' ( temp 4X4 matrix of float) +0:422 ldexp ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 'inF1' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r026a' ( temp 4X4 matrix of float) +0:422 mix ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 'inF1' ( in 4X4 matrix of float) +0:422 'inF2' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r027' ( temp 4X4 matrix of float) +0:422 log ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r028' ( temp 4X4 matrix of float) +0:422 matrix-scale ( temp 4X4 matrix of float) +0:422 log2 ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Constant: +0:422 0.301030 +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r029' ( temp 4X4 matrix of float) +0:422 log2 ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r030' ( temp 4X4 matrix of float) +0:422 max ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 'inF1' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r031' ( temp 4X4 matrix of float) +0:422 min ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 'inF1' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r032' ( temp 4X4 matrix of float) +0:422 pow ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 'inF1' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r033' ( temp 4X4 matrix of float) +0:422 radians ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r034' ( temp 4X4 matrix of float) +0:422 roundEven ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r035' ( temp 4X4 matrix of float) +0:422 inverse sqrt ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r036' ( temp 4X4 matrix of float) +0:422 clamp ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Constant: +0:422 0.000000 +0:422 Constant: +0:422 1.000000 +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r037' ( temp 4X4 matrix of float) +0:422 Sign ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r038' ( temp 4X4 matrix of float) +0:422 sine ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'inF1' ( in 4X4 matrix of float) +0:422 sine ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'inF2' ( in 4X4 matrix of float) +0:422 cosine ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r039' ( temp 4X4 matrix of float) +0:422 hyp. sine ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r049' ( temp 4X4 matrix of float) +0:422 smoothstep ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 'inF1' ( in 4X4 matrix of float) +0:422 'inF2' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r041' ( temp 4X4 matrix of float) +0:422 sqrt ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r042' ( temp 4X4 matrix of float) +0:422 step ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 'inF1' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r043' ( temp 4X4 matrix of float) +0:422 tangent ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r044' ( temp 4X4 matrix of float) +0:422 hyp. tangent ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 transpose ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r046' ( temp 4X4 matrix of float) +0:422 trunc ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:425 Branch: Return with expression 0:? Constant: 0:? 4.000000 0:? 4.000000 @@ -2476,334 +2483,334 @@ gl_FragCoord origin is upper left 0:? 4.000000 0:? 4.000000 0:? 4.000000 -0:442 Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; ( temp void) -0:442 Function Parameters: -0:442 'inF0' ( in float) -0:442 'inF1' ( in float) -0:442 'inFV0' ( in 2-component vector of float) -0:442 'inFV1' ( in 2-component vector of float) -0:442 'inFM0' ( in 2X2 matrix of float) -0:442 'inFM1' ( in 2X2 matrix of float) +0:443 Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; ( temp void) +0:443 Function Parameters: +0:443 'inF0' ( in float) +0:443 'inF1' ( in float) +0:443 'inFV0' ( in 2-component vector of float) +0:443 'inFV1' ( in 2-component vector of float) +0:443 'inFM0' ( in 2X2 matrix of float) +0:443 'inFM1' ( in 2X2 matrix of float) 0:? Sequence -0:443 Sequence -0:443 move second child to first child ( temp float) -0:443 'r0' ( temp float) -0:443 component-wise multiply ( temp float) -0:443 'inF1' ( in float) -0:443 'inF0' ( in float) -0:443 Sequence -0:443 move second child to first child ( temp 2-component vector of float) -0:443 'r1' ( temp 2-component vector of float) -0:443 vector-scale ( temp 2-component vector of float) -0:443 'inF0' ( in float) -0:443 'inFV0' ( in 2-component vector of float) -0:443 Sequence -0:443 move second child to first child ( temp 2-component vector of float) -0:443 'r2' ( temp 2-component vector of float) -0:443 vector-scale ( temp 2-component vector of float) -0:443 'inFV0' ( in 2-component vector of float) -0:443 'inF0' ( in float) -0:443 Sequence -0:443 move second child to first child ( temp float) -0:443 'r3' ( temp float) -0:443 dot-product ( temp float) -0:443 'inFV0' ( in 2-component vector of float) -0:443 'inFV1' ( in 2-component vector of float) -0:443 Sequence -0:443 move second child to first child ( temp 2-component vector of float) -0:443 'r4' ( temp 2-component vector of float) -0:443 vector-times-matrix ( temp 2-component vector of float) -0:443 'inFV0' ( in 2-component vector of float) -0:443 'inFM0' ( in 2X2 matrix of float) -0:443 Sequence -0:443 move second child to first child ( temp 2-component vector of float) -0:443 'r5' ( temp 2-component vector of float) -0:443 matrix-times-vector ( temp 2-component vector of float) -0:443 'inFM0' ( in 2X2 matrix of float) -0:443 'inFV0' ( in 2-component vector of float) -0:443 Sequence -0:443 move second child to first child ( temp 2X2 matrix of float) -0:443 'r6' ( temp 2X2 matrix of float) -0:443 matrix-scale ( temp 2X2 matrix of float) -0:443 'inF0' ( in float) -0:443 'inFM0' ( in 2X2 matrix of float) -0:443 Sequence -0:443 move second child to first child ( temp 2X2 matrix of float) -0:443 'r7' ( temp 2X2 matrix of float) -0:443 matrix-scale ( temp 2X2 matrix of float) -0:443 'inFM0' ( in 2X2 matrix of float) -0:443 'inF0' ( in float) -0:443 Sequence -0:443 move second child to first child ( temp 2X2 matrix of float) -0:443 'r8' ( temp 2X2 matrix of float) -0:443 matrix-multiply ( temp 2X2 matrix of float) -0:443 'inFM1' ( in 2X2 matrix of float) -0:443 'inFM0' ( in 2X2 matrix of float) -0:449 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; ( temp void) -0:449 Function Parameters: -0:449 'inF0' ( in float) -0:449 'inF1' ( in float) -0:449 'inFV0' ( in 3-component vector of float) -0:449 'inFV1' ( in 3-component vector of float) -0:449 'inFM0' ( in 3X3 matrix of float) -0:449 'inFM1' ( in 3X3 matrix of float) +0:444 Sequence +0:444 move second child to first child ( temp float) +0:444 'r0' ( temp float) +0:444 component-wise multiply ( temp float) +0:444 'inF1' ( in float) +0:444 'inF0' ( in float) +0:444 Sequence +0:444 move second child to first child ( temp 2-component vector of float) +0:444 'r1' ( temp 2-component vector of float) +0:444 vector-scale ( temp 2-component vector of float) +0:444 'inF0' ( in float) +0:444 'inFV0' ( in 2-component vector of float) +0:444 Sequence +0:444 move second child to first child ( temp 2-component vector of float) +0:444 'r2' ( temp 2-component vector of float) +0:444 vector-scale ( temp 2-component vector of float) +0:444 'inFV0' ( in 2-component vector of float) +0:444 'inF0' ( in float) +0:444 Sequence +0:444 move second child to first child ( temp float) +0:444 'r3' ( temp float) +0:444 dot-product ( temp float) +0:444 'inFV0' ( in 2-component vector of float) +0:444 'inFV1' ( in 2-component vector of float) +0:444 Sequence +0:444 move second child to first child ( temp 2-component vector of float) +0:444 'r4' ( temp 2-component vector of float) +0:444 vector-times-matrix ( temp 2-component vector of float) +0:444 'inFV0' ( in 2-component vector of float) +0:444 'inFM0' ( in 2X2 matrix of float) +0:444 Sequence +0:444 move second child to first child ( temp 2-component vector of float) +0:444 'r5' ( temp 2-component vector of float) +0:444 matrix-times-vector ( temp 2-component vector of float) +0:444 'inFM0' ( in 2X2 matrix of float) +0:444 'inFV0' ( in 2-component vector of float) +0:444 Sequence +0:444 move second child to first child ( temp 2X2 matrix of float) +0:444 'r6' ( temp 2X2 matrix of float) +0:444 matrix-scale ( temp 2X2 matrix of float) +0:444 'inF0' ( in float) +0:444 'inFM0' ( in 2X2 matrix of float) +0:444 Sequence +0:444 move second child to first child ( temp 2X2 matrix of float) +0:444 'r7' ( temp 2X2 matrix of float) +0:444 matrix-scale ( temp 2X2 matrix of float) +0:444 'inFM0' ( in 2X2 matrix of float) +0:444 'inF0' ( in float) +0:444 Sequence +0:444 move second child to first child ( temp 2X2 matrix of float) +0:444 'r8' ( temp 2X2 matrix of float) +0:444 matrix-multiply ( temp 2X2 matrix of float) +0:444 'inFM1' ( in 2X2 matrix of float) +0:444 'inFM0' ( in 2X2 matrix of float) +0:450 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; ( temp void) +0:450 Function Parameters: +0:450 'inF0' ( in float) +0:450 'inF1' ( in float) +0:450 'inFV0' ( in 3-component vector of float) +0:450 'inFV1' ( in 3-component vector of float) +0:450 'inFM0' ( in 3X3 matrix of float) +0:450 'inFM1' ( in 3X3 matrix of float) 0:? Sequence -0:450 Sequence -0:450 move second child to first child ( temp float) -0:450 'r0' ( temp float) -0:450 component-wise multiply ( temp float) -0:450 'inF1' ( in float) -0:450 'inF0' ( in float) -0:450 Sequence -0:450 move second child to first child ( temp 3-component vector of float) -0:450 'r1' ( temp 3-component vector of float) -0:450 vector-scale ( temp 3-component vector of float) -0:450 'inF0' ( in float) -0:450 'inFV0' ( in 3-component vector of float) -0:450 Sequence -0:450 move second child to first child ( temp 3-component vector of float) -0:450 'r2' ( temp 3-component vector of float) -0:450 vector-scale ( temp 3-component vector of float) -0:450 'inFV0' ( in 3-component vector of float) -0:450 'inF0' ( in float) -0:450 Sequence -0:450 move second child to first child ( temp float) -0:450 'r3' ( temp float) -0:450 dot-product ( temp float) -0:450 'inFV0' ( in 3-component vector of float) -0:450 'inFV1' ( in 3-component vector of float) -0:450 Sequence -0:450 move second child to first child ( temp 3-component vector of float) -0:450 'r4' ( temp 3-component vector of float) -0:450 vector-times-matrix ( temp 3-component vector of float) -0:450 'inFV0' ( in 3-component vector of float) -0:450 'inFM0' ( in 3X3 matrix of float) -0:450 Sequence -0:450 move second child to first child ( temp 3-component vector of float) -0:450 'r5' ( temp 3-component vector of float) -0:450 matrix-times-vector ( temp 3-component vector of float) -0:450 'inFM0' ( in 3X3 matrix of float) -0:450 'inFV0' ( in 3-component vector of float) -0:450 Sequence -0:450 move second child to first child ( temp 3X3 matrix of float) -0:450 'r6' ( temp 3X3 matrix of float) -0:450 matrix-scale ( temp 3X3 matrix of float) -0:450 'inF0' ( in float) -0:450 'inFM0' ( in 3X3 matrix of float) -0:450 Sequence -0:450 move second child to first child ( temp 3X3 matrix of float) -0:450 'r7' ( temp 3X3 matrix of float) -0:450 matrix-scale ( temp 3X3 matrix of float) -0:450 'inFM0' ( in 3X3 matrix of float) -0:450 'inF0' ( in float) -0:450 Sequence -0:450 move second child to first child ( temp 3X3 matrix of float) -0:450 'r8' ( temp 3X3 matrix of float) -0:450 matrix-multiply ( temp 3X3 matrix of float) -0:450 'inFM1' ( in 3X3 matrix of float) -0:450 'inFM0' ( in 3X3 matrix of float) -0:456 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; ( temp void) -0:456 Function Parameters: -0:456 'inF0' ( in float) -0:456 'inF1' ( in float) -0:456 'inFV0' ( in 4-component vector of float) -0:456 'inFV1' ( in 4-component vector of float) -0:456 'inFM0' ( in 4X4 matrix of float) -0:456 'inFM1' ( in 4X4 matrix of float) +0:451 Sequence +0:451 move second child to first child ( temp float) +0:451 'r0' ( temp float) +0:451 component-wise multiply ( temp float) +0:451 'inF1' ( in float) +0:451 'inF0' ( in float) +0:451 Sequence +0:451 move second child to first child ( temp 3-component vector of float) +0:451 'r1' ( temp 3-component vector of float) +0:451 vector-scale ( temp 3-component vector of float) +0:451 'inF0' ( in float) +0:451 'inFV0' ( in 3-component vector of float) +0:451 Sequence +0:451 move second child to first child ( temp 3-component vector of float) +0:451 'r2' ( temp 3-component vector of float) +0:451 vector-scale ( temp 3-component vector of float) +0:451 'inFV0' ( in 3-component vector of float) +0:451 'inF0' ( in float) +0:451 Sequence +0:451 move second child to first child ( temp float) +0:451 'r3' ( temp float) +0:451 dot-product ( temp float) +0:451 'inFV0' ( in 3-component vector of float) +0:451 'inFV1' ( in 3-component vector of float) +0:451 Sequence +0:451 move second child to first child ( temp 3-component vector of float) +0:451 'r4' ( temp 3-component vector of float) +0:451 vector-times-matrix ( temp 3-component vector of float) +0:451 'inFV0' ( in 3-component vector of float) +0:451 'inFM0' ( in 3X3 matrix of float) +0:451 Sequence +0:451 move second child to first child ( temp 3-component vector of float) +0:451 'r5' ( temp 3-component vector of float) +0:451 matrix-times-vector ( temp 3-component vector of float) +0:451 'inFM0' ( in 3X3 matrix of float) +0:451 'inFV0' ( in 3-component vector of float) +0:451 Sequence +0:451 move second child to first child ( temp 3X3 matrix of float) +0:451 'r6' ( temp 3X3 matrix of float) +0:451 matrix-scale ( temp 3X3 matrix of float) +0:451 'inF0' ( in float) +0:451 'inFM0' ( in 3X3 matrix of float) +0:451 Sequence +0:451 move second child to first child ( temp 3X3 matrix of float) +0:451 'r7' ( temp 3X3 matrix of float) +0:451 matrix-scale ( temp 3X3 matrix of float) +0:451 'inFM0' ( in 3X3 matrix of float) +0:451 'inF0' ( in float) +0:451 Sequence +0:451 move second child to first child ( temp 3X3 matrix of float) +0:451 'r8' ( temp 3X3 matrix of float) +0:451 matrix-multiply ( temp 3X3 matrix of float) +0:451 'inFM1' ( in 3X3 matrix of float) +0:451 'inFM0' ( in 3X3 matrix of float) +0:457 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; ( temp void) +0:457 Function Parameters: +0:457 'inF0' ( in float) +0:457 'inF1' ( in float) +0:457 'inFV0' ( in 4-component vector of float) +0:457 'inFV1' ( in 4-component vector of float) +0:457 'inFM0' ( in 4X4 matrix of float) +0:457 'inFM1' ( in 4X4 matrix of float) 0:? Sequence -0:457 Sequence -0:457 move second child to first child ( temp float) -0:457 'r0' ( temp float) -0:457 component-wise multiply ( temp float) -0:457 'inF1' ( in float) -0:457 'inF0' ( in float) -0:457 Sequence -0:457 move second child to first child ( temp 4-component vector of float) -0:457 'r1' ( temp 4-component vector of float) -0:457 vector-scale ( temp 4-component vector of float) -0:457 'inF0' ( in float) -0:457 'inFV0' ( in 4-component vector of float) -0:457 Sequence -0:457 move second child to first child ( temp 4-component vector of float) -0:457 'r2' ( temp 4-component vector of float) -0:457 vector-scale ( temp 4-component vector of float) -0:457 'inFV0' ( in 4-component vector of float) -0:457 'inF0' ( in float) -0:457 Sequence -0:457 move second child to first child ( temp float) -0:457 'r3' ( temp float) -0:457 dot-product ( temp float) -0:457 'inFV0' ( in 4-component vector of float) -0:457 'inFV1' ( in 4-component vector of float) -0:457 Sequence -0:457 move second child to first child ( temp 4-component vector of float) -0:457 'r4' ( temp 4-component vector of float) -0:457 vector-times-matrix ( temp 4-component vector of float) -0:457 'inFV0' ( in 4-component vector of float) -0:457 'inFM0' ( in 4X4 matrix of float) -0:457 Sequence -0:457 move second child to first child ( temp 4-component vector of float) -0:457 'r5' ( temp 4-component vector of float) -0:457 matrix-times-vector ( temp 4-component vector of float) -0:457 'inFM0' ( in 4X4 matrix of float) -0:457 'inFV0' ( in 4-component vector of float) -0:457 Sequence -0:457 move second child to first child ( temp 4X4 matrix of float) -0:457 'r6' ( temp 4X4 matrix of float) -0:457 matrix-scale ( temp 4X4 matrix of float) -0:457 'inF0' ( in float) -0:457 'inFM0' ( in 4X4 matrix of float) -0:457 Sequence -0:457 move second child to first child ( temp 4X4 matrix of float) -0:457 'r7' ( temp 4X4 matrix of float) -0:457 matrix-scale ( temp 4X4 matrix of float) -0:457 'inFM0' ( in 4X4 matrix of float) -0:457 'inF0' ( in float) -0:457 Sequence -0:457 move second child to first child ( temp 4X4 matrix of float) -0:457 'r8' ( temp 4X4 matrix of float) -0:457 matrix-multiply ( temp 4X4 matrix of float) -0:457 'inFM1' ( in 4X4 matrix of float) -0:457 'inFM0' ( in 4X4 matrix of float) -0:466 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; ( temp void) -0:466 Function Parameters: -0:466 'inF0' ( in float) -0:466 'inF1' ( in float) -0:466 'inFV2' ( in 2-component vector of float) -0:466 'inFV3' ( in 3-component vector of float) -0:466 'inFM2x3' ( in 2X3 matrix of float) -0:466 'inFM3x2' ( in 3X2 matrix of float) -0:466 'inFM3x3' ( in 3X3 matrix of float) -0:466 'inFM3x4' ( in 3X4 matrix of float) -0:466 'inFM2x4' ( in 2X4 matrix of float) +0:458 Sequence +0:458 move second child to first child ( temp float) +0:458 'r0' ( temp float) +0:458 component-wise multiply ( temp float) +0:458 'inF1' ( in float) +0:458 'inF0' ( in float) +0:458 Sequence +0:458 move second child to first child ( temp 4-component vector of float) +0:458 'r1' ( temp 4-component vector of float) +0:458 vector-scale ( temp 4-component vector of float) +0:458 'inF0' ( in float) +0:458 'inFV0' ( in 4-component vector of float) +0:458 Sequence +0:458 move second child to first child ( temp 4-component vector of float) +0:458 'r2' ( temp 4-component vector of float) +0:458 vector-scale ( temp 4-component vector of float) +0:458 'inFV0' ( in 4-component vector of float) +0:458 'inF0' ( in float) +0:458 Sequence +0:458 move second child to first child ( temp float) +0:458 'r3' ( temp float) +0:458 dot-product ( temp float) +0:458 'inFV0' ( in 4-component vector of float) +0:458 'inFV1' ( in 4-component vector of float) +0:458 Sequence +0:458 move second child to first child ( temp 4-component vector of float) +0:458 'r4' ( temp 4-component vector of float) +0:458 vector-times-matrix ( temp 4-component vector of float) +0:458 'inFV0' ( in 4-component vector of float) +0:458 'inFM0' ( in 4X4 matrix of float) +0:458 Sequence +0:458 move second child to first child ( temp 4-component vector of float) +0:458 'r5' ( temp 4-component vector of float) +0:458 matrix-times-vector ( temp 4-component vector of float) +0:458 'inFM0' ( in 4X4 matrix of float) +0:458 'inFV0' ( in 4-component vector of float) +0:458 Sequence +0:458 move second child to first child ( temp 4X4 matrix of float) +0:458 'r6' ( temp 4X4 matrix of float) +0:458 matrix-scale ( temp 4X4 matrix of float) +0:458 'inF0' ( in float) +0:458 'inFM0' ( in 4X4 matrix of float) +0:458 Sequence +0:458 move second child to first child ( temp 4X4 matrix of float) +0:458 'r7' ( temp 4X4 matrix of float) +0:458 matrix-scale ( temp 4X4 matrix of float) +0:458 'inFM0' ( in 4X4 matrix of float) +0:458 'inF0' ( in float) +0:458 Sequence +0:458 move second child to first child ( temp 4X4 matrix of float) +0:458 'r8' ( temp 4X4 matrix of float) +0:458 matrix-multiply ( temp 4X4 matrix of float) +0:458 'inFM1' ( in 4X4 matrix of float) +0:458 'inFM0' ( in 4X4 matrix of float) +0:467 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; ( temp void) +0:467 Function Parameters: +0:467 'inF0' ( in float) +0:467 'inF1' ( in float) +0:467 'inFV2' ( in 2-component vector of float) +0:467 'inFV3' ( in 3-component vector of float) +0:467 'inFM2x3' ( in 2X3 matrix of float) +0:467 'inFM3x2' ( in 3X2 matrix of float) +0:467 'inFM3x3' ( in 3X3 matrix of float) +0:467 'inFM3x4' ( in 3X4 matrix of float) +0:467 'inFM2x4' ( in 2X4 matrix of float) 0:? Sequence -0:467 Sequence -0:467 move second child to first child ( temp float) -0:467 'r00' ( temp float) -0:467 component-wise multiply ( temp float) -0:467 'inF1' ( in float) -0:467 'inF0' ( in float) 0:468 Sequence -0:468 move second child to first child ( temp 2-component vector of float) -0:468 'r01' ( temp 2-component vector of float) -0:468 vector-scale ( temp 2-component vector of float) +0:468 move second child to first child ( temp float) +0:468 'r00' ( temp float) +0:468 component-wise multiply ( temp float) +0:468 'inF1' ( in float) 0:468 'inF0' ( in float) -0:468 'inFV2' ( in 2-component vector of float) 0:469 Sequence -0:469 move second child to first child ( temp 3-component vector of float) -0:469 'r02' ( temp 3-component vector of float) -0:469 vector-scale ( temp 3-component vector of float) +0:469 move second child to first child ( temp 2-component vector of float) +0:469 'r01' ( temp 2-component vector of float) +0:469 vector-scale ( temp 2-component vector of float) 0:469 'inF0' ( in float) -0:469 'inFV3' ( in 3-component vector of float) +0:469 'inFV2' ( in 2-component vector of float) 0:470 Sequence -0:470 move second child to first child ( temp 2-component vector of float) -0:470 'r03' ( temp 2-component vector of float) -0:470 vector-scale ( temp 2-component vector of float) -0:470 'inFV2' ( in 2-component vector of float) +0:470 move second child to first child ( temp 3-component vector of float) +0:470 'r02' ( temp 3-component vector of float) +0:470 vector-scale ( temp 3-component vector of float) 0:470 'inF0' ( in float) +0:470 'inFV3' ( in 3-component vector of float) 0:471 Sequence -0:471 move second child to first child ( temp 3-component vector of float) -0:471 'r04' ( temp 3-component vector of float) -0:471 vector-scale ( temp 3-component vector of float) -0:471 'inFV3' ( in 3-component vector of float) +0:471 move second child to first child ( temp 2-component vector of float) +0:471 'r03' ( temp 2-component vector of float) +0:471 vector-scale ( temp 2-component vector of float) +0:471 'inFV2' ( in 2-component vector of float) 0:471 'inF0' ( in float) 0:472 Sequence -0:472 move second child to first child ( temp float) -0:472 'r05' ( temp float) -0:472 dot-product ( temp float) -0:472 'inFV2' ( in 2-component vector of float) -0:472 'inFV2' ( in 2-component vector of float) +0:472 move second child to first child ( temp 3-component vector of float) +0:472 'r04' ( temp 3-component vector of float) +0:472 vector-scale ( temp 3-component vector of float) +0:472 'inFV3' ( in 3-component vector of float) +0:472 'inF0' ( in float) 0:473 Sequence 0:473 move second child to first child ( temp float) -0:473 'r06' ( temp float) +0:473 'r05' ( temp float) 0:473 dot-product ( temp float) -0:473 'inFV3' ( in 3-component vector of float) -0:473 'inFV3' ( in 3-component vector of float) +0:473 'inFV2' ( in 2-component vector of float) +0:473 'inFV2' ( in 2-component vector of float) 0:474 Sequence -0:474 move second child to first child ( temp 3-component vector of float) -0:474 'r07' ( temp 3-component vector of float) -0:474 matrix-times-vector ( temp 3-component vector of float) -0:474 'inFM2x3' ( in 2X3 matrix of float) -0:474 'inFV2' ( in 2-component vector of float) +0:474 move second child to first child ( temp float) +0:474 'r06' ( temp float) +0:474 dot-product ( temp float) +0:474 'inFV3' ( in 3-component vector of float) +0:474 'inFV3' ( in 3-component vector of float) 0:475 Sequence -0:475 move second child to first child ( temp 2-component vector of float) -0:475 'r08' ( temp 2-component vector of float) -0:475 matrix-times-vector ( temp 2-component vector of float) -0:475 'inFM3x2' ( in 3X2 matrix of float) -0:475 'inFV3' ( in 3-component vector of float) +0:475 move second child to first child ( temp 3-component vector of float) +0:475 'r07' ( temp 3-component vector of float) +0:475 matrix-times-vector ( temp 3-component vector of float) +0:475 'inFM2x3' ( in 2X3 matrix of float) +0:475 'inFV2' ( in 2-component vector of float) 0:476 Sequence 0:476 move second child to first child ( temp 2-component vector of float) -0:476 'r09' ( temp 2-component vector of float) -0:476 vector-times-matrix ( temp 2-component vector of float) +0:476 'r08' ( temp 2-component vector of float) +0:476 matrix-times-vector ( temp 2-component vector of float) +0:476 'inFM3x2' ( in 3X2 matrix of float) 0:476 'inFV3' ( in 3-component vector of float) -0:476 'inFM2x3' ( in 2X3 matrix of float) 0:477 Sequence -0:477 move second child to first child ( temp 3-component vector of float) -0:477 'r10' ( temp 3-component vector of float) -0:477 vector-times-matrix ( temp 3-component vector of float) -0:477 'inFV2' ( in 2-component vector of float) -0:477 'inFM3x2' ( in 3X2 matrix of float) +0:477 move second child to first child ( temp 2-component vector of float) +0:477 'r09' ( temp 2-component vector of float) +0:477 vector-times-matrix ( temp 2-component vector of float) +0:477 'inFV3' ( in 3-component vector of float) +0:477 'inFM2x3' ( in 2X3 matrix of float) 0:478 Sequence -0:478 move second child to first child ( temp 2X3 matrix of float) -0:478 'r11' ( temp 2X3 matrix of float) -0:478 matrix-scale ( temp 2X3 matrix of float) -0:478 'inF0' ( in float) -0:478 'inFM2x3' ( in 2X3 matrix of float) +0:478 move second child to first child ( temp 3-component vector of float) +0:478 'r10' ( temp 3-component vector of float) +0:478 vector-times-matrix ( temp 3-component vector of float) +0:478 'inFV2' ( in 2-component vector of float) +0:478 'inFM3x2' ( in 3X2 matrix of float) 0:479 Sequence -0:479 move second child to first child ( temp 3X2 matrix of float) -0:479 'r12' ( temp 3X2 matrix of float) -0:479 matrix-scale ( temp 3X2 matrix of float) +0:479 move second child to first child ( temp 2X3 matrix of float) +0:479 'r11' ( temp 2X3 matrix of float) +0:479 matrix-scale ( temp 2X3 matrix of float) 0:479 'inF0' ( in float) -0:479 'inFM3x2' ( in 3X2 matrix of float) +0:479 'inFM2x3' ( in 2X3 matrix of float) 0:480 Sequence -0:480 move second child to first child ( temp 2X2 matrix of float) -0:480 'r13' ( temp 2X2 matrix of float) -0:480 matrix-multiply ( temp 2X2 matrix of float) +0:480 move second child to first child ( temp 3X2 matrix of float) +0:480 'r12' ( temp 3X2 matrix of float) +0:480 matrix-scale ( temp 3X2 matrix of float) +0:480 'inF0' ( in float) 0:480 'inFM3x2' ( in 3X2 matrix of float) -0:480 'inFM2x3' ( in 2X3 matrix of float) 0:481 Sequence -0:481 move second child to first child ( temp 2X3 matrix of float) -0:481 'r14' ( temp 2X3 matrix of float) -0:481 matrix-multiply ( temp 2X3 matrix of float) -0:481 'inFM3x3' ( in 3X3 matrix of float) +0:481 move second child to first child ( temp 2X2 matrix of float) +0:481 'r13' ( temp 2X2 matrix of float) +0:481 matrix-multiply ( temp 2X2 matrix of float) +0:481 'inFM3x2' ( in 3X2 matrix of float) 0:481 'inFM2x3' ( in 2X3 matrix of float) 0:482 Sequence -0:482 move second child to first child ( temp 2X4 matrix of float) -0:482 'r15' ( temp 2X4 matrix of float) -0:482 matrix-multiply ( temp 2X4 matrix of float) -0:482 'inFM3x4' ( in 3X4 matrix of float) +0:482 move second child to first child ( temp 2X3 matrix of float) +0:482 'r14' ( temp 2X3 matrix of float) +0:482 matrix-multiply ( temp 2X3 matrix of float) +0:482 'inFM3x3' ( in 3X3 matrix of float) 0:482 'inFM2x3' ( in 2X3 matrix of float) 0:483 Sequence -0:483 move second child to first child ( temp 3X4 matrix of float) -0:483 'r16' ( temp 3X4 matrix of float) -0:483 matrix-multiply ( temp 3X4 matrix of float) -0:483 'inFM2x4' ( in 2X4 matrix of float) -0:483 'inFM3x2' ( in 3X2 matrix of float) -0:489 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) -0:489 Function Parameters: +0:483 move second child to first child ( temp 2X4 matrix of float) +0:483 'r15' ( temp 2X4 matrix of float) +0:483 matrix-multiply ( temp 2X4 matrix of float) +0:483 'inFM3x4' ( in 3X4 matrix of float) +0:483 'inFM2x3' ( in 2X3 matrix of float) +0:484 Sequence +0:484 move second child to first child ( temp 3X4 matrix of float) +0:484 'r16' ( temp 3X4 matrix of float) +0:484 matrix-multiply ( temp 3X4 matrix of float) +0:484 'inFM2x4' ( in 2X4 matrix of float) +0:484 'inFM3x2' ( in 3X2 matrix of float) +0:490 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) +0:490 Function Parameters: 0:? Sequence -0:491 move second child to first child ( temp 4-component vector of float) -0:491 color: direct index for structure ( temp 4-component vector of float) -0:491 'ps_output' ( temp structure{ temp 4-component vector of float color}) -0:491 Constant: -0:491 0 (const int) -0:491 Constant: -0:491 1.000000 -0:491 1.000000 -0:491 1.000000 -0:491 1.000000 -0:492 Branch: Return with expression -0:492 'ps_output' ( temp structure{ temp 4-component vector of float color}) -0:489 Function Definition: main( ( temp void) -0:489 Function Parameters: +0:492 move second child to first child ( temp 4-component vector of float) +0:492 color: direct index for structure ( temp 4-component vector of float) +0:492 'ps_output' ( temp structure{ temp 4-component vector of float color}) +0:492 Constant: +0:492 0 (const int) +0:492 Constant: +0:492 1.000000 +0:492 1.000000 +0:492 1.000000 +0:492 1.000000 +0:493 Branch: Return with expression +0:493 'ps_output' ( temp structure{ temp 4-component vector of float color}) +0:490 Function Definition: main( ( temp void) +0:490 Function Parameters: 0:? Sequence -0:489 Sequence -0:489 move second child to first child ( temp 4-component vector of float) +0:490 Sequence +0:490 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) -0:489 color: direct index for structure ( temp 4-component vector of float) -0:489 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) -0:489 Constant: -0:489 0 (const int) +0:490 color: direct index for structure ( temp 4-component vector of float) +0:490 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) +0:490 Constant: +0:490 0 (const int) 0:? Linker Objects 0:? 'gs_ua' ( shared uint) 0:? 'gs_ub' ( shared uint) @@ -3009,1073 +3016,1068 @@ gl_FragCoord origin is upper left 0:55 'inF1' ( in float) 0:56 Sequence 0:56 move second child to first child ( temp float) -0:56 'r034' ( temp float) -0:56 Fraction ( temp float) +0:56 'r033i' ( temp float) +0:56 mod ( temp float) 0:56 'inF0' ( in float) +0:56 Constant: +0:56 2.000000 0:57 Sequence 0:57 move second child to first child ( temp float) -0:57 'r036' ( temp float) -0:57 fwidth ( temp float) +0:57 'r034' ( temp float) +0:57 Fraction ( temp float) 0:57 'inF0' ( in float) 0:58 Sequence -0:58 move second child to first child ( temp bool) -0:58 'r037' ( temp bool) -0:58 isinf ( temp bool) +0:58 move second child to first child ( temp float) +0:58 'r036' ( temp float) +0:58 fwidth ( temp float) 0:58 'inF0' ( in float) 0:59 Sequence 0:59 move second child to first child ( temp bool) -0:59 'r038' ( temp bool) -0:59 isnan ( temp bool) +0:59 'r037' ( temp bool) +0:59 isinf ( temp bool) 0:59 'inF0' ( in float) 0:60 Sequence -0:60 move second child to first child ( temp float) -0:60 'r039' ( temp float) -0:60 ldexp ( temp float) +0:60 move second child to first child ( temp bool) +0:60 'r038' ( temp bool) +0:60 isnan ( temp bool) 0:60 'inF0' ( in float) -0:60 'inF1' ( in float) 0:61 Sequence 0:61 move second child to first child ( temp float) -0:61 'r039a' ( temp float) -0:61 mix ( temp float) +0:61 'r039' ( temp float) +0:61 ldexp ( temp float) 0:61 'inF0' ( in float) 0:61 'inF1' ( in float) -0:61 'inF2' ( in float) 0:62 Sequence 0:62 move second child to first child ( temp float) -0:62 'r040' ( temp float) -0:62 log ( temp float) +0:62 'r039a' ( temp float) +0:62 mix ( temp float) 0:62 'inF0' ( in float) +0:62 'inF1' ( in float) +0:62 'inF2' ( in float) 0:63 Sequence 0:63 move second child to first child ( temp float) -0:63 'r041' ( temp float) -0:63 component-wise multiply ( temp float) -0:63 log2 ( temp float) -0:63 'inF0' ( in float) -0:63 Constant: -0:63 0.301030 +0:63 'r040' ( temp float) +0:63 log ( temp float) +0:63 'inF0' ( in float) 0:64 Sequence 0:64 move second child to first child ( temp float) -0:64 'r042' ( temp float) -0:64 log2 ( temp float) -0:64 'inF0' ( in float) +0:64 'r041' ( temp float) +0:64 component-wise multiply ( temp float) +0:64 log2 ( temp float) +0:64 'inF0' ( in float) +0:64 Constant: +0:64 0.301030 0:65 Sequence 0:65 move second child to first child ( temp float) -0:65 'r043' ( temp float) -0:65 max ( temp float) +0:65 'r042' ( temp float) +0:65 log2 ( temp float) 0:65 'inF0' ( in float) -0:65 'inF1' ( in float) 0:66 Sequence 0:66 move second child to first child ( temp float) -0:66 'r044' ( temp float) -0:66 min ( temp float) +0:66 'r043' ( temp float) +0:66 max ( temp float) 0:66 'inF0' ( in float) 0:66 'inF1' ( in float) 0:67 Sequence 0:67 move second child to first child ( temp float) -0:67 'r045' ( temp float) -0:67 pow ( temp float) +0:67 'r044' ( temp float) +0:67 min ( temp float) 0:67 'inF0' ( in float) 0:67 'inF1' ( in float) 0:68 Sequence 0:68 move second child to first child ( temp float) -0:68 'r046' ( temp float) -0:68 radians ( temp float) +0:68 'r045' ( temp float) +0:68 pow ( temp float) 0:68 'inF0' ( in float) +0:68 'inF1' ( in float) 0:69 Sequence 0:69 move second child to first child ( temp float) -0:69 'r047' ( temp float) -0:69 divide ( temp float) -0:69 Constant: -0:69 1.000000 +0:69 'r046' ( temp float) +0:69 radians ( temp float) 0:69 'inF0' ( in float) 0:70 Sequence -0:70 move second child to first child ( temp uint) -0:70 'r048' ( temp uint) -0:70 Convert int to uint ( temp uint) -0:70 bitFieldReverse ( temp int) -0:70 Constant: -0:70 2 (const int) +0:70 move second child to first child ( temp float) +0:70 'r047' ( temp float) +0:70 divide ( temp float) +0:70 Constant: +0:70 1.000000 +0:70 'inF0' ( in float) 0:71 Sequence -0:71 move second child to first child ( temp float) -0:71 'r049' ( temp float) -0:71 roundEven ( temp float) -0:71 'inF0' ( in float) +0:71 move second child to first child ( temp uint) +0:71 'r048' ( temp uint) +0:71 Convert int to uint ( temp uint) +0:71 bitFieldReverse ( temp int) +0:71 Constant: +0:71 2 (const int) 0:72 Sequence 0:72 move second child to first child ( temp float) -0:72 'r050' ( temp float) -0:72 inverse sqrt ( temp float) +0:72 'r049' ( temp float) +0:72 roundEven ( temp float) 0:72 'inF0' ( in float) 0:73 Sequence 0:73 move second child to first child ( temp float) -0:73 'r051' ( temp float) -0:73 clamp ( temp float) +0:73 'r050' ( temp float) +0:73 inverse sqrt ( temp float) 0:73 'inF0' ( in float) -0:73 Constant: -0:73 0.000000 -0:73 Constant: -0:73 1.000000 0:74 Sequence 0:74 move second child to first child ( temp float) -0:74 'r052' ( temp float) -0:74 Sign ( temp float) +0:74 'r051' ( temp float) +0:74 clamp ( temp float) 0:74 'inF0' ( in float) +0:74 Constant: +0:74 0.000000 +0:74 Constant: +0:74 1.000000 0:75 Sequence 0:75 move second child to first child ( temp float) -0:75 'r053' ( temp float) -0:75 sine ( temp float) +0:75 'r052' ( temp float) +0:75 Sign ( temp float) 0:75 'inF0' ( in float) 0:76 Sequence 0:76 move second child to first child ( temp float) -0:76 'inF1' ( in float) +0:76 'r053' ( temp float) 0:76 sine ( temp float) 0:76 'inF0' ( in float) -0:76 move second child to first child ( temp float) -0:76 'inF2' ( in float) -0:76 cosine ( temp float) -0:76 'inF0' ( in float) 0:77 Sequence 0:77 move second child to first child ( temp float) -0:77 'r055' ( temp float) -0:77 hyp. sine ( temp float) +0:77 'inF1' ( in float) +0:77 sine ( temp float) +0:77 'inF0' ( in float) +0:77 move second child to first child ( temp float) +0:77 'inF2' ( in float) +0:77 cosine ( temp float) 0:77 'inF0' ( in float) 0:78 Sequence 0:78 move second child to first child ( temp float) -0:78 'r056' ( temp float) -0:78 smoothstep ( temp float) +0:78 'r055' ( temp float) +0:78 hyp. sine ( temp float) 0:78 'inF0' ( in float) -0:78 'inF1' ( in float) -0:78 'inF2' ( in float) 0:79 Sequence 0:79 move second child to first child ( temp float) -0:79 'r057' ( temp float) -0:79 sqrt ( temp float) +0:79 'r056' ( temp float) +0:79 smoothstep ( temp float) 0:79 'inF0' ( in float) +0:79 'inF1' ( in float) +0:79 'inF2' ( in float) 0:80 Sequence 0:80 move second child to first child ( temp float) -0:80 'r058' ( temp float) -0:80 step ( temp float) +0:80 'r057' ( temp float) +0:80 sqrt ( temp float) 0:80 'inF0' ( in float) -0:80 'inF1' ( in float) 0:81 Sequence 0:81 move second child to first child ( temp float) -0:81 'r059' ( temp float) -0:81 tangent ( temp float) +0:81 'r058' ( temp float) +0:81 step ( temp float) 0:81 'inF0' ( in float) +0:81 'inF1' ( in float) 0:82 Sequence 0:82 move second child to first child ( temp float) -0:82 'r060' ( temp float) -0:82 hyp. tangent ( temp float) +0:82 'r059' ( temp float) +0:82 tangent ( temp float) 0:82 'inF0' ( in float) -0:84 Sequence -0:84 move second child to first child ( temp float) -0:84 'r061' ( temp float) -0:84 trunc ( temp float) -0:84 'inF0' ( in float) -0:86 Branch: Return with expression -0:86 Constant: -0:86 0.000000 -0:90 Function Definition: PixelShaderFunction1(vf1;vf1;vf1; ( temp 1-component vector of float) -0:90 Function Parameters: -0:90 'inF0' ( in 1-component vector of float) -0:90 'inF1' ( in 1-component vector of float) -0:90 'inF2' ( in 1-component vector of float) +0:83 Sequence +0:83 move second child to first child ( temp float) +0:83 'r060' ( temp float) +0:83 hyp. tangent ( temp float) +0:83 'inF0' ( in float) +0:85 Sequence +0:85 move second child to first child ( temp float) +0:85 'r061' ( temp float) +0:85 trunc ( temp float) +0:85 'inF0' ( in float) +0:87 Branch: Return with expression +0:87 Constant: +0:87 0.000000 +0:91 Function Definition: PixelShaderFunction1(vf1;vf1;vf1; ( temp 1-component vector of float) +0:91 Function Parameters: +0:91 'inF0' ( in 1-component vector of float) +0:91 'inF1' ( in 1-component vector of float) +0:91 'inF2' ( in 1-component vector of float) 0:? Sequence -0:92 Branch: Return with expression -0:92 Constant: -0:92 0.000000 -0:96 Function Definition: PixelShaderFunction2(vf2;vf2;vf2;vu2;vu2; ( temp 2-component vector of float) -0:96 Function Parameters: -0:96 'inF0' ( in 2-component vector of float) -0:96 'inF1' ( in 2-component vector of float) -0:96 'inF2' ( in 2-component vector of float) -0:96 'inU0' ( in 2-component vector of uint) -0:96 'inU1' ( in 2-component vector of uint) +0:93 Branch: Return with expression +0:93 Constant: +0:93 0.000000 +0:97 Function Definition: PixelShaderFunction2(vf2;vf2;vf2;vu2;vu2; ( temp 2-component vector of float) +0:97 Function Parameters: +0:97 'inF0' ( in 2-component vector of float) +0:97 'inF1' ( in 2-component vector of float) +0:97 'inF2' ( in 2-component vector of float) +0:97 'inU0' ( in 2-component vector of uint) +0:97 'inU1' ( in 2-component vector of uint) 0:? Sequence -0:99 Sequence -0:99 move second child to first child ( temp bool) -0:99 'r000' ( temp bool) -0:99 all ( temp bool) -0:99 Convert float to bool ( temp 2-component vector of bool) -0:99 'inF0' ( in 2-component vector of float) 0:100 Sequence -0:100 move second child to first child ( temp 2-component vector of float) -0:100 'r001' ( temp 2-component vector of float) -0:100 Absolute value ( temp 2-component vector of float) -0:100 'inF0' ( in 2-component vector of float) +0:100 move second child to first child ( temp bool) +0:100 'r000' ( temp bool) +0:100 all ( temp bool) +0:100 Convert float to bool ( temp 2-component vector of bool) +0:100 'inF0' ( in 2-component vector of float) 0:101 Sequence 0:101 move second child to first child ( temp 2-component vector of float) -0:101 'r002' ( temp 2-component vector of float) -0:101 arc cosine ( temp 2-component vector of float) +0:101 'r001' ( temp 2-component vector of float) +0:101 Absolute value ( temp 2-component vector of float) 0:101 'inF0' ( in 2-component vector of float) 0:102 Sequence -0:102 move second child to first child ( temp bool) -0:102 'r003' ( temp bool) -0:102 any ( temp bool) -0:102 Convert float to bool ( temp 2-component vector of bool) -0:102 'inF0' ( in 2-component vector of float) +0:102 move second child to first child ( temp 2-component vector of float) +0:102 'r002' ( temp 2-component vector of float) +0:102 arc cosine ( temp 2-component vector of float) +0:102 'inF0' ( in 2-component vector of float) 0:103 Sequence -0:103 move second child to first child ( temp 2-component vector of float) -0:103 'r004' ( temp 2-component vector of float) -0:103 arc sine ( temp 2-component vector of float) -0:103 'inF0' ( in 2-component vector of float) +0:103 move second child to first child ( temp bool) +0:103 'r003' ( temp bool) +0:103 any ( temp bool) +0:103 Convert float to bool ( temp 2-component vector of bool) +0:103 'inF0' ( in 2-component vector of float) 0:104 Sequence -0:104 move second child to first child ( temp 2-component vector of int) -0:104 'r005' ( temp 2-component vector of int) -0:104 floatBitsToInt ( temp 2-component vector of int) +0:104 move second child to first child ( temp 2-component vector of float) +0:104 'r004' ( temp 2-component vector of float) +0:104 arc sine ( temp 2-component vector of float) 0:104 'inF0' ( in 2-component vector of float) 0:105 Sequence -0:105 move second child to first child ( temp 2-component vector of uint) -0:105 'r006' ( temp 2-component vector of uint) -0:105 floatBitsToUint ( temp 2-component vector of uint) +0:105 move second child to first child ( temp 2-component vector of int) +0:105 'r005' ( temp 2-component vector of int) +0:105 floatBitsToInt ( temp 2-component vector of int) 0:105 'inF0' ( in 2-component vector of float) 0:106 Sequence -0:106 move second child to first child ( temp 2-component vector of float) -0:106 'r007' ( temp 2-component vector of float) -0:106 intBitsToFloat ( temp 2-component vector of float) -0:106 'inU0' ( in 2-component vector of uint) -0:108 Sequence -0:108 move second child to first child ( temp 2-component vector of float) -0:108 'r009' ( temp 2-component vector of float) -0:108 arc tangent ( temp 2-component vector of float) -0:108 'inF0' ( in 2-component vector of float) +0:106 move second child to first child ( temp 2-component vector of uint) +0:106 'r006' ( temp 2-component vector of uint) +0:106 floatBitsToUint ( temp 2-component vector of uint) +0:106 'inF0' ( in 2-component vector of float) +0:107 Sequence +0:107 move second child to first child ( temp 2-component vector of float) +0:107 'r007' ( temp 2-component vector of float) +0:107 intBitsToFloat ( temp 2-component vector of float) +0:107 'inU0' ( in 2-component vector of uint) 0:109 Sequence 0:109 move second child to first child ( temp 2-component vector of float) -0:109 'r010' ( temp 2-component vector of float) +0:109 'r009' ( temp 2-component vector of float) 0:109 arc tangent ( temp 2-component vector of float) 0:109 'inF0' ( in 2-component vector of float) -0:109 'inF1' ( in 2-component vector of float) 0:110 Sequence 0:110 move second child to first child ( temp 2-component vector of float) -0:110 'r011' ( temp 2-component vector of float) -0:110 Ceiling ( temp 2-component vector of float) +0:110 'r010' ( temp 2-component vector of float) +0:110 arc tangent ( temp 2-component vector of float) 0:110 'inF0' ( in 2-component vector of float) +0:110 'inF1' ( in 2-component vector of float) 0:111 Sequence 0:111 move second child to first child ( temp 2-component vector of float) -0:111 'r012' ( temp 2-component vector of float) -0:111 clamp ( temp 2-component vector of float) +0:111 'r011' ( temp 2-component vector of float) +0:111 Ceiling ( temp 2-component vector of float) 0:111 'inF0' ( in 2-component vector of float) -0:111 'inF1' ( in 2-component vector of float) -0:111 'inF2' ( in 2-component vector of float) -0:112 Test condition and select ( temp void) -0:112 Condition -0:112 any ( temp bool) -0:112 Compare Less Than ( temp 2-component vector of bool) +0:112 Sequence +0:112 move second child to first child ( temp 2-component vector of float) +0:112 'r012' ( temp 2-component vector of float) +0:112 clamp ( temp 2-component vector of float) 0:112 'inF0' ( in 2-component vector of float) -0:112 Constant: -0:112 0.000000 -0:112 0.000000 -0:112 true case -0:112 Branch: Kill +0:112 'inF1' ( in 2-component vector of float) +0:112 'inF2' ( in 2-component vector of float) 0:113 Test condition and select ( temp void) 0:113 Condition 0:113 any ( temp bool) 0:113 Compare Less Than ( temp 2-component vector of bool) -0:113 'inU0' ( in 2-component vector of uint) +0:113 'inF0' ( in 2-component vector of float) 0:113 Constant: 0:113 0.000000 0:113 0.000000 0:113 true case 0:113 Branch: Kill -0:114 Sequence -0:114 move second child to first child ( temp 2-component vector of float) -0:114 'r013' ( temp 2-component vector of float) -0:114 cosine ( temp 2-component vector of float) -0:114 'inF0' ( in 2-component vector of float) +0:114 Test condition and select ( temp void) +0:114 Condition +0:114 any ( temp bool) +0:114 Compare Less Than ( temp 2-component vector of bool) +0:114 'inU0' ( in 2-component vector of uint) +0:114 Constant: +0:114 0.000000 +0:114 0.000000 +0:114 true case +0:114 Branch: Kill 0:115 Sequence 0:115 move second child to first child ( temp 2-component vector of float) -0:115 'r015' ( temp 2-component vector of float) -0:115 hyp. cosine ( temp 2-component vector of float) +0:115 'r013' ( temp 2-component vector of float) +0:115 cosine ( temp 2-component vector of float) 0:115 'inF0' ( in 2-component vector of float) 0:116 Sequence -0:116 move second child to first child ( temp 2-component vector of int) -0:116 'r016' ( temp 2-component vector of int) +0:116 move second child to first child ( temp 2-component vector of float) +0:116 'r015' ( temp 2-component vector of float) +0:116 hyp. cosine ( temp 2-component vector of float) +0:116 'inF0' ( in 2-component vector of float) +0:117 Sequence +0:117 move second child to first child ( temp 2-component vector of int) +0:117 'r016' ( temp 2-component vector of int) 0:? bitCount ( temp 2-component vector of int) 0:? Constant: 0:? 7 (const int) 0:? 3 (const int) -0:117 Sequence -0:117 move second child to first child ( temp 2-component vector of float) -0:117 'r017' ( temp 2-component vector of float) -0:117 dPdx ( temp 2-component vector of float) -0:117 'inF0' ( in 2-component vector of float) 0:118 Sequence 0:118 move second child to first child ( temp 2-component vector of float) -0:118 'r018' ( temp 2-component vector of float) -0:118 dPdxCoarse ( temp 2-component vector of float) +0:118 'r017' ( temp 2-component vector of float) +0:118 dPdx ( temp 2-component vector of float) 0:118 'inF0' ( in 2-component vector of float) 0:119 Sequence 0:119 move second child to first child ( temp 2-component vector of float) -0:119 'r019' ( temp 2-component vector of float) -0:119 dPdxFine ( temp 2-component vector of float) +0:119 'r018' ( temp 2-component vector of float) +0:119 dPdxCoarse ( temp 2-component vector of float) 0:119 'inF0' ( in 2-component vector of float) 0:120 Sequence 0:120 move second child to first child ( temp 2-component vector of float) -0:120 'r020' ( temp 2-component vector of float) -0:120 dPdy ( temp 2-component vector of float) +0:120 'r019' ( temp 2-component vector of float) +0:120 dPdxFine ( temp 2-component vector of float) 0:120 'inF0' ( in 2-component vector of float) 0:121 Sequence 0:121 move second child to first child ( temp 2-component vector of float) -0:121 'r021' ( temp 2-component vector of float) -0:121 dPdyCoarse ( temp 2-component vector of float) +0:121 'r020' ( temp 2-component vector of float) +0:121 dPdy ( temp 2-component vector of float) 0:121 'inF0' ( in 2-component vector of float) 0:122 Sequence 0:122 move second child to first child ( temp 2-component vector of float) -0:122 'r022' ( temp 2-component vector of float) -0:122 dPdyFine ( temp 2-component vector of float) +0:122 'r021' ( temp 2-component vector of float) +0:122 dPdyCoarse ( temp 2-component vector of float) 0:122 'inF0' ( in 2-component vector of float) 0:123 Sequence 0:123 move second child to first child ( temp 2-component vector of float) -0:123 'r023' ( temp 2-component vector of float) -0:123 degrees ( temp 2-component vector of float) +0:123 'r022' ( temp 2-component vector of float) +0:123 dPdyFine ( temp 2-component vector of float) 0:123 'inF0' ( in 2-component vector of float) -0:127 Sequence -0:127 move second child to first child ( temp float) -0:127 'r026' ( temp float) -0:127 distance ( temp float) -0:127 'inF0' ( in 2-component vector of float) -0:127 'inF1' ( in 2-component vector of float) +0:124 Sequence +0:124 move second child to first child ( temp 2-component vector of float) +0:124 'r023' ( temp 2-component vector of float) +0:124 degrees ( temp 2-component vector of float) +0:124 'inF0' ( in 2-component vector of float) 0:128 Sequence 0:128 move second child to first child ( temp float) -0:128 'r027' ( temp float) -0:128 dot-product ( temp float) +0:128 'r026' ( temp float) +0:128 distance ( temp float) 0:128 'inF0' ( in 2-component vector of float) 0:128 'inF1' ( in 2-component vector of float) -0:132 Sequence -0:132 move second child to first child ( temp 2-component vector of float) -0:132 'r028' ( temp 2-component vector of float) -0:132 exp ( temp 2-component vector of float) -0:132 'inF0' ( in 2-component vector of float) +0:129 Sequence +0:129 move second child to first child ( temp float) +0:129 'r027' ( temp float) +0:129 dot-product ( temp float) +0:129 'inF0' ( in 2-component vector of float) +0:129 'inF1' ( in 2-component vector of float) 0:133 Sequence 0:133 move second child to first child ( temp 2-component vector of float) -0:133 'r029' ( temp 2-component vector of float) -0:133 exp2 ( temp 2-component vector of float) +0:133 'r028' ( temp 2-component vector of float) +0:133 exp ( temp 2-component vector of float) 0:133 'inF0' ( in 2-component vector of float) 0:134 Sequence 0:134 move second child to first child ( temp 2-component vector of float) -0:134 'r030' ( temp 2-component vector of float) -0:134 face-forward ( temp 2-component vector of float) +0:134 'r029' ( temp 2-component vector of float) +0:134 exp2 ( temp 2-component vector of float) 0:134 'inF0' ( in 2-component vector of float) -0:134 'inF1' ( in 2-component vector of float) -0:134 'inF2' ( in 2-component vector of float) 0:135 Sequence -0:135 move second child to first child ( temp 2-component vector of uint) -0:135 'r031' ( temp 2-component vector of uint) +0:135 move second child to first child ( temp 2-component vector of float) +0:135 'r030' ( temp 2-component vector of float) +0:135 face-forward ( temp 2-component vector of float) +0:135 'inF0' ( in 2-component vector of float) +0:135 'inF1' ( in 2-component vector of float) +0:135 'inF2' ( in 2-component vector of float) +0:136 Sequence +0:136 move second child to first child ( temp 2-component vector of uint) +0:136 'r031' ( temp 2-component vector of uint) 0:? findMSB ( temp 2-component vector of uint) 0:? Constant: 0:? 7 (const uint) 0:? 8 (const uint) -0:136 Sequence -0:136 move second child to first child ( temp 2-component vector of uint) -0:136 'r032' ( temp 2-component vector of uint) +0:137 Sequence +0:137 move second child to first child ( temp 2-component vector of uint) +0:137 'r032' ( temp 2-component vector of uint) 0:? findLSB ( temp 2-component vector of uint) 0:? Constant: 0:? 7 (const uint) 0:? 8 (const uint) -0:137 Sequence -0:137 move second child to first child ( temp 2-component vector of float) -0:137 'r033' ( temp 2-component vector of float) -0:137 Floor ( temp 2-component vector of float) -0:137 'inF0' ( in 2-component vector of float) -0:139 Sequence -0:139 move second child to first child ( temp 2-component vector of float) -0:139 'r035' ( temp 2-component vector of float) -0:139 mod ( temp 2-component vector of float) -0:139 'inF0' ( in 2-component vector of float) -0:139 'inF1' ( in 2-component vector of float) +0:138 Sequence +0:138 move second child to first child ( temp 2-component vector of float) +0:138 'r033' ( temp 2-component vector of float) +0:138 Floor ( temp 2-component vector of float) +0:138 'inF0' ( in 2-component vector of float) 0:140 Sequence 0:140 move second child to first child ( temp 2-component vector of float) -0:140 'r036' ( temp 2-component vector of float) -0:140 Fraction ( temp 2-component vector of float) +0:140 'r035' ( temp 2-component vector of float) +0:140 mod ( temp 2-component vector of float) 0:140 'inF0' ( in 2-component vector of float) +0:140 'inF1' ( in 2-component vector of float) 0:141 Sequence 0:141 move second child to first child ( temp 2-component vector of float) -0:141 'r038' ( temp 2-component vector of float) -0:141 fwidth ( temp 2-component vector of float) +0:141 'r036' ( temp 2-component vector of float) +0:141 Fraction ( temp 2-component vector of float) 0:141 'inF0' ( in 2-component vector of float) 0:142 Sequence -0:142 move second child to first child ( temp 2-component vector of bool) -0:142 'r039' ( temp 2-component vector of bool) -0:142 isinf ( temp 2-component vector of bool) +0:142 move second child to first child ( temp 2-component vector of float) +0:142 'r038' ( temp 2-component vector of float) +0:142 fwidth ( temp 2-component vector of float) 0:142 'inF0' ( in 2-component vector of float) 0:143 Sequence 0:143 move second child to first child ( temp 2-component vector of bool) -0:143 'r040' ( temp 2-component vector of bool) -0:143 isnan ( temp 2-component vector of bool) +0:143 'r039' ( temp 2-component vector of bool) +0:143 isinf ( temp 2-component vector of bool) 0:143 'inF0' ( in 2-component vector of float) 0:144 Sequence -0:144 move second child to first child ( temp 2-component vector of float) -0:144 'r041' ( temp 2-component vector of float) -0:144 ldexp ( temp 2-component vector of float) +0:144 move second child to first child ( temp 2-component vector of bool) +0:144 'r040' ( temp 2-component vector of bool) +0:144 isnan ( temp 2-component vector of bool) 0:144 'inF0' ( in 2-component vector of float) -0:144 'inF1' ( in 2-component vector of float) 0:145 Sequence 0:145 move second child to first child ( temp 2-component vector of float) -0:145 'r039a' ( temp 2-component vector of float) -0:145 mix ( temp 2-component vector of float) +0:145 'r041' ( temp 2-component vector of float) +0:145 ldexp ( temp 2-component vector of float) 0:145 'inF0' ( in 2-component vector of float) 0:145 'inF1' ( in 2-component vector of float) -0:145 'inF2' ( in 2-component vector of float) 0:146 Sequence -0:146 move second child to first child ( temp float) -0:146 'r042' ( temp float) -0:146 length ( temp float) +0:146 move second child to first child ( temp 2-component vector of float) +0:146 'r039a' ( temp 2-component vector of float) +0:146 mix ( temp 2-component vector of float) 0:146 'inF0' ( in 2-component vector of float) +0:146 'inF1' ( in 2-component vector of float) +0:146 'inF2' ( in 2-component vector of float) 0:147 Sequence -0:147 move second child to first child ( temp 2-component vector of float) -0:147 'r043' ( temp 2-component vector of float) -0:147 log ( temp 2-component vector of float) +0:147 move second child to first child ( temp float) +0:147 'r042' ( temp float) +0:147 length ( temp float) 0:147 'inF0' ( in 2-component vector of float) 0:148 Sequence 0:148 move second child to first child ( temp 2-component vector of float) -0:148 'r044' ( temp 2-component vector of float) -0:148 vector-scale ( temp 2-component vector of float) -0:148 log2 ( temp 2-component vector of float) -0:148 'inF0' ( in 2-component vector of float) -0:148 Constant: -0:148 0.301030 +0:148 'r043' ( temp 2-component vector of float) +0:148 log ( temp 2-component vector of float) +0:148 'inF0' ( in 2-component vector of float) 0:149 Sequence 0:149 move second child to first child ( temp 2-component vector of float) -0:149 'r045' ( temp 2-component vector of float) -0:149 log2 ( temp 2-component vector of float) -0:149 'inF0' ( in 2-component vector of float) +0:149 'r044' ( temp 2-component vector of float) +0:149 vector-scale ( temp 2-component vector of float) +0:149 log2 ( temp 2-component vector of float) +0:149 'inF0' ( in 2-component vector of float) +0:149 Constant: +0:149 0.301030 0:150 Sequence 0:150 move second child to first child ( temp 2-component vector of float) -0:150 'r046' ( temp 2-component vector of float) -0:150 max ( temp 2-component vector of float) +0:150 'r045' ( temp 2-component vector of float) +0:150 log2 ( temp 2-component vector of float) 0:150 'inF0' ( in 2-component vector of float) -0:150 'inF1' ( in 2-component vector of float) 0:151 Sequence 0:151 move second child to first child ( temp 2-component vector of float) -0:151 'r047' ( temp 2-component vector of float) -0:151 min ( temp 2-component vector of float) +0:151 'r046' ( temp 2-component vector of float) +0:151 max ( temp 2-component vector of float) 0:151 'inF0' ( in 2-component vector of float) 0:151 'inF1' ( in 2-component vector of float) 0:152 Sequence 0:152 move second child to first child ( temp 2-component vector of float) -0:152 'r048' ( temp 2-component vector of float) -0:152 normalize ( temp 2-component vector of float) +0:152 'r047' ( temp 2-component vector of float) +0:152 min ( temp 2-component vector of float) 0:152 'inF0' ( in 2-component vector of float) +0:152 'inF1' ( in 2-component vector of float) 0:153 Sequence 0:153 move second child to first child ( temp 2-component vector of float) -0:153 'r049' ( temp 2-component vector of float) -0:153 pow ( temp 2-component vector of float) +0:153 'r048' ( temp 2-component vector of float) +0:153 normalize ( temp 2-component vector of float) 0:153 'inF0' ( in 2-component vector of float) -0:153 'inF1' ( in 2-component vector of float) 0:154 Sequence 0:154 move second child to first child ( temp 2-component vector of float) -0:154 'r050' ( temp 2-component vector of float) -0:154 radians ( temp 2-component vector of float) +0:154 'r049' ( temp 2-component vector of float) +0:154 pow ( temp 2-component vector of float) 0:154 'inF0' ( in 2-component vector of float) +0:154 'inF1' ( in 2-component vector of float) 0:155 Sequence 0:155 move second child to first child ( temp 2-component vector of float) -0:155 'r051' ( temp 2-component vector of float) -0:155 divide ( temp 2-component vector of float) -0:155 Constant: -0:155 1.000000 +0:155 'r050' ( temp 2-component vector of float) +0:155 radians ( temp 2-component vector of float) 0:155 'inF0' ( in 2-component vector of float) 0:156 Sequence 0:156 move second child to first child ( temp 2-component vector of float) -0:156 'r052' ( temp 2-component vector of float) -0:156 reflect ( temp 2-component vector of float) +0:156 'r051' ( temp 2-component vector of float) +0:156 divide ( temp 2-component vector of float) +0:156 Constant: +0:156 1.000000 0:156 'inF0' ( in 2-component vector of float) -0:156 'inF1' ( in 2-component vector of float) 0:157 Sequence 0:157 move second child to first child ( temp 2-component vector of float) -0:157 'r053' ( temp 2-component vector of float) -0:157 refract ( temp 2-component vector of float) +0:157 'r052' ( temp 2-component vector of float) +0:157 reflect ( temp 2-component vector of float) 0:157 'inF0' ( in 2-component vector of float) 0:157 'inF1' ( in 2-component vector of float) -0:157 Constant: -0:157 2.000000 0:158 Sequence -0:158 move second child to first child ( temp 2-component vector of uint) -0:158 'r054' ( temp 2-component vector of uint) +0:158 move second child to first child ( temp 2-component vector of float) +0:158 'r053' ( temp 2-component vector of float) +0:158 refract ( temp 2-component vector of float) +0:158 'inF0' ( in 2-component vector of float) +0:158 'inF1' ( in 2-component vector of float) +0:158 Constant: +0:158 2.000000 +0:159 Sequence +0:159 move second child to first child ( temp 2-component vector of uint) +0:159 'r054' ( temp 2-component vector of uint) 0:? bitFieldReverse ( temp 2-component vector of uint) 0:? Constant: 0:? 1 (const uint) 0:? 2 (const uint) -0:159 Sequence -0:159 move second child to first child ( temp 2-component vector of float) -0:159 'r055' ( temp 2-component vector of float) -0:159 roundEven ( temp 2-component vector of float) -0:159 'inF0' ( in 2-component vector of float) 0:160 Sequence 0:160 move second child to first child ( temp 2-component vector of float) -0:160 'r056' ( temp 2-component vector of float) -0:160 inverse sqrt ( temp 2-component vector of float) +0:160 'r055' ( temp 2-component vector of float) +0:160 roundEven ( temp 2-component vector of float) 0:160 'inF0' ( in 2-component vector of float) 0:161 Sequence 0:161 move second child to first child ( temp 2-component vector of float) -0:161 'r057' ( temp 2-component vector of float) -0:161 clamp ( temp 2-component vector of float) +0:161 'r056' ( temp 2-component vector of float) +0:161 inverse sqrt ( temp 2-component vector of float) 0:161 'inF0' ( in 2-component vector of float) -0:161 Constant: -0:161 0.000000 -0:161 Constant: -0:161 1.000000 0:162 Sequence 0:162 move second child to first child ( temp 2-component vector of float) -0:162 'r058' ( temp 2-component vector of float) -0:162 Sign ( temp 2-component vector of float) +0:162 'r057' ( temp 2-component vector of float) +0:162 clamp ( temp 2-component vector of float) 0:162 'inF0' ( in 2-component vector of float) +0:162 Constant: +0:162 0.000000 +0:162 Constant: +0:162 1.000000 0:163 Sequence 0:163 move second child to first child ( temp 2-component vector of float) -0:163 'r059' ( temp 2-component vector of float) -0:163 sine ( temp 2-component vector of float) +0:163 'r058' ( temp 2-component vector of float) +0:163 Sign ( temp 2-component vector of float) 0:163 'inF0' ( in 2-component vector of float) 0:164 Sequence 0:164 move second child to first child ( temp 2-component vector of float) -0:164 'inF1' ( in 2-component vector of float) +0:164 'r059' ( temp 2-component vector of float) 0:164 sine ( temp 2-component vector of float) 0:164 'inF0' ( in 2-component vector of float) -0:164 move second child to first child ( temp 2-component vector of float) -0:164 'inF2' ( in 2-component vector of float) -0:164 cosine ( temp 2-component vector of float) -0:164 'inF0' ( in 2-component vector of float) 0:165 Sequence 0:165 move second child to first child ( temp 2-component vector of float) -0:165 'r060' ( temp 2-component vector of float) -0:165 hyp. sine ( temp 2-component vector of float) +0:165 'inF1' ( in 2-component vector of float) +0:165 sine ( temp 2-component vector of float) +0:165 'inF0' ( in 2-component vector of float) +0:165 move second child to first child ( temp 2-component vector of float) +0:165 'inF2' ( in 2-component vector of float) +0:165 cosine ( temp 2-component vector of float) 0:165 'inF0' ( in 2-component vector of float) 0:166 Sequence 0:166 move second child to first child ( temp 2-component vector of float) -0:166 'r061' ( temp 2-component vector of float) -0:166 smoothstep ( temp 2-component vector of float) +0:166 'r060' ( temp 2-component vector of float) +0:166 hyp. sine ( temp 2-component vector of float) 0:166 'inF0' ( in 2-component vector of float) -0:166 'inF1' ( in 2-component vector of float) -0:166 'inF2' ( in 2-component vector of float) 0:167 Sequence 0:167 move second child to first child ( temp 2-component vector of float) -0:167 'r062' ( temp 2-component vector of float) -0:167 sqrt ( temp 2-component vector of float) +0:167 'r061' ( temp 2-component vector of float) +0:167 smoothstep ( temp 2-component vector of float) 0:167 'inF0' ( in 2-component vector of float) +0:167 'inF1' ( in 2-component vector of float) +0:167 'inF2' ( in 2-component vector of float) 0:168 Sequence 0:168 move second child to first child ( temp 2-component vector of float) -0:168 'r063' ( temp 2-component vector of float) -0:168 step ( temp 2-component vector of float) +0:168 'r062' ( temp 2-component vector of float) +0:168 sqrt ( temp 2-component vector of float) 0:168 'inF0' ( in 2-component vector of float) -0:168 'inF1' ( in 2-component vector of float) 0:169 Sequence 0:169 move second child to first child ( temp 2-component vector of float) -0:169 'r064' ( temp 2-component vector of float) -0:169 tangent ( temp 2-component vector of float) +0:169 'r063' ( temp 2-component vector of float) +0:169 step ( temp 2-component vector of float) 0:169 'inF0' ( in 2-component vector of float) +0:169 'inF1' ( in 2-component vector of float) 0:170 Sequence 0:170 move second child to first child ( temp 2-component vector of float) -0:170 'r065' ( temp 2-component vector of float) -0:170 hyp. tangent ( temp 2-component vector of float) +0:170 'r064' ( temp 2-component vector of float) +0:170 tangent ( temp 2-component vector of float) 0:170 'inF0' ( in 2-component vector of float) -0:172 Sequence -0:172 move second child to first child ( temp 2-component vector of float) -0:172 'r066' ( temp 2-component vector of float) -0:172 trunc ( temp 2-component vector of float) -0:172 'inF0' ( in 2-component vector of float) -0:175 Branch: Return with expression +0:171 Sequence +0:171 move second child to first child ( temp 2-component vector of float) +0:171 'r065' ( temp 2-component vector of float) +0:171 hyp. tangent ( temp 2-component vector of float) +0:171 'inF0' ( in 2-component vector of float) +0:173 Sequence +0:173 move second child to first child ( temp 2-component vector of float) +0:173 'r066' ( temp 2-component vector of float) +0:173 trunc ( temp 2-component vector of float) +0:173 'inF0' ( in 2-component vector of float) +0:176 Branch: Return with expression 0:? Constant: 0:? 1.000000 0:? 2.000000 -0:179 Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vu3;vu3; ( temp 3-component vector of float) -0:179 Function Parameters: -0:179 'inF0' ( in 3-component vector of float) -0:179 'inF1' ( in 3-component vector of float) -0:179 'inF2' ( in 3-component vector of float) -0:179 'inU0' ( in 3-component vector of uint) -0:179 'inU1' ( in 3-component vector of uint) +0:180 Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vu3;vu3; ( temp 3-component vector of float) +0:180 Function Parameters: +0:180 'inF0' ( in 3-component vector of float) +0:180 'inF1' ( in 3-component vector of float) +0:180 'inF2' ( in 3-component vector of float) +0:180 'inU0' ( in 3-component vector of uint) +0:180 'inU1' ( in 3-component vector of uint) 0:? Sequence -0:182 Sequence -0:182 move second child to first child ( temp bool) -0:182 'r000' ( temp bool) -0:182 all ( temp bool) -0:182 Convert float to bool ( temp 3-component vector of bool) -0:182 'inF0' ( in 3-component vector of float) 0:183 Sequence -0:183 move second child to first child ( temp 3-component vector of float) -0:183 'r001' ( temp 3-component vector of float) -0:183 Absolute value ( temp 3-component vector of float) -0:183 'inF0' ( in 3-component vector of float) +0:183 move second child to first child ( temp bool) +0:183 'r000' ( temp bool) +0:183 all ( temp bool) +0:183 Convert float to bool ( temp 3-component vector of bool) +0:183 'inF0' ( in 3-component vector of float) 0:184 Sequence 0:184 move second child to first child ( temp 3-component vector of float) -0:184 'r002' ( temp 3-component vector of float) -0:184 arc cosine ( temp 3-component vector of float) +0:184 'r001' ( temp 3-component vector of float) +0:184 Absolute value ( temp 3-component vector of float) 0:184 'inF0' ( in 3-component vector of float) 0:185 Sequence -0:185 move second child to first child ( temp bool) -0:185 'r003' ( temp bool) -0:185 any ( temp bool) -0:185 Convert float to bool ( temp 3-component vector of bool) -0:185 'inF0' ( in 3-component vector of float) +0:185 move second child to first child ( temp 3-component vector of float) +0:185 'r002' ( temp 3-component vector of float) +0:185 arc cosine ( temp 3-component vector of float) +0:185 'inF0' ( in 3-component vector of float) 0:186 Sequence -0:186 move second child to first child ( temp 3-component vector of float) -0:186 'r004' ( temp 3-component vector of float) -0:186 arc sine ( temp 3-component vector of float) -0:186 'inF0' ( in 3-component vector of float) +0:186 move second child to first child ( temp bool) +0:186 'r003' ( temp bool) +0:186 any ( temp bool) +0:186 Convert float to bool ( temp 3-component vector of bool) +0:186 'inF0' ( in 3-component vector of float) 0:187 Sequence -0:187 move second child to first child ( temp 3-component vector of int) -0:187 'r005' ( temp 3-component vector of int) -0:187 floatBitsToInt ( temp 3-component vector of int) +0:187 move second child to first child ( temp 3-component vector of float) +0:187 'r004' ( temp 3-component vector of float) +0:187 arc sine ( temp 3-component vector of float) 0:187 'inF0' ( in 3-component vector of float) 0:188 Sequence -0:188 move second child to first child ( temp 3-component vector of uint) -0:188 'r006' ( temp 3-component vector of uint) -0:188 floatBitsToUint ( temp 3-component vector of uint) +0:188 move second child to first child ( temp 3-component vector of int) +0:188 'r005' ( temp 3-component vector of int) +0:188 floatBitsToInt ( temp 3-component vector of int) 0:188 'inF0' ( in 3-component vector of float) 0:189 Sequence -0:189 move second child to first child ( temp 3-component vector of float) -0:189 'r007' ( temp 3-component vector of float) -0:189 intBitsToFloat ( temp 3-component vector of float) -0:189 'inU0' ( in 3-component vector of uint) -0:191 Sequence -0:191 move second child to first child ( temp 3-component vector of float) -0:191 'r009' ( temp 3-component vector of float) -0:191 arc tangent ( temp 3-component vector of float) -0:191 'inF0' ( in 3-component vector of float) +0:189 move second child to first child ( temp 3-component vector of uint) +0:189 'r006' ( temp 3-component vector of uint) +0:189 floatBitsToUint ( temp 3-component vector of uint) +0:189 'inF0' ( in 3-component vector of float) +0:190 Sequence +0:190 move second child to first child ( temp 3-component vector of float) +0:190 'r007' ( temp 3-component vector of float) +0:190 intBitsToFloat ( temp 3-component vector of float) +0:190 'inU0' ( in 3-component vector of uint) 0:192 Sequence 0:192 move second child to first child ( temp 3-component vector of float) -0:192 'r010' ( temp 3-component vector of float) +0:192 'r009' ( temp 3-component vector of float) 0:192 arc tangent ( temp 3-component vector of float) 0:192 'inF0' ( in 3-component vector of float) -0:192 'inF1' ( in 3-component vector of float) 0:193 Sequence 0:193 move second child to first child ( temp 3-component vector of float) -0:193 'r011' ( temp 3-component vector of float) -0:193 Ceiling ( temp 3-component vector of float) +0:193 'r010' ( temp 3-component vector of float) +0:193 arc tangent ( temp 3-component vector of float) 0:193 'inF0' ( in 3-component vector of float) +0:193 'inF1' ( in 3-component vector of float) 0:194 Sequence 0:194 move second child to first child ( temp 3-component vector of float) -0:194 'r012' ( temp 3-component vector of float) -0:194 clamp ( temp 3-component vector of float) +0:194 'r011' ( temp 3-component vector of float) +0:194 Ceiling ( temp 3-component vector of float) 0:194 'inF0' ( in 3-component vector of float) -0:194 'inF1' ( in 3-component vector of float) -0:194 'inF2' ( in 3-component vector of float) -0:195 Test condition and select ( temp void) -0:195 Condition -0:195 any ( temp bool) -0:195 Compare Less Than ( temp 3-component vector of bool) +0:195 Sequence +0:195 move second child to first child ( temp 3-component vector of float) +0:195 'r012' ( temp 3-component vector of float) +0:195 clamp ( temp 3-component vector of float) 0:195 'inF0' ( in 3-component vector of float) -0:195 Constant: -0:195 0.000000 -0:195 0.000000 -0:195 0.000000 -0:195 true case -0:195 Branch: Kill +0:195 'inF1' ( in 3-component vector of float) +0:195 'inF2' ( in 3-component vector of float) 0:196 Test condition and select ( temp void) 0:196 Condition 0:196 any ( temp bool) 0:196 Compare Less Than ( temp 3-component vector of bool) -0:196 'inU0' ( in 3-component vector of uint) +0:196 'inF0' ( in 3-component vector of float) 0:196 Constant: 0:196 0.000000 0:196 0.000000 0:196 0.000000 0:196 true case 0:196 Branch: Kill -0:197 Sequence -0:197 move second child to first child ( temp 3-component vector of float) -0:197 'r013' ( temp 3-component vector of float) -0:197 cosine ( temp 3-component vector of float) -0:197 'inF0' ( in 3-component vector of float) +0:197 Test condition and select ( temp void) +0:197 Condition +0:197 any ( temp bool) +0:197 Compare Less Than ( temp 3-component vector of bool) +0:197 'inU0' ( in 3-component vector of uint) +0:197 Constant: +0:197 0.000000 +0:197 0.000000 +0:197 0.000000 +0:197 true case +0:197 Branch: Kill 0:198 Sequence 0:198 move second child to first child ( temp 3-component vector of float) -0:198 'r014' ( temp 3-component vector of float) -0:198 hyp. cosine ( temp 3-component vector of float) +0:198 'r013' ( temp 3-component vector of float) +0:198 cosine ( temp 3-component vector of float) 0:198 'inF0' ( in 3-component vector of float) 0:199 Sequence -0:199 move second child to first child ( temp 3-component vector of uint) -0:199 'r015' ( temp 3-component vector of uint) +0:199 move second child to first child ( temp 3-component vector of float) +0:199 'r014' ( temp 3-component vector of float) +0:199 hyp. cosine ( temp 3-component vector of float) +0:199 'inF0' ( in 3-component vector of float) +0:200 Sequence +0:200 move second child to first child ( temp 3-component vector of uint) +0:200 'r015' ( temp 3-component vector of uint) 0:? bitCount ( temp 3-component vector of uint) 0:? Constant: 0:? 7 (const uint) 0:? 3 (const uint) 0:? 5 (const uint) -0:200 Sequence -0:200 move second child to first child ( temp 3-component vector of float) -0:200 'r016' ( temp 3-component vector of float) -0:200 cross-product ( temp 3-component vector of float) -0:200 'inF0' ( in 3-component vector of float) -0:200 'inF1' ( in 3-component vector of float) 0:201 Sequence 0:201 move second child to first child ( temp 3-component vector of float) -0:201 'r017' ( temp 3-component vector of float) -0:201 dPdx ( temp 3-component vector of float) +0:201 'r016' ( temp 3-component vector of float) +0:201 cross-product ( temp 3-component vector of float) 0:201 'inF0' ( in 3-component vector of float) +0:201 'inF1' ( in 3-component vector of float) 0:202 Sequence 0:202 move second child to first child ( temp 3-component vector of float) -0:202 'r018' ( temp 3-component vector of float) -0:202 dPdxCoarse ( temp 3-component vector of float) +0:202 'r017' ( temp 3-component vector of float) +0:202 dPdx ( temp 3-component vector of float) 0:202 'inF0' ( in 3-component vector of float) 0:203 Sequence 0:203 move second child to first child ( temp 3-component vector of float) -0:203 'r019' ( temp 3-component vector of float) -0:203 dPdxFine ( temp 3-component vector of float) +0:203 'r018' ( temp 3-component vector of float) +0:203 dPdxCoarse ( temp 3-component vector of float) 0:203 'inF0' ( in 3-component vector of float) 0:204 Sequence 0:204 move second child to first child ( temp 3-component vector of float) -0:204 'r020' ( temp 3-component vector of float) -0:204 dPdy ( temp 3-component vector of float) +0:204 'r019' ( temp 3-component vector of float) +0:204 dPdxFine ( temp 3-component vector of float) 0:204 'inF0' ( in 3-component vector of float) 0:205 Sequence 0:205 move second child to first child ( temp 3-component vector of float) -0:205 'r021' ( temp 3-component vector of float) -0:205 dPdyCoarse ( temp 3-component vector of float) +0:205 'r020' ( temp 3-component vector of float) +0:205 dPdy ( temp 3-component vector of float) 0:205 'inF0' ( in 3-component vector of float) 0:206 Sequence 0:206 move second child to first child ( temp 3-component vector of float) -0:206 'r022' ( temp 3-component vector of float) -0:206 dPdyFine ( temp 3-component vector of float) +0:206 'r021' ( temp 3-component vector of float) +0:206 dPdyCoarse ( temp 3-component vector of float) 0:206 'inF0' ( in 3-component vector of float) 0:207 Sequence 0:207 move second child to first child ( temp 3-component vector of float) -0:207 'r023' ( temp 3-component vector of float) -0:207 degrees ( temp 3-component vector of float) +0:207 'r022' ( temp 3-component vector of float) +0:207 dPdyFine ( temp 3-component vector of float) 0:207 'inF0' ( in 3-component vector of float) 0:208 Sequence -0:208 move second child to first child ( temp float) -0:208 'r024' ( temp float) -0:208 distance ( temp float) +0:208 move second child to first child ( temp 3-component vector of float) +0:208 'r023' ( temp 3-component vector of float) +0:208 degrees ( temp 3-component vector of float) 0:208 'inF0' ( in 3-component vector of float) -0:208 'inF1' ( in 3-component vector of float) 0:209 Sequence 0:209 move second child to first child ( temp float) -0:209 'r025' ( temp float) -0:209 dot-product ( temp float) +0:209 'r024' ( temp float) +0:209 distance ( temp float) 0:209 'inF0' ( in 3-component vector of float) 0:209 'inF1' ( in 3-component vector of float) -0:213 Sequence -0:213 move second child to first child ( temp 3-component vector of float) -0:213 'r029' ( temp 3-component vector of float) -0:213 exp ( temp 3-component vector of float) -0:213 'inF0' ( in 3-component vector of float) +0:210 Sequence +0:210 move second child to first child ( temp float) +0:210 'r025' ( temp float) +0:210 dot-product ( temp float) +0:210 'inF0' ( in 3-component vector of float) +0:210 'inF1' ( in 3-component vector of float) 0:214 Sequence 0:214 move second child to first child ( temp 3-component vector of float) -0:214 'r030' ( temp 3-component vector of float) -0:214 exp2 ( temp 3-component vector of float) +0:214 'r029' ( temp 3-component vector of float) +0:214 exp ( temp 3-component vector of float) 0:214 'inF0' ( in 3-component vector of float) 0:215 Sequence 0:215 move second child to first child ( temp 3-component vector of float) -0:215 'r031' ( temp 3-component vector of float) -0:215 face-forward ( temp 3-component vector of float) +0:215 'r030' ( temp 3-component vector of float) +0:215 exp2 ( temp 3-component vector of float) 0:215 'inF0' ( in 3-component vector of float) -0:215 'inF1' ( in 3-component vector of float) -0:215 'inF2' ( in 3-component vector of float) 0:216 Sequence -0:216 move second child to first child ( temp 3-component vector of uint) -0:216 'r032' ( temp 3-component vector of uint) +0:216 move second child to first child ( temp 3-component vector of float) +0:216 'r031' ( temp 3-component vector of float) +0:216 face-forward ( temp 3-component vector of float) +0:216 'inF0' ( in 3-component vector of float) +0:216 'inF1' ( in 3-component vector of float) +0:216 'inF2' ( in 3-component vector of float) +0:217 Sequence +0:217 move second child to first child ( temp 3-component vector of uint) +0:217 'r032' ( temp 3-component vector of uint) 0:? findMSB ( temp 3-component vector of uint) 0:? Constant: 0:? 2 (const uint) 0:? 3 (const uint) 0:? 4 (const uint) -0:217 Sequence -0:217 move second child to first child ( temp 3-component vector of uint) -0:217 'r033' ( temp 3-component vector of uint) +0:218 Sequence +0:218 move second child to first child ( temp 3-component vector of uint) +0:218 'r033' ( temp 3-component vector of uint) 0:? findLSB ( temp 3-component vector of uint) 0:? Constant: 0:? 2 (const uint) 0:? 3 (const uint) 0:? 4 (const uint) -0:218 Sequence -0:218 move second child to first child ( temp 3-component vector of float) -0:218 'r034' ( temp 3-component vector of float) -0:218 Floor ( temp 3-component vector of float) -0:218 'inF0' ( in 3-component vector of float) -0:220 Sequence -0:220 move second child to first child ( temp 3-component vector of float) -0:220 'r036' ( temp 3-component vector of float) -0:220 mod ( temp 3-component vector of float) -0:220 'inF0' ( in 3-component vector of float) -0:220 'inF1' ( in 3-component vector of float) +0:219 Sequence +0:219 move second child to first child ( temp 3-component vector of float) +0:219 'r034' ( temp 3-component vector of float) +0:219 Floor ( temp 3-component vector of float) +0:219 'inF0' ( in 3-component vector of float) 0:221 Sequence 0:221 move second child to first child ( temp 3-component vector of float) -0:221 'r037' ( temp 3-component vector of float) -0:221 Fraction ( temp 3-component vector of float) +0:221 'r036' ( temp 3-component vector of float) +0:221 mod ( temp 3-component vector of float) 0:221 'inF0' ( in 3-component vector of float) +0:221 'inF1' ( in 3-component vector of float) 0:222 Sequence 0:222 move second child to first child ( temp 3-component vector of float) -0:222 'r039' ( temp 3-component vector of float) -0:222 fwidth ( temp 3-component vector of float) +0:222 'r037' ( temp 3-component vector of float) +0:222 Fraction ( temp 3-component vector of float) 0:222 'inF0' ( in 3-component vector of float) 0:223 Sequence -0:223 move second child to first child ( temp 3-component vector of bool) -0:223 'r040' ( temp 3-component vector of bool) -0:223 isinf ( temp 3-component vector of bool) +0:223 move second child to first child ( temp 3-component vector of float) +0:223 'r039' ( temp 3-component vector of float) +0:223 fwidth ( temp 3-component vector of float) 0:223 'inF0' ( in 3-component vector of float) 0:224 Sequence 0:224 move second child to first child ( temp 3-component vector of bool) -0:224 'r041' ( temp 3-component vector of bool) -0:224 isnan ( temp 3-component vector of bool) +0:224 'r040' ( temp 3-component vector of bool) +0:224 isinf ( temp 3-component vector of bool) 0:224 'inF0' ( in 3-component vector of float) 0:225 Sequence -0:225 move second child to first child ( temp 3-component vector of float) -0:225 'r042' ( temp 3-component vector of float) -0:225 ldexp ( temp 3-component vector of float) +0:225 move second child to first child ( temp 3-component vector of bool) +0:225 'r041' ( temp 3-component vector of bool) +0:225 isnan ( temp 3-component vector of bool) 0:225 'inF0' ( in 3-component vector of float) -0:225 'inF1' ( in 3-component vector of float) 0:226 Sequence 0:226 move second child to first child ( temp 3-component vector of float) -0:226 'r039a' ( temp 3-component vector of float) -0:226 mix ( temp 3-component vector of float) +0:226 'r042' ( temp 3-component vector of float) +0:226 ldexp ( temp 3-component vector of float) 0:226 'inF0' ( in 3-component vector of float) 0:226 'inF1' ( in 3-component vector of float) -0:226 'inF2' ( in 3-component vector of float) 0:227 Sequence 0:227 move second child to first child ( temp 3-component vector of float) -0:227 'r039b' ( temp 3-component vector of float) +0:227 'r039a' ( temp 3-component vector of float) 0:227 mix ( temp 3-component vector of float) 0:227 'inF0' ( in 3-component vector of float) 0:227 'inF1' ( in 3-component vector of float) -0:227 Constant: -0:227 0.300000 +0:227 'inF2' ( in 3-component vector of float) 0:228 Sequence -0:228 move second child to first child ( temp float) -0:228 'r043' ( temp float) -0:228 length ( temp float) +0:228 move second child to first child ( temp 3-component vector of float) +0:228 'r039b' ( temp 3-component vector of float) +0:228 mix ( temp 3-component vector of float) 0:228 'inF0' ( in 3-component vector of float) +0:228 'inF1' ( in 3-component vector of float) +0:228 Constant: +0:228 0.300000 0:229 Sequence -0:229 move second child to first child ( temp 3-component vector of float) -0:229 'r044' ( temp 3-component vector of float) -0:229 log ( temp 3-component vector of float) +0:229 move second child to first child ( temp float) +0:229 'r043' ( temp float) +0:229 length ( temp float) 0:229 'inF0' ( in 3-component vector of float) 0:230 Sequence 0:230 move second child to first child ( temp 3-component vector of float) -0:230 'r045' ( temp 3-component vector of float) -0:230 vector-scale ( temp 3-component vector of float) -0:230 log2 ( temp 3-component vector of float) -0:230 'inF0' ( in 3-component vector of float) -0:230 Constant: -0:230 0.301030 +0:230 'r044' ( temp 3-component vector of float) +0:230 log ( temp 3-component vector of float) +0:230 'inF0' ( in 3-component vector of float) 0:231 Sequence 0:231 move second child to first child ( temp 3-component vector of float) -0:231 'r046' ( temp 3-component vector of float) -0:231 log2 ( temp 3-component vector of float) -0:231 'inF0' ( in 3-component vector of float) +0:231 'r045' ( temp 3-component vector of float) +0:231 vector-scale ( temp 3-component vector of float) +0:231 log2 ( temp 3-component vector of float) +0:231 'inF0' ( in 3-component vector of float) +0:231 Constant: +0:231 0.301030 0:232 Sequence 0:232 move second child to first child ( temp 3-component vector of float) -0:232 'r047' ( temp 3-component vector of float) -0:232 max ( temp 3-component vector of float) +0:232 'r046' ( temp 3-component vector of float) +0:232 log2 ( temp 3-component vector of float) 0:232 'inF0' ( in 3-component vector of float) -0:232 'inF1' ( in 3-component vector of float) 0:233 Sequence 0:233 move second child to first child ( temp 3-component vector of float) -0:233 'r048' ( temp 3-component vector of float) -0:233 min ( temp 3-component vector of float) +0:233 'r047' ( temp 3-component vector of float) +0:233 max ( temp 3-component vector of float) 0:233 'inF0' ( in 3-component vector of float) 0:233 'inF1' ( in 3-component vector of float) 0:234 Sequence 0:234 move second child to first child ( temp 3-component vector of float) -0:234 'r049' ( temp 3-component vector of float) -0:234 normalize ( temp 3-component vector of float) +0:234 'r048' ( temp 3-component vector of float) +0:234 min ( temp 3-component vector of float) 0:234 'inF0' ( in 3-component vector of float) +0:234 'inF1' ( in 3-component vector of float) 0:235 Sequence 0:235 move second child to first child ( temp 3-component vector of float) -0:235 'r050' ( temp 3-component vector of float) -0:235 pow ( temp 3-component vector of float) +0:235 'r049' ( temp 3-component vector of float) +0:235 normalize ( temp 3-component vector of float) 0:235 'inF0' ( in 3-component vector of float) -0:235 'inF1' ( in 3-component vector of float) 0:236 Sequence 0:236 move second child to first child ( temp 3-component vector of float) -0:236 'r051' ( temp 3-component vector of float) -0:236 radians ( temp 3-component vector of float) +0:236 'r050' ( temp 3-component vector of float) +0:236 pow ( temp 3-component vector of float) 0:236 'inF0' ( in 3-component vector of float) +0:236 'inF1' ( in 3-component vector of float) 0:237 Sequence 0:237 move second child to first child ( temp 3-component vector of float) -0:237 'r052' ( temp 3-component vector of float) -0:237 divide ( temp 3-component vector of float) -0:237 Constant: -0:237 1.000000 +0:237 'r051' ( temp 3-component vector of float) +0:237 radians ( temp 3-component vector of float) 0:237 'inF0' ( in 3-component vector of float) 0:238 Sequence 0:238 move second child to first child ( temp 3-component vector of float) -0:238 'r053' ( temp 3-component vector of float) -0:238 reflect ( temp 3-component vector of float) +0:238 'r052' ( temp 3-component vector of float) +0:238 divide ( temp 3-component vector of float) +0:238 Constant: +0:238 1.000000 0:238 'inF0' ( in 3-component vector of float) -0:238 'inF1' ( in 3-component vector of float) 0:239 Sequence 0:239 move second child to first child ( temp 3-component vector of float) -0:239 'r054' ( temp 3-component vector of float) -0:239 refract ( temp 3-component vector of float) +0:239 'r053' ( temp 3-component vector of float) +0:239 reflect ( temp 3-component vector of float) 0:239 'inF0' ( in 3-component vector of float) 0:239 'inF1' ( in 3-component vector of float) -0:239 Constant: -0:239 2.000000 0:240 Sequence -0:240 move second child to first child ( temp 3-component vector of uint) -0:240 'r055' ( temp 3-component vector of uint) +0:240 move second child to first child ( temp 3-component vector of float) +0:240 'r054' ( temp 3-component vector of float) +0:240 refract ( temp 3-component vector of float) +0:240 'inF0' ( in 3-component vector of float) +0:240 'inF1' ( in 3-component vector of float) +0:240 Constant: +0:240 2.000000 +0:241 Sequence +0:241 move second child to first child ( temp 3-component vector of uint) +0:241 'r055' ( temp 3-component vector of uint) 0:? bitFieldReverse ( temp 3-component vector of uint) 0:? Constant: 0:? 1 (const uint) 0:? 2 (const uint) 0:? 3 (const uint) -0:241 Sequence -0:241 move second child to first child ( temp 3-component vector of float) -0:241 'r056' ( temp 3-component vector of float) -0:241 roundEven ( temp 3-component vector of float) -0:241 'inF0' ( in 3-component vector of float) 0:242 Sequence 0:242 move second child to first child ( temp 3-component vector of float) -0:242 'r057' ( temp 3-component vector of float) -0:242 inverse sqrt ( temp 3-component vector of float) +0:242 'r056' ( temp 3-component vector of float) +0:242 roundEven ( temp 3-component vector of float) 0:242 'inF0' ( in 3-component vector of float) 0:243 Sequence 0:243 move second child to first child ( temp 3-component vector of float) -0:243 'r058' ( temp 3-component vector of float) -0:243 clamp ( temp 3-component vector of float) +0:243 'r057' ( temp 3-component vector of float) +0:243 inverse sqrt ( temp 3-component vector of float) 0:243 'inF0' ( in 3-component vector of float) -0:243 Constant: -0:243 0.000000 -0:243 Constant: -0:243 1.000000 0:244 Sequence 0:244 move second child to first child ( temp 3-component vector of float) -0:244 'r059' ( temp 3-component vector of float) -0:244 Sign ( temp 3-component vector of float) +0:244 'r058' ( temp 3-component vector of float) +0:244 clamp ( temp 3-component vector of float) 0:244 'inF0' ( in 3-component vector of float) +0:244 Constant: +0:244 0.000000 +0:244 Constant: +0:244 1.000000 0:245 Sequence 0:245 move second child to first child ( temp 3-component vector of float) -0:245 'r060' ( temp 3-component vector of float) -0:245 sine ( temp 3-component vector of float) +0:245 'r059' ( temp 3-component vector of float) +0:245 Sign ( temp 3-component vector of float) 0:245 'inF0' ( in 3-component vector of float) 0:246 Sequence 0:246 move second child to first child ( temp 3-component vector of float) -0:246 'inF1' ( in 3-component vector of float) +0:246 'r060' ( temp 3-component vector of float) 0:246 sine ( temp 3-component vector of float) 0:246 'inF0' ( in 3-component vector of float) -0:246 move second child to first child ( temp 3-component vector of float) -0:246 'inF2' ( in 3-component vector of float) -0:246 cosine ( temp 3-component vector of float) -0:246 'inF0' ( in 3-component vector of float) 0:247 Sequence 0:247 move second child to first child ( temp 3-component vector of float) -0:247 'r061' ( temp 3-component vector of float) -0:247 hyp. sine ( temp 3-component vector of float) +0:247 'inF1' ( in 3-component vector of float) +0:247 sine ( temp 3-component vector of float) +0:247 'inF0' ( in 3-component vector of float) +0:247 move second child to first child ( temp 3-component vector of float) +0:247 'inF2' ( in 3-component vector of float) +0:247 cosine ( temp 3-component vector of float) 0:247 'inF0' ( in 3-component vector of float) 0:248 Sequence 0:248 move second child to first child ( temp 3-component vector of float) -0:248 'r062' ( temp 3-component vector of float) -0:248 smoothstep ( temp 3-component vector of float) +0:248 'r061' ( temp 3-component vector of float) +0:248 hyp. sine ( temp 3-component vector of float) 0:248 'inF0' ( in 3-component vector of float) -0:248 'inF1' ( in 3-component vector of float) -0:248 'inF2' ( in 3-component vector of float) 0:249 Sequence 0:249 move second child to first child ( temp 3-component vector of float) -0:249 'r063' ( temp 3-component vector of float) -0:249 sqrt ( temp 3-component vector of float) +0:249 'r062' ( temp 3-component vector of float) +0:249 smoothstep ( temp 3-component vector of float) 0:249 'inF0' ( in 3-component vector of float) +0:249 'inF1' ( in 3-component vector of float) +0:249 'inF2' ( in 3-component vector of float) 0:250 Sequence 0:250 move second child to first child ( temp 3-component vector of float) -0:250 'r064' ( temp 3-component vector of float) -0:250 step ( temp 3-component vector of float) +0:250 'r063' ( temp 3-component vector of float) +0:250 sqrt ( temp 3-component vector of float) 0:250 'inF0' ( in 3-component vector of float) -0:250 'inF1' ( in 3-component vector of float) 0:251 Sequence 0:251 move second child to first child ( temp 3-component vector of float) -0:251 'r065' ( temp 3-component vector of float) -0:251 tangent ( temp 3-component vector of float) +0:251 'r064' ( temp 3-component vector of float) +0:251 step ( temp 3-component vector of float) 0:251 'inF0' ( in 3-component vector of float) +0:251 'inF1' ( in 3-component vector of float) 0:252 Sequence 0:252 move second child to first child ( temp 3-component vector of float) -0:252 'r066' ( temp 3-component vector of float) -0:252 hyp. tangent ( temp 3-component vector of float) +0:252 'r065' ( temp 3-component vector of float) +0:252 tangent ( temp 3-component vector of float) 0:252 'inF0' ( in 3-component vector of float) -0:254 Sequence -0:254 move second child to first child ( temp 3-component vector of float) -0:254 'r067' ( temp 3-component vector of float) -0:254 trunc ( temp 3-component vector of float) -0:254 'inF0' ( in 3-component vector of float) -0:257 Branch: Return with expression +0:253 Sequence +0:253 move second child to first child ( temp 3-component vector of float) +0:253 'r066' ( temp 3-component vector of float) +0:253 hyp. tangent ( temp 3-component vector of float) +0:253 'inF0' ( in 3-component vector of float) +0:255 Sequence +0:255 move second child to first child ( temp 3-component vector of float) +0:255 'r067' ( temp 3-component vector of float) +0:255 trunc ( temp 3-component vector of float) +0:255 'inF0' ( in 3-component vector of float) +0:258 Branch: Return with expression 0:? Constant: 0:? 1.000000 0:? 2.000000 0:? 3.000000 -0:261 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vu4;vu4; ( temp 4-component vector of float) -0:261 Function Parameters: -0:261 'inF0' ( in 4-component vector of float) -0:261 'inF1' ( in 4-component vector of float) -0:261 'inF2' ( in 4-component vector of float) -0:261 'inU0' ( in 4-component vector of uint) -0:261 'inU1' ( in 4-component vector of uint) +0:262 Function Definition: PixelShaderFunction(vf4;vf4;vf4;vu4;vu4; ( temp 4-component vector of float) +0:262 Function Parameters: +0:262 'inF0' ( in 4-component vector of float) +0:262 'inF1' ( in 4-component vector of float) +0:262 'inF2' ( in 4-component vector of float) +0:262 'inU0' ( in 4-component vector of uint) +0:262 'inU1' ( in 4-component vector of uint) 0:? Sequence -0:264 Sequence -0:264 move second child to first child ( temp bool) -0:264 'r000' ( temp bool) -0:264 all ( temp bool) -0:264 Convert float to bool ( temp 4-component vector of bool) -0:264 'inF0' ( in 4-component vector of float) 0:265 Sequence -0:265 move second child to first child ( temp 4-component vector of float) -0:265 'r001' ( temp 4-component vector of float) -0:265 Absolute value ( temp 4-component vector of float) -0:265 'inF0' ( in 4-component vector of float) +0:265 move second child to first child ( temp bool) +0:265 'r000' ( temp bool) +0:265 all ( temp bool) +0:265 Convert float to bool ( temp 4-component vector of bool) +0:265 'inF0' ( in 4-component vector of float) 0:266 Sequence 0:266 move second child to first child ( temp 4-component vector of float) -0:266 'r002' ( temp 4-component vector of float) -0:266 arc cosine ( temp 4-component vector of float) +0:266 'r001' ( temp 4-component vector of float) +0:266 Absolute value ( temp 4-component vector of float) 0:266 'inF0' ( in 4-component vector of float) 0:267 Sequence -0:267 move second child to first child ( temp bool) -0:267 'r003' ( temp bool) -0:267 any ( temp bool) -0:267 Convert float to bool ( temp 4-component vector of bool) -0:267 'inF0' ( in 4-component vector of float) +0:267 move second child to first child ( temp 4-component vector of float) +0:267 'r002' ( temp 4-component vector of float) +0:267 arc cosine ( temp 4-component vector of float) +0:267 'inF0' ( in 4-component vector of float) 0:268 Sequence -0:268 move second child to first child ( temp 4-component vector of float) -0:268 'r004' ( temp 4-component vector of float) -0:268 arc sine ( temp 4-component vector of float) -0:268 'inF0' ( in 4-component vector of float) +0:268 move second child to first child ( temp bool) +0:268 'r003' ( temp bool) +0:268 any ( temp bool) +0:268 Convert float to bool ( temp 4-component vector of bool) +0:268 'inF0' ( in 4-component vector of float) 0:269 Sequence -0:269 move second child to first child ( temp 4-component vector of int) -0:269 'r005' ( temp 4-component vector of int) -0:269 floatBitsToInt ( temp 4-component vector of int) +0:269 move second child to first child ( temp 4-component vector of float) +0:269 'r004' ( temp 4-component vector of float) +0:269 arc sine ( temp 4-component vector of float) 0:269 'inF0' ( in 4-component vector of float) 0:270 Sequence -0:270 move second child to first child ( temp 4-component vector of uint) -0:270 'r006' ( temp 4-component vector of uint) -0:270 floatBitsToUint ( temp 4-component vector of uint) +0:270 move second child to first child ( temp 4-component vector of int) +0:270 'r005' ( temp 4-component vector of int) +0:270 floatBitsToInt ( temp 4-component vector of int) 0:270 'inF0' ( in 4-component vector of float) 0:271 Sequence -0:271 move second child to first child ( temp 4-component vector of float) -0:271 'r007' ( temp 4-component vector of float) -0:271 intBitsToFloat ( temp 4-component vector of float) -0:271 'inU0' ( in 4-component vector of uint) -0:273 Sequence -0:273 move second child to first child ( temp 4-component vector of float) -0:273 'r009' ( temp 4-component vector of float) -0:273 arc tangent ( temp 4-component vector of float) -0:273 'inF0' ( in 4-component vector of float) +0:271 move second child to first child ( temp 4-component vector of uint) +0:271 'r006' ( temp 4-component vector of uint) +0:271 floatBitsToUint ( temp 4-component vector of uint) +0:271 'inF0' ( in 4-component vector of float) +0:272 Sequence +0:272 move second child to first child ( temp 4-component vector of float) +0:272 'r007' ( temp 4-component vector of float) +0:272 intBitsToFloat ( temp 4-component vector of float) +0:272 'inU0' ( in 4-component vector of uint) 0:274 Sequence 0:274 move second child to first child ( temp 4-component vector of float) -0:274 'r010' ( temp 4-component vector of float) +0:274 'r009' ( temp 4-component vector of float) 0:274 arc tangent ( temp 4-component vector of float) 0:274 'inF0' ( in 4-component vector of float) -0:274 'inF1' ( in 4-component vector of float) 0:275 Sequence 0:275 move second child to first child ( temp 4-component vector of float) -0:275 'r011' ( temp 4-component vector of float) -0:275 Ceiling ( temp 4-component vector of float) +0:275 'r010' ( temp 4-component vector of float) +0:275 arc tangent ( temp 4-component vector of float) 0:275 'inF0' ( in 4-component vector of float) +0:275 'inF1' ( in 4-component vector of float) 0:276 Sequence 0:276 move second child to first child ( temp 4-component vector of float) -0:276 'r012' ( temp 4-component vector of float) -0:276 clamp ( temp 4-component vector of float) +0:276 'r011' ( temp 4-component vector of float) +0:276 Ceiling ( temp 4-component vector of float) 0:276 'inF0' ( in 4-component vector of float) -0:276 'inF1' ( in 4-component vector of float) -0:276 'inF2' ( in 4-component vector of float) -0:277 Test condition and select ( temp void) -0:277 Condition -0:277 any ( temp bool) -0:277 Compare Less Than ( temp 4-component vector of bool) +0:277 Sequence +0:277 move second child to first child ( temp 4-component vector of float) +0:277 'r012' ( temp 4-component vector of float) +0:277 clamp ( temp 4-component vector of float) 0:277 'inF0' ( in 4-component vector of float) -0:277 Constant: -0:277 0.000000 -0:277 0.000000 -0:277 0.000000 -0:277 0.000000 -0:277 true case -0:277 Branch: Kill +0:277 'inF1' ( in 4-component vector of float) +0:277 'inF2' ( in 4-component vector of float) 0:278 Test condition and select ( temp void) 0:278 Condition 0:278 any ( temp bool) 0:278 Compare Less Than ( temp 4-component vector of bool) -0:278 'inU0' ( in 4-component vector of uint) +0:278 'inF0' ( in 4-component vector of float) 0:278 Constant: 0:278 0.000000 0:278 0.000000 @@ -4083,905 +4085,917 @@ gl_FragCoord origin is upper left 0:278 0.000000 0:278 true case 0:278 Branch: Kill -0:279 Sequence -0:279 move second child to first child ( temp 4-component vector of float) -0:279 'r013' ( temp 4-component vector of float) -0:279 cosine ( temp 4-component vector of float) -0:279 'inF0' ( in 4-component vector of float) +0:279 Test condition and select ( temp void) +0:279 Condition +0:279 any ( temp bool) +0:279 Compare Less Than ( temp 4-component vector of bool) +0:279 'inU0' ( in 4-component vector of uint) +0:279 Constant: +0:279 0.000000 +0:279 0.000000 +0:279 0.000000 +0:279 0.000000 +0:279 true case +0:279 Branch: Kill 0:280 Sequence 0:280 move second child to first child ( temp 4-component vector of float) -0:280 'r014' ( temp 4-component vector of float) -0:280 hyp. cosine ( temp 4-component vector of float) +0:280 'r013' ( temp 4-component vector of float) +0:280 cosine ( temp 4-component vector of float) 0:280 'inF0' ( in 4-component vector of float) 0:281 Sequence -0:281 move second child to first child ( temp 4-component vector of uint) -0:281 'r015' ( temp 4-component vector of uint) +0:281 move second child to first child ( temp 4-component vector of float) +0:281 'r014' ( temp 4-component vector of float) +0:281 hyp. cosine ( temp 4-component vector of float) +0:281 'inF0' ( in 4-component vector of float) +0:282 Sequence +0:282 move second child to first child ( temp 4-component vector of uint) +0:282 'r015' ( temp 4-component vector of uint) 0:? bitCount ( temp 4-component vector of uint) 0:? Constant: 0:? 7 (const uint) 0:? 3 (const uint) 0:? 5 (const uint) 0:? 2 (const uint) -0:282 Sequence -0:282 move second child to first child ( temp 4-component vector of float) -0:282 'r016' ( temp 4-component vector of float) -0:282 dPdx ( temp 4-component vector of float) -0:282 'inF0' ( in 4-component vector of float) 0:283 Sequence 0:283 move second child to first child ( temp 4-component vector of float) -0:283 'r017' ( temp 4-component vector of float) -0:283 dPdxCoarse ( temp 4-component vector of float) +0:283 'r016' ( temp 4-component vector of float) +0:283 dPdx ( temp 4-component vector of float) 0:283 'inF0' ( in 4-component vector of float) 0:284 Sequence 0:284 move second child to first child ( temp 4-component vector of float) -0:284 'r018' ( temp 4-component vector of float) -0:284 dPdxFine ( temp 4-component vector of float) +0:284 'r017' ( temp 4-component vector of float) +0:284 dPdxCoarse ( temp 4-component vector of float) 0:284 'inF0' ( in 4-component vector of float) 0:285 Sequence 0:285 move second child to first child ( temp 4-component vector of float) -0:285 'r019' ( temp 4-component vector of float) -0:285 dPdy ( temp 4-component vector of float) +0:285 'r018' ( temp 4-component vector of float) +0:285 dPdxFine ( temp 4-component vector of float) 0:285 'inF0' ( in 4-component vector of float) 0:286 Sequence 0:286 move second child to first child ( temp 4-component vector of float) -0:286 'r020' ( temp 4-component vector of float) -0:286 dPdyCoarse ( temp 4-component vector of float) +0:286 'r019' ( temp 4-component vector of float) +0:286 dPdy ( temp 4-component vector of float) 0:286 'inF0' ( in 4-component vector of float) 0:287 Sequence 0:287 move second child to first child ( temp 4-component vector of float) -0:287 'r021' ( temp 4-component vector of float) -0:287 dPdyFine ( temp 4-component vector of float) +0:287 'r020' ( temp 4-component vector of float) +0:287 dPdyCoarse ( temp 4-component vector of float) 0:287 'inF0' ( in 4-component vector of float) 0:288 Sequence 0:288 move second child to first child ( temp 4-component vector of float) -0:288 'r022' ( temp 4-component vector of float) -0:288 degrees ( temp 4-component vector of float) +0:288 'r021' ( temp 4-component vector of float) +0:288 dPdyFine ( temp 4-component vector of float) 0:288 'inF0' ( in 4-component vector of float) 0:289 Sequence -0:289 move second child to first child ( temp float) -0:289 'r023' ( temp float) -0:289 distance ( temp float) +0:289 move second child to first child ( temp 4-component vector of float) +0:289 'r022' ( temp 4-component vector of float) +0:289 degrees ( temp 4-component vector of float) 0:289 'inF0' ( in 4-component vector of float) -0:289 'inF1' ( in 4-component vector of float) 0:290 Sequence 0:290 move second child to first child ( temp float) -0:290 'r024' ( temp float) -0:290 dot-product ( temp float) +0:290 'r023' ( temp float) +0:290 distance ( temp float) 0:290 'inF0' ( in 4-component vector of float) 0:290 'inF1' ( in 4-component vector of float) 0:291 Sequence -0:291 move second child to first child ( temp 4-component vector of float) -0:291 'r025' ( temp 4-component vector of float) -0:291 Construct vec4 ( temp 4-component vector of float) -0:291 Constant: -0:291 1.000000 -0:291 component-wise multiply ( temp float) -0:291 direct index ( temp float) -0:291 'inF0' ( in 4-component vector of float) -0:291 Constant: -0:291 1 (const int) -0:291 direct index ( temp float) -0:291 'inF1' ( in 4-component vector of float) -0:291 Constant: -0:291 1 (const int) -0:291 direct index ( temp float) -0:291 'inF0' ( in 4-component vector of float) -0:291 Constant: -0:291 2 (const int) -0:291 direct index ( temp float) -0:291 'inF1' ( in 4-component vector of float) -0:291 Constant: -0:291 3 (const int) -0:295 Sequence -0:295 move second child to first child ( temp 4-component vector of float) -0:295 'r029' ( temp 4-component vector of float) -0:295 exp ( temp 4-component vector of float) -0:295 'inF0' ( in 4-component vector of float) +0:291 move second child to first child ( temp float) +0:291 'r024' ( temp float) +0:291 dot-product ( temp float) +0:291 'inF0' ( in 4-component vector of float) +0:291 'inF1' ( in 4-component vector of float) +0:292 Sequence +0:292 move second child to first child ( temp 4-component vector of float) +0:292 'r025' ( temp 4-component vector of float) +0:292 Construct vec4 ( temp 4-component vector of float) +0:292 Constant: +0:292 1.000000 +0:292 component-wise multiply ( temp float) +0:292 direct index ( temp float) +0:292 'inF0' ( in 4-component vector of float) +0:292 Constant: +0:292 1 (const int) +0:292 direct index ( temp float) +0:292 'inF1' ( in 4-component vector of float) +0:292 Constant: +0:292 1 (const int) +0:292 direct index ( temp float) +0:292 'inF0' ( in 4-component vector of float) +0:292 Constant: +0:292 2 (const int) +0:292 direct index ( temp float) +0:292 'inF1' ( in 4-component vector of float) +0:292 Constant: +0:292 3 (const int) 0:296 Sequence 0:296 move second child to first child ( temp 4-component vector of float) -0:296 'r030' ( temp 4-component vector of float) -0:296 exp2 ( temp 4-component vector of float) +0:296 'r029' ( temp 4-component vector of float) +0:296 exp ( temp 4-component vector of float) 0:296 'inF0' ( in 4-component vector of float) 0:297 Sequence 0:297 move second child to first child ( temp 4-component vector of float) -0:297 'r031' ( temp 4-component vector of float) -0:297 face-forward ( temp 4-component vector of float) +0:297 'r030' ( temp 4-component vector of float) +0:297 exp2 ( temp 4-component vector of float) 0:297 'inF0' ( in 4-component vector of float) -0:297 'inF1' ( in 4-component vector of float) -0:297 'inF2' ( in 4-component vector of float) 0:298 Sequence -0:298 move second child to first child ( temp 4-component vector of uint) -0:298 'r032' ( temp 4-component vector of uint) +0:298 move second child to first child ( temp 4-component vector of float) +0:298 'r031' ( temp 4-component vector of float) +0:298 face-forward ( temp 4-component vector of float) +0:298 'inF0' ( in 4-component vector of float) +0:298 'inF1' ( in 4-component vector of float) +0:298 'inF2' ( in 4-component vector of float) +0:299 Sequence +0:299 move second child to first child ( temp 4-component vector of uint) +0:299 'r032' ( temp 4-component vector of uint) 0:? findMSB ( temp 4-component vector of uint) 0:? Constant: 0:? 7 (const uint) 0:? 8 (const uint) 0:? 9 (const uint) 0:? 10 (const uint) -0:299 Sequence -0:299 move second child to first child ( temp 4-component vector of uint) -0:299 'r033' ( temp 4-component vector of uint) +0:300 Sequence +0:300 move second child to first child ( temp 4-component vector of uint) +0:300 'r033' ( temp 4-component vector of uint) 0:? findLSB ( temp 4-component vector of uint) 0:? Constant: 0:? 7 (const uint) 0:? 8 (const uint) 0:? 9 (const uint) 0:? 10 (const uint) -0:300 Sequence -0:300 move second child to first child ( temp 4-component vector of float) -0:300 'r034' ( temp 4-component vector of float) -0:300 Floor ( temp 4-component vector of float) -0:300 'inF0' ( in 4-component vector of float) -0:302 Sequence -0:302 move second child to first child ( temp 4-component vector of float) -0:302 'r036' ( temp 4-component vector of float) -0:302 mod ( temp 4-component vector of float) -0:302 'inF0' ( in 4-component vector of float) -0:302 'inF1' ( in 4-component vector of float) +0:301 Sequence +0:301 move second child to first child ( temp 4-component vector of float) +0:301 'r034' ( temp 4-component vector of float) +0:301 Floor ( temp 4-component vector of float) +0:301 'inF0' ( in 4-component vector of float) 0:303 Sequence 0:303 move second child to first child ( temp 4-component vector of float) -0:303 'r037' ( temp 4-component vector of float) -0:303 Fraction ( temp 4-component vector of float) +0:303 'r036' ( temp 4-component vector of float) +0:303 mod ( temp 4-component vector of float) 0:303 'inF0' ( in 4-component vector of float) +0:303 'inF1' ( in 4-component vector of float) 0:304 Sequence 0:304 move second child to first child ( temp 4-component vector of float) -0:304 'r039' ( temp 4-component vector of float) -0:304 fwidth ( temp 4-component vector of float) +0:304 'r037' ( temp 4-component vector of float) +0:304 Fraction ( temp 4-component vector of float) 0:304 'inF0' ( in 4-component vector of float) 0:305 Sequence -0:305 move second child to first child ( temp 4-component vector of bool) -0:305 'r040' ( temp 4-component vector of bool) -0:305 isinf ( temp 4-component vector of bool) +0:305 move second child to first child ( temp 4-component vector of float) +0:305 'r039' ( temp 4-component vector of float) +0:305 fwidth ( temp 4-component vector of float) 0:305 'inF0' ( in 4-component vector of float) 0:306 Sequence 0:306 move second child to first child ( temp 4-component vector of bool) -0:306 'r041' ( temp 4-component vector of bool) -0:306 isnan ( temp 4-component vector of bool) +0:306 'r040' ( temp 4-component vector of bool) +0:306 isinf ( temp 4-component vector of bool) 0:306 'inF0' ( in 4-component vector of float) 0:307 Sequence -0:307 move second child to first child ( temp 4-component vector of float) -0:307 'r042' ( temp 4-component vector of float) -0:307 ldexp ( temp 4-component vector of float) +0:307 move second child to first child ( temp 4-component vector of bool) +0:307 'r041' ( temp 4-component vector of bool) +0:307 isnan ( temp 4-component vector of bool) 0:307 'inF0' ( in 4-component vector of float) -0:307 'inF1' ( in 4-component vector of float) 0:308 Sequence 0:308 move second child to first child ( temp 4-component vector of float) -0:308 'r039a' ( temp 4-component vector of float) -0:308 mix ( temp 4-component vector of float) +0:308 'r042' ( temp 4-component vector of float) +0:308 ldexp ( temp 4-component vector of float) 0:308 'inF0' ( in 4-component vector of float) 0:308 'inF1' ( in 4-component vector of float) -0:308 'inF2' ( in 4-component vector of float) 0:309 Sequence -0:309 move second child to first child ( temp float) -0:309 'r043' ( temp float) -0:309 length ( temp float) +0:309 move second child to first child ( temp 4-component vector of float) +0:309 'r039a' ( temp 4-component vector of float) +0:309 mix ( temp 4-component vector of float) 0:309 'inF0' ( in 4-component vector of float) +0:309 'inF1' ( in 4-component vector of float) +0:309 'inF2' ( in 4-component vector of float) 0:310 Sequence -0:310 move second child to first child ( temp 4-component vector of float) -0:310 'r044' ( temp 4-component vector of float) -0:310 log ( temp 4-component vector of float) +0:310 move second child to first child ( temp float) +0:310 'r043' ( temp float) +0:310 length ( temp float) 0:310 'inF0' ( in 4-component vector of float) 0:311 Sequence 0:311 move second child to first child ( temp 4-component vector of float) -0:311 'r045' ( temp 4-component vector of float) -0:311 vector-scale ( temp 4-component vector of float) -0:311 log2 ( temp 4-component vector of float) -0:311 'inF0' ( in 4-component vector of float) -0:311 Constant: -0:311 0.301030 +0:311 'r044' ( temp 4-component vector of float) +0:311 log ( temp 4-component vector of float) +0:311 'inF0' ( in 4-component vector of float) 0:312 Sequence 0:312 move second child to first child ( temp 4-component vector of float) -0:312 'r046' ( temp 4-component vector of float) -0:312 log2 ( temp 4-component vector of float) -0:312 'inF0' ( in 4-component vector of float) +0:312 'r045' ( temp 4-component vector of float) +0:312 vector-scale ( temp 4-component vector of float) +0:312 log2 ( temp 4-component vector of float) +0:312 'inF0' ( in 4-component vector of float) +0:312 Constant: +0:312 0.301030 0:313 Sequence 0:313 move second child to first child ( temp 4-component vector of float) -0:313 'r047' ( temp 4-component vector of float) -0:313 max ( temp 4-component vector of float) +0:313 'r046' ( temp 4-component vector of float) +0:313 log2 ( temp 4-component vector of float) 0:313 'inF0' ( in 4-component vector of float) -0:313 'inF1' ( in 4-component vector of float) 0:314 Sequence 0:314 move second child to first child ( temp 4-component vector of float) -0:314 'r048' ( temp 4-component vector of float) -0:314 min ( temp 4-component vector of float) +0:314 'r047' ( temp 4-component vector of float) +0:314 max ( temp 4-component vector of float) 0:314 'inF0' ( in 4-component vector of float) 0:314 'inF1' ( in 4-component vector of float) 0:315 Sequence 0:315 move second child to first child ( temp 4-component vector of float) -0:315 'r049' ( temp 4-component vector of float) -0:315 normalize ( temp 4-component vector of float) +0:315 'r048' ( temp 4-component vector of float) +0:315 min ( temp 4-component vector of float) 0:315 'inF0' ( in 4-component vector of float) +0:315 'inF1' ( in 4-component vector of float) 0:316 Sequence 0:316 move second child to first child ( temp 4-component vector of float) -0:316 'r050' ( temp 4-component vector of float) -0:316 pow ( temp 4-component vector of float) +0:316 'r049' ( temp 4-component vector of float) +0:316 normalize ( temp 4-component vector of float) 0:316 'inF0' ( in 4-component vector of float) -0:316 'inF1' ( in 4-component vector of float) 0:317 Sequence 0:317 move second child to first child ( temp 4-component vector of float) -0:317 'r051' ( temp 4-component vector of float) -0:317 radians ( temp 4-component vector of float) +0:317 'r050' ( temp 4-component vector of float) +0:317 pow ( temp 4-component vector of float) 0:317 'inF0' ( in 4-component vector of float) +0:317 'inF1' ( in 4-component vector of float) 0:318 Sequence 0:318 move second child to first child ( temp 4-component vector of float) -0:318 'r052' ( temp 4-component vector of float) -0:318 divide ( temp 4-component vector of float) -0:318 Constant: -0:318 1.000000 +0:318 'r051' ( temp 4-component vector of float) +0:318 radians ( temp 4-component vector of float) 0:318 'inF0' ( in 4-component vector of float) 0:319 Sequence 0:319 move second child to first child ( temp 4-component vector of float) -0:319 'r053' ( temp 4-component vector of float) -0:319 reflect ( temp 4-component vector of float) +0:319 'r052' ( temp 4-component vector of float) +0:319 divide ( temp 4-component vector of float) +0:319 Constant: +0:319 1.000000 0:319 'inF0' ( in 4-component vector of float) -0:319 'inF1' ( in 4-component vector of float) 0:320 Sequence 0:320 move second child to first child ( temp 4-component vector of float) -0:320 'r054' ( temp 4-component vector of float) -0:320 refract ( temp 4-component vector of float) +0:320 'r053' ( temp 4-component vector of float) +0:320 reflect ( temp 4-component vector of float) 0:320 'inF0' ( in 4-component vector of float) 0:320 'inF1' ( in 4-component vector of float) -0:320 Constant: -0:320 2.000000 0:321 Sequence -0:321 move second child to first child ( temp 4-component vector of uint) -0:321 'r055' ( temp 4-component vector of uint) +0:321 move second child to first child ( temp 4-component vector of float) +0:321 'r054' ( temp 4-component vector of float) +0:321 refract ( temp 4-component vector of float) +0:321 'inF0' ( in 4-component vector of float) +0:321 'inF1' ( in 4-component vector of float) +0:321 Constant: +0:321 2.000000 +0:322 Sequence +0:322 move second child to first child ( temp 4-component vector of uint) +0:322 'r055' ( temp 4-component vector of uint) 0:? bitFieldReverse ( temp 4-component vector of uint) 0:? Constant: 0:? 1 (const uint) 0:? 2 (const uint) 0:? 3 (const uint) 0:? 4 (const uint) -0:322 Sequence -0:322 move second child to first child ( temp 4-component vector of float) -0:322 'r056' ( temp 4-component vector of float) -0:322 roundEven ( temp 4-component vector of float) -0:322 'inF0' ( in 4-component vector of float) 0:323 Sequence 0:323 move second child to first child ( temp 4-component vector of float) -0:323 'r057' ( temp 4-component vector of float) -0:323 inverse sqrt ( temp 4-component vector of float) +0:323 'r056' ( temp 4-component vector of float) +0:323 roundEven ( temp 4-component vector of float) 0:323 'inF0' ( in 4-component vector of float) 0:324 Sequence 0:324 move second child to first child ( temp 4-component vector of float) -0:324 'r058' ( temp 4-component vector of float) -0:324 clamp ( temp 4-component vector of float) +0:324 'r057' ( temp 4-component vector of float) +0:324 inverse sqrt ( temp 4-component vector of float) 0:324 'inF0' ( in 4-component vector of float) -0:324 Constant: -0:324 0.000000 -0:324 Constant: -0:324 1.000000 0:325 Sequence 0:325 move second child to first child ( temp 4-component vector of float) -0:325 'r059' ( temp 4-component vector of float) -0:325 Sign ( temp 4-component vector of float) +0:325 'r058' ( temp 4-component vector of float) +0:325 clamp ( temp 4-component vector of float) 0:325 'inF0' ( in 4-component vector of float) +0:325 Constant: +0:325 0.000000 +0:325 Constant: +0:325 1.000000 0:326 Sequence 0:326 move second child to first child ( temp 4-component vector of float) -0:326 'r060' ( temp 4-component vector of float) -0:326 sine ( temp 4-component vector of float) +0:326 'r059' ( temp 4-component vector of float) +0:326 Sign ( temp 4-component vector of float) 0:326 'inF0' ( in 4-component vector of float) 0:327 Sequence 0:327 move second child to first child ( temp 4-component vector of float) -0:327 'inF1' ( in 4-component vector of float) +0:327 'r060' ( temp 4-component vector of float) 0:327 sine ( temp 4-component vector of float) 0:327 'inF0' ( in 4-component vector of float) -0:327 move second child to first child ( temp 4-component vector of float) -0:327 'inF2' ( in 4-component vector of float) -0:327 cosine ( temp 4-component vector of float) -0:327 'inF0' ( in 4-component vector of float) 0:328 Sequence 0:328 move second child to first child ( temp 4-component vector of float) -0:328 'r061' ( temp 4-component vector of float) -0:328 hyp. sine ( temp 4-component vector of float) +0:328 'inF1' ( in 4-component vector of float) +0:328 sine ( temp 4-component vector of float) +0:328 'inF0' ( in 4-component vector of float) +0:328 move second child to first child ( temp 4-component vector of float) +0:328 'inF2' ( in 4-component vector of float) +0:328 cosine ( temp 4-component vector of float) 0:328 'inF0' ( in 4-component vector of float) 0:329 Sequence 0:329 move second child to first child ( temp 4-component vector of float) -0:329 'r062' ( temp 4-component vector of float) -0:329 smoothstep ( temp 4-component vector of float) +0:329 'r061' ( temp 4-component vector of float) +0:329 hyp. sine ( temp 4-component vector of float) 0:329 'inF0' ( in 4-component vector of float) -0:329 'inF1' ( in 4-component vector of float) -0:329 'inF2' ( in 4-component vector of float) 0:330 Sequence 0:330 move second child to first child ( temp 4-component vector of float) -0:330 'r063' ( temp 4-component vector of float) -0:330 sqrt ( temp 4-component vector of float) +0:330 'r062' ( temp 4-component vector of float) +0:330 smoothstep ( temp 4-component vector of float) 0:330 'inF0' ( in 4-component vector of float) +0:330 'inF1' ( in 4-component vector of float) +0:330 'inF2' ( in 4-component vector of float) 0:331 Sequence 0:331 move second child to first child ( temp 4-component vector of float) -0:331 'r064' ( temp 4-component vector of float) -0:331 step ( temp 4-component vector of float) +0:331 'r063' ( temp 4-component vector of float) +0:331 sqrt ( temp 4-component vector of float) 0:331 'inF0' ( in 4-component vector of float) -0:331 'inF1' ( in 4-component vector of float) 0:332 Sequence 0:332 move second child to first child ( temp 4-component vector of float) -0:332 'r065' ( temp 4-component vector of float) -0:332 tangent ( temp 4-component vector of float) +0:332 'r064' ( temp 4-component vector of float) +0:332 step ( temp 4-component vector of float) 0:332 'inF0' ( in 4-component vector of float) +0:332 'inF1' ( in 4-component vector of float) 0:333 Sequence 0:333 move second child to first child ( temp 4-component vector of float) -0:333 'r066' ( temp 4-component vector of float) -0:333 hyp. tangent ( temp 4-component vector of float) +0:333 'r065' ( temp 4-component vector of float) +0:333 tangent ( temp 4-component vector of float) 0:333 'inF0' ( in 4-component vector of float) -0:335 Sequence -0:335 move second child to first child ( temp 4-component vector of float) -0:335 'r067' ( temp 4-component vector of float) -0:335 trunc ( temp 4-component vector of float) -0:335 'inF0' ( in 4-component vector of float) -0:338 Branch: Return with expression +0:334 Sequence +0:334 move second child to first child ( temp 4-component vector of float) +0:334 'r066' ( temp 4-component vector of float) +0:334 hyp. tangent ( temp 4-component vector of float) +0:334 'inF0' ( in 4-component vector of float) +0:336 Sequence +0:336 move second child to first child ( temp 4-component vector of float) +0:336 'r067' ( temp 4-component vector of float) +0:336 trunc ( temp 4-component vector of float) +0:336 'inF0' ( in 4-component vector of float) +0:339 Branch: Return with expression 0:? Constant: 0:? 1.000000 0:? 2.000000 0:? 3.000000 0:? 4.000000 -0:401 Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; ( temp 2X2 matrix of float) -0:401 Function Parameters: -0:401 'inF0' ( in 2X2 matrix of float) -0:401 'inF1' ( in 2X2 matrix of float) -0:401 'inF2' ( in 2X2 matrix of float) +0:402 Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; ( temp 2X2 matrix of float) +0:402 Function Parameters: +0:402 'inF0' ( in 2X2 matrix of float) +0:402 'inF1' ( in 2X2 matrix of float) +0:402 'inF2' ( in 2X2 matrix of float) 0:? Sequence -0:403 Sequence -0:403 move second child to first child ( temp bool) -0:403 'r000' ( temp bool) -0:403 all ( temp bool) -0:403 Convert float to bool ( temp 2X2 matrix of bool) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r001' ( temp 2X2 matrix of float) -0:403 Absolute value ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 arc cosine ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp bool) -0:403 'r003' ( temp bool) -0:403 any ( temp bool) -0:403 Convert float to bool ( temp 2X2 matrix of bool) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r004' ( temp 2X2 matrix of float) -0:403 arc sine ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r005' ( temp 2X2 matrix of float) -0:403 arc tangent ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r006' ( temp 2X2 matrix of float) -0:403 arc tangent ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 'inF1' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r007' ( temp 2X2 matrix of float) -0:403 Ceiling ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Test condition and select ( temp void) -0:403 Condition -0:403 any ( temp bool) -0:403 Compare Less Than ( temp 2X2 matrix of bool) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Constant: -0:403 0.000000 -0:403 0.000000 -0:403 0.000000 -0:403 0.000000 -0:403 true case -0:403 Branch: Kill -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r008' ( temp 2X2 matrix of float) -0:403 clamp ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 'inF1' ( in 2X2 matrix of float) -0:403 'inF2' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r009' ( temp 2X2 matrix of float) -0:403 cosine ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r010' ( temp 2X2 matrix of float) -0:403 hyp. cosine ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r011' ( temp 2X2 matrix of float) -0:403 dPdx ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r012' ( temp 2X2 matrix of float) -0:403 dPdxCoarse ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r013' ( temp 2X2 matrix of float) -0:403 dPdxFine ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r014' ( temp 2X2 matrix of float) -0:403 dPdy ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r015' ( temp 2X2 matrix of float) -0:403 dPdyCoarse ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r016' ( temp 2X2 matrix of float) -0:403 dPdyFine ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r017' ( temp 2X2 matrix of float) -0:403 degrees ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp float) -0:403 'r018' ( temp float) -0:403 determinant ( temp float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r019' ( temp 2X2 matrix of float) -0:403 exp ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'R020' ( temp 2X2 matrix of float) -0:403 exp2 ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r021' ( temp 2X2 matrix of float) -0:403 Floor ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r022' ( temp 2X2 matrix of float) -0:403 mod ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 'inF1' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r023' ( temp 2X2 matrix of float) -0:403 Fraction ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r025' ( temp 2X2 matrix of float) -0:403 fwidth ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r026' ( temp 2X2 matrix of float) -0:403 ldexp ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 'inF1' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r026a' ( temp 2X2 matrix of float) -0:403 mix ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 'inF1' ( in 2X2 matrix of float) -0:403 'inF2' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r027' ( temp 2X2 matrix of float) -0:403 log ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r028' ( temp 2X2 matrix of float) -0:403 matrix-scale ( temp 2X2 matrix of float) -0:403 log2 ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Constant: -0:403 0.301030 -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r029' ( temp 2X2 matrix of float) -0:403 log2 ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r030' ( temp 2X2 matrix of float) -0:403 max ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 'inF1' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r031' ( temp 2X2 matrix of float) -0:403 min ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 'inF1' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r032' ( temp 2X2 matrix of float) -0:403 pow ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 'inF1' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r033' ( temp 2X2 matrix of float) -0:403 radians ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r034' ( temp 2X2 matrix of float) -0:403 roundEven ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r035' ( temp 2X2 matrix of float) -0:403 inverse sqrt ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r036' ( temp 2X2 matrix of float) -0:403 clamp ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Constant: -0:403 0.000000 -0:403 Constant: -0:403 1.000000 -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r037' ( temp 2X2 matrix of float) -0:403 Sign ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r038' ( temp 2X2 matrix of float) -0:403 sine ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'inF1' ( in 2X2 matrix of float) -0:403 sine ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'inF2' ( in 2X2 matrix of float) -0:403 cosine ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r039' ( temp 2X2 matrix of float) -0:403 hyp. sine ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r049' ( temp 2X2 matrix of float) -0:403 smoothstep ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 'inF1' ( in 2X2 matrix of float) -0:403 'inF2' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r041' ( temp 2X2 matrix of float) -0:403 sqrt ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r042' ( temp 2X2 matrix of float) -0:403 step ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 'inF1' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r043' ( temp 2X2 matrix of float) -0:403 tangent ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r044' ( temp 2X2 matrix of float) -0:403 hyp. tangent ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 transpose ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:403 Sequence -0:403 move second child to first child ( temp 2X2 matrix of float) -0:403 'r046' ( temp 2X2 matrix of float) -0:403 trunc ( temp 2X2 matrix of float) -0:403 'inF0' ( in 2X2 matrix of float) -0:406 Branch: Return with expression +0:404 Sequence +0:404 move second child to first child ( temp bool) +0:404 'r000' ( temp bool) +0:404 all ( temp bool) +0:404 Convert float to bool ( temp 2X2 matrix of bool) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r001' ( temp 2X2 matrix of float) +0:404 Absolute value ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 arc cosine ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp bool) +0:404 'r003' ( temp bool) +0:404 any ( temp bool) +0:404 Convert float to bool ( temp 2X2 matrix of bool) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r004' ( temp 2X2 matrix of float) +0:404 arc sine ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r005' ( temp 2X2 matrix of float) +0:404 arc tangent ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r006' ( temp 2X2 matrix of float) +0:404 arc tangent ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 'inF1' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r007' ( temp 2X2 matrix of float) +0:404 Ceiling ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Test condition and select ( temp void) +0:404 Condition +0:404 any ( temp bool) +0:404 Compare Less Than ( temp 2X2 matrix of bool) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Constant: +0:404 0.000000 +0:404 0.000000 +0:404 0.000000 +0:404 0.000000 +0:404 true case +0:404 Branch: Kill +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r008' ( temp 2X2 matrix of float) +0:404 clamp ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 'inF1' ( in 2X2 matrix of float) +0:404 'inF2' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r009' ( temp 2X2 matrix of float) +0:404 cosine ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r010' ( temp 2X2 matrix of float) +0:404 hyp. cosine ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r011' ( temp 2X2 matrix of float) +0:404 dPdx ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r012' ( temp 2X2 matrix of float) +0:404 dPdxCoarse ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r013' ( temp 2X2 matrix of float) +0:404 dPdxFine ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r014' ( temp 2X2 matrix of float) +0:404 dPdy ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r015' ( temp 2X2 matrix of float) +0:404 dPdyCoarse ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r016' ( temp 2X2 matrix of float) +0:404 dPdyFine ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r017' ( temp 2X2 matrix of float) +0:404 degrees ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp float) +0:404 'r018' ( temp float) +0:404 determinant ( temp float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r019' ( temp 2X2 matrix of float) +0:404 exp ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'R020' ( temp 2X2 matrix of float) +0:404 exp2 ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r021' ( temp 2X2 matrix of float) +0:404 Floor ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r022' ( temp 2X2 matrix of float) +0:404 mod ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 'inF1' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r023' ( temp 2X2 matrix of float) +0:404 Fraction ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r025' ( temp 2X2 matrix of float) +0:404 fwidth ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r026' ( temp 2X2 matrix of float) +0:404 ldexp ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 'inF1' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r026a' ( temp 2X2 matrix of float) +0:404 mix ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 'inF1' ( in 2X2 matrix of float) +0:404 'inF2' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r027' ( temp 2X2 matrix of float) +0:404 log ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r028' ( temp 2X2 matrix of float) +0:404 matrix-scale ( temp 2X2 matrix of float) +0:404 log2 ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Constant: +0:404 0.301030 +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r029' ( temp 2X2 matrix of float) +0:404 log2 ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r030' ( temp 2X2 matrix of float) +0:404 max ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 'inF1' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r031' ( temp 2X2 matrix of float) +0:404 min ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 'inF1' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r032' ( temp 2X2 matrix of float) +0:404 pow ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 'inF1' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r033' ( temp 2X2 matrix of float) +0:404 radians ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r034' ( temp 2X2 matrix of float) +0:404 roundEven ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r035' ( temp 2X2 matrix of float) +0:404 inverse sqrt ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r036' ( temp 2X2 matrix of float) +0:404 clamp ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Constant: +0:404 0.000000 +0:404 Constant: +0:404 1.000000 +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r037' ( temp 2X2 matrix of float) +0:404 Sign ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r038' ( temp 2X2 matrix of float) +0:404 sine ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'inF1' ( in 2X2 matrix of float) +0:404 sine ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'inF2' ( in 2X2 matrix of float) +0:404 cosine ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r039' ( temp 2X2 matrix of float) +0:404 hyp. sine ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r049' ( temp 2X2 matrix of float) +0:404 smoothstep ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 'inF1' ( in 2X2 matrix of float) +0:404 'inF2' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r041' ( temp 2X2 matrix of float) +0:404 sqrt ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r042' ( temp 2X2 matrix of float) +0:404 step ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 'inF1' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r043' ( temp 2X2 matrix of float) +0:404 tangent ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r044' ( temp 2X2 matrix of float) +0:404 hyp. tangent ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 transpose ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:404 Sequence +0:404 move second child to first child ( temp 2X2 matrix of float) +0:404 'r046' ( temp 2X2 matrix of float) +0:404 trunc ( temp 2X2 matrix of float) +0:404 'inF0' ( in 2X2 matrix of float) +0:407 Branch: Return with expression 0:? Constant: 0:? 2.000000 0:? 2.000000 0:? 2.000000 0:? 2.000000 -0:410 Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; ( temp 3X3 matrix of float) -0:410 Function Parameters: -0:410 'inF0' ( in 3X3 matrix of float) -0:410 'inF1' ( in 3X3 matrix of float) -0:410 'inF2' ( in 3X3 matrix of float) +0:411 Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; ( temp 3X3 matrix of float) +0:411 Function Parameters: +0:411 'inF0' ( in 3X3 matrix of float) +0:411 'inF1' ( in 3X3 matrix of float) +0:411 'inF2' ( in 3X3 matrix of float) 0:? Sequence -0:412 Sequence -0:412 move second child to first child ( temp bool) -0:412 'r000' ( temp bool) -0:412 all ( temp bool) -0:412 Convert float to bool ( temp 3X3 matrix of bool) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r001' ( temp 3X3 matrix of float) -0:412 Absolute value ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 arc cosine ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp bool) -0:412 'r003' ( temp bool) -0:412 any ( temp bool) -0:412 Convert float to bool ( temp 3X3 matrix of bool) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r004' ( temp 3X3 matrix of float) -0:412 arc sine ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r005' ( temp 3X3 matrix of float) -0:412 arc tangent ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r006' ( temp 3X3 matrix of float) -0:412 arc tangent ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 'inF1' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r007' ( temp 3X3 matrix of float) -0:412 Ceiling ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Test condition and select ( temp void) -0:412 Condition -0:412 any ( temp bool) -0:412 Compare Less Than ( temp 3X3 matrix of bool) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Constant: -0:412 0.000000 -0:412 0.000000 -0:412 0.000000 -0:412 0.000000 -0:412 0.000000 -0:412 0.000000 -0:412 0.000000 -0:412 0.000000 -0:412 0.000000 -0:412 true case -0:412 Branch: Kill -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r008' ( temp 3X3 matrix of float) -0:412 clamp ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 'inF1' ( in 3X3 matrix of float) -0:412 'inF2' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r009' ( temp 3X3 matrix of float) -0:412 cosine ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r010' ( temp 3X3 matrix of float) -0:412 hyp. cosine ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r011' ( temp 3X3 matrix of float) -0:412 dPdx ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r012' ( temp 3X3 matrix of float) -0:412 dPdxCoarse ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r013' ( temp 3X3 matrix of float) -0:412 dPdxFine ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r014' ( temp 3X3 matrix of float) -0:412 dPdy ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r015' ( temp 3X3 matrix of float) -0:412 dPdyCoarse ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r016' ( temp 3X3 matrix of float) -0:412 dPdyFine ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r017' ( temp 3X3 matrix of float) -0:412 degrees ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp float) -0:412 'r018' ( temp float) -0:412 determinant ( temp float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r019' ( temp 3X3 matrix of float) -0:412 exp ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'R020' ( temp 3X3 matrix of float) -0:412 exp2 ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r021' ( temp 3X3 matrix of float) -0:412 Floor ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r022' ( temp 3X3 matrix of float) -0:412 mod ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 'inF1' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r023' ( temp 3X3 matrix of float) -0:412 Fraction ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r025' ( temp 3X3 matrix of float) -0:412 fwidth ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r026' ( temp 3X3 matrix of float) -0:412 ldexp ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 'inF1' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r026a' ( temp 3X3 matrix of float) -0:412 mix ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 'inF1' ( in 3X3 matrix of float) -0:412 'inF2' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r027' ( temp 3X3 matrix of float) -0:412 log ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r028' ( temp 3X3 matrix of float) -0:412 matrix-scale ( temp 3X3 matrix of float) -0:412 log2 ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Constant: -0:412 0.301030 -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r029' ( temp 3X3 matrix of float) -0:412 log2 ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r030' ( temp 3X3 matrix of float) -0:412 max ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 'inF1' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r031' ( temp 3X3 matrix of float) -0:412 min ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 'inF1' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r032' ( temp 3X3 matrix of float) -0:412 pow ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 'inF1' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r033' ( temp 3X3 matrix of float) -0:412 radians ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r034' ( temp 3X3 matrix of float) -0:412 roundEven ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r035' ( temp 3X3 matrix of float) -0:412 inverse sqrt ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r036' ( temp 3X3 matrix of float) -0:412 clamp ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Constant: -0:412 0.000000 -0:412 Constant: -0:412 1.000000 -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r037' ( temp 3X3 matrix of float) -0:412 Sign ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r038' ( temp 3X3 matrix of float) -0:412 sine ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'inF1' ( in 3X3 matrix of float) -0:412 sine ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'inF2' ( in 3X3 matrix of float) -0:412 cosine ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r039' ( temp 3X3 matrix of float) -0:412 hyp. sine ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r049' ( temp 3X3 matrix of float) -0:412 smoothstep ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 'inF1' ( in 3X3 matrix of float) -0:412 'inF2' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r041' ( temp 3X3 matrix of float) -0:412 sqrt ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r042' ( temp 3X3 matrix of float) -0:412 step ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 'inF1' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r043' ( temp 3X3 matrix of float) -0:412 tangent ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r044' ( temp 3X3 matrix of float) -0:412 hyp. tangent ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 transpose ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:412 Sequence -0:412 move second child to first child ( temp 3X3 matrix of float) -0:412 'r046' ( temp 3X3 matrix of float) -0:412 trunc ( temp 3X3 matrix of float) -0:412 'inF0' ( in 3X3 matrix of float) -0:415 Branch: Return with expression +0:413 Sequence +0:413 move second child to first child ( temp bool) +0:413 'r000' ( temp bool) +0:413 all ( temp bool) +0:413 Convert float to bool ( temp 3X3 matrix of bool) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r001' ( temp 3X3 matrix of float) +0:413 Absolute value ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 arc cosine ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp bool) +0:413 'r003' ( temp bool) +0:413 any ( temp bool) +0:413 Convert float to bool ( temp 3X3 matrix of bool) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r004' ( temp 3X3 matrix of float) +0:413 arc sine ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r005' ( temp 3X3 matrix of float) +0:413 arc tangent ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r006' ( temp 3X3 matrix of float) +0:413 arc tangent ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 'inF1' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r007' ( temp 3X3 matrix of float) +0:413 Ceiling ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Test condition and select ( temp void) +0:413 Condition +0:413 any ( temp bool) +0:413 Compare Less Than ( temp 3X3 matrix of bool) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Constant: +0:413 0.000000 +0:413 0.000000 +0:413 0.000000 +0:413 0.000000 +0:413 0.000000 +0:413 0.000000 +0:413 0.000000 +0:413 0.000000 +0:413 0.000000 +0:413 true case +0:413 Branch: Kill +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r008' ( temp 3X3 matrix of float) +0:413 clamp ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 'inF1' ( in 3X3 matrix of float) +0:413 'inF2' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r009' ( temp 3X3 matrix of float) +0:413 cosine ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r010' ( temp 3X3 matrix of float) +0:413 hyp. cosine ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r011' ( temp 3X3 matrix of float) +0:413 dPdx ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r012' ( temp 3X3 matrix of float) +0:413 dPdxCoarse ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r013' ( temp 3X3 matrix of float) +0:413 dPdxFine ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r014' ( temp 3X3 matrix of float) +0:413 dPdy ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r015' ( temp 3X3 matrix of float) +0:413 dPdyCoarse ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r016' ( temp 3X3 matrix of float) +0:413 dPdyFine ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r017' ( temp 3X3 matrix of float) +0:413 degrees ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp float) +0:413 'r018' ( temp float) +0:413 determinant ( temp float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r019' ( temp 3X3 matrix of float) +0:413 exp ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'R020' ( temp 3X3 matrix of float) +0:413 exp2 ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r021' ( temp 3X3 matrix of float) +0:413 Floor ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r022' ( temp 3X3 matrix of float) +0:413 mod ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 'inF1' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r023' ( temp 3X3 matrix of float) +0:413 Fraction ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r025' ( temp 3X3 matrix of float) +0:413 fwidth ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r026' ( temp 3X3 matrix of float) +0:413 ldexp ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 'inF1' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r026a' ( temp 3X3 matrix of float) +0:413 mix ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 'inF1' ( in 3X3 matrix of float) +0:413 'inF2' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r027' ( temp 3X3 matrix of float) +0:413 log ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r028' ( temp 3X3 matrix of float) +0:413 matrix-scale ( temp 3X3 matrix of float) +0:413 log2 ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Constant: +0:413 0.301030 +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r029' ( temp 3X3 matrix of float) +0:413 log2 ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r030' ( temp 3X3 matrix of float) +0:413 max ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 'inF1' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r031' ( temp 3X3 matrix of float) +0:413 min ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 'inF1' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r032' ( temp 3X3 matrix of float) +0:413 pow ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 'inF1' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r033' ( temp 3X3 matrix of float) +0:413 radians ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r034' ( temp 3X3 matrix of float) +0:413 roundEven ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r035' ( temp 3X3 matrix of float) +0:413 inverse sqrt ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r036' ( temp 3X3 matrix of float) +0:413 clamp ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Constant: +0:413 0.000000 +0:413 Constant: +0:413 1.000000 +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r037' ( temp 3X3 matrix of float) +0:413 Sign ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r038' ( temp 3X3 matrix of float) +0:413 sine ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'inF1' ( in 3X3 matrix of float) +0:413 sine ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'inF2' ( in 3X3 matrix of float) +0:413 cosine ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r039' ( temp 3X3 matrix of float) +0:413 hyp. sine ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r049' ( temp 3X3 matrix of float) +0:413 smoothstep ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 'inF1' ( in 3X3 matrix of float) +0:413 'inF2' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r041' ( temp 3X3 matrix of float) +0:413 sqrt ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r042' ( temp 3X3 matrix of float) +0:413 step ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 'inF1' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r043' ( temp 3X3 matrix of float) +0:413 tangent ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r044' ( temp 3X3 matrix of float) +0:413 hyp. tangent ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 transpose ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:413 Sequence +0:413 move second child to first child ( temp 3X3 matrix of float) +0:413 'r046' ( temp 3X3 matrix of float) +0:413 trunc ( temp 3X3 matrix of float) +0:413 'inF0' ( in 3X3 matrix of float) +0:416 Branch: Return with expression 0:? Constant: 0:? 3.000000 0:? 3.000000 @@ -4992,297 +5006,297 @@ gl_FragCoord origin is upper left 0:? 3.000000 0:? 3.000000 0:? 3.000000 -0:419 Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; ( temp 4X4 matrix of float) -0:419 Function Parameters: -0:419 'inF0' ( in 4X4 matrix of float) -0:419 'inF1' ( in 4X4 matrix of float) -0:419 'inF2' ( in 4X4 matrix of float) +0:420 Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; ( temp 4X4 matrix of float) +0:420 Function Parameters: +0:420 'inF0' ( in 4X4 matrix of float) +0:420 'inF1' ( in 4X4 matrix of float) +0:420 'inF2' ( in 4X4 matrix of float) 0:? Sequence -0:421 Sequence -0:421 move second child to first child ( temp bool) -0:421 'r000' ( temp bool) -0:421 all ( temp bool) -0:421 Convert float to bool ( temp 4X4 matrix of bool) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r001' ( temp 4X4 matrix of float) -0:421 Absolute value ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 arc cosine ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp bool) -0:421 'r003' ( temp bool) -0:421 any ( temp bool) -0:421 Convert float to bool ( temp 4X4 matrix of bool) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r004' ( temp 4X4 matrix of float) -0:421 arc sine ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r005' ( temp 4X4 matrix of float) -0:421 arc tangent ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r006' ( temp 4X4 matrix of float) -0:421 arc tangent ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 'inF1' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r007' ( temp 4X4 matrix of float) -0:421 Ceiling ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Test condition and select ( temp void) -0:421 Condition -0:421 any ( temp bool) -0:421 Compare Less Than ( temp 4X4 matrix of bool) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Constant: -0:421 0.000000 -0:421 0.000000 -0:421 0.000000 -0:421 0.000000 -0:421 0.000000 -0:421 0.000000 -0:421 0.000000 -0:421 0.000000 -0:421 0.000000 -0:421 0.000000 -0:421 0.000000 -0:421 0.000000 -0:421 0.000000 -0:421 0.000000 -0:421 0.000000 -0:421 0.000000 -0:421 true case -0:421 Branch: Kill -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r008' ( temp 4X4 matrix of float) -0:421 clamp ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 'inF1' ( in 4X4 matrix of float) -0:421 'inF2' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r009' ( temp 4X4 matrix of float) -0:421 cosine ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r010' ( temp 4X4 matrix of float) -0:421 hyp. cosine ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r011' ( temp 4X4 matrix of float) -0:421 dPdx ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r012' ( temp 4X4 matrix of float) -0:421 dPdxCoarse ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r013' ( temp 4X4 matrix of float) -0:421 dPdxFine ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r014' ( temp 4X4 matrix of float) -0:421 dPdy ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r015' ( temp 4X4 matrix of float) -0:421 dPdyCoarse ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r016' ( temp 4X4 matrix of float) -0:421 dPdyFine ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r017' ( temp 4X4 matrix of float) -0:421 degrees ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp float) -0:421 'r018' ( temp float) -0:421 determinant ( temp float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r019' ( temp 4X4 matrix of float) -0:421 exp ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'R020' ( temp 4X4 matrix of float) -0:421 exp2 ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r021' ( temp 4X4 matrix of float) -0:421 Floor ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r022' ( temp 4X4 matrix of float) -0:421 mod ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 'inF1' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r023' ( temp 4X4 matrix of float) -0:421 Fraction ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r025' ( temp 4X4 matrix of float) -0:421 fwidth ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r026' ( temp 4X4 matrix of float) -0:421 ldexp ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 'inF1' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r026a' ( temp 4X4 matrix of float) -0:421 mix ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 'inF1' ( in 4X4 matrix of float) -0:421 'inF2' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r027' ( temp 4X4 matrix of float) -0:421 log ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r028' ( temp 4X4 matrix of float) -0:421 matrix-scale ( temp 4X4 matrix of float) -0:421 log2 ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Constant: -0:421 0.301030 -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r029' ( temp 4X4 matrix of float) -0:421 log2 ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r030' ( temp 4X4 matrix of float) -0:421 max ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 'inF1' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r031' ( temp 4X4 matrix of float) -0:421 min ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 'inF1' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r032' ( temp 4X4 matrix of float) -0:421 pow ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 'inF1' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r033' ( temp 4X4 matrix of float) -0:421 radians ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r034' ( temp 4X4 matrix of float) -0:421 roundEven ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r035' ( temp 4X4 matrix of float) -0:421 inverse sqrt ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r036' ( temp 4X4 matrix of float) -0:421 clamp ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Constant: -0:421 0.000000 -0:421 Constant: -0:421 1.000000 -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r037' ( temp 4X4 matrix of float) -0:421 Sign ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r038' ( temp 4X4 matrix of float) -0:421 sine ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'inF1' ( in 4X4 matrix of float) -0:421 sine ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'inF2' ( in 4X4 matrix of float) -0:421 cosine ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r039' ( temp 4X4 matrix of float) -0:421 hyp. sine ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r049' ( temp 4X4 matrix of float) -0:421 smoothstep ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 'inF1' ( in 4X4 matrix of float) -0:421 'inF2' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r041' ( temp 4X4 matrix of float) -0:421 sqrt ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r042' ( temp 4X4 matrix of float) -0:421 step ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 'inF1' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r043' ( temp 4X4 matrix of float) -0:421 tangent ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r044' ( temp 4X4 matrix of float) -0:421 hyp. tangent ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 transpose ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:421 Sequence -0:421 move second child to first child ( temp 4X4 matrix of float) -0:421 'r046' ( temp 4X4 matrix of float) -0:421 trunc ( temp 4X4 matrix of float) -0:421 'inF0' ( in 4X4 matrix of float) -0:424 Branch: Return with expression +0:422 Sequence +0:422 move second child to first child ( temp bool) +0:422 'r000' ( temp bool) +0:422 all ( temp bool) +0:422 Convert float to bool ( temp 4X4 matrix of bool) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r001' ( temp 4X4 matrix of float) +0:422 Absolute value ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 arc cosine ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp bool) +0:422 'r003' ( temp bool) +0:422 any ( temp bool) +0:422 Convert float to bool ( temp 4X4 matrix of bool) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r004' ( temp 4X4 matrix of float) +0:422 arc sine ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r005' ( temp 4X4 matrix of float) +0:422 arc tangent ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r006' ( temp 4X4 matrix of float) +0:422 arc tangent ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 'inF1' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r007' ( temp 4X4 matrix of float) +0:422 Ceiling ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Test condition and select ( temp void) +0:422 Condition +0:422 any ( temp bool) +0:422 Compare Less Than ( temp 4X4 matrix of bool) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Constant: +0:422 0.000000 +0:422 0.000000 +0:422 0.000000 +0:422 0.000000 +0:422 0.000000 +0:422 0.000000 +0:422 0.000000 +0:422 0.000000 +0:422 0.000000 +0:422 0.000000 +0:422 0.000000 +0:422 0.000000 +0:422 0.000000 +0:422 0.000000 +0:422 0.000000 +0:422 0.000000 +0:422 true case +0:422 Branch: Kill +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r008' ( temp 4X4 matrix of float) +0:422 clamp ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 'inF1' ( in 4X4 matrix of float) +0:422 'inF2' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r009' ( temp 4X4 matrix of float) +0:422 cosine ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r010' ( temp 4X4 matrix of float) +0:422 hyp. cosine ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r011' ( temp 4X4 matrix of float) +0:422 dPdx ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r012' ( temp 4X4 matrix of float) +0:422 dPdxCoarse ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r013' ( temp 4X4 matrix of float) +0:422 dPdxFine ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r014' ( temp 4X4 matrix of float) +0:422 dPdy ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r015' ( temp 4X4 matrix of float) +0:422 dPdyCoarse ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r016' ( temp 4X4 matrix of float) +0:422 dPdyFine ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r017' ( temp 4X4 matrix of float) +0:422 degrees ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp float) +0:422 'r018' ( temp float) +0:422 determinant ( temp float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r019' ( temp 4X4 matrix of float) +0:422 exp ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'R020' ( temp 4X4 matrix of float) +0:422 exp2 ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r021' ( temp 4X4 matrix of float) +0:422 Floor ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r022' ( temp 4X4 matrix of float) +0:422 mod ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 'inF1' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r023' ( temp 4X4 matrix of float) +0:422 Fraction ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r025' ( temp 4X4 matrix of float) +0:422 fwidth ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r026' ( temp 4X4 matrix of float) +0:422 ldexp ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 'inF1' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r026a' ( temp 4X4 matrix of float) +0:422 mix ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 'inF1' ( in 4X4 matrix of float) +0:422 'inF2' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r027' ( temp 4X4 matrix of float) +0:422 log ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r028' ( temp 4X4 matrix of float) +0:422 matrix-scale ( temp 4X4 matrix of float) +0:422 log2 ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Constant: +0:422 0.301030 +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r029' ( temp 4X4 matrix of float) +0:422 log2 ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r030' ( temp 4X4 matrix of float) +0:422 max ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 'inF1' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r031' ( temp 4X4 matrix of float) +0:422 min ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 'inF1' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r032' ( temp 4X4 matrix of float) +0:422 pow ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 'inF1' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r033' ( temp 4X4 matrix of float) +0:422 radians ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r034' ( temp 4X4 matrix of float) +0:422 roundEven ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r035' ( temp 4X4 matrix of float) +0:422 inverse sqrt ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r036' ( temp 4X4 matrix of float) +0:422 clamp ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Constant: +0:422 0.000000 +0:422 Constant: +0:422 1.000000 +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r037' ( temp 4X4 matrix of float) +0:422 Sign ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r038' ( temp 4X4 matrix of float) +0:422 sine ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'inF1' ( in 4X4 matrix of float) +0:422 sine ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'inF2' ( in 4X4 matrix of float) +0:422 cosine ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r039' ( temp 4X4 matrix of float) +0:422 hyp. sine ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r049' ( temp 4X4 matrix of float) +0:422 smoothstep ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 'inF1' ( in 4X4 matrix of float) +0:422 'inF2' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r041' ( temp 4X4 matrix of float) +0:422 sqrt ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r042' ( temp 4X4 matrix of float) +0:422 step ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 'inF1' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r043' ( temp 4X4 matrix of float) +0:422 tangent ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r044' ( temp 4X4 matrix of float) +0:422 hyp. tangent ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 transpose ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:422 Sequence +0:422 move second child to first child ( temp 4X4 matrix of float) +0:422 'r046' ( temp 4X4 matrix of float) +0:422 trunc ( temp 4X4 matrix of float) +0:422 'inF0' ( in 4X4 matrix of float) +0:425 Branch: Return with expression 0:? Constant: 0:? 4.000000 0:? 4.000000 @@ -5300,334 +5314,334 @@ gl_FragCoord origin is upper left 0:? 4.000000 0:? 4.000000 0:? 4.000000 -0:442 Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; ( temp void) -0:442 Function Parameters: -0:442 'inF0' ( in float) -0:442 'inF1' ( in float) -0:442 'inFV0' ( in 2-component vector of float) -0:442 'inFV1' ( in 2-component vector of float) -0:442 'inFM0' ( in 2X2 matrix of float) -0:442 'inFM1' ( in 2X2 matrix of float) +0:443 Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; ( temp void) +0:443 Function Parameters: +0:443 'inF0' ( in float) +0:443 'inF1' ( in float) +0:443 'inFV0' ( in 2-component vector of float) +0:443 'inFV1' ( in 2-component vector of float) +0:443 'inFM0' ( in 2X2 matrix of float) +0:443 'inFM1' ( in 2X2 matrix of float) 0:? Sequence -0:443 Sequence -0:443 move second child to first child ( temp float) -0:443 'r0' ( temp float) -0:443 component-wise multiply ( temp float) -0:443 'inF1' ( in float) -0:443 'inF0' ( in float) -0:443 Sequence -0:443 move second child to first child ( temp 2-component vector of float) -0:443 'r1' ( temp 2-component vector of float) -0:443 vector-scale ( temp 2-component vector of float) -0:443 'inF0' ( in float) -0:443 'inFV0' ( in 2-component vector of float) -0:443 Sequence -0:443 move second child to first child ( temp 2-component vector of float) -0:443 'r2' ( temp 2-component vector of float) -0:443 vector-scale ( temp 2-component vector of float) -0:443 'inFV0' ( in 2-component vector of float) -0:443 'inF0' ( in float) -0:443 Sequence -0:443 move second child to first child ( temp float) -0:443 'r3' ( temp float) -0:443 dot-product ( temp float) -0:443 'inFV0' ( in 2-component vector of float) -0:443 'inFV1' ( in 2-component vector of float) -0:443 Sequence -0:443 move second child to first child ( temp 2-component vector of float) -0:443 'r4' ( temp 2-component vector of float) -0:443 vector-times-matrix ( temp 2-component vector of float) -0:443 'inFV0' ( in 2-component vector of float) -0:443 'inFM0' ( in 2X2 matrix of float) -0:443 Sequence -0:443 move second child to first child ( temp 2-component vector of float) -0:443 'r5' ( temp 2-component vector of float) -0:443 matrix-times-vector ( temp 2-component vector of float) -0:443 'inFM0' ( in 2X2 matrix of float) -0:443 'inFV0' ( in 2-component vector of float) -0:443 Sequence -0:443 move second child to first child ( temp 2X2 matrix of float) -0:443 'r6' ( temp 2X2 matrix of float) -0:443 matrix-scale ( temp 2X2 matrix of float) -0:443 'inF0' ( in float) -0:443 'inFM0' ( in 2X2 matrix of float) -0:443 Sequence -0:443 move second child to first child ( temp 2X2 matrix of float) -0:443 'r7' ( temp 2X2 matrix of float) -0:443 matrix-scale ( temp 2X2 matrix of float) -0:443 'inFM0' ( in 2X2 matrix of float) -0:443 'inF0' ( in float) -0:443 Sequence -0:443 move second child to first child ( temp 2X2 matrix of float) -0:443 'r8' ( temp 2X2 matrix of float) -0:443 matrix-multiply ( temp 2X2 matrix of float) -0:443 'inFM1' ( in 2X2 matrix of float) -0:443 'inFM0' ( in 2X2 matrix of float) -0:449 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; ( temp void) -0:449 Function Parameters: -0:449 'inF0' ( in float) -0:449 'inF1' ( in float) -0:449 'inFV0' ( in 3-component vector of float) -0:449 'inFV1' ( in 3-component vector of float) -0:449 'inFM0' ( in 3X3 matrix of float) -0:449 'inFM1' ( in 3X3 matrix of float) +0:444 Sequence +0:444 move second child to first child ( temp float) +0:444 'r0' ( temp float) +0:444 component-wise multiply ( temp float) +0:444 'inF1' ( in float) +0:444 'inF0' ( in float) +0:444 Sequence +0:444 move second child to first child ( temp 2-component vector of float) +0:444 'r1' ( temp 2-component vector of float) +0:444 vector-scale ( temp 2-component vector of float) +0:444 'inF0' ( in float) +0:444 'inFV0' ( in 2-component vector of float) +0:444 Sequence +0:444 move second child to first child ( temp 2-component vector of float) +0:444 'r2' ( temp 2-component vector of float) +0:444 vector-scale ( temp 2-component vector of float) +0:444 'inFV0' ( in 2-component vector of float) +0:444 'inF0' ( in float) +0:444 Sequence +0:444 move second child to first child ( temp float) +0:444 'r3' ( temp float) +0:444 dot-product ( temp float) +0:444 'inFV0' ( in 2-component vector of float) +0:444 'inFV1' ( in 2-component vector of float) +0:444 Sequence +0:444 move second child to first child ( temp 2-component vector of float) +0:444 'r4' ( temp 2-component vector of float) +0:444 vector-times-matrix ( temp 2-component vector of float) +0:444 'inFV0' ( in 2-component vector of float) +0:444 'inFM0' ( in 2X2 matrix of float) +0:444 Sequence +0:444 move second child to first child ( temp 2-component vector of float) +0:444 'r5' ( temp 2-component vector of float) +0:444 matrix-times-vector ( temp 2-component vector of float) +0:444 'inFM0' ( in 2X2 matrix of float) +0:444 'inFV0' ( in 2-component vector of float) +0:444 Sequence +0:444 move second child to first child ( temp 2X2 matrix of float) +0:444 'r6' ( temp 2X2 matrix of float) +0:444 matrix-scale ( temp 2X2 matrix of float) +0:444 'inF0' ( in float) +0:444 'inFM0' ( in 2X2 matrix of float) +0:444 Sequence +0:444 move second child to first child ( temp 2X2 matrix of float) +0:444 'r7' ( temp 2X2 matrix of float) +0:444 matrix-scale ( temp 2X2 matrix of float) +0:444 'inFM0' ( in 2X2 matrix of float) +0:444 'inF0' ( in float) +0:444 Sequence +0:444 move second child to first child ( temp 2X2 matrix of float) +0:444 'r8' ( temp 2X2 matrix of float) +0:444 matrix-multiply ( temp 2X2 matrix of float) +0:444 'inFM1' ( in 2X2 matrix of float) +0:444 'inFM0' ( in 2X2 matrix of float) +0:450 Function Definition: TestGenMul3(f1;f1;vf3;vf3;mf33;mf33; ( temp void) +0:450 Function Parameters: +0:450 'inF0' ( in float) +0:450 'inF1' ( in float) +0:450 'inFV0' ( in 3-component vector of float) +0:450 'inFV1' ( in 3-component vector of float) +0:450 'inFM0' ( in 3X3 matrix of float) +0:450 'inFM1' ( in 3X3 matrix of float) 0:? Sequence -0:450 Sequence -0:450 move second child to first child ( temp float) -0:450 'r0' ( temp float) -0:450 component-wise multiply ( temp float) -0:450 'inF1' ( in float) -0:450 'inF0' ( in float) -0:450 Sequence -0:450 move second child to first child ( temp 3-component vector of float) -0:450 'r1' ( temp 3-component vector of float) -0:450 vector-scale ( temp 3-component vector of float) -0:450 'inF0' ( in float) -0:450 'inFV0' ( in 3-component vector of float) -0:450 Sequence -0:450 move second child to first child ( temp 3-component vector of float) -0:450 'r2' ( temp 3-component vector of float) -0:450 vector-scale ( temp 3-component vector of float) -0:450 'inFV0' ( in 3-component vector of float) -0:450 'inF0' ( in float) -0:450 Sequence -0:450 move second child to first child ( temp float) -0:450 'r3' ( temp float) -0:450 dot-product ( temp float) -0:450 'inFV0' ( in 3-component vector of float) -0:450 'inFV1' ( in 3-component vector of float) -0:450 Sequence -0:450 move second child to first child ( temp 3-component vector of float) -0:450 'r4' ( temp 3-component vector of float) -0:450 vector-times-matrix ( temp 3-component vector of float) -0:450 'inFV0' ( in 3-component vector of float) -0:450 'inFM0' ( in 3X3 matrix of float) -0:450 Sequence -0:450 move second child to first child ( temp 3-component vector of float) -0:450 'r5' ( temp 3-component vector of float) -0:450 matrix-times-vector ( temp 3-component vector of float) -0:450 'inFM0' ( in 3X3 matrix of float) -0:450 'inFV0' ( in 3-component vector of float) -0:450 Sequence -0:450 move second child to first child ( temp 3X3 matrix of float) -0:450 'r6' ( temp 3X3 matrix of float) -0:450 matrix-scale ( temp 3X3 matrix of float) -0:450 'inF0' ( in float) -0:450 'inFM0' ( in 3X3 matrix of float) -0:450 Sequence -0:450 move second child to first child ( temp 3X3 matrix of float) -0:450 'r7' ( temp 3X3 matrix of float) -0:450 matrix-scale ( temp 3X3 matrix of float) -0:450 'inFM0' ( in 3X3 matrix of float) -0:450 'inF0' ( in float) -0:450 Sequence -0:450 move second child to first child ( temp 3X3 matrix of float) -0:450 'r8' ( temp 3X3 matrix of float) -0:450 matrix-multiply ( temp 3X3 matrix of float) -0:450 'inFM1' ( in 3X3 matrix of float) -0:450 'inFM0' ( in 3X3 matrix of float) -0:456 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; ( temp void) -0:456 Function Parameters: -0:456 'inF0' ( in float) -0:456 'inF1' ( in float) -0:456 'inFV0' ( in 4-component vector of float) -0:456 'inFV1' ( in 4-component vector of float) -0:456 'inFM0' ( in 4X4 matrix of float) -0:456 'inFM1' ( in 4X4 matrix of float) +0:451 Sequence +0:451 move second child to first child ( temp float) +0:451 'r0' ( temp float) +0:451 component-wise multiply ( temp float) +0:451 'inF1' ( in float) +0:451 'inF0' ( in float) +0:451 Sequence +0:451 move second child to first child ( temp 3-component vector of float) +0:451 'r1' ( temp 3-component vector of float) +0:451 vector-scale ( temp 3-component vector of float) +0:451 'inF0' ( in float) +0:451 'inFV0' ( in 3-component vector of float) +0:451 Sequence +0:451 move second child to first child ( temp 3-component vector of float) +0:451 'r2' ( temp 3-component vector of float) +0:451 vector-scale ( temp 3-component vector of float) +0:451 'inFV0' ( in 3-component vector of float) +0:451 'inF0' ( in float) +0:451 Sequence +0:451 move second child to first child ( temp float) +0:451 'r3' ( temp float) +0:451 dot-product ( temp float) +0:451 'inFV0' ( in 3-component vector of float) +0:451 'inFV1' ( in 3-component vector of float) +0:451 Sequence +0:451 move second child to first child ( temp 3-component vector of float) +0:451 'r4' ( temp 3-component vector of float) +0:451 vector-times-matrix ( temp 3-component vector of float) +0:451 'inFV0' ( in 3-component vector of float) +0:451 'inFM0' ( in 3X3 matrix of float) +0:451 Sequence +0:451 move second child to first child ( temp 3-component vector of float) +0:451 'r5' ( temp 3-component vector of float) +0:451 matrix-times-vector ( temp 3-component vector of float) +0:451 'inFM0' ( in 3X3 matrix of float) +0:451 'inFV0' ( in 3-component vector of float) +0:451 Sequence +0:451 move second child to first child ( temp 3X3 matrix of float) +0:451 'r6' ( temp 3X3 matrix of float) +0:451 matrix-scale ( temp 3X3 matrix of float) +0:451 'inF0' ( in float) +0:451 'inFM0' ( in 3X3 matrix of float) +0:451 Sequence +0:451 move second child to first child ( temp 3X3 matrix of float) +0:451 'r7' ( temp 3X3 matrix of float) +0:451 matrix-scale ( temp 3X3 matrix of float) +0:451 'inFM0' ( in 3X3 matrix of float) +0:451 'inF0' ( in float) +0:451 Sequence +0:451 move second child to first child ( temp 3X3 matrix of float) +0:451 'r8' ( temp 3X3 matrix of float) +0:451 matrix-multiply ( temp 3X3 matrix of float) +0:451 'inFM1' ( in 3X3 matrix of float) +0:451 'inFM0' ( in 3X3 matrix of float) +0:457 Function Definition: TestGenMul4(f1;f1;vf4;vf4;mf44;mf44; ( temp void) +0:457 Function Parameters: +0:457 'inF0' ( in float) +0:457 'inF1' ( in float) +0:457 'inFV0' ( in 4-component vector of float) +0:457 'inFV1' ( in 4-component vector of float) +0:457 'inFM0' ( in 4X4 matrix of float) +0:457 'inFM1' ( in 4X4 matrix of float) 0:? Sequence -0:457 Sequence -0:457 move second child to first child ( temp float) -0:457 'r0' ( temp float) -0:457 component-wise multiply ( temp float) -0:457 'inF1' ( in float) -0:457 'inF0' ( in float) -0:457 Sequence -0:457 move second child to first child ( temp 4-component vector of float) -0:457 'r1' ( temp 4-component vector of float) -0:457 vector-scale ( temp 4-component vector of float) -0:457 'inF0' ( in float) -0:457 'inFV0' ( in 4-component vector of float) -0:457 Sequence -0:457 move second child to first child ( temp 4-component vector of float) -0:457 'r2' ( temp 4-component vector of float) -0:457 vector-scale ( temp 4-component vector of float) -0:457 'inFV0' ( in 4-component vector of float) -0:457 'inF0' ( in float) -0:457 Sequence -0:457 move second child to first child ( temp float) -0:457 'r3' ( temp float) -0:457 dot-product ( temp float) -0:457 'inFV0' ( in 4-component vector of float) -0:457 'inFV1' ( in 4-component vector of float) -0:457 Sequence -0:457 move second child to first child ( temp 4-component vector of float) -0:457 'r4' ( temp 4-component vector of float) -0:457 vector-times-matrix ( temp 4-component vector of float) -0:457 'inFV0' ( in 4-component vector of float) -0:457 'inFM0' ( in 4X4 matrix of float) -0:457 Sequence -0:457 move second child to first child ( temp 4-component vector of float) -0:457 'r5' ( temp 4-component vector of float) -0:457 matrix-times-vector ( temp 4-component vector of float) -0:457 'inFM0' ( in 4X4 matrix of float) -0:457 'inFV0' ( in 4-component vector of float) -0:457 Sequence -0:457 move second child to first child ( temp 4X4 matrix of float) -0:457 'r6' ( temp 4X4 matrix of float) -0:457 matrix-scale ( temp 4X4 matrix of float) -0:457 'inF0' ( in float) -0:457 'inFM0' ( in 4X4 matrix of float) -0:457 Sequence -0:457 move second child to first child ( temp 4X4 matrix of float) -0:457 'r7' ( temp 4X4 matrix of float) -0:457 matrix-scale ( temp 4X4 matrix of float) -0:457 'inFM0' ( in 4X4 matrix of float) -0:457 'inF0' ( in float) -0:457 Sequence -0:457 move second child to first child ( temp 4X4 matrix of float) -0:457 'r8' ( temp 4X4 matrix of float) -0:457 matrix-multiply ( temp 4X4 matrix of float) -0:457 'inFM1' ( in 4X4 matrix of float) -0:457 'inFM0' ( in 4X4 matrix of float) -0:466 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; ( temp void) -0:466 Function Parameters: -0:466 'inF0' ( in float) -0:466 'inF1' ( in float) -0:466 'inFV2' ( in 2-component vector of float) -0:466 'inFV3' ( in 3-component vector of float) -0:466 'inFM2x3' ( in 2X3 matrix of float) -0:466 'inFM3x2' ( in 3X2 matrix of float) -0:466 'inFM3x3' ( in 3X3 matrix of float) -0:466 'inFM3x4' ( in 3X4 matrix of float) -0:466 'inFM2x4' ( in 2X4 matrix of float) +0:458 Sequence +0:458 move second child to first child ( temp float) +0:458 'r0' ( temp float) +0:458 component-wise multiply ( temp float) +0:458 'inF1' ( in float) +0:458 'inF0' ( in float) +0:458 Sequence +0:458 move second child to first child ( temp 4-component vector of float) +0:458 'r1' ( temp 4-component vector of float) +0:458 vector-scale ( temp 4-component vector of float) +0:458 'inF0' ( in float) +0:458 'inFV0' ( in 4-component vector of float) +0:458 Sequence +0:458 move second child to first child ( temp 4-component vector of float) +0:458 'r2' ( temp 4-component vector of float) +0:458 vector-scale ( temp 4-component vector of float) +0:458 'inFV0' ( in 4-component vector of float) +0:458 'inF0' ( in float) +0:458 Sequence +0:458 move second child to first child ( temp float) +0:458 'r3' ( temp float) +0:458 dot-product ( temp float) +0:458 'inFV0' ( in 4-component vector of float) +0:458 'inFV1' ( in 4-component vector of float) +0:458 Sequence +0:458 move second child to first child ( temp 4-component vector of float) +0:458 'r4' ( temp 4-component vector of float) +0:458 vector-times-matrix ( temp 4-component vector of float) +0:458 'inFV0' ( in 4-component vector of float) +0:458 'inFM0' ( in 4X4 matrix of float) +0:458 Sequence +0:458 move second child to first child ( temp 4-component vector of float) +0:458 'r5' ( temp 4-component vector of float) +0:458 matrix-times-vector ( temp 4-component vector of float) +0:458 'inFM0' ( in 4X4 matrix of float) +0:458 'inFV0' ( in 4-component vector of float) +0:458 Sequence +0:458 move second child to first child ( temp 4X4 matrix of float) +0:458 'r6' ( temp 4X4 matrix of float) +0:458 matrix-scale ( temp 4X4 matrix of float) +0:458 'inF0' ( in float) +0:458 'inFM0' ( in 4X4 matrix of float) +0:458 Sequence +0:458 move second child to first child ( temp 4X4 matrix of float) +0:458 'r7' ( temp 4X4 matrix of float) +0:458 matrix-scale ( temp 4X4 matrix of float) +0:458 'inFM0' ( in 4X4 matrix of float) +0:458 'inF0' ( in float) +0:458 Sequence +0:458 move second child to first child ( temp 4X4 matrix of float) +0:458 'r8' ( temp 4X4 matrix of float) +0:458 matrix-multiply ( temp 4X4 matrix of float) +0:458 'inFM1' ( in 4X4 matrix of float) +0:458 'inFM0' ( in 4X4 matrix of float) +0:467 Function Definition: TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24; ( temp void) +0:467 Function Parameters: +0:467 'inF0' ( in float) +0:467 'inF1' ( in float) +0:467 'inFV2' ( in 2-component vector of float) +0:467 'inFV3' ( in 3-component vector of float) +0:467 'inFM2x3' ( in 2X3 matrix of float) +0:467 'inFM3x2' ( in 3X2 matrix of float) +0:467 'inFM3x3' ( in 3X3 matrix of float) +0:467 'inFM3x4' ( in 3X4 matrix of float) +0:467 'inFM2x4' ( in 2X4 matrix of float) 0:? Sequence -0:467 Sequence -0:467 move second child to first child ( temp float) -0:467 'r00' ( temp float) -0:467 component-wise multiply ( temp float) -0:467 'inF1' ( in float) -0:467 'inF0' ( in float) 0:468 Sequence -0:468 move second child to first child ( temp 2-component vector of float) -0:468 'r01' ( temp 2-component vector of float) -0:468 vector-scale ( temp 2-component vector of float) +0:468 move second child to first child ( temp float) +0:468 'r00' ( temp float) +0:468 component-wise multiply ( temp float) +0:468 'inF1' ( in float) 0:468 'inF0' ( in float) -0:468 'inFV2' ( in 2-component vector of float) 0:469 Sequence -0:469 move second child to first child ( temp 3-component vector of float) -0:469 'r02' ( temp 3-component vector of float) -0:469 vector-scale ( temp 3-component vector of float) +0:469 move second child to first child ( temp 2-component vector of float) +0:469 'r01' ( temp 2-component vector of float) +0:469 vector-scale ( temp 2-component vector of float) 0:469 'inF0' ( in float) -0:469 'inFV3' ( in 3-component vector of float) +0:469 'inFV2' ( in 2-component vector of float) 0:470 Sequence -0:470 move second child to first child ( temp 2-component vector of float) -0:470 'r03' ( temp 2-component vector of float) -0:470 vector-scale ( temp 2-component vector of float) -0:470 'inFV2' ( in 2-component vector of float) +0:470 move second child to first child ( temp 3-component vector of float) +0:470 'r02' ( temp 3-component vector of float) +0:470 vector-scale ( temp 3-component vector of float) 0:470 'inF0' ( in float) +0:470 'inFV3' ( in 3-component vector of float) 0:471 Sequence -0:471 move second child to first child ( temp 3-component vector of float) -0:471 'r04' ( temp 3-component vector of float) -0:471 vector-scale ( temp 3-component vector of float) -0:471 'inFV3' ( in 3-component vector of float) +0:471 move second child to first child ( temp 2-component vector of float) +0:471 'r03' ( temp 2-component vector of float) +0:471 vector-scale ( temp 2-component vector of float) +0:471 'inFV2' ( in 2-component vector of float) 0:471 'inF0' ( in float) 0:472 Sequence -0:472 move second child to first child ( temp float) -0:472 'r05' ( temp float) -0:472 dot-product ( temp float) -0:472 'inFV2' ( in 2-component vector of float) -0:472 'inFV2' ( in 2-component vector of float) +0:472 move second child to first child ( temp 3-component vector of float) +0:472 'r04' ( temp 3-component vector of float) +0:472 vector-scale ( temp 3-component vector of float) +0:472 'inFV3' ( in 3-component vector of float) +0:472 'inF0' ( in float) 0:473 Sequence 0:473 move second child to first child ( temp float) -0:473 'r06' ( temp float) +0:473 'r05' ( temp float) 0:473 dot-product ( temp float) -0:473 'inFV3' ( in 3-component vector of float) -0:473 'inFV3' ( in 3-component vector of float) +0:473 'inFV2' ( in 2-component vector of float) +0:473 'inFV2' ( in 2-component vector of float) 0:474 Sequence -0:474 move second child to first child ( temp 3-component vector of float) -0:474 'r07' ( temp 3-component vector of float) -0:474 matrix-times-vector ( temp 3-component vector of float) -0:474 'inFM2x3' ( in 2X3 matrix of float) -0:474 'inFV2' ( in 2-component vector of float) +0:474 move second child to first child ( temp float) +0:474 'r06' ( temp float) +0:474 dot-product ( temp float) +0:474 'inFV3' ( in 3-component vector of float) +0:474 'inFV3' ( in 3-component vector of float) 0:475 Sequence -0:475 move second child to first child ( temp 2-component vector of float) -0:475 'r08' ( temp 2-component vector of float) -0:475 matrix-times-vector ( temp 2-component vector of float) -0:475 'inFM3x2' ( in 3X2 matrix of float) -0:475 'inFV3' ( in 3-component vector of float) +0:475 move second child to first child ( temp 3-component vector of float) +0:475 'r07' ( temp 3-component vector of float) +0:475 matrix-times-vector ( temp 3-component vector of float) +0:475 'inFM2x3' ( in 2X3 matrix of float) +0:475 'inFV2' ( in 2-component vector of float) 0:476 Sequence 0:476 move second child to first child ( temp 2-component vector of float) -0:476 'r09' ( temp 2-component vector of float) -0:476 vector-times-matrix ( temp 2-component vector of float) +0:476 'r08' ( temp 2-component vector of float) +0:476 matrix-times-vector ( temp 2-component vector of float) +0:476 'inFM3x2' ( in 3X2 matrix of float) 0:476 'inFV3' ( in 3-component vector of float) -0:476 'inFM2x3' ( in 2X3 matrix of float) 0:477 Sequence -0:477 move second child to first child ( temp 3-component vector of float) -0:477 'r10' ( temp 3-component vector of float) -0:477 vector-times-matrix ( temp 3-component vector of float) -0:477 'inFV2' ( in 2-component vector of float) -0:477 'inFM3x2' ( in 3X2 matrix of float) +0:477 move second child to first child ( temp 2-component vector of float) +0:477 'r09' ( temp 2-component vector of float) +0:477 vector-times-matrix ( temp 2-component vector of float) +0:477 'inFV3' ( in 3-component vector of float) +0:477 'inFM2x3' ( in 2X3 matrix of float) 0:478 Sequence -0:478 move second child to first child ( temp 2X3 matrix of float) -0:478 'r11' ( temp 2X3 matrix of float) -0:478 matrix-scale ( temp 2X3 matrix of float) -0:478 'inF0' ( in float) -0:478 'inFM2x3' ( in 2X3 matrix of float) +0:478 move second child to first child ( temp 3-component vector of float) +0:478 'r10' ( temp 3-component vector of float) +0:478 vector-times-matrix ( temp 3-component vector of float) +0:478 'inFV2' ( in 2-component vector of float) +0:478 'inFM3x2' ( in 3X2 matrix of float) 0:479 Sequence -0:479 move second child to first child ( temp 3X2 matrix of float) -0:479 'r12' ( temp 3X2 matrix of float) -0:479 matrix-scale ( temp 3X2 matrix of float) +0:479 move second child to first child ( temp 2X3 matrix of float) +0:479 'r11' ( temp 2X3 matrix of float) +0:479 matrix-scale ( temp 2X3 matrix of float) 0:479 'inF0' ( in float) -0:479 'inFM3x2' ( in 3X2 matrix of float) +0:479 'inFM2x3' ( in 2X3 matrix of float) 0:480 Sequence -0:480 move second child to first child ( temp 2X2 matrix of float) -0:480 'r13' ( temp 2X2 matrix of float) -0:480 matrix-multiply ( temp 2X2 matrix of float) +0:480 move second child to first child ( temp 3X2 matrix of float) +0:480 'r12' ( temp 3X2 matrix of float) +0:480 matrix-scale ( temp 3X2 matrix of float) +0:480 'inF0' ( in float) 0:480 'inFM3x2' ( in 3X2 matrix of float) -0:480 'inFM2x3' ( in 2X3 matrix of float) 0:481 Sequence -0:481 move second child to first child ( temp 2X3 matrix of float) -0:481 'r14' ( temp 2X3 matrix of float) -0:481 matrix-multiply ( temp 2X3 matrix of float) -0:481 'inFM3x3' ( in 3X3 matrix of float) +0:481 move second child to first child ( temp 2X2 matrix of float) +0:481 'r13' ( temp 2X2 matrix of float) +0:481 matrix-multiply ( temp 2X2 matrix of float) +0:481 'inFM3x2' ( in 3X2 matrix of float) 0:481 'inFM2x3' ( in 2X3 matrix of float) 0:482 Sequence -0:482 move second child to first child ( temp 2X4 matrix of float) -0:482 'r15' ( temp 2X4 matrix of float) -0:482 matrix-multiply ( temp 2X4 matrix of float) -0:482 'inFM3x4' ( in 3X4 matrix of float) +0:482 move second child to first child ( temp 2X3 matrix of float) +0:482 'r14' ( temp 2X3 matrix of float) +0:482 matrix-multiply ( temp 2X3 matrix of float) +0:482 'inFM3x3' ( in 3X3 matrix of float) 0:482 'inFM2x3' ( in 2X3 matrix of float) 0:483 Sequence -0:483 move second child to first child ( temp 3X4 matrix of float) -0:483 'r16' ( temp 3X4 matrix of float) -0:483 matrix-multiply ( temp 3X4 matrix of float) -0:483 'inFM2x4' ( in 2X4 matrix of float) -0:483 'inFM3x2' ( in 3X2 matrix of float) -0:489 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) -0:489 Function Parameters: +0:483 move second child to first child ( temp 2X4 matrix of float) +0:483 'r15' ( temp 2X4 matrix of float) +0:483 matrix-multiply ( temp 2X4 matrix of float) +0:483 'inFM3x4' ( in 3X4 matrix of float) +0:483 'inFM2x3' ( in 2X3 matrix of float) +0:484 Sequence +0:484 move second child to first child ( temp 3X4 matrix of float) +0:484 'r16' ( temp 3X4 matrix of float) +0:484 matrix-multiply ( temp 3X4 matrix of float) +0:484 'inFM2x4' ( in 2X4 matrix of float) +0:484 'inFM3x2' ( in 3X2 matrix of float) +0:490 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) +0:490 Function Parameters: 0:? Sequence -0:491 move second child to first child ( temp 4-component vector of float) -0:491 color: direct index for structure ( temp 4-component vector of float) -0:491 'ps_output' ( temp structure{ temp 4-component vector of float color}) -0:491 Constant: -0:491 0 (const int) -0:491 Constant: -0:491 1.000000 -0:491 1.000000 -0:491 1.000000 -0:491 1.000000 -0:492 Branch: Return with expression -0:492 'ps_output' ( temp structure{ temp 4-component vector of float color}) -0:489 Function Definition: main( ( temp void) -0:489 Function Parameters: +0:492 move second child to first child ( temp 4-component vector of float) +0:492 color: direct index for structure ( temp 4-component vector of float) +0:492 'ps_output' ( temp structure{ temp 4-component vector of float color}) +0:492 Constant: +0:492 0 (const int) +0:492 Constant: +0:492 1.000000 +0:492 1.000000 +0:492 1.000000 +0:492 1.000000 +0:493 Branch: Return with expression +0:493 'ps_output' ( temp structure{ temp 4-component vector of float color}) +0:490 Function Definition: main( ( temp void) +0:490 Function Parameters: 0:? Sequence -0:489 Sequence -0:489 move second child to first child ( temp 4-component vector of float) +0:490 Sequence +0:490 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) -0:489 color: direct index for structure ( temp 4-component vector of float) -0:489 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) -0:489 Constant: -0:489 0 (const int) +0:490 color: direct index for structure ( temp 4-component vector of float) +0:490 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) +0:490 Constant: +0:490 0 (const int) 0:? Linker Objects 0:? 'gs_ua' ( shared uint) 0:? 'gs_ub' ( shared uint) @@ -5646,13 +5660,13 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 // Generated by (magic number): 80008 -// Id's are bound by 1836 +// Id's are bound by 1839 Capability Shader Capability DerivativeControl 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 1817 + EntryPoint Fragment 4 "main" 1820 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" @@ -5759,416 +5773,417 @@ Validation failed Name 235 "r030" Name 238 "r031" Name 241 "r033" - Name 245 "r034" - Name 248 "r036" - Name 251 "r037" - Name 254 "r038" - Name 257 "r039" - Name 261 "r039a" - Name 266 "r040" - Name 269 "r041" - Name 274 "r042" - Name 277 "r043" - Name 281 "r044" - Name 285 "r045" - Name 289 "r046" - Name 292 "r047" - Name 296 "r048" - Name 300 "r049" - Name 303 "r050" - Name 306 "r051" - Name 309 "r052" - Name 312 "r053" - Name 319 "r055" - Name 322 "r056" - Name 327 "r057" - Name 330 "r058" - Name 334 "r059" - Name 337 "r060" - Name 340 "r061" - Name 347 "r000" - Name 353 "r001" - Name 356 "r002" - Name 359 "r003" - Name 363 "r004" - Name 368 "r005" - Name 371 "r006" - Name 374 "r007" - Name 377 "r009" - Name 380 "r010" - Name 384 "r011" - Name 387 "r012" - Name 406 "r013" - Name 409 "r015" - Name 412 "r016" - Name 416 "r017" - Name 419 "r018" - Name 422 "r019" - Name 425 "r020" - Name 428 "r021" - Name 431 "r022" - Name 434 "r023" - Name 437 "r026" - Name 441 "r027" - Name 445 "r028" - Name 448 "r029" - Name 451 "r030" - Name 456 "r031" - Name 461 "r032" - Name 463 "r033" - Name 466 "r035" - Name 470 "r036" - Name 473 "r038" - Name 477 "r039" - Name 480 "r040" - Name 483 "r041" - Name 487 "r039a" - Name 492 "r042" - Name 495 "r043" - Name 498 "r044" - Name 502 "r045" - Name 505 "r046" - Name 509 "r047" - Name 513 "r048" - Name 516 "r049" - Name 520 "r050" - Name 523 "r051" - Name 527 "r052" - Name 531 "r053" - Name 536 "r054" - Name 541 "r055" - Name 544 "r056" - Name 547 "r057" - Name 552 "r058" - Name 555 "r059" - Name 562 "r060" - Name 565 "r061" - Name 570 "r062" - Name 573 "r063" - Name 577 "r064" - Name 580 "r065" - Name 583 "r066" - Name 589 "r000" - Name 595 "r001" - Name 598 "r002" - Name 601 "r003" - Name 605 "r004" - Name 610 "r005" - Name 613 "r006" - Name 616 "r007" - Name 619 "r009" - Name 622 "r010" - Name 626 "r011" - Name 629 "r012" - Name 647 "r013" - Name 650 "r014" - Name 653 "r015" - Name 658 "r016" - Name 662 "r017" - Name 665 "r018" - Name 668 "r019" - Name 671 "r020" - Name 674 "r021" - Name 677 "r022" - Name 680 "r023" - Name 683 "r024" - Name 687 "r025" - Name 691 "r029" - Name 694 "r030" - Name 697 "r031" - Name 702 "r032" - Name 706 "r033" - Name 708 "r034" - Name 711 "r036" - Name 715 "r037" - Name 718 "r039" - Name 722 "r040" - Name 725 "r041" - Name 728 "r042" - Name 732 "r039a" - Name 737 "r039b" - Name 743 "r043" - Name 746 "r044" - Name 749 "r045" - Name 753 "r046" - Name 756 "r047" - Name 760 "r048" - Name 764 "r049" - Name 767 "r050" - Name 771 "r051" - Name 774 "r052" - Name 778 "r053" - Name 782 "r054" - Name 786 "r055" - Name 789 "r056" - Name 792 "r057" - Name 795 "r058" - Name 800 "r059" - Name 803 "r060" - Name 810 "r061" - Name 813 "r062" - Name 818 "r063" - Name 821 "r064" - Name 825 "r065" - Name 828 "r066" - Name 831 "r067" - Name 838 "r000" - Name 844 "r001" - Name 847 "r002" - Name 850 "r003" - Name 854 "r004" - Name 859 "r005" - Name 862 "r006" - Name 865 "r007" - Name 868 "r009" - Name 871 "r010" - Name 875 "r011" - Name 878 "r012" - Name 896 "r013" - Name 899 "r014" - Name 902 "r015" - Name 905 "r016" - Name 908 "r017" - Name 911 "r018" - Name 914 "r019" - Name 917 "r020" - Name 920 "r021" - Name 923 "r022" - Name 926 "r023" - Name 930 "r024" - Name 934 "r025" - Name 945 "r029" - Name 948 "r030" - Name 951 "r031" - Name 956 "r032" - Name 961 "r033" - Name 963 "r034" - Name 966 "r036" - Name 970 "r037" - Name 973 "r039" - Name 977 "r040" - Name 980 "r041" - Name 983 "r042" - Name 987 "r039a" - Name 992 "r043" - Name 995 "r044" - Name 998 "r045" - Name 1002 "r046" - Name 1005 "r047" - Name 1009 "r048" - Name 1013 "r049" - Name 1016 "r050" - Name 1020 "r051" - Name 1023 "r052" - Name 1027 "r053" - Name 1031 "r054" - Name 1035 "r055" - Name 1038 "r056" - Name 1041 "r057" - Name 1044 "r058" - Name 1049 "r059" - Name 1052 "r060" - Name 1059 "r061" - Name 1062 "r062" - Name 1067 "r063" - Name 1070 "r064" - Name 1074 "r065" - Name 1077 "r066" - Name 1080 "r067" - Name 1087 "r000" - Name 1092 "r001" - Name 1097 "r003" - Name 1101 "r004" - Name 1104 "r005" - Name 1107 "r006" - Name 1111 "r007" - Name 1121 "r008" - Name 1126 "r009" - Name 1129 "r010" - Name 1132 "r011" - Name 1135 "r012" - Name 1138 "r013" - Name 1141 "r014" - Name 1144 "r015" - Name 1147 "r016" - Name 1150 "r017" - Name 1153 "r018" - Name 1156 "r019" - Name 1159 "R020" - Name 1162 "r021" - Name 1165 "r022" - Name 1175 "r023" - Name 1178 "r025" - Name 1181 "r026" - Name 1185 "r026a" - Name 1190 "r027" - Name 1193 "r028" - Name 1197 "r029" - Name 1200 "r030" - Name 1204 "r031" - Name 1208 "r032" - Name 1212 "r033" - Name 1215 "r034" - Name 1218 "r035" - Name 1221 "r036" - Name 1226 "r037" - Name 1229 "r038" - Name 1236 "r039" - Name 1239 "r049" - Name 1244 "r041" - Name 1247 "r042" - Name 1251 "r043" - Name 1254 "r044" - Name 1259 "r046" - Name 1266 "r000" - Name 1271 "r001" - Name 1276 "r003" - Name 1280 "r004" - Name 1283 "r005" - Name 1286 "r006" - Name 1290 "r007" - Name 1300 "r008" - Name 1305 "r009" - Name 1308 "r010" - Name 1311 "r011" - Name 1314 "r012" - Name 1317 "r013" - Name 1320 "r014" - Name 1323 "r015" - Name 1326 "r016" - Name 1329 "r017" - Name 1332 "r018" - Name 1335 "r019" - Name 1338 "R020" - Name 1341 "r021" - Name 1344 "r022" - Name 1357 "r023" - Name 1360 "r025" - Name 1363 "r026" - Name 1367 "r026a" - Name 1372 "r027" - Name 1375 "r028" - Name 1379 "r029" - Name 1382 "r030" - Name 1386 "r031" - Name 1390 "r032" - Name 1394 "r033" - Name 1397 "r034" - Name 1400 "r035" - Name 1403 "r036" - Name 1408 "r037" - Name 1411 "r038" - Name 1418 "r039" - Name 1421 "r049" - Name 1426 "r041" - Name 1429 "r042" - Name 1433 "r043" - Name 1436 "r044" - Name 1441 "r046" - Name 1448 "r000" - Name 1453 "r001" - Name 1458 "r003" - Name 1462 "r004" - Name 1465 "r005" - Name 1468 "r006" - Name 1472 "r007" - Name 1482 "r008" - Name 1487 "r009" - Name 1490 "r010" - Name 1493 "r011" - Name 1496 "r012" - Name 1499 "r013" - Name 1502 "r014" - Name 1505 "r015" - Name 1508 "r016" - Name 1511 "r017" - Name 1514 "r018" - Name 1517 "r019" - Name 1520 "R020" - Name 1523 "r021" - Name 1526 "r022" - Name 1542 "r023" - Name 1545 "r025" - Name 1548 "r026" - Name 1552 "r026a" - Name 1557 "r027" - Name 1560 "r028" - Name 1564 "r029" - Name 1567 "r030" - Name 1571 "r031" - Name 1575 "r032" - Name 1579 "r033" - Name 1582 "r034" - Name 1585 "r035" - Name 1588 "r036" - Name 1593 "r037" - Name 1596 "r038" - Name 1603 "r039" - Name 1606 "r049" - Name 1611 "r041" - Name 1614 "r042" - Name 1618 "r043" - Name 1621 "r044" - Name 1626 "r046" - Name 1633 "r0" - Name 1637 "r1" - Name 1641 "r2" - Name 1645 "r3" - Name 1649 "r4" - Name 1653 "r5" - Name 1657 "r6" - Name 1661 "r7" - Name 1665 "r8" - Name 1669 "r0" - Name 1673 "r1" - Name 1677 "r2" - Name 1681 "r3" - Name 1685 "r4" - Name 1689 "r5" - Name 1693 "r6" - Name 1697 "r7" - Name 1701 "r8" - Name 1705 "r0" - Name 1709 "r1" - Name 1713 "r2" - Name 1717 "r3" - Name 1721 "r4" - Name 1725 "r5" - Name 1729 "r6" - Name 1733 "r7" - Name 1737 "r8" - Name 1741 "r00" - Name 1745 "r01" - Name 1749 "r02" - Name 1753 "r03" - Name 1757 "r04" - Name 1761 "r05" - Name 1765 "r06" - Name 1769 "r07" - Name 1773 "r08" - Name 1777 "r09" - Name 1781 "r10" - Name 1785 "r11" - Name 1789 "r12" - Name 1793 "r13" - Name 1797 "r14" - Name 1801 "r15" - Name 1805 "r16" - Name 1810 "ps_output" - Name 1817 "@entryPointOutput.color" - Name 1821 "gs_ua" - Name 1822 "gs_ub" - Name 1823 "gs_uc" - Name 1825 "gs_ua2" - Name 1826 "gs_ub2" - Name 1827 "gs_uc2" - Name 1829 "gs_ua3" - Name 1830 "gs_ub3" - Name 1831 "gs_uc3" - Name 1833 "gs_ua4" - Name 1834 "gs_ub4" - Name 1835 "gs_uc4" - Decorate 1817(@entryPointOutput.color) Location 0 + Name 245 "r033i" + Name 249 "r034" + Name 252 "r036" + Name 255 "r037" + Name 258 "r038" + Name 261 "r039" + Name 265 "r039a" + Name 270 "r040" + Name 273 "r041" + Name 278 "r042" + Name 281 "r043" + Name 285 "r044" + Name 289 "r045" + Name 293 "r046" + Name 296 "r047" + Name 300 "r048" + Name 304 "r049" + Name 307 "r050" + Name 310 "r051" + Name 313 "r052" + Name 316 "r053" + Name 323 "r055" + Name 326 "r056" + Name 331 "r057" + Name 334 "r058" + Name 338 "r059" + Name 341 "r060" + Name 344 "r061" + Name 351 "r000" + Name 357 "r001" + Name 360 "r002" + Name 363 "r003" + Name 367 "r004" + Name 372 "r005" + Name 375 "r006" + Name 378 "r007" + Name 381 "r009" + Name 384 "r010" + Name 388 "r011" + Name 391 "r012" + Name 410 "r013" + Name 413 "r015" + Name 416 "r016" + Name 420 "r017" + Name 423 "r018" + Name 426 "r019" + Name 429 "r020" + Name 432 "r021" + Name 435 "r022" + Name 438 "r023" + Name 441 "r026" + Name 445 "r027" + Name 449 "r028" + Name 452 "r029" + Name 455 "r030" + Name 460 "r031" + Name 465 "r032" + Name 467 "r033" + Name 470 "r035" + Name 474 "r036" + Name 477 "r038" + Name 481 "r039" + Name 484 "r040" + Name 487 "r041" + Name 491 "r039a" + Name 496 "r042" + Name 499 "r043" + Name 502 "r044" + Name 506 "r045" + Name 509 "r046" + Name 513 "r047" + Name 517 "r048" + Name 520 "r049" + Name 524 "r050" + Name 527 "r051" + Name 531 "r052" + Name 535 "r053" + Name 539 "r054" + Name 544 "r055" + Name 547 "r056" + Name 550 "r057" + Name 555 "r058" + Name 558 "r059" + Name 565 "r060" + Name 568 "r061" + Name 573 "r062" + Name 576 "r063" + Name 580 "r064" + Name 583 "r065" + Name 586 "r066" + Name 592 "r000" + Name 598 "r001" + Name 601 "r002" + Name 604 "r003" + Name 608 "r004" + Name 613 "r005" + Name 616 "r006" + Name 619 "r007" + Name 622 "r009" + Name 625 "r010" + Name 629 "r011" + Name 632 "r012" + Name 650 "r013" + Name 653 "r014" + Name 656 "r015" + Name 661 "r016" + Name 665 "r017" + Name 668 "r018" + Name 671 "r019" + Name 674 "r020" + Name 677 "r021" + Name 680 "r022" + Name 683 "r023" + Name 686 "r024" + Name 690 "r025" + Name 694 "r029" + Name 697 "r030" + Name 700 "r031" + Name 705 "r032" + Name 709 "r033" + Name 711 "r034" + Name 714 "r036" + Name 718 "r037" + Name 721 "r039" + Name 725 "r040" + Name 728 "r041" + Name 731 "r042" + Name 735 "r039a" + Name 740 "r039b" + Name 746 "r043" + Name 749 "r044" + Name 752 "r045" + Name 756 "r046" + Name 759 "r047" + Name 763 "r048" + Name 767 "r049" + Name 770 "r050" + Name 774 "r051" + Name 777 "r052" + Name 781 "r053" + Name 785 "r054" + Name 789 "r055" + Name 792 "r056" + Name 795 "r057" + Name 798 "r058" + Name 803 "r059" + Name 806 "r060" + Name 813 "r061" + Name 816 "r062" + Name 821 "r063" + Name 824 "r064" + Name 828 "r065" + Name 831 "r066" + Name 834 "r067" + Name 841 "r000" + Name 847 "r001" + Name 850 "r002" + Name 853 "r003" + Name 857 "r004" + Name 862 "r005" + Name 865 "r006" + Name 868 "r007" + Name 871 "r009" + Name 874 "r010" + Name 878 "r011" + Name 881 "r012" + Name 899 "r013" + Name 902 "r014" + Name 905 "r015" + Name 908 "r016" + Name 911 "r017" + Name 914 "r018" + Name 917 "r019" + Name 920 "r020" + Name 923 "r021" + Name 926 "r022" + Name 929 "r023" + Name 933 "r024" + Name 937 "r025" + Name 948 "r029" + Name 951 "r030" + Name 954 "r031" + Name 959 "r032" + Name 964 "r033" + Name 966 "r034" + Name 969 "r036" + Name 973 "r037" + Name 976 "r039" + Name 980 "r040" + Name 983 "r041" + Name 986 "r042" + Name 990 "r039a" + Name 995 "r043" + Name 998 "r044" + Name 1001 "r045" + Name 1005 "r046" + Name 1008 "r047" + Name 1012 "r048" + Name 1016 "r049" + Name 1019 "r050" + Name 1023 "r051" + Name 1026 "r052" + Name 1030 "r053" + Name 1034 "r054" + Name 1038 "r055" + Name 1041 "r056" + Name 1044 "r057" + Name 1047 "r058" + Name 1052 "r059" + Name 1055 "r060" + Name 1062 "r061" + Name 1065 "r062" + Name 1070 "r063" + Name 1073 "r064" + Name 1077 "r065" + Name 1080 "r066" + Name 1083 "r067" + Name 1090 "r000" + Name 1095 "r001" + Name 1100 "r003" + Name 1104 "r004" + Name 1107 "r005" + Name 1110 "r006" + Name 1114 "r007" + Name 1124 "r008" + Name 1129 "r009" + Name 1132 "r010" + Name 1135 "r011" + Name 1138 "r012" + Name 1141 "r013" + Name 1144 "r014" + Name 1147 "r015" + Name 1150 "r016" + Name 1153 "r017" + Name 1156 "r018" + Name 1159 "r019" + Name 1162 "R020" + Name 1165 "r021" + Name 1168 "r022" + Name 1178 "r023" + Name 1181 "r025" + Name 1184 "r026" + Name 1188 "r026a" + Name 1193 "r027" + Name 1196 "r028" + Name 1200 "r029" + Name 1203 "r030" + Name 1207 "r031" + Name 1211 "r032" + Name 1215 "r033" + Name 1218 "r034" + Name 1221 "r035" + Name 1224 "r036" + Name 1229 "r037" + Name 1232 "r038" + Name 1239 "r039" + Name 1242 "r049" + Name 1247 "r041" + Name 1250 "r042" + Name 1254 "r043" + Name 1257 "r044" + Name 1262 "r046" + Name 1269 "r000" + Name 1274 "r001" + Name 1279 "r003" + Name 1283 "r004" + Name 1286 "r005" + Name 1289 "r006" + Name 1293 "r007" + Name 1303 "r008" + Name 1308 "r009" + Name 1311 "r010" + Name 1314 "r011" + Name 1317 "r012" + Name 1320 "r013" + Name 1323 "r014" + Name 1326 "r015" + Name 1329 "r016" + Name 1332 "r017" + Name 1335 "r018" + Name 1338 "r019" + Name 1341 "R020" + Name 1344 "r021" + Name 1347 "r022" + Name 1360 "r023" + Name 1363 "r025" + Name 1366 "r026" + Name 1370 "r026a" + Name 1375 "r027" + Name 1378 "r028" + Name 1382 "r029" + Name 1385 "r030" + Name 1389 "r031" + Name 1393 "r032" + Name 1397 "r033" + Name 1400 "r034" + Name 1403 "r035" + Name 1406 "r036" + Name 1411 "r037" + Name 1414 "r038" + Name 1421 "r039" + Name 1424 "r049" + Name 1429 "r041" + Name 1432 "r042" + Name 1436 "r043" + Name 1439 "r044" + Name 1444 "r046" + Name 1451 "r000" + Name 1456 "r001" + Name 1461 "r003" + Name 1465 "r004" + Name 1468 "r005" + Name 1471 "r006" + Name 1475 "r007" + Name 1485 "r008" + Name 1490 "r009" + Name 1493 "r010" + Name 1496 "r011" + Name 1499 "r012" + Name 1502 "r013" + Name 1505 "r014" + Name 1508 "r015" + Name 1511 "r016" + Name 1514 "r017" + Name 1517 "r018" + Name 1520 "r019" + Name 1523 "R020" + Name 1526 "r021" + Name 1529 "r022" + Name 1545 "r023" + Name 1548 "r025" + Name 1551 "r026" + Name 1555 "r026a" + Name 1560 "r027" + Name 1563 "r028" + Name 1567 "r029" + Name 1570 "r030" + Name 1574 "r031" + Name 1578 "r032" + Name 1582 "r033" + Name 1585 "r034" + Name 1588 "r035" + Name 1591 "r036" + Name 1596 "r037" + Name 1599 "r038" + Name 1606 "r039" + Name 1609 "r049" + Name 1614 "r041" + Name 1617 "r042" + Name 1621 "r043" + Name 1624 "r044" + Name 1629 "r046" + Name 1636 "r0" + Name 1640 "r1" + Name 1644 "r2" + Name 1648 "r3" + Name 1652 "r4" + Name 1656 "r5" + Name 1660 "r6" + Name 1664 "r7" + Name 1668 "r8" + Name 1672 "r0" + Name 1676 "r1" + Name 1680 "r2" + Name 1684 "r3" + Name 1688 "r4" + Name 1692 "r5" + Name 1696 "r6" + Name 1700 "r7" + Name 1704 "r8" + Name 1708 "r0" + Name 1712 "r1" + Name 1716 "r2" + Name 1720 "r3" + Name 1724 "r4" + Name 1728 "r5" + Name 1732 "r6" + Name 1736 "r7" + Name 1740 "r8" + Name 1744 "r00" + Name 1748 "r01" + Name 1752 "r02" + Name 1756 "r03" + Name 1760 "r04" + Name 1764 "r05" + Name 1768 "r06" + Name 1772 "r07" + Name 1776 "r08" + Name 1780 "r09" + Name 1784 "r10" + Name 1788 "r11" + Name 1792 "r12" + Name 1796 "r13" + Name 1800 "r14" + Name 1804 "r15" + Name 1808 "r16" + Name 1813 "ps_output" + Name 1820 "@entryPointOutput.color" + Name 1824 "gs_ua" + Name 1825 "gs_ub" + Name 1826 "gs_uc" + Name 1828 "gs_ua2" + Name 1829 "gs_ub2" + Name 1830 "gs_uc2" + Name 1832 "gs_ua3" + Name 1833 "gs_ub3" + Name 1834 "gs_uc3" + Name 1836 "gs_ua4" + Name 1837 "gs_ub4" + Name 1838 "gs_uc4" + Decorate 1820(@entryPointOutput.color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -6222,91 +6237,91 @@ Validation failed 141: 6(float) Constant 0 187: 10(int) Constant 0 199: 10(int) Constant 7 - 272: 6(float) Constant 1050288283 - 293: 6(float) Constant 1065353216 - 297: 10(int) Constant 2 - 349: TypeVector 137(bool) 2 - 350: 26(fvec2) ConstantComposite 141 141 - 366: TypeVector 10(int) 2 - 367: TypePointer Function 366(ivec2) - 399: 8(int) Constant 0 - 400: 28(ivec2) ConstantComposite 399 399 - 413: 10(int) Constant 3 - 414: 366(ivec2) ConstantComposite 199 413 - 457: 8(int) Constant 7 - 458: 8(int) Constant 8 - 459: 28(ivec2) ConstantComposite 457 458 - 476: TypePointer Function 349(bvec2) - 534: 6(float) Constant 1073741824 - 537: 8(int) Constant 1 - 538: 8(int) Constant 2 - 539: 28(ivec2) ConstantComposite 537 538 - 586: 26(fvec2) ConstantComposite 293 534 - 591: TypeVector 137(bool) 3 - 592: 38(fvec3) ConstantComposite 141 141 141 - 608: TypeVector 10(int) 3 - 609: TypePointer Function 608(ivec3) - 641: 40(ivec3) ConstantComposite 399 399 399 - 654: 8(int) Constant 3 - 655: 8(int) Constant 5 - 656: 40(ivec3) ConstantComposite 457 654 655 - 703: 8(int) Constant 4 - 704: 40(ivec3) ConstantComposite 538 654 703 - 721: TypePointer Function 591(bvec3) - 740: 6(float) Constant 1050253722 - 787: 40(ivec3) ConstantComposite 537 538 654 - 834: 6(float) Constant 1077936128 - 835: 38(fvec3) ConstantComposite 293 534 834 - 840: TypeVector 137(bool) 4 - 841: 50(fvec4) ConstantComposite 141 141 141 141 - 857: TypeVector 10(int) 4 - 858: TypePointer Function 857(ivec4) - 890: 52(ivec4) ConstantComposite 399 399 399 399 - 903: 52(ivec4) ConstantComposite 457 654 655 538 - 957: 8(int) Constant 9 - 958: 8(int) Constant 10 - 959: 52(ivec4) ConstantComposite 457 458 957 958 - 976: TypePointer Function 840(bvec4) - 1036: 52(ivec4) ConstantComposite 537 538 654 703 - 1083: 6(float) Constant 1082130432 - 1084: 50(fvec4) ConstantComposite 293 534 834 1083 - 1089: TypeMatrix 349(bvec2) 2 - 1115: 62 ConstantComposite 350 350 - 1262: 26(fvec2) ConstantComposite 534 534 - 1263: 62 ConstantComposite 1262 1262 - 1268: TypeMatrix 591(bvec3) 3 - 1294: 70 ConstantComposite 592 592 592 - 1444: 38(fvec3) ConstantComposite 834 834 834 - 1445: 70 ConstantComposite 1444 1444 1444 - 1450: TypeMatrix 840(bvec4) 4 - 1476: 78 ConstantComposite 841 841 841 841 - 1629: 50(fvec4) ConstantComposite 1083 1083 1083 1083 - 1630: 78 ConstantComposite 1629 1629 1629 1629 - 1809: TypePointer Function 133(PS_OUTPUT) - 1811: 50(fvec4) ConstantComposite 293 293 293 293 - 1816: TypePointer Output 50(fvec4) -1817(@entryPointOutput.color): 1816(ptr) Variable Output - 1820: TypePointer Workgroup 8(int) - 1821(gs_ua): 1820(ptr) Variable Workgroup - 1822(gs_ub): 1820(ptr) Variable Workgroup - 1823(gs_uc): 1820(ptr) Variable Workgroup - 1824: TypePointer Workgroup 28(ivec2) - 1825(gs_ua2): 1824(ptr) Variable Workgroup - 1826(gs_ub2): 1824(ptr) Variable Workgroup - 1827(gs_uc2): 1824(ptr) Variable Workgroup - 1828: TypePointer Workgroup 40(ivec3) - 1829(gs_ua3): 1828(ptr) Variable Workgroup - 1830(gs_ub3): 1828(ptr) Variable Workgroup - 1831(gs_uc3): 1828(ptr) Variable Workgroup - 1832: TypePointer Workgroup 52(ivec4) - 1833(gs_ua4): 1832(ptr) Variable Workgroup - 1834(gs_ub4): 1832(ptr) Variable Workgroup - 1835(gs_uc4): 1832(ptr) Variable Workgroup + 247: 6(float) Constant 1073741824 + 276: 6(float) Constant 1050288283 + 297: 6(float) Constant 1065353216 + 301: 10(int) Constant 2 + 353: TypeVector 137(bool) 2 + 354: 26(fvec2) ConstantComposite 141 141 + 370: TypeVector 10(int) 2 + 371: TypePointer Function 370(ivec2) + 403: 8(int) Constant 0 + 404: 28(ivec2) ConstantComposite 403 403 + 417: 10(int) Constant 3 + 418: 370(ivec2) ConstantComposite 199 417 + 461: 8(int) Constant 7 + 462: 8(int) Constant 8 + 463: 28(ivec2) ConstantComposite 461 462 + 480: TypePointer Function 353(bvec2) + 540: 8(int) Constant 1 + 541: 8(int) Constant 2 + 542: 28(ivec2) ConstantComposite 540 541 + 589: 26(fvec2) ConstantComposite 297 247 + 594: TypeVector 137(bool) 3 + 595: 38(fvec3) ConstantComposite 141 141 141 + 611: TypeVector 10(int) 3 + 612: TypePointer Function 611(ivec3) + 644: 40(ivec3) ConstantComposite 403 403 403 + 657: 8(int) Constant 3 + 658: 8(int) Constant 5 + 659: 40(ivec3) ConstantComposite 461 657 658 + 706: 8(int) Constant 4 + 707: 40(ivec3) ConstantComposite 541 657 706 + 724: TypePointer Function 594(bvec3) + 743: 6(float) Constant 1050253722 + 790: 40(ivec3) ConstantComposite 540 541 657 + 837: 6(float) Constant 1077936128 + 838: 38(fvec3) ConstantComposite 297 247 837 + 843: TypeVector 137(bool) 4 + 844: 50(fvec4) ConstantComposite 141 141 141 141 + 860: TypeVector 10(int) 4 + 861: TypePointer Function 860(ivec4) + 893: 52(ivec4) ConstantComposite 403 403 403 403 + 906: 52(ivec4) ConstantComposite 461 657 658 541 + 960: 8(int) Constant 9 + 961: 8(int) Constant 10 + 962: 52(ivec4) ConstantComposite 461 462 960 961 + 979: TypePointer Function 843(bvec4) + 1039: 52(ivec4) ConstantComposite 540 541 657 706 + 1086: 6(float) Constant 1082130432 + 1087: 50(fvec4) ConstantComposite 297 247 837 1086 + 1092: TypeMatrix 353(bvec2) 2 + 1118: 62 ConstantComposite 354 354 + 1265: 26(fvec2) ConstantComposite 247 247 + 1266: 62 ConstantComposite 1265 1265 + 1271: TypeMatrix 594(bvec3) 3 + 1297: 70 ConstantComposite 595 595 595 + 1447: 38(fvec3) ConstantComposite 837 837 837 + 1448: 70 ConstantComposite 1447 1447 1447 + 1453: TypeMatrix 843(bvec4) 4 + 1479: 78 ConstantComposite 844 844 844 844 + 1632: 50(fvec4) ConstantComposite 1086 1086 1086 1086 + 1633: 78 ConstantComposite 1632 1632 1632 1632 + 1812: TypePointer Function 133(PS_OUTPUT) + 1814: 50(fvec4) ConstantComposite 297 297 297 297 + 1819: TypePointer Output 50(fvec4) +1820(@entryPointOutput.color): 1819(ptr) Variable Output + 1823: TypePointer Workgroup 8(int) + 1824(gs_ua): 1823(ptr) Variable Workgroup + 1825(gs_ub): 1823(ptr) Variable Workgroup + 1826(gs_uc): 1823(ptr) Variable Workgroup + 1827: TypePointer Workgroup 28(ivec2) + 1828(gs_ua2): 1827(ptr) Variable Workgroup + 1829(gs_ub2): 1827(ptr) Variable Workgroup + 1830(gs_uc2): 1827(ptr) Variable Workgroup + 1831: TypePointer Workgroup 40(ivec3) + 1832(gs_ua3): 1831(ptr) Variable Workgroup + 1833(gs_ub3): 1831(ptr) Variable Workgroup + 1834(gs_uc3): 1831(ptr) Variable Workgroup + 1835: TypePointer Workgroup 52(ivec4) + 1836(gs_ua4): 1835(ptr) Variable Workgroup + 1837(gs_ub4): 1835(ptr) Variable Workgroup + 1838(gs_uc4): 1835(ptr) Variable Workgroup 4(main): 2 Function None 3 5: Label - 1818:133(PS_OUTPUT) FunctionCall 135(@main() - 1819: 50(fvec4) CompositeExtract 1818 0 - Store 1817(@entryPointOutput.color) 1819 + 1821:133(PS_OUTPUT) FunctionCall 135(@main() + 1822: 50(fvec4) CompositeExtract 1821 0 + Store 1820(@entryPointOutput.color) 1822 Return FunctionEnd 18(PixelShaderFunctionS(f1;f1;f1;u1;i1;): 6(float) Function None 12 @@ -6345,33 +6360,34 @@ Validation failed 235(r030): 9(ptr) Variable Function 238(r031): 7(ptr) Variable Function 241(r033): 7(ptr) Variable Function - 245(r034): 7(ptr) Variable Function - 248(r036): 7(ptr) Variable Function - 251(r037): 138(ptr) Variable Function - 254(r038): 138(ptr) Variable Function - 257(r039): 7(ptr) Variable Function - 261(r039a): 7(ptr) Variable Function - 266(r040): 7(ptr) Variable Function - 269(r041): 7(ptr) Variable Function - 274(r042): 7(ptr) Variable Function - 277(r043): 7(ptr) Variable Function - 281(r044): 7(ptr) Variable Function - 285(r045): 7(ptr) Variable Function - 289(r046): 7(ptr) Variable Function - 292(r047): 7(ptr) Variable Function - 296(r048): 9(ptr) Variable Function - 300(r049): 7(ptr) Variable Function - 303(r050): 7(ptr) Variable Function - 306(r051): 7(ptr) Variable Function - 309(r052): 7(ptr) Variable Function - 312(r053): 7(ptr) Variable Function - 319(r055): 7(ptr) Variable Function - 322(r056): 7(ptr) Variable Function - 327(r057): 7(ptr) Variable Function - 330(r058): 7(ptr) Variable Function - 334(r059): 7(ptr) Variable Function - 337(r060): 7(ptr) Variable Function - 340(r061): 7(ptr) Variable Function + 245(r033i): 7(ptr) Variable Function + 249(r034): 7(ptr) Variable Function + 252(r036): 7(ptr) Variable Function + 255(r037): 138(ptr) Variable Function + 258(r038): 138(ptr) Variable Function + 261(r039): 7(ptr) Variable Function + 265(r039a): 7(ptr) Variable Function + 270(r040): 7(ptr) Variable Function + 273(r041): 7(ptr) Variable Function + 278(r042): 7(ptr) Variable Function + 281(r043): 7(ptr) Variable Function + 285(r044): 7(ptr) Variable Function + 289(r045): 7(ptr) Variable Function + 293(r046): 7(ptr) Variable Function + 296(r047): 7(ptr) Variable Function + 300(r048): 9(ptr) Variable Function + 304(r049): 7(ptr) Variable Function + 307(r050): 7(ptr) Variable Function + 310(r051): 7(ptr) Variable Function + 313(r052): 7(ptr) Variable Function + 316(r053): 7(ptr) Variable Function + 323(r055): 7(ptr) Variable Function + 326(r056): 7(ptr) Variable Function + 331(r057): 7(ptr) Variable Function + 334(r058): 7(ptr) Variable Function + 338(r059): 7(ptr) Variable Function + 341(r060): 7(ptr) Variable Function + 344(r061): 7(ptr) Variable Function 140: 6(float) Load 13(inF0) 142: 137(bool) FOrdNotEqual 140 141 143: 137(bool) All 142 @@ -6480,102 +6496,105 @@ Validation failed 244: 6(float) FMod 242 243 Store 241(r033) 244 246: 6(float) Load 13(inF0) - 247: 6(float) ExtInst 1(GLSL.std.450) 10(Fract) 246 - Store 245(r034) 247 - 249: 6(float) Load 13(inF0) - 250: 6(float) Fwidth 249 - Store 248(r036) 250 - 252: 6(float) Load 13(inF0) - 253: 137(bool) IsInf 252 - Store 251(r037) 253 - 255: 6(float) Load 13(inF0) - 256: 137(bool) IsNan 255 - Store 254(r038) 256 - 258: 6(float) Load 13(inF0) - 259: 6(float) Load 14(inF1) - 260: 6(float) ExtInst 1(GLSL.std.450) 53(Ldexp) 258 259 - Store 257(r039) 260 + 248: 6(float) FMod 246 247 + Store 245(r033i) 248 + 250: 6(float) Load 13(inF0) + 251: 6(float) ExtInst 1(GLSL.std.450) 10(Fract) 250 + Store 249(r034) 251 + 253: 6(float) Load 13(inF0) + 254: 6(float) Fwidth 253 + Store 252(r036) 254 + 256: 6(float) Load 13(inF0) + 257: 137(bool) IsInf 256 + Store 255(r037) 257 + 259: 6(float) Load 13(inF0) + 260: 137(bool) IsNan 259 + Store 258(r038) 260 262: 6(float) Load 13(inF0) 263: 6(float) Load 14(inF1) - 264: 6(float) Load 15(inF2) - 265: 6(float) ExtInst 1(GLSL.std.450) 46(FMix) 262 263 264 - Store 261(r039a) 265 - 267: 6(float) Load 13(inF0) - 268: 6(float) ExtInst 1(GLSL.std.450) 28(Log) 267 - Store 266(r040) 268 - 270: 6(float) Load 13(inF0) - 271: 6(float) ExtInst 1(GLSL.std.450) 30(Log2) 270 - 273: 6(float) FMul 271 272 - Store 269(r041) 273 - 275: 6(float) Load 13(inF0) - 276: 6(float) ExtInst 1(GLSL.std.450) 30(Log2) 275 - Store 274(r042) 276 - 278: 6(float) Load 13(inF0) - 279: 6(float) Load 14(inF1) - 280: 6(float) ExtInst 1(GLSL.std.450) 40(FMax) 278 279 - Store 277(r043) 280 + 264: 6(float) ExtInst 1(GLSL.std.450) 53(Ldexp) 262 263 + Store 261(r039) 264 + 266: 6(float) Load 13(inF0) + 267: 6(float) Load 14(inF1) + 268: 6(float) Load 15(inF2) + 269: 6(float) ExtInst 1(GLSL.std.450) 46(FMix) 266 267 268 + Store 265(r039a) 269 + 271: 6(float) Load 13(inF0) + 272: 6(float) ExtInst 1(GLSL.std.450) 28(Log) 271 + Store 270(r040) 272 + 274: 6(float) Load 13(inF0) + 275: 6(float) ExtInst 1(GLSL.std.450) 30(Log2) 274 + 277: 6(float) FMul 275 276 + Store 273(r041) 277 + 279: 6(float) Load 13(inF0) + 280: 6(float) ExtInst 1(GLSL.std.450) 30(Log2) 279 + Store 278(r042) 280 282: 6(float) Load 13(inF0) 283: 6(float) Load 14(inF1) - 284: 6(float) ExtInst 1(GLSL.std.450) 37(FMin) 282 283 - Store 281(r044) 284 + 284: 6(float) ExtInst 1(GLSL.std.450) 40(FMax) 282 283 + Store 281(r043) 284 286: 6(float) Load 13(inF0) 287: 6(float) Load 14(inF1) - 288: 6(float) ExtInst 1(GLSL.std.450) 26(Pow) 286 287 - Store 285(r045) 288 + 288: 6(float) ExtInst 1(GLSL.std.450) 37(FMin) 286 287 + Store 285(r044) 288 290: 6(float) Load 13(inF0) - 291: 6(float) ExtInst 1(GLSL.std.450) 11(Radians) 290 - Store 289(r046) 291 + 291: 6(float) Load 14(inF1) + 292: 6(float) ExtInst 1(GLSL.std.450) 26(Pow) 290 291 + Store 289(r045) 292 294: 6(float) Load 13(inF0) - 295: 6(float) FDiv 293 294 - Store 292(r047) 295 - 298: 10(int) BitReverse 297 - 299: 8(int) Bitcast 298 - Store 296(r048) 299 - 301: 6(float) Load 13(inF0) - 302: 6(float) ExtInst 1(GLSL.std.450) 2(RoundEven) 301 - Store 300(r049) 302 - 304: 6(float) Load 13(inF0) - 305: 6(float) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 304 - Store 303(r050) 305 - 307: 6(float) Load 13(inF0) - 308: 6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 307 141 293 - Store 306(r051) 308 - 310: 6(float) Load 13(inF0) - 311: 6(float) ExtInst 1(GLSL.std.450) 6(FSign) 310 - Store 309(r052) 311 - 313: 6(float) Load 13(inF0) - 314: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 313 - Store 312(r053) 314 - 315: 6(float) Load 13(inF0) - 316: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 315 - Store 14(inF1) 316 + 295: 6(float) ExtInst 1(GLSL.std.450) 11(Radians) 294 + Store 293(r046) 295 + 298: 6(float) Load 13(inF0) + 299: 6(float) FDiv 297 298 + Store 296(r047) 299 + 302: 10(int) BitReverse 301 + 303: 8(int) Bitcast 302 + Store 300(r048) 303 + 305: 6(float) Load 13(inF0) + 306: 6(float) ExtInst 1(GLSL.std.450) 2(RoundEven) 305 + Store 304(r049) 306 + 308: 6(float) Load 13(inF0) + 309: 6(float) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 308 + Store 307(r050) 309 + 311: 6(float) Load 13(inF0) + 312: 6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 311 141 297 + Store 310(r051) 312 + 314: 6(float) Load 13(inF0) + 315: 6(float) ExtInst 1(GLSL.std.450) 6(FSign) 314 + Store 313(r052) 315 317: 6(float) Load 13(inF0) - 318: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 317 - Store 15(inF2) 318 - 320: 6(float) Load 13(inF0) - 321: 6(float) ExtInst 1(GLSL.std.450) 19(Sinh) 320 - Store 319(r055) 321 - 323: 6(float) Load 13(inF0) - 324: 6(float) Load 14(inF1) - 325: 6(float) Load 15(inF2) - 326: 6(float) ExtInst 1(GLSL.std.450) 49(SmoothStep) 323 324 325 - Store 322(r056) 326 - 328: 6(float) Load 13(inF0) - 329: 6(float) ExtInst 1(GLSL.std.450) 31(Sqrt) 328 - Store 327(r057) 329 - 331: 6(float) Load 13(inF0) - 332: 6(float) Load 14(inF1) - 333: 6(float) ExtInst 1(GLSL.std.450) 48(Step) 331 332 - Store 330(r058) 333 + 318: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 317 + Store 316(r053) 318 + 319: 6(float) Load 13(inF0) + 320: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 319 + Store 14(inF1) 320 + 321: 6(float) Load 13(inF0) + 322: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 321 + Store 15(inF2) 322 + 324: 6(float) Load 13(inF0) + 325: 6(float) ExtInst 1(GLSL.std.450) 19(Sinh) 324 + Store 323(r055) 325 + 327: 6(float) Load 13(inF0) + 328: 6(float) Load 14(inF1) + 329: 6(float) Load 15(inF2) + 330: 6(float) ExtInst 1(GLSL.std.450) 49(SmoothStep) 327 328 329 + Store 326(r056) 330 + 332: 6(float) Load 13(inF0) + 333: 6(float) ExtInst 1(GLSL.std.450) 31(Sqrt) 332 + Store 331(r057) 333 335: 6(float) Load 13(inF0) - 336: 6(float) ExtInst 1(GLSL.std.450) 15(Tan) 335 - Store 334(r059) 336 - 338: 6(float) Load 13(inF0) - 339: 6(float) ExtInst 1(GLSL.std.450) 21(Tanh) 338 - Store 337(r060) 339 - 341: 6(float) Load 13(inF0) - 342: 6(float) ExtInst 1(GLSL.std.450) 3(Trunc) 341 - Store 340(r061) 342 + 336: 6(float) Load 14(inF1) + 337: 6(float) ExtInst 1(GLSL.std.450) 48(Step) 335 336 + Store 334(r058) 337 + 339: 6(float) Load 13(inF0) + 340: 6(float) ExtInst 1(GLSL.std.450) 15(Tan) 339 + Store 338(r059) 340 + 342: 6(float) Load 13(inF0) + 343: 6(float) ExtInst 1(GLSL.std.450) 21(Tanh) 342 + Store 341(r060) 343 + 345: 6(float) Load 13(inF0) + 346: 6(float) ExtInst 1(GLSL.std.450) 3(Trunc) 345 + Store 344(r061) 346 ReturnValue 141 FunctionEnd 24(PixelShaderFunction1(vf1;vf1;vf1;): 6(float) Function None 20 @@ -6592,298 +6611,298 @@ Validation failed 34(inU0): 29(ptr) FunctionParameter 35(inU1): 29(ptr) FunctionParameter 37: Label - 347(r000): 138(ptr) Variable Function - 353(r001): 27(ptr) Variable Function - 356(r002): 27(ptr) Variable Function - 359(r003): 138(ptr) Variable Function - 363(r004): 27(ptr) Variable Function - 368(r005): 367(ptr) Variable Function - 371(r006): 29(ptr) Variable Function - 374(r007): 27(ptr) Variable Function - 377(r009): 27(ptr) Variable Function - 380(r010): 27(ptr) Variable Function - 384(r011): 27(ptr) Variable Function - 387(r012): 27(ptr) Variable Function - 406(r013): 27(ptr) Variable Function - 409(r015): 27(ptr) Variable Function - 412(r016): 367(ptr) Variable Function - 416(r017): 27(ptr) Variable Function - 419(r018): 27(ptr) Variable Function - 422(r019): 27(ptr) Variable Function - 425(r020): 27(ptr) Variable Function - 428(r021): 27(ptr) Variable Function - 431(r022): 27(ptr) Variable Function - 434(r023): 27(ptr) Variable Function - 437(r026): 7(ptr) Variable Function - 441(r027): 7(ptr) Variable Function - 445(r028): 27(ptr) Variable Function - 448(r029): 27(ptr) Variable Function - 451(r030): 27(ptr) Variable Function - 456(r031): 29(ptr) Variable Function - 461(r032): 29(ptr) Variable Function - 463(r033): 27(ptr) Variable Function - 466(r035): 27(ptr) Variable Function - 470(r036): 27(ptr) Variable Function - 473(r038): 27(ptr) Variable Function - 477(r039): 476(ptr) Variable Function - 480(r040): 476(ptr) Variable Function - 483(r041): 27(ptr) Variable Function - 487(r039a): 27(ptr) Variable Function - 492(r042): 7(ptr) Variable Function - 495(r043): 27(ptr) Variable Function - 498(r044): 27(ptr) Variable Function - 502(r045): 27(ptr) Variable Function - 505(r046): 27(ptr) Variable Function - 509(r047): 27(ptr) Variable Function - 513(r048): 27(ptr) Variable Function - 516(r049): 27(ptr) Variable Function - 520(r050): 27(ptr) Variable Function - 523(r051): 27(ptr) Variable Function - 527(r052): 27(ptr) Variable Function - 531(r053): 27(ptr) Variable Function - 536(r054): 29(ptr) Variable Function - 541(r055): 27(ptr) Variable Function - 544(r056): 27(ptr) Variable Function - 547(r057): 27(ptr) Variable Function - 552(r058): 27(ptr) Variable Function - 555(r059): 27(ptr) Variable Function - 562(r060): 27(ptr) Variable Function - 565(r061): 27(ptr) Variable Function - 570(r062): 27(ptr) Variable Function - 573(r063): 27(ptr) Variable Function - 577(r064): 27(ptr) Variable Function - 580(r065): 27(ptr) Variable Function - 583(r066): 27(ptr) Variable Function - 348: 26(fvec2) Load 31(inF0) - 351: 349(bvec2) FOrdNotEqual 348 350 - 352: 137(bool) All 351 - Store 347(r000) 352 - 354: 26(fvec2) Load 31(inF0) - 355: 26(fvec2) ExtInst 1(GLSL.std.450) 4(FAbs) 354 - Store 353(r001) 355 - 357: 26(fvec2) Load 31(inF0) - 358: 26(fvec2) ExtInst 1(GLSL.std.450) 17(Acos) 357 - Store 356(r002) 358 - 360: 26(fvec2) Load 31(inF0) - 361: 349(bvec2) FOrdNotEqual 360 350 - 362: 137(bool) Any 361 - Store 359(r003) 362 + 351(r000): 138(ptr) Variable Function + 357(r001): 27(ptr) Variable Function + 360(r002): 27(ptr) Variable Function + 363(r003): 138(ptr) Variable Function + 367(r004): 27(ptr) Variable Function + 372(r005): 371(ptr) Variable Function + 375(r006): 29(ptr) Variable Function + 378(r007): 27(ptr) Variable Function + 381(r009): 27(ptr) Variable Function + 384(r010): 27(ptr) Variable Function + 388(r011): 27(ptr) Variable Function + 391(r012): 27(ptr) Variable Function + 410(r013): 27(ptr) Variable Function + 413(r015): 27(ptr) Variable Function + 416(r016): 371(ptr) Variable Function + 420(r017): 27(ptr) Variable Function + 423(r018): 27(ptr) Variable Function + 426(r019): 27(ptr) Variable Function + 429(r020): 27(ptr) Variable Function + 432(r021): 27(ptr) Variable Function + 435(r022): 27(ptr) Variable Function + 438(r023): 27(ptr) Variable Function + 441(r026): 7(ptr) Variable Function + 445(r027): 7(ptr) Variable Function + 449(r028): 27(ptr) Variable Function + 452(r029): 27(ptr) Variable Function + 455(r030): 27(ptr) Variable Function + 460(r031): 29(ptr) Variable Function + 465(r032): 29(ptr) Variable Function + 467(r033): 27(ptr) Variable Function + 470(r035): 27(ptr) Variable Function + 474(r036): 27(ptr) Variable Function + 477(r038): 27(ptr) Variable Function + 481(r039): 480(ptr) Variable Function + 484(r040): 480(ptr) Variable Function + 487(r041): 27(ptr) Variable Function + 491(r039a): 27(ptr) Variable Function + 496(r042): 7(ptr) Variable Function + 499(r043): 27(ptr) Variable Function + 502(r044): 27(ptr) Variable Function + 506(r045): 27(ptr) Variable Function + 509(r046): 27(ptr) Variable Function + 513(r047): 27(ptr) Variable Function + 517(r048): 27(ptr) Variable Function + 520(r049): 27(ptr) Variable Function + 524(r050): 27(ptr) Variable Function + 527(r051): 27(ptr) Variable Function + 531(r052): 27(ptr) Variable Function + 535(r053): 27(ptr) Variable Function + 539(r054): 29(ptr) Variable Function + 544(r055): 27(ptr) Variable Function + 547(r056): 27(ptr) Variable Function + 550(r057): 27(ptr) Variable Function + 555(r058): 27(ptr) Variable Function + 558(r059): 27(ptr) Variable Function + 565(r060): 27(ptr) Variable Function + 568(r061): 27(ptr) Variable Function + 573(r062): 27(ptr) Variable Function + 576(r063): 27(ptr) Variable Function + 580(r064): 27(ptr) Variable Function + 583(r065): 27(ptr) Variable Function + 586(r066): 27(ptr) Variable Function + 352: 26(fvec2) Load 31(inF0) + 355: 353(bvec2) FOrdNotEqual 352 354 + 356: 137(bool) All 355 + Store 351(r000) 356 + 358: 26(fvec2) Load 31(inF0) + 359: 26(fvec2) ExtInst 1(GLSL.std.450) 4(FAbs) 358 + Store 357(r001) 359 + 361: 26(fvec2) Load 31(inF0) + 362: 26(fvec2) ExtInst 1(GLSL.std.450) 17(Acos) 361 + Store 360(r002) 362 364: 26(fvec2) Load 31(inF0) - 365: 26(fvec2) ExtInst 1(GLSL.std.450) 16(Asin) 364 - Store 363(r004) 365 - 369: 26(fvec2) Load 31(inF0) - 370: 366(ivec2) Bitcast 369 - Store 368(r005) 370 - 372: 26(fvec2) Load 31(inF0) - 373: 28(ivec2) Bitcast 372 - Store 371(r006) 373 - 375: 28(ivec2) Load 34(inU0) - 376: 26(fvec2) Bitcast 375 - Store 374(r007) 376 - 378: 26(fvec2) Load 31(inF0) - 379: 26(fvec2) ExtInst 1(GLSL.std.450) 18(Atan) 378 - Store 377(r009) 379 - 381: 26(fvec2) Load 31(inF0) - 382: 26(fvec2) Load 32(inF1) - 383: 26(fvec2) ExtInst 1(GLSL.std.450) 25(Atan2) 381 382 - Store 380(r010) 383 + 365: 353(bvec2) FOrdNotEqual 364 354 + 366: 137(bool) Any 365 + Store 363(r003) 366 + 368: 26(fvec2) Load 31(inF0) + 369: 26(fvec2) ExtInst 1(GLSL.std.450) 16(Asin) 368 + Store 367(r004) 369 + 373: 26(fvec2) Load 31(inF0) + 374: 370(ivec2) Bitcast 373 + Store 372(r005) 374 + 376: 26(fvec2) Load 31(inF0) + 377: 28(ivec2) Bitcast 376 + Store 375(r006) 377 + 379: 28(ivec2) Load 34(inU0) + 380: 26(fvec2) Bitcast 379 + Store 378(r007) 380 + 382: 26(fvec2) Load 31(inF0) + 383: 26(fvec2) ExtInst 1(GLSL.std.450) 18(Atan) 382 + Store 381(r009) 383 385: 26(fvec2) Load 31(inF0) - 386: 26(fvec2) ExtInst 1(GLSL.std.450) 9(Ceil) 385 - Store 384(r011) 386 - 388: 26(fvec2) Load 31(inF0) - 389: 26(fvec2) Load 32(inF1) - 390: 26(fvec2) Load 33(inF2) - 391: 26(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 388 389 390 - Store 387(r012) 391 + 386: 26(fvec2) Load 32(inF1) + 387: 26(fvec2) ExtInst 1(GLSL.std.450) 25(Atan2) 385 386 + Store 384(r010) 387 + 389: 26(fvec2) Load 31(inF0) + 390: 26(fvec2) ExtInst 1(GLSL.std.450) 9(Ceil) 389 + Store 388(r011) 390 392: 26(fvec2) Load 31(inF0) - 393: 349(bvec2) FOrdLessThan 392 350 - 394: 137(bool) Any 393 - SelectionMerge 396 None - BranchConditional 394 395 396 - 395: Label + 393: 26(fvec2) Load 32(inF1) + 394: 26(fvec2) Load 33(inF2) + 395: 26(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 392 393 394 + Store 391(r012) 395 + 396: 26(fvec2) Load 31(inF0) + 397: 353(bvec2) FOrdLessThan 396 354 + 398: 137(bool) Any 397 + SelectionMerge 400 None + BranchConditional 398 399 400 + 399: Label Kill - 396: Label - 398: 28(ivec2) Load 34(inU0) - 401: 349(bvec2) ULessThan 398 400 - 402: 137(bool) Any 401 - SelectionMerge 404 None - BranchConditional 402 403 404 - 403: Label + 400: Label + 402: 28(ivec2) Load 34(inU0) + 405: 353(bvec2) ULessThan 402 404 + 406: 137(bool) Any 405 + SelectionMerge 408 None + BranchConditional 406 407 408 + 407: Label Kill - 404: Label - 407: 26(fvec2) Load 31(inF0) - 408: 26(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 407 - Store 406(r013) 408 - 410: 26(fvec2) Load 31(inF0) - 411: 26(fvec2) ExtInst 1(GLSL.std.450) 20(Cosh) 410 - Store 409(r015) 411 - 415: 366(ivec2) BitCount 414 - Store 412(r016) 415 - 417: 26(fvec2) Load 31(inF0) - 418: 26(fvec2) DPdx 417 - Store 416(r017) 418 - 420: 26(fvec2) Load 31(inF0) - 421: 26(fvec2) DPdxCoarse 420 - Store 419(r018) 421 - 423: 26(fvec2) Load 31(inF0) - 424: 26(fvec2) DPdxFine 423 - Store 422(r019) 424 - 426: 26(fvec2) Load 31(inF0) - 427: 26(fvec2) DPdy 426 - Store 425(r020) 427 - 429: 26(fvec2) Load 31(inF0) - 430: 26(fvec2) DPdyCoarse 429 - Store 428(r021) 430 - 432: 26(fvec2) Load 31(inF0) - 433: 26(fvec2) DPdyFine 432 - Store 431(r022) 433 - 435: 26(fvec2) Load 31(inF0) - 436: 26(fvec2) ExtInst 1(GLSL.std.450) 12(Degrees) 435 - Store 434(r023) 436 - 438: 26(fvec2) Load 31(inF0) - 439: 26(fvec2) Load 32(inF1) - 440: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 438 439 - Store 437(r026) 440 + 408: Label + 411: 26(fvec2) Load 31(inF0) + 412: 26(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 411 + Store 410(r013) 412 + 414: 26(fvec2) Load 31(inF0) + 415: 26(fvec2) ExtInst 1(GLSL.std.450) 20(Cosh) 414 + Store 413(r015) 415 + 419: 370(ivec2) BitCount 418 + Store 416(r016) 419 + 421: 26(fvec2) Load 31(inF0) + 422: 26(fvec2) DPdx 421 + Store 420(r017) 422 + 424: 26(fvec2) Load 31(inF0) + 425: 26(fvec2) DPdxCoarse 424 + Store 423(r018) 425 + 427: 26(fvec2) Load 31(inF0) + 428: 26(fvec2) DPdxFine 427 + Store 426(r019) 428 + 430: 26(fvec2) Load 31(inF0) + 431: 26(fvec2) DPdy 430 + Store 429(r020) 431 + 433: 26(fvec2) Load 31(inF0) + 434: 26(fvec2) DPdyCoarse 433 + Store 432(r021) 434 + 436: 26(fvec2) Load 31(inF0) + 437: 26(fvec2) DPdyFine 436 + Store 435(r022) 437 + 439: 26(fvec2) Load 31(inF0) + 440: 26(fvec2) ExtInst 1(GLSL.std.450) 12(Degrees) 439 + Store 438(r023) 440 442: 26(fvec2) Load 31(inF0) 443: 26(fvec2) Load 32(inF1) - 444: 6(float) Dot 442 443 - Store 441(r027) 444 + 444: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 442 443 + Store 441(r026) 444 446: 26(fvec2) Load 31(inF0) - 447: 26(fvec2) ExtInst 1(GLSL.std.450) 27(Exp) 446 - Store 445(r028) 447 - 449: 26(fvec2) Load 31(inF0) - 450: 26(fvec2) ExtInst 1(GLSL.std.450) 29(Exp2) 449 - Store 448(r029) 450 - 452: 26(fvec2) Load 31(inF0) - 453: 26(fvec2) Load 32(inF1) - 454: 26(fvec2) Load 33(inF2) - 455: 26(fvec2) ExtInst 1(GLSL.std.450) 70(FaceForward) 452 453 454 - Store 451(r030) 455 - 460: 28(ivec2) ExtInst 1(GLSL.std.450) 75(FindUMsb) 459 - Store 456(r031) 460 - 462: 28(ivec2) ExtInst 1(GLSL.std.450) 73(FindILsb) 459 - Store 461(r032) 462 - 464: 26(fvec2) Load 31(inF0) - 465: 26(fvec2) ExtInst 1(GLSL.std.450) 8(Floor) 464 - Store 463(r033) 465 - 467: 26(fvec2) Load 31(inF0) - 468: 26(fvec2) Load 32(inF1) - 469: 26(fvec2) FMod 467 468 - Store 466(r035) 469 + 447: 26(fvec2) Load 32(inF1) + 448: 6(float) Dot 446 447 + Store 445(r027) 448 + 450: 26(fvec2) Load 31(inF0) + 451: 26(fvec2) ExtInst 1(GLSL.std.450) 27(Exp) 450 + Store 449(r028) 451 + 453: 26(fvec2) Load 31(inF0) + 454: 26(fvec2) ExtInst 1(GLSL.std.450) 29(Exp2) 453 + Store 452(r029) 454 + 456: 26(fvec2) Load 31(inF0) + 457: 26(fvec2) Load 32(inF1) + 458: 26(fvec2) Load 33(inF2) + 459: 26(fvec2) ExtInst 1(GLSL.std.450) 70(FaceForward) 456 457 458 + Store 455(r030) 459 + 464: 28(ivec2) ExtInst 1(GLSL.std.450) 75(FindUMsb) 463 + Store 460(r031) 464 + 466: 28(ivec2) ExtInst 1(GLSL.std.450) 73(FindILsb) 463 + Store 465(r032) 466 + 468: 26(fvec2) Load 31(inF0) + 469: 26(fvec2) ExtInst 1(GLSL.std.450) 8(Floor) 468 + Store 467(r033) 469 471: 26(fvec2) Load 31(inF0) - 472: 26(fvec2) ExtInst 1(GLSL.std.450) 10(Fract) 471 - Store 470(r036) 472 - 474: 26(fvec2) Load 31(inF0) - 475: 26(fvec2) Fwidth 474 - Store 473(r038) 475 + 472: 26(fvec2) Load 32(inF1) + 473: 26(fvec2) FMod 471 472 + Store 470(r035) 473 + 475: 26(fvec2) Load 31(inF0) + 476: 26(fvec2) ExtInst 1(GLSL.std.450) 10(Fract) 475 + Store 474(r036) 476 478: 26(fvec2) Load 31(inF0) - 479: 349(bvec2) IsInf 478 - Store 477(r039) 479 - 481: 26(fvec2) Load 31(inF0) - 482: 349(bvec2) IsNan 481 - Store 480(r040) 482 - 484: 26(fvec2) Load 31(inF0) - 485: 26(fvec2) Load 32(inF1) - 486: 26(fvec2) ExtInst 1(GLSL.std.450) 53(Ldexp) 484 485 - Store 483(r041) 486 + 479: 26(fvec2) Fwidth 478 + Store 477(r038) 479 + 482: 26(fvec2) Load 31(inF0) + 483: 353(bvec2) IsInf 482 + Store 481(r039) 483 + 485: 26(fvec2) Load 31(inF0) + 486: 353(bvec2) IsNan 485 + Store 484(r040) 486 488: 26(fvec2) Load 31(inF0) 489: 26(fvec2) Load 32(inF1) - 490: 26(fvec2) Load 33(inF2) - 491: 26(fvec2) ExtInst 1(GLSL.std.450) 46(FMix) 488 489 490 - Store 487(r039a) 491 - 493: 26(fvec2) Load 31(inF0) - 494: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 493 - Store 492(r042) 494 - 496: 26(fvec2) Load 31(inF0) - 497: 26(fvec2) ExtInst 1(GLSL.std.450) 28(Log) 496 - Store 495(r043) 497 - 499: 26(fvec2) Load 31(inF0) - 500: 26(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 499 - 501: 26(fvec2) VectorTimesScalar 500 272 - Store 498(r044) 501 + 490: 26(fvec2) ExtInst 1(GLSL.std.450) 53(Ldexp) 488 489 + Store 487(r041) 490 + 492: 26(fvec2) Load 31(inF0) + 493: 26(fvec2) Load 32(inF1) + 494: 26(fvec2) Load 33(inF2) + 495: 26(fvec2) ExtInst 1(GLSL.std.450) 46(FMix) 492 493 494 + Store 491(r039a) 495 + 497: 26(fvec2) Load 31(inF0) + 498: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 497 + Store 496(r042) 498 + 500: 26(fvec2) Load 31(inF0) + 501: 26(fvec2) ExtInst 1(GLSL.std.450) 28(Log) 500 + Store 499(r043) 501 503: 26(fvec2) Load 31(inF0) 504: 26(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 503 - Store 502(r045) 504 - 506: 26(fvec2) Load 31(inF0) - 507: 26(fvec2) Load 32(inF1) - 508: 26(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 506 507 - Store 505(r046) 508 + 505: 26(fvec2) VectorTimesScalar 504 276 + Store 502(r044) 505 + 507: 26(fvec2) Load 31(inF0) + 508: 26(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 507 + Store 506(r045) 508 510: 26(fvec2) Load 31(inF0) 511: 26(fvec2) Load 32(inF1) - 512: 26(fvec2) ExtInst 1(GLSL.std.450) 37(FMin) 510 511 - Store 509(r047) 512 + 512: 26(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 510 511 + Store 509(r046) 512 514: 26(fvec2) Load 31(inF0) - 515: 26(fvec2) ExtInst 1(GLSL.std.450) 69(Normalize) 514 - Store 513(r048) 515 - 517: 26(fvec2) Load 31(inF0) - 518: 26(fvec2) Load 32(inF1) - 519: 26(fvec2) ExtInst 1(GLSL.std.450) 26(Pow) 517 518 - Store 516(r049) 519 + 515: 26(fvec2) Load 32(inF1) + 516: 26(fvec2) ExtInst 1(GLSL.std.450) 37(FMin) 514 515 + Store 513(r047) 516 + 518: 26(fvec2) Load 31(inF0) + 519: 26(fvec2) ExtInst 1(GLSL.std.450) 69(Normalize) 518 + Store 517(r048) 519 521: 26(fvec2) Load 31(inF0) - 522: 26(fvec2) ExtInst 1(GLSL.std.450) 11(Radians) 521 - Store 520(r050) 522 - 524: 26(fvec2) Load 31(inF0) - 525: 26(fvec2) CompositeConstruct 293 293 - 526: 26(fvec2) FDiv 525 524 - Store 523(r051) 526 + 522: 26(fvec2) Load 32(inF1) + 523: 26(fvec2) ExtInst 1(GLSL.std.450) 26(Pow) 521 522 + Store 520(r049) 523 + 525: 26(fvec2) Load 31(inF0) + 526: 26(fvec2) ExtInst 1(GLSL.std.450) 11(Radians) 525 + Store 524(r050) 526 528: 26(fvec2) Load 31(inF0) - 529: 26(fvec2) Load 32(inF1) - 530: 26(fvec2) ExtInst 1(GLSL.std.450) 71(Reflect) 528 529 - Store 527(r052) 530 + 529: 26(fvec2) CompositeConstruct 297 297 + 530: 26(fvec2) FDiv 529 528 + Store 527(r051) 530 532: 26(fvec2) Load 31(inF0) 533: 26(fvec2) Load 32(inF1) - 535: 26(fvec2) ExtInst 1(GLSL.std.450) 72(Refract) 532 533 534 - Store 531(r053) 535 - 540: 28(ivec2) BitReverse 539 - Store 536(r054) 540 - 542: 26(fvec2) Load 31(inF0) - 543: 26(fvec2) ExtInst 1(GLSL.std.450) 2(RoundEven) 542 - Store 541(r055) 543 + 534: 26(fvec2) ExtInst 1(GLSL.std.450) 71(Reflect) 532 533 + Store 531(r052) 534 + 536: 26(fvec2) Load 31(inF0) + 537: 26(fvec2) Load 32(inF1) + 538: 26(fvec2) ExtInst 1(GLSL.std.450) 72(Refract) 536 537 247 + Store 535(r053) 538 + 543: 28(ivec2) BitReverse 542 + Store 539(r054) 543 545: 26(fvec2) Load 31(inF0) - 546: 26(fvec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 545 - Store 544(r056) 546 + 546: 26(fvec2) ExtInst 1(GLSL.std.450) 2(RoundEven) 545 + Store 544(r055) 546 548: 26(fvec2) Load 31(inF0) - 549: 26(fvec2) CompositeConstruct 141 141 - 550: 26(fvec2) CompositeConstruct 293 293 - 551: 26(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 548 549 550 - Store 547(r057) 551 - 553: 26(fvec2) Load 31(inF0) - 554: 26(fvec2) ExtInst 1(GLSL.std.450) 6(FSign) 553 - Store 552(r058) 554 + 549: 26(fvec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 548 + Store 547(r056) 549 + 551: 26(fvec2) Load 31(inF0) + 552: 26(fvec2) CompositeConstruct 141 141 + 553: 26(fvec2) CompositeConstruct 297 297 + 554: 26(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 551 552 553 + Store 550(r057) 554 556: 26(fvec2) Load 31(inF0) - 557: 26(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 556 - Store 555(r059) 557 - 558: 26(fvec2) Load 31(inF0) - 559: 26(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 558 - Store 32(inF1) 559 - 560: 26(fvec2) Load 31(inF0) - 561: 26(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 560 - Store 33(inF2) 561 + 557: 26(fvec2) ExtInst 1(GLSL.std.450) 6(FSign) 556 + Store 555(r058) 557 + 559: 26(fvec2) Load 31(inF0) + 560: 26(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 559 + Store 558(r059) 560 + 561: 26(fvec2) Load 31(inF0) + 562: 26(fvec2) ExtInst 1(GLSL.std.450) 13(Sin) 561 + Store 32(inF1) 562 563: 26(fvec2) Load 31(inF0) - 564: 26(fvec2) ExtInst 1(GLSL.std.450) 19(Sinh) 563 - Store 562(r060) 564 + 564: 26(fvec2) ExtInst 1(GLSL.std.450) 14(Cos) 563 + Store 33(inF2) 564 566: 26(fvec2) Load 31(inF0) - 567: 26(fvec2) Load 32(inF1) - 568: 26(fvec2) Load 33(inF2) - 569: 26(fvec2) ExtInst 1(GLSL.std.450) 49(SmoothStep) 566 567 568 - Store 565(r061) 569 - 571: 26(fvec2) Load 31(inF0) - 572: 26(fvec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 571 - Store 570(r062) 572 + 567: 26(fvec2) ExtInst 1(GLSL.std.450) 19(Sinh) 566 + Store 565(r060) 567 + 569: 26(fvec2) Load 31(inF0) + 570: 26(fvec2) Load 32(inF1) + 571: 26(fvec2) Load 33(inF2) + 572: 26(fvec2) ExtInst 1(GLSL.std.450) 49(SmoothStep) 569 570 571 + Store 568(r061) 572 574: 26(fvec2) Load 31(inF0) - 575: 26(fvec2) Load 32(inF1) - 576: 26(fvec2) ExtInst 1(GLSL.std.450) 48(Step) 574 575 - Store 573(r063) 576 - 578: 26(fvec2) Load 31(inF0) - 579: 26(fvec2) ExtInst 1(GLSL.std.450) 15(Tan) 578 - Store 577(r064) 579 + 575: 26(fvec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 574 + Store 573(r062) 575 + 577: 26(fvec2) Load 31(inF0) + 578: 26(fvec2) Load 32(inF1) + 579: 26(fvec2) ExtInst 1(GLSL.std.450) 48(Step) 577 578 + Store 576(r063) 579 581: 26(fvec2) Load 31(inF0) - 582: 26(fvec2) ExtInst 1(GLSL.std.450) 21(Tanh) 581 - Store 580(r065) 582 + 582: 26(fvec2) ExtInst 1(GLSL.std.450) 15(Tan) 581 + Store 580(r064) 582 584: 26(fvec2) Load 31(inF0) - 585: 26(fvec2) ExtInst 1(GLSL.std.450) 3(Trunc) 584 - Store 583(r066) 585 - ReturnValue 586 + 585: 26(fvec2) ExtInst 1(GLSL.std.450) 21(Tanh) 584 + Store 583(r065) 585 + 587: 26(fvec2) Load 31(inF0) + 588: 26(fvec2) ExtInst 1(GLSL.std.450) 3(Trunc) 587 + Store 586(r066) 588 + ReturnValue 589 FunctionEnd 48(PixelShaderFunction3(vf3;vf3;vf3;vu3;vu3;): 38(fvec3) Function None 42 43(inF0): 39(ptr) FunctionParameter @@ -6892,309 +6911,309 @@ Validation failed 46(inU0): 41(ptr) FunctionParameter 47(inU1): 41(ptr) FunctionParameter 49: Label - 589(r000): 138(ptr) Variable Function - 595(r001): 39(ptr) Variable Function - 598(r002): 39(ptr) Variable Function - 601(r003): 138(ptr) Variable Function - 605(r004): 39(ptr) Variable Function - 610(r005): 609(ptr) Variable Function - 613(r006): 41(ptr) Variable Function - 616(r007): 39(ptr) Variable Function - 619(r009): 39(ptr) Variable Function - 622(r010): 39(ptr) Variable Function - 626(r011): 39(ptr) Variable Function - 629(r012): 39(ptr) Variable Function - 647(r013): 39(ptr) Variable Function - 650(r014): 39(ptr) Variable Function - 653(r015): 41(ptr) Variable Function - 658(r016): 39(ptr) Variable Function - 662(r017): 39(ptr) Variable Function - 665(r018): 39(ptr) Variable Function - 668(r019): 39(ptr) Variable Function - 671(r020): 39(ptr) Variable Function - 674(r021): 39(ptr) Variable Function - 677(r022): 39(ptr) Variable Function - 680(r023): 39(ptr) Variable Function - 683(r024): 7(ptr) Variable Function - 687(r025): 7(ptr) Variable Function - 691(r029): 39(ptr) Variable Function - 694(r030): 39(ptr) Variable Function - 697(r031): 39(ptr) Variable Function - 702(r032): 41(ptr) Variable Function - 706(r033): 41(ptr) Variable Function - 708(r034): 39(ptr) Variable Function - 711(r036): 39(ptr) Variable Function - 715(r037): 39(ptr) Variable Function - 718(r039): 39(ptr) Variable Function - 722(r040): 721(ptr) Variable Function - 725(r041): 721(ptr) Variable Function - 728(r042): 39(ptr) Variable Function - 732(r039a): 39(ptr) Variable Function - 737(r039b): 39(ptr) Variable Function - 743(r043): 7(ptr) Variable Function - 746(r044): 39(ptr) Variable Function - 749(r045): 39(ptr) Variable Function - 753(r046): 39(ptr) Variable Function - 756(r047): 39(ptr) Variable Function - 760(r048): 39(ptr) Variable Function - 764(r049): 39(ptr) Variable Function - 767(r050): 39(ptr) Variable Function - 771(r051): 39(ptr) Variable Function - 774(r052): 39(ptr) Variable Function - 778(r053): 39(ptr) Variable Function - 782(r054): 39(ptr) Variable Function - 786(r055): 41(ptr) Variable Function - 789(r056): 39(ptr) Variable Function - 792(r057): 39(ptr) Variable Function - 795(r058): 39(ptr) Variable Function - 800(r059): 39(ptr) Variable Function - 803(r060): 39(ptr) Variable Function - 810(r061): 39(ptr) Variable Function - 813(r062): 39(ptr) Variable Function - 818(r063): 39(ptr) Variable Function - 821(r064): 39(ptr) Variable Function - 825(r065): 39(ptr) Variable Function - 828(r066): 39(ptr) Variable Function - 831(r067): 39(ptr) Variable Function - 590: 38(fvec3) Load 43(inF0) - 593: 591(bvec3) FOrdNotEqual 590 592 - 594: 137(bool) All 593 - Store 589(r000) 594 - 596: 38(fvec3) Load 43(inF0) - 597: 38(fvec3) ExtInst 1(GLSL.std.450) 4(FAbs) 596 - Store 595(r001) 597 + 592(r000): 138(ptr) Variable Function + 598(r001): 39(ptr) Variable Function + 601(r002): 39(ptr) Variable Function + 604(r003): 138(ptr) Variable Function + 608(r004): 39(ptr) Variable Function + 613(r005): 612(ptr) Variable Function + 616(r006): 41(ptr) Variable Function + 619(r007): 39(ptr) Variable Function + 622(r009): 39(ptr) Variable Function + 625(r010): 39(ptr) Variable Function + 629(r011): 39(ptr) Variable Function + 632(r012): 39(ptr) Variable Function + 650(r013): 39(ptr) Variable Function + 653(r014): 39(ptr) Variable Function + 656(r015): 41(ptr) Variable Function + 661(r016): 39(ptr) Variable Function + 665(r017): 39(ptr) Variable Function + 668(r018): 39(ptr) Variable Function + 671(r019): 39(ptr) Variable Function + 674(r020): 39(ptr) Variable Function + 677(r021): 39(ptr) Variable Function + 680(r022): 39(ptr) Variable Function + 683(r023): 39(ptr) Variable Function + 686(r024): 7(ptr) Variable Function + 690(r025): 7(ptr) Variable Function + 694(r029): 39(ptr) Variable Function + 697(r030): 39(ptr) Variable Function + 700(r031): 39(ptr) Variable Function + 705(r032): 41(ptr) Variable Function + 709(r033): 41(ptr) Variable Function + 711(r034): 39(ptr) Variable Function + 714(r036): 39(ptr) Variable Function + 718(r037): 39(ptr) Variable Function + 721(r039): 39(ptr) Variable Function + 725(r040): 724(ptr) Variable Function + 728(r041): 724(ptr) Variable Function + 731(r042): 39(ptr) Variable Function + 735(r039a): 39(ptr) Variable Function + 740(r039b): 39(ptr) Variable Function + 746(r043): 7(ptr) Variable Function + 749(r044): 39(ptr) Variable Function + 752(r045): 39(ptr) Variable Function + 756(r046): 39(ptr) Variable Function + 759(r047): 39(ptr) Variable Function + 763(r048): 39(ptr) Variable Function + 767(r049): 39(ptr) Variable Function + 770(r050): 39(ptr) Variable Function + 774(r051): 39(ptr) Variable Function + 777(r052): 39(ptr) Variable Function + 781(r053): 39(ptr) Variable Function + 785(r054): 39(ptr) Variable Function + 789(r055): 41(ptr) Variable Function + 792(r056): 39(ptr) Variable Function + 795(r057): 39(ptr) Variable Function + 798(r058): 39(ptr) Variable Function + 803(r059): 39(ptr) Variable Function + 806(r060): 39(ptr) Variable Function + 813(r061): 39(ptr) Variable Function + 816(r062): 39(ptr) Variable Function + 821(r063): 39(ptr) Variable Function + 824(r064): 39(ptr) Variable Function + 828(r065): 39(ptr) Variable Function + 831(r066): 39(ptr) Variable Function + 834(r067): 39(ptr) Variable Function + 593: 38(fvec3) Load 43(inF0) + 596: 594(bvec3) FOrdNotEqual 593 595 + 597: 137(bool) All 596 + Store 592(r000) 597 599: 38(fvec3) Load 43(inF0) - 600: 38(fvec3) ExtInst 1(GLSL.std.450) 17(Acos) 599 - Store 598(r002) 600 + 600: 38(fvec3) ExtInst 1(GLSL.std.450) 4(FAbs) 599 + Store 598(r001) 600 602: 38(fvec3) Load 43(inF0) - 603: 591(bvec3) FOrdNotEqual 602 592 - 604: 137(bool) Any 603 - Store 601(r003) 604 - 606: 38(fvec3) Load 43(inF0) - 607: 38(fvec3) ExtInst 1(GLSL.std.450) 16(Asin) 606 - Store 605(r004) 607 - 611: 38(fvec3) Load 43(inF0) - 612: 608(ivec3) Bitcast 611 - Store 610(r005) 612 + 603: 38(fvec3) ExtInst 1(GLSL.std.450) 17(Acos) 602 + Store 601(r002) 603 + 605: 38(fvec3) Load 43(inF0) + 606: 594(bvec3) FOrdNotEqual 605 595 + 607: 137(bool) Any 606 + Store 604(r003) 607 + 609: 38(fvec3) Load 43(inF0) + 610: 38(fvec3) ExtInst 1(GLSL.std.450) 16(Asin) 609 + Store 608(r004) 610 614: 38(fvec3) Load 43(inF0) - 615: 40(ivec3) Bitcast 614 - Store 613(r006) 615 - 617: 40(ivec3) Load 46(inU0) - 618: 38(fvec3) Bitcast 617 - Store 616(r007) 618 - 620: 38(fvec3) Load 43(inF0) - 621: 38(fvec3) ExtInst 1(GLSL.std.450) 18(Atan) 620 - Store 619(r009) 621 + 615: 611(ivec3) Bitcast 614 + Store 613(r005) 615 + 617: 38(fvec3) Load 43(inF0) + 618: 40(ivec3) Bitcast 617 + Store 616(r006) 618 + 620: 40(ivec3) Load 46(inU0) + 621: 38(fvec3) Bitcast 620 + Store 619(r007) 621 623: 38(fvec3) Load 43(inF0) - 624: 38(fvec3) Load 44(inF1) - 625: 38(fvec3) ExtInst 1(GLSL.std.450) 25(Atan2) 623 624 - Store 622(r010) 625 - 627: 38(fvec3) Load 43(inF0) - 628: 38(fvec3) ExtInst 1(GLSL.std.450) 9(Ceil) 627 - Store 626(r011) 628 + 624: 38(fvec3) ExtInst 1(GLSL.std.450) 18(Atan) 623 + Store 622(r009) 624 + 626: 38(fvec3) Load 43(inF0) + 627: 38(fvec3) Load 44(inF1) + 628: 38(fvec3) ExtInst 1(GLSL.std.450) 25(Atan2) 626 627 + Store 625(r010) 628 630: 38(fvec3) Load 43(inF0) - 631: 38(fvec3) Load 44(inF1) - 632: 38(fvec3) Load 45(inF2) - 633: 38(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 630 631 632 - Store 629(r012) 633 - 634: 38(fvec3) Load 43(inF0) - 635: 591(bvec3) FOrdLessThan 634 592 - 636: 137(bool) Any 635 - SelectionMerge 638 None - BranchConditional 636 637 638 - 637: Label + 631: 38(fvec3) ExtInst 1(GLSL.std.450) 9(Ceil) 630 + Store 629(r011) 631 + 633: 38(fvec3) Load 43(inF0) + 634: 38(fvec3) Load 44(inF1) + 635: 38(fvec3) Load 45(inF2) + 636: 38(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 633 634 635 + Store 632(r012) 636 + 637: 38(fvec3) Load 43(inF0) + 638: 594(bvec3) FOrdLessThan 637 595 + 639: 137(bool) Any 638 + SelectionMerge 641 None + BranchConditional 639 640 641 + 640: Label Kill - 638: Label - 640: 40(ivec3) Load 46(inU0) - 642: 591(bvec3) ULessThan 640 641 - 643: 137(bool) Any 642 - SelectionMerge 645 None - BranchConditional 643 644 645 - 644: Label + 641: Label + 643: 40(ivec3) Load 46(inU0) + 645: 594(bvec3) ULessThan 643 644 + 646: 137(bool) Any 645 + SelectionMerge 648 None + BranchConditional 646 647 648 + 647: Label Kill - 645: Label - 648: 38(fvec3) Load 43(inF0) - 649: 38(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 648 - Store 647(r013) 649 + 648: Label 651: 38(fvec3) Load 43(inF0) - 652: 38(fvec3) ExtInst 1(GLSL.std.450) 20(Cosh) 651 - Store 650(r014) 652 - 657: 40(ivec3) BitCount 656 - Store 653(r015) 657 - 659: 38(fvec3) Load 43(inF0) - 660: 38(fvec3) Load 44(inF1) - 661: 38(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 659 660 - Store 658(r016) 661 - 663: 38(fvec3) Load 43(inF0) - 664: 38(fvec3) DPdx 663 - Store 662(r017) 664 + 652: 38(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 651 + Store 650(r013) 652 + 654: 38(fvec3) Load 43(inF0) + 655: 38(fvec3) ExtInst 1(GLSL.std.450) 20(Cosh) 654 + Store 653(r014) 655 + 660: 40(ivec3) BitCount 659 + Store 656(r015) 660 + 662: 38(fvec3) Load 43(inF0) + 663: 38(fvec3) Load 44(inF1) + 664: 38(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 662 663 + Store 661(r016) 664 666: 38(fvec3) Load 43(inF0) - 667: 38(fvec3) DPdxCoarse 666 - Store 665(r018) 667 + 667: 38(fvec3) DPdx 666 + Store 665(r017) 667 669: 38(fvec3) Load 43(inF0) - 670: 38(fvec3) DPdxFine 669 - Store 668(r019) 670 + 670: 38(fvec3) DPdxCoarse 669 + Store 668(r018) 670 672: 38(fvec3) Load 43(inF0) - 673: 38(fvec3) DPdy 672 - Store 671(r020) 673 + 673: 38(fvec3) DPdxFine 672 + Store 671(r019) 673 675: 38(fvec3) Load 43(inF0) - 676: 38(fvec3) DPdyCoarse 675 - Store 674(r021) 676 + 676: 38(fvec3) DPdy 675 + Store 674(r020) 676 678: 38(fvec3) Load 43(inF0) - 679: 38(fvec3) DPdyFine 678 - Store 677(r022) 679 + 679: 38(fvec3) DPdyCoarse 678 + Store 677(r021) 679 681: 38(fvec3) Load 43(inF0) - 682: 38(fvec3) ExtInst 1(GLSL.std.450) 12(Degrees) 681 - Store 680(r023) 682 + 682: 38(fvec3) DPdyFine 681 + Store 680(r022) 682 684: 38(fvec3) Load 43(inF0) - 685: 38(fvec3) Load 44(inF1) - 686: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 684 685 - Store 683(r024) 686 - 688: 38(fvec3) Load 43(inF0) - 689: 38(fvec3) Load 44(inF1) - 690: 6(float) Dot 688 689 - Store 687(r025) 690 - 692: 38(fvec3) Load 43(inF0) - 693: 38(fvec3) ExtInst 1(GLSL.std.450) 27(Exp) 692 - Store 691(r029) 693 + 685: 38(fvec3) ExtInst 1(GLSL.std.450) 12(Degrees) 684 + Store 683(r023) 685 + 687: 38(fvec3) Load 43(inF0) + 688: 38(fvec3) Load 44(inF1) + 689: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 687 688 + Store 686(r024) 689 + 691: 38(fvec3) Load 43(inF0) + 692: 38(fvec3) Load 44(inF1) + 693: 6(float) Dot 691 692 + Store 690(r025) 693 695: 38(fvec3) Load 43(inF0) - 696: 38(fvec3) ExtInst 1(GLSL.std.450) 29(Exp2) 695 - Store 694(r030) 696 + 696: 38(fvec3) ExtInst 1(GLSL.std.450) 27(Exp) 695 + Store 694(r029) 696 698: 38(fvec3) Load 43(inF0) - 699: 38(fvec3) Load 44(inF1) - 700: 38(fvec3) Load 45(inF2) - 701: 38(fvec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 698 699 700 - Store 697(r031) 701 - 705: 40(ivec3) ExtInst 1(GLSL.std.450) 75(FindUMsb) 704 - Store 702(r032) 705 - 707: 40(ivec3) ExtInst 1(GLSL.std.450) 73(FindILsb) 704 - Store 706(r033) 707 - 709: 38(fvec3) Load 43(inF0) - 710: 38(fvec3) ExtInst 1(GLSL.std.450) 8(Floor) 709 - Store 708(r034) 710 + 699: 38(fvec3) ExtInst 1(GLSL.std.450) 29(Exp2) 698 + Store 697(r030) 699 + 701: 38(fvec3) Load 43(inF0) + 702: 38(fvec3) Load 44(inF1) + 703: 38(fvec3) Load 45(inF2) + 704: 38(fvec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 701 702 703 + Store 700(r031) 704 + 708: 40(ivec3) ExtInst 1(GLSL.std.450) 75(FindUMsb) 707 + Store 705(r032) 708 + 710: 40(ivec3) ExtInst 1(GLSL.std.450) 73(FindILsb) 707 + Store 709(r033) 710 712: 38(fvec3) Load 43(inF0) - 713: 38(fvec3) Load 44(inF1) - 714: 38(fvec3) FMod 712 713 - Store 711(r036) 714 - 716: 38(fvec3) Load 43(inF0) - 717: 38(fvec3) ExtInst 1(GLSL.std.450) 10(Fract) 716 - Store 715(r037) 717 + 713: 38(fvec3) ExtInst 1(GLSL.std.450) 8(Floor) 712 + Store 711(r034) 713 + 715: 38(fvec3) Load 43(inF0) + 716: 38(fvec3) Load 44(inF1) + 717: 38(fvec3) FMod 715 716 + Store 714(r036) 717 719: 38(fvec3) Load 43(inF0) - 720: 38(fvec3) Fwidth 719 - Store 718(r039) 720 - 723: 38(fvec3) Load 43(inF0) - 724: 591(bvec3) IsInf 723 - Store 722(r040) 724 + 720: 38(fvec3) ExtInst 1(GLSL.std.450) 10(Fract) 719 + Store 718(r037) 720 + 722: 38(fvec3) Load 43(inF0) + 723: 38(fvec3) Fwidth 722 + Store 721(r039) 723 726: 38(fvec3) Load 43(inF0) - 727: 591(bvec3) IsNan 726 - Store 725(r041) 727 + 727: 594(bvec3) IsInf 726 + Store 725(r040) 727 729: 38(fvec3) Load 43(inF0) - 730: 38(fvec3) Load 44(inF1) - 731: 38(fvec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 729 730 - Store 728(r042) 731 - 733: 38(fvec3) Load 43(inF0) - 734: 38(fvec3) Load 44(inF1) - 735: 38(fvec3) Load 45(inF2) - 736: 38(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 733 734 735 - Store 732(r039a) 736 - 738: 38(fvec3) Load 43(inF0) - 739: 38(fvec3) Load 44(inF1) - 741: 38(fvec3) CompositeConstruct 740 740 740 - 742: 38(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 738 739 741 - Store 737(r039b) 742 - 744: 38(fvec3) Load 43(inF0) - 745: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 744 - Store 743(r043) 745 + 730: 594(bvec3) IsNan 729 + Store 728(r041) 730 + 732: 38(fvec3) Load 43(inF0) + 733: 38(fvec3) Load 44(inF1) + 734: 38(fvec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 732 733 + Store 731(r042) 734 + 736: 38(fvec3) Load 43(inF0) + 737: 38(fvec3) Load 44(inF1) + 738: 38(fvec3) Load 45(inF2) + 739: 38(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 736 737 738 + Store 735(r039a) 739 + 741: 38(fvec3) Load 43(inF0) + 742: 38(fvec3) Load 44(inF1) + 744: 38(fvec3) CompositeConstruct 743 743 743 + 745: 38(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 741 742 744 + Store 740(r039b) 745 747: 38(fvec3) Load 43(inF0) - 748: 38(fvec3) ExtInst 1(GLSL.std.450) 28(Log) 747 - Store 746(r044) 748 + 748: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 747 + Store 746(r043) 748 750: 38(fvec3) Load 43(inF0) - 751: 38(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 750 - 752: 38(fvec3) VectorTimesScalar 751 272 - Store 749(r045) 752 - 754: 38(fvec3) Load 43(inF0) - 755: 38(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 754 - Store 753(r046) 755 + 751: 38(fvec3) ExtInst 1(GLSL.std.450) 28(Log) 750 + Store 749(r044) 751 + 753: 38(fvec3) Load 43(inF0) + 754: 38(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 753 + 755: 38(fvec3) VectorTimesScalar 754 276 + Store 752(r045) 755 757: 38(fvec3) Load 43(inF0) - 758: 38(fvec3) Load 44(inF1) - 759: 38(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 757 758 - Store 756(r047) 759 - 761: 38(fvec3) Load 43(inF0) - 762: 38(fvec3) Load 44(inF1) - 763: 38(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 761 762 - Store 760(r048) 763 - 765: 38(fvec3) Load 43(inF0) - 766: 38(fvec3) ExtInst 1(GLSL.std.450) 69(Normalize) 765 - Store 764(r049) 766 + 758: 38(fvec3) ExtInst 1(GLSL.std.450) 30(Log2) 757 + Store 756(r046) 758 + 760: 38(fvec3) Load 43(inF0) + 761: 38(fvec3) Load 44(inF1) + 762: 38(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 760 761 + Store 759(r047) 762 + 764: 38(fvec3) Load 43(inF0) + 765: 38(fvec3) Load 44(inF1) + 766: 38(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 764 765 + Store 763(r048) 766 768: 38(fvec3) Load 43(inF0) - 769: 38(fvec3) Load 44(inF1) - 770: 38(fvec3) ExtInst 1(GLSL.std.450) 26(Pow) 768 769 - Store 767(r050) 770 - 772: 38(fvec3) Load 43(inF0) - 773: 38(fvec3) ExtInst 1(GLSL.std.450) 11(Radians) 772 - Store 771(r051) 773 + 769: 38(fvec3) ExtInst 1(GLSL.std.450) 69(Normalize) 768 + Store 767(r049) 769 + 771: 38(fvec3) Load 43(inF0) + 772: 38(fvec3) Load 44(inF1) + 773: 38(fvec3) ExtInst 1(GLSL.std.450) 26(Pow) 771 772 + Store 770(r050) 773 775: 38(fvec3) Load 43(inF0) - 776: 38(fvec3) CompositeConstruct 293 293 293 - 777: 38(fvec3) FDiv 776 775 - Store 774(r052) 777 - 779: 38(fvec3) Load 43(inF0) - 780: 38(fvec3) Load 44(inF1) - 781: 38(fvec3) ExtInst 1(GLSL.std.450) 71(Reflect) 779 780 - Store 778(r053) 781 - 783: 38(fvec3) Load 43(inF0) - 784: 38(fvec3) Load 44(inF1) - 785: 38(fvec3) ExtInst 1(GLSL.std.450) 72(Refract) 783 784 534 - Store 782(r054) 785 - 788: 40(ivec3) BitReverse 787 - Store 786(r055) 788 - 790: 38(fvec3) Load 43(inF0) - 791: 38(fvec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 790 - Store 789(r056) 791 + 776: 38(fvec3) ExtInst 1(GLSL.std.450) 11(Radians) 775 + Store 774(r051) 776 + 778: 38(fvec3) Load 43(inF0) + 779: 38(fvec3) CompositeConstruct 297 297 297 + 780: 38(fvec3) FDiv 779 778 + Store 777(r052) 780 + 782: 38(fvec3) Load 43(inF0) + 783: 38(fvec3) Load 44(inF1) + 784: 38(fvec3) ExtInst 1(GLSL.std.450) 71(Reflect) 782 783 + Store 781(r053) 784 + 786: 38(fvec3) Load 43(inF0) + 787: 38(fvec3) Load 44(inF1) + 788: 38(fvec3) ExtInst 1(GLSL.std.450) 72(Refract) 786 787 247 + Store 785(r054) 788 + 791: 40(ivec3) BitReverse 790 + Store 789(r055) 791 793: 38(fvec3) Load 43(inF0) - 794: 38(fvec3) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 793 - Store 792(r057) 794 + 794: 38(fvec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 793 + Store 792(r056) 794 796: 38(fvec3) Load 43(inF0) - 797: 38(fvec3) CompositeConstruct 141 141 141 - 798: 38(fvec3) CompositeConstruct 293 293 293 - 799: 38(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 796 797 798 - Store 795(r058) 799 - 801: 38(fvec3) Load 43(inF0) - 802: 38(fvec3) ExtInst 1(GLSL.std.450) 6(FSign) 801 - Store 800(r059) 802 + 797: 38(fvec3) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 796 + Store 795(r057) 797 + 799: 38(fvec3) Load 43(inF0) + 800: 38(fvec3) CompositeConstruct 141 141 141 + 801: 38(fvec3) CompositeConstruct 297 297 297 + 802: 38(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 799 800 801 + Store 798(r058) 802 804: 38(fvec3) Load 43(inF0) - 805: 38(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 804 - Store 803(r060) 805 - 806: 38(fvec3) Load 43(inF0) - 807: 38(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 806 - Store 44(inF1) 807 - 808: 38(fvec3) Load 43(inF0) - 809: 38(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 808 - Store 45(inF2) 809 + 805: 38(fvec3) ExtInst 1(GLSL.std.450) 6(FSign) 804 + Store 803(r059) 805 + 807: 38(fvec3) Load 43(inF0) + 808: 38(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 807 + Store 806(r060) 808 + 809: 38(fvec3) Load 43(inF0) + 810: 38(fvec3) ExtInst 1(GLSL.std.450) 13(Sin) 809 + Store 44(inF1) 810 811: 38(fvec3) Load 43(inF0) - 812: 38(fvec3) ExtInst 1(GLSL.std.450) 19(Sinh) 811 - Store 810(r061) 812 + 812: 38(fvec3) ExtInst 1(GLSL.std.450) 14(Cos) 811 + Store 45(inF2) 812 814: 38(fvec3) Load 43(inF0) - 815: 38(fvec3) Load 44(inF1) - 816: 38(fvec3) Load 45(inF2) - 817: 38(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 814 815 816 - Store 813(r062) 817 - 819: 38(fvec3) Load 43(inF0) - 820: 38(fvec3) ExtInst 1(GLSL.std.450) 31(Sqrt) 819 - Store 818(r063) 820 + 815: 38(fvec3) ExtInst 1(GLSL.std.450) 19(Sinh) 814 + Store 813(r061) 815 + 817: 38(fvec3) Load 43(inF0) + 818: 38(fvec3) Load 44(inF1) + 819: 38(fvec3) Load 45(inF2) + 820: 38(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 817 818 819 + Store 816(r062) 820 822: 38(fvec3) Load 43(inF0) - 823: 38(fvec3) Load 44(inF1) - 824: 38(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 822 823 - Store 821(r064) 824 - 826: 38(fvec3) Load 43(inF0) - 827: 38(fvec3) ExtInst 1(GLSL.std.450) 15(Tan) 826 - Store 825(r065) 827 + 823: 38(fvec3) ExtInst 1(GLSL.std.450) 31(Sqrt) 822 + Store 821(r063) 823 + 825: 38(fvec3) Load 43(inF0) + 826: 38(fvec3) Load 44(inF1) + 827: 38(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 825 826 + Store 824(r064) 827 829: 38(fvec3) Load 43(inF0) - 830: 38(fvec3) ExtInst 1(GLSL.std.450) 21(Tanh) 829 - Store 828(r066) 830 + 830: 38(fvec3) ExtInst 1(GLSL.std.450) 15(Tan) 829 + Store 828(r065) 830 832: 38(fvec3) Load 43(inF0) - 833: 38(fvec3) ExtInst 1(GLSL.std.450) 3(Trunc) 832 - Store 831(r067) 833 - ReturnValue 835 + 833: 38(fvec3) ExtInst 1(GLSL.std.450) 21(Tanh) 832 + Store 831(r066) 833 + 835: 38(fvec3) Load 43(inF0) + 836: 38(fvec3) ExtInst 1(GLSL.std.450) 3(Trunc) 835 + Store 834(r067) 836 + ReturnValue 838 FunctionEnd 60(PixelShaderFunction(vf4;vf4;vf4;vu4;vu4;): 50(fvec4) Function None 54 55(inF0): 51(ptr) FunctionParameter @@ -7203,1006 +7222,1006 @@ Validation failed 58(inU0): 53(ptr) FunctionParameter 59(inU1): 53(ptr) FunctionParameter 61: Label - 838(r000): 138(ptr) Variable Function - 844(r001): 51(ptr) Variable Function - 847(r002): 51(ptr) Variable Function - 850(r003): 138(ptr) Variable Function - 854(r004): 51(ptr) Variable Function - 859(r005): 858(ptr) Variable Function - 862(r006): 53(ptr) Variable Function - 865(r007): 51(ptr) Variable Function - 868(r009): 51(ptr) Variable Function - 871(r010): 51(ptr) Variable Function - 875(r011): 51(ptr) Variable Function - 878(r012): 51(ptr) Variable Function - 896(r013): 51(ptr) Variable Function - 899(r014): 51(ptr) Variable Function - 902(r015): 53(ptr) Variable Function - 905(r016): 51(ptr) Variable Function - 908(r017): 51(ptr) Variable Function - 911(r018): 51(ptr) Variable Function - 914(r019): 51(ptr) Variable Function - 917(r020): 51(ptr) Variable Function - 920(r021): 51(ptr) Variable Function - 923(r022): 51(ptr) Variable Function - 926(r023): 7(ptr) Variable Function - 930(r024): 7(ptr) Variable Function - 934(r025): 51(ptr) Variable Function - 945(r029): 51(ptr) Variable Function - 948(r030): 51(ptr) Variable Function - 951(r031): 51(ptr) Variable Function - 956(r032): 53(ptr) Variable Function - 961(r033): 53(ptr) Variable Function - 963(r034): 51(ptr) Variable Function - 966(r036): 51(ptr) Variable Function - 970(r037): 51(ptr) Variable Function - 973(r039): 51(ptr) Variable Function - 977(r040): 976(ptr) Variable Function - 980(r041): 976(ptr) Variable Function - 983(r042): 51(ptr) Variable Function - 987(r039a): 51(ptr) Variable Function - 992(r043): 7(ptr) Variable Function - 995(r044): 51(ptr) Variable Function - 998(r045): 51(ptr) Variable Function - 1002(r046): 51(ptr) Variable Function - 1005(r047): 51(ptr) Variable Function - 1009(r048): 51(ptr) Variable Function - 1013(r049): 51(ptr) Variable Function - 1016(r050): 51(ptr) Variable Function - 1020(r051): 51(ptr) Variable Function - 1023(r052): 51(ptr) Variable Function - 1027(r053): 51(ptr) Variable Function - 1031(r054): 51(ptr) Variable Function - 1035(r055): 53(ptr) Variable Function - 1038(r056): 51(ptr) Variable Function - 1041(r057): 51(ptr) Variable Function - 1044(r058): 51(ptr) Variable Function - 1049(r059): 51(ptr) Variable Function - 1052(r060): 51(ptr) Variable Function - 1059(r061): 51(ptr) Variable Function - 1062(r062): 51(ptr) Variable Function - 1067(r063): 51(ptr) Variable Function - 1070(r064): 51(ptr) Variable Function - 1074(r065): 51(ptr) Variable Function - 1077(r066): 51(ptr) Variable Function - 1080(r067): 51(ptr) Variable Function - 839: 50(fvec4) Load 55(inF0) - 842: 840(bvec4) FOrdNotEqual 839 841 - 843: 137(bool) All 842 - Store 838(r000) 843 - 845: 50(fvec4) Load 55(inF0) - 846: 50(fvec4) ExtInst 1(GLSL.std.450) 4(FAbs) 845 - Store 844(r001) 846 + 841(r000): 138(ptr) Variable Function + 847(r001): 51(ptr) Variable Function + 850(r002): 51(ptr) Variable Function + 853(r003): 138(ptr) Variable Function + 857(r004): 51(ptr) Variable Function + 862(r005): 861(ptr) Variable Function + 865(r006): 53(ptr) Variable Function + 868(r007): 51(ptr) Variable Function + 871(r009): 51(ptr) Variable Function + 874(r010): 51(ptr) Variable Function + 878(r011): 51(ptr) Variable Function + 881(r012): 51(ptr) Variable Function + 899(r013): 51(ptr) Variable Function + 902(r014): 51(ptr) Variable Function + 905(r015): 53(ptr) Variable Function + 908(r016): 51(ptr) Variable Function + 911(r017): 51(ptr) Variable Function + 914(r018): 51(ptr) Variable Function + 917(r019): 51(ptr) Variable Function + 920(r020): 51(ptr) Variable Function + 923(r021): 51(ptr) Variable Function + 926(r022): 51(ptr) Variable Function + 929(r023): 7(ptr) Variable Function + 933(r024): 7(ptr) Variable Function + 937(r025): 51(ptr) Variable Function + 948(r029): 51(ptr) Variable Function + 951(r030): 51(ptr) Variable Function + 954(r031): 51(ptr) Variable Function + 959(r032): 53(ptr) Variable Function + 964(r033): 53(ptr) Variable Function + 966(r034): 51(ptr) Variable Function + 969(r036): 51(ptr) Variable Function + 973(r037): 51(ptr) Variable Function + 976(r039): 51(ptr) Variable Function + 980(r040): 979(ptr) Variable Function + 983(r041): 979(ptr) Variable Function + 986(r042): 51(ptr) Variable Function + 990(r039a): 51(ptr) Variable Function + 995(r043): 7(ptr) Variable Function + 998(r044): 51(ptr) Variable Function + 1001(r045): 51(ptr) Variable Function + 1005(r046): 51(ptr) Variable Function + 1008(r047): 51(ptr) Variable Function + 1012(r048): 51(ptr) Variable Function + 1016(r049): 51(ptr) Variable Function + 1019(r050): 51(ptr) Variable Function + 1023(r051): 51(ptr) Variable Function + 1026(r052): 51(ptr) Variable Function + 1030(r053): 51(ptr) Variable Function + 1034(r054): 51(ptr) Variable Function + 1038(r055): 53(ptr) Variable Function + 1041(r056): 51(ptr) Variable Function + 1044(r057): 51(ptr) Variable Function + 1047(r058): 51(ptr) Variable Function + 1052(r059): 51(ptr) Variable Function + 1055(r060): 51(ptr) Variable Function + 1062(r061): 51(ptr) Variable Function + 1065(r062): 51(ptr) Variable Function + 1070(r063): 51(ptr) Variable Function + 1073(r064): 51(ptr) Variable Function + 1077(r065): 51(ptr) Variable Function + 1080(r066): 51(ptr) Variable Function + 1083(r067): 51(ptr) Variable Function + 842: 50(fvec4) Load 55(inF0) + 845: 843(bvec4) FOrdNotEqual 842 844 + 846: 137(bool) All 845 + Store 841(r000) 846 848: 50(fvec4) Load 55(inF0) - 849: 50(fvec4) ExtInst 1(GLSL.std.450) 17(Acos) 848 - Store 847(r002) 849 + 849: 50(fvec4) ExtInst 1(GLSL.std.450) 4(FAbs) 848 + Store 847(r001) 849 851: 50(fvec4) Load 55(inF0) - 852: 840(bvec4) FOrdNotEqual 851 841 - 853: 137(bool) Any 852 - Store 850(r003) 853 - 855: 50(fvec4) Load 55(inF0) - 856: 50(fvec4) ExtInst 1(GLSL.std.450) 16(Asin) 855 - Store 854(r004) 856 - 860: 50(fvec4) Load 55(inF0) - 861: 857(ivec4) Bitcast 860 - Store 859(r005) 861 + 852: 50(fvec4) ExtInst 1(GLSL.std.450) 17(Acos) 851 + Store 850(r002) 852 + 854: 50(fvec4) Load 55(inF0) + 855: 843(bvec4) FOrdNotEqual 854 844 + 856: 137(bool) Any 855 + Store 853(r003) 856 + 858: 50(fvec4) Load 55(inF0) + 859: 50(fvec4) ExtInst 1(GLSL.std.450) 16(Asin) 858 + Store 857(r004) 859 863: 50(fvec4) Load 55(inF0) - 864: 52(ivec4) Bitcast 863 - Store 862(r006) 864 - 866: 52(ivec4) Load 58(inU0) - 867: 50(fvec4) Bitcast 866 - Store 865(r007) 867 - 869: 50(fvec4) Load 55(inF0) - 870: 50(fvec4) ExtInst 1(GLSL.std.450) 18(Atan) 869 - Store 868(r009) 870 + 864: 860(ivec4) Bitcast 863 + Store 862(r005) 864 + 866: 50(fvec4) Load 55(inF0) + 867: 52(ivec4) Bitcast 866 + Store 865(r006) 867 + 869: 52(ivec4) Load 58(inU0) + 870: 50(fvec4) Bitcast 869 + Store 868(r007) 870 872: 50(fvec4) Load 55(inF0) - 873: 50(fvec4) Load 56(inF1) - 874: 50(fvec4) ExtInst 1(GLSL.std.450) 25(Atan2) 872 873 - Store 871(r010) 874 - 876: 50(fvec4) Load 55(inF0) - 877: 50(fvec4) ExtInst 1(GLSL.std.450) 9(Ceil) 876 - Store 875(r011) 877 + 873: 50(fvec4) ExtInst 1(GLSL.std.450) 18(Atan) 872 + Store 871(r009) 873 + 875: 50(fvec4) Load 55(inF0) + 876: 50(fvec4) Load 56(inF1) + 877: 50(fvec4) ExtInst 1(GLSL.std.450) 25(Atan2) 875 876 + Store 874(r010) 877 879: 50(fvec4) Load 55(inF0) - 880: 50(fvec4) Load 56(inF1) - 881: 50(fvec4) Load 57(inF2) - 882: 50(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 879 880 881 - Store 878(r012) 882 - 883: 50(fvec4) Load 55(inF0) - 884: 840(bvec4) FOrdLessThan 883 841 - 885: 137(bool) Any 884 - SelectionMerge 887 None - BranchConditional 885 886 887 - 886: Label + 880: 50(fvec4) ExtInst 1(GLSL.std.450) 9(Ceil) 879 + Store 878(r011) 880 + 882: 50(fvec4) Load 55(inF0) + 883: 50(fvec4) Load 56(inF1) + 884: 50(fvec4) Load 57(inF2) + 885: 50(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 882 883 884 + Store 881(r012) 885 + 886: 50(fvec4) Load 55(inF0) + 887: 843(bvec4) FOrdLessThan 886 844 + 888: 137(bool) Any 887 + SelectionMerge 890 None + BranchConditional 888 889 890 + 889: Label Kill - 887: Label - 889: 52(ivec4) Load 58(inU0) - 891: 840(bvec4) ULessThan 889 890 - 892: 137(bool) Any 891 - SelectionMerge 894 None - BranchConditional 892 893 894 - 893: Label + 890: Label + 892: 52(ivec4) Load 58(inU0) + 894: 843(bvec4) ULessThan 892 893 + 895: 137(bool) Any 894 + SelectionMerge 897 None + BranchConditional 895 896 897 + 896: Label Kill - 894: Label - 897: 50(fvec4) Load 55(inF0) - 898: 50(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 897 - Store 896(r013) 898 + 897: Label 900: 50(fvec4) Load 55(inF0) - 901: 50(fvec4) ExtInst 1(GLSL.std.450) 20(Cosh) 900 - Store 899(r014) 901 - 904: 52(ivec4) BitCount 903 - Store 902(r015) 904 - 906: 50(fvec4) Load 55(inF0) - 907: 50(fvec4) DPdx 906 - Store 905(r016) 907 + 901: 50(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 900 + Store 899(r013) 901 + 903: 50(fvec4) Load 55(inF0) + 904: 50(fvec4) ExtInst 1(GLSL.std.450) 20(Cosh) 903 + Store 902(r014) 904 + 907: 52(ivec4) BitCount 906 + Store 905(r015) 907 909: 50(fvec4) Load 55(inF0) - 910: 50(fvec4) DPdxCoarse 909 - Store 908(r017) 910 + 910: 50(fvec4) DPdx 909 + Store 908(r016) 910 912: 50(fvec4) Load 55(inF0) - 913: 50(fvec4) DPdxFine 912 - Store 911(r018) 913 + 913: 50(fvec4) DPdxCoarse 912 + Store 911(r017) 913 915: 50(fvec4) Load 55(inF0) - 916: 50(fvec4) DPdy 915 - Store 914(r019) 916 + 916: 50(fvec4) DPdxFine 915 + Store 914(r018) 916 918: 50(fvec4) Load 55(inF0) - 919: 50(fvec4) DPdyCoarse 918 - Store 917(r020) 919 + 919: 50(fvec4) DPdy 918 + Store 917(r019) 919 921: 50(fvec4) Load 55(inF0) - 922: 50(fvec4) DPdyFine 921 - Store 920(r021) 922 + 922: 50(fvec4) DPdyCoarse 921 + Store 920(r020) 922 924: 50(fvec4) Load 55(inF0) - 925: 50(fvec4) ExtInst 1(GLSL.std.450) 12(Degrees) 924 - Store 923(r022) 925 + 925: 50(fvec4) DPdyFine 924 + Store 923(r021) 925 927: 50(fvec4) Load 55(inF0) - 928: 50(fvec4) Load 56(inF1) - 929: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 927 928 - Store 926(r023) 929 - 931: 50(fvec4) Load 55(inF0) - 932: 50(fvec4) Load 56(inF1) - 933: 6(float) Dot 931 932 - Store 930(r024) 933 - 935: 7(ptr) AccessChain 55(inF0) 537 - 936: 6(float) Load 935 - 937: 7(ptr) AccessChain 56(inF1) 537 - 938: 6(float) Load 937 - 939: 6(float) FMul 936 938 - 940: 7(ptr) AccessChain 55(inF0) 538 + 928: 50(fvec4) ExtInst 1(GLSL.std.450) 12(Degrees) 927 + Store 926(r022) 928 + 930: 50(fvec4) Load 55(inF0) + 931: 50(fvec4) Load 56(inF1) + 932: 6(float) ExtInst 1(GLSL.std.450) 67(Distance) 930 931 + Store 929(r023) 932 + 934: 50(fvec4) Load 55(inF0) + 935: 50(fvec4) Load 56(inF1) + 936: 6(float) Dot 934 935 + Store 933(r024) 936 + 938: 7(ptr) AccessChain 55(inF0) 540 + 939: 6(float) Load 938 + 940: 7(ptr) AccessChain 56(inF1) 540 941: 6(float) Load 940 - 942: 7(ptr) AccessChain 56(inF1) 654 - 943: 6(float) Load 942 - 944: 50(fvec4) CompositeConstruct 293 939 941 943 - Store 934(r025) 944 - 946: 50(fvec4) Load 55(inF0) - 947: 50(fvec4) ExtInst 1(GLSL.std.450) 27(Exp) 946 - Store 945(r029) 947 + 942: 6(float) FMul 939 941 + 943: 7(ptr) AccessChain 55(inF0) 541 + 944: 6(float) Load 943 + 945: 7(ptr) AccessChain 56(inF1) 657 + 946: 6(float) Load 945 + 947: 50(fvec4) CompositeConstruct 297 942 944 946 + Store 937(r025) 947 949: 50(fvec4) Load 55(inF0) - 950: 50(fvec4) ExtInst 1(GLSL.std.450) 29(Exp2) 949 - Store 948(r030) 950 + 950: 50(fvec4) ExtInst 1(GLSL.std.450) 27(Exp) 949 + Store 948(r029) 950 952: 50(fvec4) Load 55(inF0) - 953: 50(fvec4) Load 56(inF1) - 954: 50(fvec4) Load 57(inF2) - 955: 50(fvec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 952 953 954 - Store 951(r031) 955 - 960: 52(ivec4) ExtInst 1(GLSL.std.450) 75(FindUMsb) 959 - Store 956(r032) 960 - 962: 52(ivec4) ExtInst 1(GLSL.std.450) 73(FindILsb) 959 - Store 961(r033) 962 - 964: 50(fvec4) Load 55(inF0) - 965: 50(fvec4) ExtInst 1(GLSL.std.450) 8(Floor) 964 - Store 963(r034) 965 + 953: 50(fvec4) ExtInst 1(GLSL.std.450) 29(Exp2) 952 + Store 951(r030) 953 + 955: 50(fvec4) Load 55(inF0) + 956: 50(fvec4) Load 56(inF1) + 957: 50(fvec4) Load 57(inF2) + 958: 50(fvec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 955 956 957 + Store 954(r031) 958 + 963: 52(ivec4) ExtInst 1(GLSL.std.450) 75(FindUMsb) 962 + Store 959(r032) 963 + 965: 52(ivec4) ExtInst 1(GLSL.std.450) 73(FindILsb) 962 + Store 964(r033) 965 967: 50(fvec4) Load 55(inF0) - 968: 50(fvec4) Load 56(inF1) - 969: 50(fvec4) FMod 967 968 - Store 966(r036) 969 - 971: 50(fvec4) Load 55(inF0) - 972: 50(fvec4) ExtInst 1(GLSL.std.450) 10(Fract) 971 - Store 970(r037) 972 + 968: 50(fvec4) ExtInst 1(GLSL.std.450) 8(Floor) 967 + Store 966(r034) 968 + 970: 50(fvec4) Load 55(inF0) + 971: 50(fvec4) Load 56(inF1) + 972: 50(fvec4) FMod 970 971 + Store 969(r036) 972 974: 50(fvec4) Load 55(inF0) - 975: 50(fvec4) Fwidth 974 - Store 973(r039) 975 - 978: 50(fvec4) Load 55(inF0) - 979: 840(bvec4) IsInf 978 - Store 977(r040) 979 + 975: 50(fvec4) ExtInst 1(GLSL.std.450) 10(Fract) 974 + Store 973(r037) 975 + 977: 50(fvec4) Load 55(inF0) + 978: 50(fvec4) Fwidth 977 + Store 976(r039) 978 981: 50(fvec4) Load 55(inF0) - 982: 840(bvec4) IsNan 981 - Store 980(r041) 982 + 982: 843(bvec4) IsInf 981 + Store 980(r040) 982 984: 50(fvec4) Load 55(inF0) - 985: 50(fvec4) Load 56(inF1) - 986: 50(fvec4) ExtInst 1(GLSL.std.450) 53(Ldexp) 984 985 - Store 983(r042) 986 - 988: 50(fvec4) Load 55(inF0) - 989: 50(fvec4) Load 56(inF1) - 990: 50(fvec4) Load 57(inF2) - 991: 50(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 988 989 990 - Store 987(r039a) 991 - 993: 50(fvec4) Load 55(inF0) - 994: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 993 - Store 992(r043) 994 + 985: 843(bvec4) IsNan 984 + Store 983(r041) 985 + 987: 50(fvec4) Load 55(inF0) + 988: 50(fvec4) Load 56(inF1) + 989: 50(fvec4) ExtInst 1(GLSL.std.450) 53(Ldexp) 987 988 + Store 986(r042) 989 + 991: 50(fvec4) Load 55(inF0) + 992: 50(fvec4) Load 56(inF1) + 993: 50(fvec4) Load 57(inF2) + 994: 50(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 991 992 993 + Store 990(r039a) 994 996: 50(fvec4) Load 55(inF0) - 997: 50(fvec4) ExtInst 1(GLSL.std.450) 28(Log) 996 - Store 995(r044) 997 + 997: 6(float) ExtInst 1(GLSL.std.450) 66(Length) 996 + Store 995(r043) 997 999: 50(fvec4) Load 55(inF0) - 1000: 50(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 999 - 1001: 50(fvec4) VectorTimesScalar 1000 272 - Store 998(r045) 1001 - 1003: 50(fvec4) Load 55(inF0) - 1004: 50(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 1003 - Store 1002(r046) 1004 + 1000: 50(fvec4) ExtInst 1(GLSL.std.450) 28(Log) 999 + Store 998(r044) 1000 + 1002: 50(fvec4) Load 55(inF0) + 1003: 50(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 1002 + 1004: 50(fvec4) VectorTimesScalar 1003 276 + Store 1001(r045) 1004 1006: 50(fvec4) Load 55(inF0) - 1007: 50(fvec4) Load 56(inF1) - 1008: 50(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 1006 1007 - Store 1005(r047) 1008 - 1010: 50(fvec4) Load 55(inF0) - 1011: 50(fvec4) Load 56(inF1) - 1012: 50(fvec4) ExtInst 1(GLSL.std.450) 37(FMin) 1010 1011 - Store 1009(r048) 1012 - 1014: 50(fvec4) Load 55(inF0) - 1015: 50(fvec4) ExtInst 1(GLSL.std.450) 69(Normalize) 1014 - Store 1013(r049) 1015 + 1007: 50(fvec4) ExtInst 1(GLSL.std.450) 30(Log2) 1006 + Store 1005(r046) 1007 + 1009: 50(fvec4) Load 55(inF0) + 1010: 50(fvec4) Load 56(inF1) + 1011: 50(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 1009 1010 + Store 1008(r047) 1011 + 1013: 50(fvec4) Load 55(inF0) + 1014: 50(fvec4) Load 56(inF1) + 1015: 50(fvec4) ExtInst 1(GLSL.std.450) 37(FMin) 1013 1014 + Store 1012(r048) 1015 1017: 50(fvec4) Load 55(inF0) - 1018: 50(fvec4) Load 56(inF1) - 1019: 50(fvec4) ExtInst 1(GLSL.std.450) 26(Pow) 1017 1018 - Store 1016(r050) 1019 - 1021: 50(fvec4) Load 55(inF0) - 1022: 50(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 1021 - Store 1020(r051) 1022 + 1018: 50(fvec4) ExtInst 1(GLSL.std.450) 69(Normalize) 1017 + Store 1016(r049) 1018 + 1020: 50(fvec4) Load 55(inF0) + 1021: 50(fvec4) Load 56(inF1) + 1022: 50(fvec4) ExtInst 1(GLSL.std.450) 26(Pow) 1020 1021 + Store 1019(r050) 1022 1024: 50(fvec4) Load 55(inF0) - 1025: 50(fvec4) CompositeConstruct 293 293 293 293 - 1026: 50(fvec4) FDiv 1025 1024 - Store 1023(r052) 1026 - 1028: 50(fvec4) Load 55(inF0) - 1029: 50(fvec4) Load 56(inF1) - 1030: 50(fvec4) ExtInst 1(GLSL.std.450) 71(Reflect) 1028 1029 - Store 1027(r053) 1030 - 1032: 50(fvec4) Load 55(inF0) - 1033: 50(fvec4) Load 56(inF1) - 1034: 50(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 1032 1033 534 - Store 1031(r054) 1034 - 1037: 52(ivec4) BitReverse 1036 - Store 1035(r055) 1037 - 1039: 50(fvec4) Load 55(inF0) - 1040: 50(fvec4) ExtInst 1(GLSL.std.450) 2(RoundEven) 1039 - Store 1038(r056) 1040 + 1025: 50(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 1024 + Store 1023(r051) 1025 + 1027: 50(fvec4) Load 55(inF0) + 1028: 50(fvec4) CompositeConstruct 297 297 297 297 + 1029: 50(fvec4) FDiv 1028 1027 + Store 1026(r052) 1029 + 1031: 50(fvec4) Load 55(inF0) + 1032: 50(fvec4) Load 56(inF1) + 1033: 50(fvec4) ExtInst 1(GLSL.std.450) 71(Reflect) 1031 1032 + Store 1030(r053) 1033 + 1035: 50(fvec4) Load 55(inF0) + 1036: 50(fvec4) Load 56(inF1) + 1037: 50(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 1035 1036 247 + Store 1034(r054) 1037 + 1040: 52(ivec4) BitReverse 1039 + Store 1038(r055) 1040 1042: 50(fvec4) Load 55(inF0) - 1043: 50(fvec4) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1042 - Store 1041(r057) 1043 + 1043: 50(fvec4) ExtInst 1(GLSL.std.450) 2(RoundEven) 1042 + Store 1041(r056) 1043 1045: 50(fvec4) Load 55(inF0) - 1046: 50(fvec4) CompositeConstruct 141 141 141 141 - 1047: 50(fvec4) CompositeConstruct 293 293 293 293 - 1048: 50(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 1045 1046 1047 - Store 1044(r058) 1048 - 1050: 50(fvec4) Load 55(inF0) - 1051: 50(fvec4) ExtInst 1(GLSL.std.450) 6(FSign) 1050 - Store 1049(r059) 1051 + 1046: 50(fvec4) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1045 + Store 1044(r057) 1046 + 1048: 50(fvec4) Load 55(inF0) + 1049: 50(fvec4) CompositeConstruct 141 141 141 141 + 1050: 50(fvec4) CompositeConstruct 297 297 297 297 + 1051: 50(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 1048 1049 1050 + Store 1047(r058) 1051 1053: 50(fvec4) Load 55(inF0) - 1054: 50(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 1053 - Store 1052(r060) 1054 - 1055: 50(fvec4) Load 55(inF0) - 1056: 50(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 1055 - Store 56(inF1) 1056 - 1057: 50(fvec4) Load 55(inF0) - 1058: 50(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 1057 - Store 57(inF2) 1058 + 1054: 50(fvec4) ExtInst 1(GLSL.std.450) 6(FSign) 1053 + Store 1052(r059) 1054 + 1056: 50(fvec4) Load 55(inF0) + 1057: 50(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 1056 + Store 1055(r060) 1057 + 1058: 50(fvec4) Load 55(inF0) + 1059: 50(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 1058 + Store 56(inF1) 1059 1060: 50(fvec4) Load 55(inF0) - 1061: 50(fvec4) ExtInst 1(GLSL.std.450) 19(Sinh) 1060 - Store 1059(r061) 1061 + 1061: 50(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 1060 + Store 57(inF2) 1061 1063: 50(fvec4) Load 55(inF0) - 1064: 50(fvec4) Load 56(inF1) - 1065: 50(fvec4) Load 57(inF2) - 1066: 50(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 1063 1064 1065 - Store 1062(r062) 1066 - 1068: 50(fvec4) Load 55(inF0) - 1069: 50(fvec4) ExtInst 1(GLSL.std.450) 31(Sqrt) 1068 - Store 1067(r063) 1069 + 1064: 50(fvec4) ExtInst 1(GLSL.std.450) 19(Sinh) 1063 + Store 1062(r061) 1064 + 1066: 50(fvec4) Load 55(inF0) + 1067: 50(fvec4) Load 56(inF1) + 1068: 50(fvec4) Load 57(inF2) + 1069: 50(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 1066 1067 1068 + Store 1065(r062) 1069 1071: 50(fvec4) Load 55(inF0) - 1072: 50(fvec4) Load 56(inF1) - 1073: 50(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 1071 1072 - Store 1070(r064) 1073 - 1075: 50(fvec4) Load 55(inF0) - 1076: 50(fvec4) ExtInst 1(GLSL.std.450) 15(Tan) 1075 - Store 1074(r065) 1076 + 1072: 50(fvec4) ExtInst 1(GLSL.std.450) 31(Sqrt) 1071 + Store 1070(r063) 1072 + 1074: 50(fvec4) Load 55(inF0) + 1075: 50(fvec4) Load 56(inF1) + 1076: 50(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 1074 1075 + Store 1073(r064) 1076 1078: 50(fvec4) Load 55(inF0) - 1079: 50(fvec4) ExtInst 1(GLSL.std.450) 21(Tanh) 1078 - Store 1077(r066) 1079 + 1079: 50(fvec4) ExtInst 1(GLSL.std.450) 15(Tan) 1078 + Store 1077(r065) 1079 1081: 50(fvec4) Load 55(inF0) - 1082: 50(fvec4) ExtInst 1(GLSL.std.450) 3(Trunc) 1081 - Store 1080(r067) 1082 - ReturnValue 1084 + 1082: 50(fvec4) ExtInst 1(GLSL.std.450) 21(Tanh) 1081 + Store 1080(r066) 1082 + 1084: 50(fvec4) Load 55(inF0) + 1085: 50(fvec4) ExtInst 1(GLSL.std.450) 3(Trunc) 1084 + Store 1083(r067) 1085 + ReturnValue 1087 FunctionEnd 68(PixelShaderFunction2x2(mf22;mf22;mf22;): 62 Function None 64 65(inF0): 63(ptr) FunctionParameter 66(inF1): 63(ptr) FunctionParameter 67(inF2): 63(ptr) FunctionParameter 69: Label - 1087(r000): 138(ptr) Variable Function - 1092(r001): 63(ptr) Variable Function - 1097(r003): 138(ptr) Variable Function - 1101(r004): 63(ptr) Variable Function - 1104(r005): 63(ptr) Variable Function - 1107(r006): 63(ptr) Variable Function - 1111(r007): 63(ptr) Variable Function - 1121(r008): 63(ptr) Variable Function - 1126(r009): 63(ptr) Variable Function - 1129(r010): 63(ptr) Variable Function - 1132(r011): 63(ptr) Variable Function - 1135(r012): 63(ptr) Variable Function - 1138(r013): 63(ptr) Variable Function - 1141(r014): 63(ptr) Variable Function - 1144(r015): 63(ptr) Variable Function - 1147(r016): 63(ptr) Variable Function - 1150(r017): 63(ptr) Variable Function - 1153(r018): 7(ptr) Variable Function - 1156(r019): 63(ptr) Variable Function - 1159(R020): 63(ptr) Variable Function - 1162(r021): 63(ptr) Variable Function - 1165(r022): 63(ptr) Variable Function - 1175(r023): 63(ptr) Variable Function - 1178(r025): 63(ptr) Variable Function - 1181(r026): 63(ptr) Variable Function - 1185(r026a): 63(ptr) Variable Function - 1190(r027): 63(ptr) Variable Function - 1193(r028): 63(ptr) Variable Function - 1197(r029): 63(ptr) Variable Function - 1200(r030): 63(ptr) Variable Function - 1204(r031): 63(ptr) Variable Function - 1208(r032): 63(ptr) Variable Function - 1212(r033): 63(ptr) Variable Function - 1215(r034): 63(ptr) Variable Function - 1218(r035): 63(ptr) Variable Function - 1221(r036): 63(ptr) Variable Function - 1226(r037): 63(ptr) Variable Function - 1229(r038): 63(ptr) Variable Function - 1236(r039): 63(ptr) Variable Function - 1239(r049): 63(ptr) Variable Function - 1244(r041): 63(ptr) Variable Function - 1247(r042): 63(ptr) Variable Function - 1251(r043): 63(ptr) Variable Function - 1254(r044): 63(ptr) Variable Function - 1259(r046): 63(ptr) Variable Function - 1088: 62 Load 65(inF0) - 1090: 1089 FOrdNotEqual 1088 141 - 1091: 137(bool) All 1090 - Store 1087(r000) 1091 - 1093: 62 Load 65(inF0) - 1094: 62 ExtInst 1(GLSL.std.450) 4(FAbs) 1093 - Store 1092(r001) 1094 - 1095: 62 Load 65(inF0) - 1096: 62 ExtInst 1(GLSL.std.450) 17(Acos) 1095 + 1090(r000): 138(ptr) Variable Function + 1095(r001): 63(ptr) Variable Function + 1100(r003): 138(ptr) Variable Function + 1104(r004): 63(ptr) Variable Function + 1107(r005): 63(ptr) Variable Function + 1110(r006): 63(ptr) Variable Function + 1114(r007): 63(ptr) Variable Function + 1124(r008): 63(ptr) Variable Function + 1129(r009): 63(ptr) Variable Function + 1132(r010): 63(ptr) Variable Function + 1135(r011): 63(ptr) Variable Function + 1138(r012): 63(ptr) Variable Function + 1141(r013): 63(ptr) Variable Function + 1144(r014): 63(ptr) Variable Function + 1147(r015): 63(ptr) Variable Function + 1150(r016): 63(ptr) Variable Function + 1153(r017): 63(ptr) Variable Function + 1156(r018): 7(ptr) Variable Function + 1159(r019): 63(ptr) Variable Function + 1162(R020): 63(ptr) Variable Function + 1165(r021): 63(ptr) Variable Function + 1168(r022): 63(ptr) Variable Function + 1178(r023): 63(ptr) Variable Function + 1181(r025): 63(ptr) Variable Function + 1184(r026): 63(ptr) Variable Function + 1188(r026a): 63(ptr) Variable Function + 1193(r027): 63(ptr) Variable Function + 1196(r028): 63(ptr) Variable Function + 1200(r029): 63(ptr) Variable Function + 1203(r030): 63(ptr) Variable Function + 1207(r031): 63(ptr) Variable Function + 1211(r032): 63(ptr) Variable Function + 1215(r033): 63(ptr) Variable Function + 1218(r034): 63(ptr) Variable Function + 1221(r035): 63(ptr) Variable Function + 1224(r036): 63(ptr) Variable Function + 1229(r037): 63(ptr) Variable Function + 1232(r038): 63(ptr) Variable Function + 1239(r039): 63(ptr) Variable Function + 1242(r049): 63(ptr) Variable Function + 1247(r041): 63(ptr) Variable Function + 1250(r042): 63(ptr) Variable Function + 1254(r043): 63(ptr) Variable Function + 1257(r044): 63(ptr) Variable Function + 1262(r046): 63(ptr) Variable Function + 1091: 62 Load 65(inF0) + 1093: 1092 FOrdNotEqual 1091 141 + 1094: 137(bool) All 1093 + Store 1090(r000) 1094 + 1096: 62 Load 65(inF0) + 1097: 62 ExtInst 1(GLSL.std.450) 4(FAbs) 1096 + Store 1095(r001) 1097 1098: 62 Load 65(inF0) - 1099: 1089 FOrdNotEqual 1098 141 - 1100: 137(bool) Any 1099 - Store 1097(r003) 1100 - 1102: 62 Load 65(inF0) - 1103: 62 ExtInst 1(GLSL.std.450) 16(Asin) 1102 - Store 1101(r004) 1103 + 1099: 62 ExtInst 1(GLSL.std.450) 17(Acos) 1098 + 1101: 62 Load 65(inF0) + 1102: 1092 FOrdNotEqual 1101 141 + 1103: 137(bool) Any 1102 + Store 1100(r003) 1103 1105: 62 Load 65(inF0) - 1106: 62 ExtInst 1(GLSL.std.450) 18(Atan) 1105 - Store 1104(r005) 1106 + 1106: 62 ExtInst 1(GLSL.std.450) 16(Asin) 1105 + Store 1104(r004) 1106 1108: 62 Load 65(inF0) - 1109: 62 Load 66(inF1) - 1110: 62 ExtInst 1(GLSL.std.450) 25(Atan2) 1108 1109 - Store 1107(r006) 1110 - 1112: 62 Load 65(inF0) - 1113: 62 ExtInst 1(GLSL.std.450) 9(Ceil) 1112 - Store 1111(r007) 1113 - 1114: 62 Load 65(inF0) - 1116: 1089 FOrdLessThan 1114 1115 - 1117: 137(bool) Any 1116 - SelectionMerge 1119 None - BranchConditional 1117 1118 1119 - 1118: Label + 1109: 62 ExtInst 1(GLSL.std.450) 18(Atan) 1108 + Store 1107(r005) 1109 + 1111: 62 Load 65(inF0) + 1112: 62 Load 66(inF1) + 1113: 62 ExtInst 1(GLSL.std.450) 25(Atan2) 1111 1112 + Store 1110(r006) 1113 + 1115: 62 Load 65(inF0) + 1116: 62 ExtInst 1(GLSL.std.450) 9(Ceil) 1115 + Store 1114(r007) 1116 + 1117: 62 Load 65(inF0) + 1119: 1092 FOrdLessThan 1117 1118 + 1120: 137(bool) Any 1119 + SelectionMerge 1122 None + BranchConditional 1120 1121 1122 + 1121: Label Kill - 1119: Label - 1122: 62 Load 65(inF0) - 1123: 62 Load 66(inF1) - 1124: 62 Load 67(inF2) - 1125: 62 ExtInst 1(GLSL.std.450) 43(FClamp) 1122 1123 1124 - Store 1121(r008) 1125 - 1127: 62 Load 65(inF0) - 1128: 62 ExtInst 1(GLSL.std.450) 14(Cos) 1127 - Store 1126(r009) 1128 + 1122: Label + 1125: 62 Load 65(inF0) + 1126: 62 Load 66(inF1) + 1127: 62 Load 67(inF2) + 1128: 62 ExtInst 1(GLSL.std.450) 43(FClamp) 1125 1126 1127 + Store 1124(r008) 1128 1130: 62 Load 65(inF0) - 1131: 62 ExtInst 1(GLSL.std.450) 20(Cosh) 1130 - Store 1129(r010) 1131 + 1131: 62 ExtInst 1(GLSL.std.450) 14(Cos) 1130 + Store 1129(r009) 1131 1133: 62 Load 65(inF0) - 1134: 62 DPdx 1133 - Store 1132(r011) 1134 + 1134: 62 ExtInst 1(GLSL.std.450) 20(Cosh) 1133 + Store 1132(r010) 1134 1136: 62 Load 65(inF0) - 1137: 62 DPdxCoarse 1136 - Store 1135(r012) 1137 + 1137: 62 DPdx 1136 + Store 1135(r011) 1137 1139: 62 Load 65(inF0) - 1140: 62 DPdxFine 1139 - Store 1138(r013) 1140 + 1140: 62 DPdxCoarse 1139 + Store 1138(r012) 1140 1142: 62 Load 65(inF0) - 1143: 62 DPdy 1142 - Store 1141(r014) 1143 + 1143: 62 DPdxFine 1142 + Store 1141(r013) 1143 1145: 62 Load 65(inF0) - 1146: 62 DPdyCoarse 1145 - Store 1144(r015) 1146 + 1146: 62 DPdy 1145 + Store 1144(r014) 1146 1148: 62 Load 65(inF0) - 1149: 62 DPdyFine 1148 - Store 1147(r016) 1149 + 1149: 62 DPdyCoarse 1148 + Store 1147(r015) 1149 1151: 62 Load 65(inF0) - 1152: 62 ExtInst 1(GLSL.std.450) 12(Degrees) 1151 - Store 1150(r017) 1152 + 1152: 62 DPdyFine 1151 + Store 1150(r016) 1152 1154: 62 Load 65(inF0) - 1155: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1154 - Store 1153(r018) 1155 + 1155: 62 ExtInst 1(GLSL.std.450) 12(Degrees) 1154 + Store 1153(r017) 1155 1157: 62 Load 65(inF0) - 1158: 62 ExtInst 1(GLSL.std.450) 27(Exp) 1157 - Store 1156(r019) 1158 + 1158: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1157 + Store 1156(r018) 1158 1160: 62 Load 65(inF0) - 1161: 62 ExtInst 1(GLSL.std.450) 29(Exp2) 1160 - Store 1159(R020) 1161 + 1161: 62 ExtInst 1(GLSL.std.450) 27(Exp) 1160 + Store 1159(r019) 1161 1163: 62 Load 65(inF0) - 1164: 62 ExtInst 1(GLSL.std.450) 8(Floor) 1163 - Store 1162(r021) 1164 + 1164: 62 ExtInst 1(GLSL.std.450) 29(Exp2) 1163 + Store 1162(R020) 1164 1166: 62 Load 65(inF0) - 1167: 62 Load 66(inF1) - 1168: 26(fvec2) CompositeExtract 1166 0 - 1169: 26(fvec2) CompositeExtract 1167 0 - 1170: 26(fvec2) FMod 1168 1169 - 1171: 26(fvec2) CompositeExtract 1166 1 - 1172: 26(fvec2) CompositeExtract 1167 1 + 1167: 62 ExtInst 1(GLSL.std.450) 8(Floor) 1166 + Store 1165(r021) 1167 + 1169: 62 Load 65(inF0) + 1170: 62 Load 66(inF1) + 1171: 26(fvec2) CompositeExtract 1169 0 + 1172: 26(fvec2) CompositeExtract 1170 0 1173: 26(fvec2) FMod 1171 1172 - 1174: 62 CompositeConstruct 1170 1173 - Store 1165(r022) 1174 - 1176: 62 Load 65(inF0) - 1177: 62 ExtInst 1(GLSL.std.450) 10(Fract) 1176 - Store 1175(r023) 1177 + 1174: 26(fvec2) CompositeExtract 1169 1 + 1175: 26(fvec2) CompositeExtract 1170 1 + 1176: 26(fvec2) FMod 1174 1175 + 1177: 62 CompositeConstruct 1173 1176 + Store 1168(r022) 1177 1179: 62 Load 65(inF0) - 1180: 62 Fwidth 1179 - Store 1178(r025) 1180 + 1180: 62 ExtInst 1(GLSL.std.450) 10(Fract) 1179 + Store 1178(r023) 1180 1182: 62 Load 65(inF0) - 1183: 62 Load 66(inF1) - 1184: 62 ExtInst 1(GLSL.std.450) 53(Ldexp) 1182 1183 - Store 1181(r026) 1184 - 1186: 62 Load 65(inF0) - 1187: 62 Load 66(inF1) - 1188: 62 Load 67(inF2) - 1189: 62 ExtInst 1(GLSL.std.450) 46(FMix) 1186 1187 1188 - Store 1185(r026a) 1189 - 1191: 62 Load 65(inF0) - 1192: 62 ExtInst 1(GLSL.std.450) 28(Log) 1191 - Store 1190(r027) 1192 + 1183: 62 Fwidth 1182 + Store 1181(r025) 1183 + 1185: 62 Load 65(inF0) + 1186: 62 Load 66(inF1) + 1187: 62 ExtInst 1(GLSL.std.450) 53(Ldexp) 1185 1186 + Store 1184(r026) 1187 + 1189: 62 Load 65(inF0) + 1190: 62 Load 66(inF1) + 1191: 62 Load 67(inF2) + 1192: 62 ExtInst 1(GLSL.std.450) 46(FMix) 1189 1190 1191 + Store 1188(r026a) 1192 1194: 62 Load 65(inF0) - 1195: 62 ExtInst 1(GLSL.std.450) 30(Log2) 1194 - 1196: 62 MatrixTimesScalar 1195 272 - Store 1193(r028) 1196 - 1198: 62 Load 65(inF0) - 1199: 62 ExtInst 1(GLSL.std.450) 30(Log2) 1198 - Store 1197(r029) 1199 + 1195: 62 ExtInst 1(GLSL.std.450) 28(Log) 1194 + Store 1193(r027) 1195 + 1197: 62 Load 65(inF0) + 1198: 62 ExtInst 1(GLSL.std.450) 30(Log2) 1197 + 1199: 62 MatrixTimesScalar 1198 276 + Store 1196(r028) 1199 1201: 62 Load 65(inF0) - 1202: 62 Load 66(inF1) - 1203: 62 ExtInst 1(GLSL.std.450) 40(FMax) 1201 1202 - Store 1200(r030) 1203 - 1205: 62 Load 65(inF0) - 1206: 62 Load 66(inF1) - 1207: 62 ExtInst 1(GLSL.std.450) 37(FMin) 1205 1206 - Store 1204(r031) 1207 - 1209: 62 Load 65(inF0) - 1210: 62 Load 66(inF1) - 1211: 62 ExtInst 1(GLSL.std.450) 26(Pow) 1209 1210 - Store 1208(r032) 1211 - 1213: 62 Load 65(inF0) - 1214: 62 ExtInst 1(GLSL.std.450) 11(Radians) 1213 - Store 1212(r033) 1214 + 1202: 62 ExtInst 1(GLSL.std.450) 30(Log2) 1201 + Store 1200(r029) 1202 + 1204: 62 Load 65(inF0) + 1205: 62 Load 66(inF1) + 1206: 62 ExtInst 1(GLSL.std.450) 40(FMax) 1204 1205 + Store 1203(r030) 1206 + 1208: 62 Load 65(inF0) + 1209: 62 Load 66(inF1) + 1210: 62 ExtInst 1(GLSL.std.450) 37(FMin) 1208 1209 + Store 1207(r031) 1210 + 1212: 62 Load 65(inF0) + 1213: 62 Load 66(inF1) + 1214: 62 ExtInst 1(GLSL.std.450) 26(Pow) 1212 1213 + Store 1211(r032) 1214 1216: 62 Load 65(inF0) - 1217: 62 ExtInst 1(GLSL.std.450) 2(RoundEven) 1216 - Store 1215(r034) 1217 + 1217: 62 ExtInst 1(GLSL.std.450) 11(Radians) 1216 + Store 1215(r033) 1217 1219: 62 Load 65(inF0) - 1220: 62 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1219 - Store 1218(r035) 1220 + 1220: 62 ExtInst 1(GLSL.std.450) 2(RoundEven) 1219 + Store 1218(r034) 1220 1222: 62 Load 65(inF0) - 1223: 26(fvec2) CompositeConstruct 141 141 - 1224: 26(fvec2) CompositeConstruct 293 293 - 1225: 62 ExtInst 1(GLSL.std.450) 43(FClamp) 1222 1223 1224 - Store 1221(r036) 1225 - 1227: 62 Load 65(inF0) - 1228: 62 ExtInst 1(GLSL.std.450) 6(FSign) 1227 - Store 1226(r037) 1228 + 1223: 62 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1222 + Store 1221(r035) 1223 + 1225: 62 Load 65(inF0) + 1226: 26(fvec2) CompositeConstruct 141 141 + 1227: 26(fvec2) CompositeConstruct 297 297 + 1228: 62 ExtInst 1(GLSL.std.450) 43(FClamp) 1225 1226 1227 + Store 1224(r036) 1228 1230: 62 Load 65(inF0) - 1231: 62 ExtInst 1(GLSL.std.450) 13(Sin) 1230 - Store 1229(r038) 1231 - 1232: 62 Load 65(inF0) - 1233: 62 ExtInst 1(GLSL.std.450) 13(Sin) 1232 - Store 66(inF1) 1233 - 1234: 62 Load 65(inF0) - 1235: 62 ExtInst 1(GLSL.std.450) 14(Cos) 1234 - Store 67(inF2) 1235 + 1231: 62 ExtInst 1(GLSL.std.450) 6(FSign) 1230 + Store 1229(r037) 1231 + 1233: 62 Load 65(inF0) + 1234: 62 ExtInst 1(GLSL.std.450) 13(Sin) 1233 + Store 1232(r038) 1234 + 1235: 62 Load 65(inF0) + 1236: 62 ExtInst 1(GLSL.std.450) 13(Sin) 1235 + Store 66(inF1) 1236 1237: 62 Load 65(inF0) - 1238: 62 ExtInst 1(GLSL.std.450) 19(Sinh) 1237 - Store 1236(r039) 1238 + 1238: 62 ExtInst 1(GLSL.std.450) 14(Cos) 1237 + Store 67(inF2) 1238 1240: 62 Load 65(inF0) - 1241: 62 Load 66(inF1) - 1242: 62 Load 67(inF2) - 1243: 62 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1240 1241 1242 - Store 1239(r049) 1243 - 1245: 62 Load 65(inF0) - 1246: 62 ExtInst 1(GLSL.std.450) 31(Sqrt) 1245 - Store 1244(r041) 1246 + 1241: 62 ExtInst 1(GLSL.std.450) 19(Sinh) 1240 + Store 1239(r039) 1241 + 1243: 62 Load 65(inF0) + 1244: 62 Load 66(inF1) + 1245: 62 Load 67(inF2) + 1246: 62 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1243 1244 1245 + Store 1242(r049) 1246 1248: 62 Load 65(inF0) - 1249: 62 Load 66(inF1) - 1250: 62 ExtInst 1(GLSL.std.450) 48(Step) 1248 1249 - Store 1247(r042) 1250 - 1252: 62 Load 65(inF0) - 1253: 62 ExtInst 1(GLSL.std.450) 15(Tan) 1252 - Store 1251(r043) 1253 + 1249: 62 ExtInst 1(GLSL.std.450) 31(Sqrt) 1248 + Store 1247(r041) 1249 + 1251: 62 Load 65(inF0) + 1252: 62 Load 66(inF1) + 1253: 62 ExtInst 1(GLSL.std.450) 48(Step) 1251 1252 + Store 1250(r042) 1253 1255: 62 Load 65(inF0) - 1256: 62 ExtInst 1(GLSL.std.450) 21(Tanh) 1255 - Store 1254(r044) 1256 - 1257: 62 Load 65(inF0) - 1258: 62 Transpose 1257 + 1256: 62 ExtInst 1(GLSL.std.450) 15(Tan) 1255 + Store 1254(r043) 1256 + 1258: 62 Load 65(inF0) + 1259: 62 ExtInst 1(GLSL.std.450) 21(Tanh) 1258 + Store 1257(r044) 1259 1260: 62 Load 65(inF0) - 1261: 62 ExtInst 1(GLSL.std.450) 3(Trunc) 1260 - Store 1259(r046) 1261 - ReturnValue 1263 + 1261: 62 Transpose 1260 + 1263: 62 Load 65(inF0) + 1264: 62 ExtInst 1(GLSL.std.450) 3(Trunc) 1263 + Store 1262(r046) 1264 + ReturnValue 1266 FunctionEnd 76(PixelShaderFunction3x3(mf33;mf33;mf33;): 70 Function None 72 73(inF0): 71(ptr) FunctionParameter 74(inF1): 71(ptr) FunctionParameter 75(inF2): 71(ptr) FunctionParameter 77: Label - 1266(r000): 138(ptr) Variable Function - 1271(r001): 71(ptr) Variable Function - 1276(r003): 138(ptr) Variable Function - 1280(r004): 71(ptr) Variable Function - 1283(r005): 71(ptr) Variable Function - 1286(r006): 71(ptr) Variable Function - 1290(r007): 71(ptr) Variable Function - 1300(r008): 71(ptr) Variable Function - 1305(r009): 71(ptr) Variable Function - 1308(r010): 71(ptr) Variable Function - 1311(r011): 71(ptr) Variable Function - 1314(r012): 71(ptr) Variable Function - 1317(r013): 71(ptr) Variable Function - 1320(r014): 71(ptr) Variable Function - 1323(r015): 71(ptr) Variable Function - 1326(r016): 71(ptr) Variable Function - 1329(r017): 71(ptr) Variable Function - 1332(r018): 7(ptr) Variable Function - 1335(r019): 71(ptr) Variable Function - 1338(R020): 71(ptr) Variable Function - 1341(r021): 71(ptr) Variable Function - 1344(r022): 71(ptr) Variable Function - 1357(r023): 71(ptr) Variable Function - 1360(r025): 71(ptr) Variable Function - 1363(r026): 71(ptr) Variable Function - 1367(r026a): 71(ptr) Variable Function - 1372(r027): 71(ptr) Variable Function - 1375(r028): 71(ptr) Variable Function - 1379(r029): 71(ptr) Variable Function - 1382(r030): 71(ptr) Variable Function - 1386(r031): 71(ptr) Variable Function - 1390(r032): 71(ptr) Variable Function - 1394(r033): 71(ptr) Variable Function - 1397(r034): 71(ptr) Variable Function - 1400(r035): 71(ptr) Variable Function - 1403(r036): 71(ptr) Variable Function - 1408(r037): 71(ptr) Variable Function - 1411(r038): 71(ptr) Variable Function - 1418(r039): 71(ptr) Variable Function - 1421(r049): 71(ptr) Variable Function - 1426(r041): 71(ptr) Variable Function - 1429(r042): 71(ptr) Variable Function - 1433(r043): 71(ptr) Variable Function - 1436(r044): 71(ptr) Variable Function - 1441(r046): 71(ptr) Variable Function - 1267: 70 Load 73(inF0) - 1269: 1268 FOrdNotEqual 1267 141 - 1270: 137(bool) All 1269 - Store 1266(r000) 1270 - 1272: 70 Load 73(inF0) - 1273: 70 ExtInst 1(GLSL.std.450) 4(FAbs) 1272 - Store 1271(r001) 1273 - 1274: 70 Load 73(inF0) - 1275: 70 ExtInst 1(GLSL.std.450) 17(Acos) 1274 + 1269(r000): 138(ptr) Variable Function + 1274(r001): 71(ptr) Variable Function + 1279(r003): 138(ptr) Variable Function + 1283(r004): 71(ptr) Variable Function + 1286(r005): 71(ptr) Variable Function + 1289(r006): 71(ptr) Variable Function + 1293(r007): 71(ptr) Variable Function + 1303(r008): 71(ptr) Variable Function + 1308(r009): 71(ptr) Variable Function + 1311(r010): 71(ptr) Variable Function + 1314(r011): 71(ptr) Variable Function + 1317(r012): 71(ptr) Variable Function + 1320(r013): 71(ptr) Variable Function + 1323(r014): 71(ptr) Variable Function + 1326(r015): 71(ptr) Variable Function + 1329(r016): 71(ptr) Variable Function + 1332(r017): 71(ptr) Variable Function + 1335(r018): 7(ptr) Variable Function + 1338(r019): 71(ptr) Variable Function + 1341(R020): 71(ptr) Variable Function + 1344(r021): 71(ptr) Variable Function + 1347(r022): 71(ptr) Variable Function + 1360(r023): 71(ptr) Variable Function + 1363(r025): 71(ptr) Variable Function + 1366(r026): 71(ptr) Variable Function + 1370(r026a): 71(ptr) Variable Function + 1375(r027): 71(ptr) Variable Function + 1378(r028): 71(ptr) Variable Function + 1382(r029): 71(ptr) Variable Function + 1385(r030): 71(ptr) Variable Function + 1389(r031): 71(ptr) Variable Function + 1393(r032): 71(ptr) Variable Function + 1397(r033): 71(ptr) Variable Function + 1400(r034): 71(ptr) Variable Function + 1403(r035): 71(ptr) Variable Function + 1406(r036): 71(ptr) Variable Function + 1411(r037): 71(ptr) Variable Function + 1414(r038): 71(ptr) Variable Function + 1421(r039): 71(ptr) Variable Function + 1424(r049): 71(ptr) Variable Function + 1429(r041): 71(ptr) Variable Function + 1432(r042): 71(ptr) Variable Function + 1436(r043): 71(ptr) Variable Function + 1439(r044): 71(ptr) Variable Function + 1444(r046): 71(ptr) Variable Function + 1270: 70 Load 73(inF0) + 1272: 1271 FOrdNotEqual 1270 141 + 1273: 137(bool) All 1272 + Store 1269(r000) 1273 + 1275: 70 Load 73(inF0) + 1276: 70 ExtInst 1(GLSL.std.450) 4(FAbs) 1275 + Store 1274(r001) 1276 1277: 70 Load 73(inF0) - 1278: 1268 FOrdNotEqual 1277 141 - 1279: 137(bool) Any 1278 - Store 1276(r003) 1279 - 1281: 70 Load 73(inF0) - 1282: 70 ExtInst 1(GLSL.std.450) 16(Asin) 1281 - Store 1280(r004) 1282 + 1278: 70 ExtInst 1(GLSL.std.450) 17(Acos) 1277 + 1280: 70 Load 73(inF0) + 1281: 1271 FOrdNotEqual 1280 141 + 1282: 137(bool) Any 1281 + Store 1279(r003) 1282 1284: 70 Load 73(inF0) - 1285: 70 ExtInst 1(GLSL.std.450) 18(Atan) 1284 - Store 1283(r005) 1285 + 1285: 70 ExtInst 1(GLSL.std.450) 16(Asin) 1284 + Store 1283(r004) 1285 1287: 70 Load 73(inF0) - 1288: 70 Load 74(inF1) - 1289: 70 ExtInst 1(GLSL.std.450) 25(Atan2) 1287 1288 - Store 1286(r006) 1289 - 1291: 70 Load 73(inF0) - 1292: 70 ExtInst 1(GLSL.std.450) 9(Ceil) 1291 - Store 1290(r007) 1292 - 1293: 70 Load 73(inF0) - 1295: 1268 FOrdLessThan 1293 1294 - 1296: 137(bool) Any 1295 - SelectionMerge 1298 None - BranchConditional 1296 1297 1298 - 1297: Label + 1288: 70 ExtInst 1(GLSL.std.450) 18(Atan) 1287 + Store 1286(r005) 1288 + 1290: 70 Load 73(inF0) + 1291: 70 Load 74(inF1) + 1292: 70 ExtInst 1(GLSL.std.450) 25(Atan2) 1290 1291 + Store 1289(r006) 1292 + 1294: 70 Load 73(inF0) + 1295: 70 ExtInst 1(GLSL.std.450) 9(Ceil) 1294 + Store 1293(r007) 1295 + 1296: 70 Load 73(inF0) + 1298: 1271 FOrdLessThan 1296 1297 + 1299: 137(bool) Any 1298 + SelectionMerge 1301 None + BranchConditional 1299 1300 1301 + 1300: Label Kill - 1298: Label - 1301: 70 Load 73(inF0) - 1302: 70 Load 74(inF1) - 1303: 70 Load 75(inF2) - 1304: 70 ExtInst 1(GLSL.std.450) 43(FClamp) 1301 1302 1303 - Store 1300(r008) 1304 - 1306: 70 Load 73(inF0) - 1307: 70 ExtInst 1(GLSL.std.450) 14(Cos) 1306 - Store 1305(r009) 1307 + 1301: Label + 1304: 70 Load 73(inF0) + 1305: 70 Load 74(inF1) + 1306: 70 Load 75(inF2) + 1307: 70 ExtInst 1(GLSL.std.450) 43(FClamp) 1304 1305 1306 + Store 1303(r008) 1307 1309: 70 Load 73(inF0) - 1310: 70 ExtInst 1(GLSL.std.450) 20(Cosh) 1309 - Store 1308(r010) 1310 + 1310: 70 ExtInst 1(GLSL.std.450) 14(Cos) 1309 + Store 1308(r009) 1310 1312: 70 Load 73(inF0) - 1313: 70 DPdx 1312 - Store 1311(r011) 1313 + 1313: 70 ExtInst 1(GLSL.std.450) 20(Cosh) 1312 + Store 1311(r010) 1313 1315: 70 Load 73(inF0) - 1316: 70 DPdxCoarse 1315 - Store 1314(r012) 1316 + 1316: 70 DPdx 1315 + Store 1314(r011) 1316 1318: 70 Load 73(inF0) - 1319: 70 DPdxFine 1318 - Store 1317(r013) 1319 + 1319: 70 DPdxCoarse 1318 + Store 1317(r012) 1319 1321: 70 Load 73(inF0) - 1322: 70 DPdy 1321 - Store 1320(r014) 1322 + 1322: 70 DPdxFine 1321 + Store 1320(r013) 1322 1324: 70 Load 73(inF0) - 1325: 70 DPdyCoarse 1324 - Store 1323(r015) 1325 + 1325: 70 DPdy 1324 + Store 1323(r014) 1325 1327: 70 Load 73(inF0) - 1328: 70 DPdyFine 1327 - Store 1326(r016) 1328 + 1328: 70 DPdyCoarse 1327 + Store 1326(r015) 1328 1330: 70 Load 73(inF0) - 1331: 70 ExtInst 1(GLSL.std.450) 12(Degrees) 1330 - Store 1329(r017) 1331 + 1331: 70 DPdyFine 1330 + Store 1329(r016) 1331 1333: 70 Load 73(inF0) - 1334: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1333 - Store 1332(r018) 1334 + 1334: 70 ExtInst 1(GLSL.std.450) 12(Degrees) 1333 + Store 1332(r017) 1334 1336: 70 Load 73(inF0) - 1337: 70 ExtInst 1(GLSL.std.450) 27(Exp) 1336 - Store 1335(r019) 1337 + 1337: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1336 + Store 1335(r018) 1337 1339: 70 Load 73(inF0) - 1340: 70 ExtInst 1(GLSL.std.450) 29(Exp2) 1339 - Store 1338(R020) 1340 + 1340: 70 ExtInst 1(GLSL.std.450) 27(Exp) 1339 + Store 1338(r019) 1340 1342: 70 Load 73(inF0) - 1343: 70 ExtInst 1(GLSL.std.450) 8(Floor) 1342 - Store 1341(r021) 1343 + 1343: 70 ExtInst 1(GLSL.std.450) 29(Exp2) 1342 + Store 1341(R020) 1343 1345: 70 Load 73(inF0) - 1346: 70 Load 74(inF1) - 1347: 38(fvec3) CompositeExtract 1345 0 - 1348: 38(fvec3) CompositeExtract 1346 0 - 1349: 38(fvec3) FMod 1347 1348 - 1350: 38(fvec3) CompositeExtract 1345 1 - 1351: 38(fvec3) CompositeExtract 1346 1 + 1346: 70 ExtInst 1(GLSL.std.450) 8(Floor) 1345 + Store 1344(r021) 1346 + 1348: 70 Load 73(inF0) + 1349: 70 Load 74(inF1) + 1350: 38(fvec3) CompositeExtract 1348 0 + 1351: 38(fvec3) CompositeExtract 1349 0 1352: 38(fvec3) FMod 1350 1351 - 1353: 38(fvec3) CompositeExtract 1345 2 - 1354: 38(fvec3) CompositeExtract 1346 2 + 1353: 38(fvec3) CompositeExtract 1348 1 + 1354: 38(fvec3) CompositeExtract 1349 1 1355: 38(fvec3) FMod 1353 1354 - 1356: 70 CompositeConstruct 1349 1352 1355 - Store 1344(r022) 1356 - 1358: 70 Load 73(inF0) - 1359: 70 ExtInst 1(GLSL.std.450) 10(Fract) 1358 - Store 1357(r023) 1359 + 1356: 38(fvec3) CompositeExtract 1348 2 + 1357: 38(fvec3) CompositeExtract 1349 2 + 1358: 38(fvec3) FMod 1356 1357 + 1359: 70 CompositeConstruct 1352 1355 1358 + Store 1347(r022) 1359 1361: 70 Load 73(inF0) - 1362: 70 Fwidth 1361 - Store 1360(r025) 1362 + 1362: 70 ExtInst 1(GLSL.std.450) 10(Fract) 1361 + Store 1360(r023) 1362 1364: 70 Load 73(inF0) - 1365: 70 Load 74(inF1) - 1366: 70 ExtInst 1(GLSL.std.450) 53(Ldexp) 1364 1365 - Store 1363(r026) 1366 - 1368: 70 Load 73(inF0) - 1369: 70 Load 74(inF1) - 1370: 70 Load 75(inF2) - 1371: 70 ExtInst 1(GLSL.std.450) 46(FMix) 1368 1369 1370 - Store 1367(r026a) 1371 - 1373: 70 Load 73(inF0) - 1374: 70 ExtInst 1(GLSL.std.450) 28(Log) 1373 - Store 1372(r027) 1374 + 1365: 70 Fwidth 1364 + Store 1363(r025) 1365 + 1367: 70 Load 73(inF0) + 1368: 70 Load 74(inF1) + 1369: 70 ExtInst 1(GLSL.std.450) 53(Ldexp) 1367 1368 + Store 1366(r026) 1369 + 1371: 70 Load 73(inF0) + 1372: 70 Load 74(inF1) + 1373: 70 Load 75(inF2) + 1374: 70 ExtInst 1(GLSL.std.450) 46(FMix) 1371 1372 1373 + Store 1370(r026a) 1374 1376: 70 Load 73(inF0) - 1377: 70 ExtInst 1(GLSL.std.450) 30(Log2) 1376 - 1378: 70 MatrixTimesScalar 1377 272 - Store 1375(r028) 1378 - 1380: 70 Load 73(inF0) - 1381: 70 ExtInst 1(GLSL.std.450) 30(Log2) 1380 - Store 1379(r029) 1381 + 1377: 70 ExtInst 1(GLSL.std.450) 28(Log) 1376 + Store 1375(r027) 1377 + 1379: 70 Load 73(inF0) + 1380: 70 ExtInst 1(GLSL.std.450) 30(Log2) 1379 + 1381: 70 MatrixTimesScalar 1380 276 + Store 1378(r028) 1381 1383: 70 Load 73(inF0) - 1384: 70 Load 74(inF1) - 1385: 70 ExtInst 1(GLSL.std.450) 40(FMax) 1383 1384 - Store 1382(r030) 1385 - 1387: 70 Load 73(inF0) - 1388: 70 Load 74(inF1) - 1389: 70 ExtInst 1(GLSL.std.450) 37(FMin) 1387 1388 - Store 1386(r031) 1389 - 1391: 70 Load 73(inF0) - 1392: 70 Load 74(inF1) - 1393: 70 ExtInst 1(GLSL.std.450) 26(Pow) 1391 1392 - Store 1390(r032) 1393 - 1395: 70 Load 73(inF0) - 1396: 70 ExtInst 1(GLSL.std.450) 11(Radians) 1395 - Store 1394(r033) 1396 + 1384: 70 ExtInst 1(GLSL.std.450) 30(Log2) 1383 + Store 1382(r029) 1384 + 1386: 70 Load 73(inF0) + 1387: 70 Load 74(inF1) + 1388: 70 ExtInst 1(GLSL.std.450) 40(FMax) 1386 1387 + Store 1385(r030) 1388 + 1390: 70 Load 73(inF0) + 1391: 70 Load 74(inF1) + 1392: 70 ExtInst 1(GLSL.std.450) 37(FMin) 1390 1391 + Store 1389(r031) 1392 + 1394: 70 Load 73(inF0) + 1395: 70 Load 74(inF1) + 1396: 70 ExtInst 1(GLSL.std.450) 26(Pow) 1394 1395 + Store 1393(r032) 1396 1398: 70 Load 73(inF0) - 1399: 70 ExtInst 1(GLSL.std.450) 2(RoundEven) 1398 - Store 1397(r034) 1399 + 1399: 70 ExtInst 1(GLSL.std.450) 11(Radians) 1398 + Store 1397(r033) 1399 1401: 70 Load 73(inF0) - 1402: 70 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1401 - Store 1400(r035) 1402 + 1402: 70 ExtInst 1(GLSL.std.450) 2(RoundEven) 1401 + Store 1400(r034) 1402 1404: 70 Load 73(inF0) - 1405: 38(fvec3) CompositeConstruct 141 141 141 - 1406: 38(fvec3) CompositeConstruct 293 293 293 - 1407: 70 ExtInst 1(GLSL.std.450) 43(FClamp) 1404 1405 1406 - Store 1403(r036) 1407 - 1409: 70 Load 73(inF0) - 1410: 70 ExtInst 1(GLSL.std.450) 6(FSign) 1409 - Store 1408(r037) 1410 + 1405: 70 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1404 + Store 1403(r035) 1405 + 1407: 70 Load 73(inF0) + 1408: 38(fvec3) CompositeConstruct 141 141 141 + 1409: 38(fvec3) CompositeConstruct 297 297 297 + 1410: 70 ExtInst 1(GLSL.std.450) 43(FClamp) 1407 1408 1409 + Store 1406(r036) 1410 1412: 70 Load 73(inF0) - 1413: 70 ExtInst 1(GLSL.std.450) 13(Sin) 1412 - Store 1411(r038) 1413 - 1414: 70 Load 73(inF0) - 1415: 70 ExtInst 1(GLSL.std.450) 13(Sin) 1414 - Store 74(inF1) 1415 - 1416: 70 Load 73(inF0) - 1417: 70 ExtInst 1(GLSL.std.450) 14(Cos) 1416 - Store 75(inF2) 1417 + 1413: 70 ExtInst 1(GLSL.std.450) 6(FSign) 1412 + Store 1411(r037) 1413 + 1415: 70 Load 73(inF0) + 1416: 70 ExtInst 1(GLSL.std.450) 13(Sin) 1415 + Store 1414(r038) 1416 + 1417: 70 Load 73(inF0) + 1418: 70 ExtInst 1(GLSL.std.450) 13(Sin) 1417 + Store 74(inF1) 1418 1419: 70 Load 73(inF0) - 1420: 70 ExtInst 1(GLSL.std.450) 19(Sinh) 1419 - Store 1418(r039) 1420 + 1420: 70 ExtInst 1(GLSL.std.450) 14(Cos) 1419 + Store 75(inF2) 1420 1422: 70 Load 73(inF0) - 1423: 70 Load 74(inF1) - 1424: 70 Load 75(inF2) - 1425: 70 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1422 1423 1424 - Store 1421(r049) 1425 - 1427: 70 Load 73(inF0) - 1428: 70 ExtInst 1(GLSL.std.450) 31(Sqrt) 1427 - Store 1426(r041) 1428 + 1423: 70 ExtInst 1(GLSL.std.450) 19(Sinh) 1422 + Store 1421(r039) 1423 + 1425: 70 Load 73(inF0) + 1426: 70 Load 74(inF1) + 1427: 70 Load 75(inF2) + 1428: 70 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1425 1426 1427 + Store 1424(r049) 1428 1430: 70 Load 73(inF0) - 1431: 70 Load 74(inF1) - 1432: 70 ExtInst 1(GLSL.std.450) 48(Step) 1430 1431 - Store 1429(r042) 1432 - 1434: 70 Load 73(inF0) - 1435: 70 ExtInst 1(GLSL.std.450) 15(Tan) 1434 - Store 1433(r043) 1435 + 1431: 70 ExtInst 1(GLSL.std.450) 31(Sqrt) 1430 + Store 1429(r041) 1431 + 1433: 70 Load 73(inF0) + 1434: 70 Load 74(inF1) + 1435: 70 ExtInst 1(GLSL.std.450) 48(Step) 1433 1434 + Store 1432(r042) 1435 1437: 70 Load 73(inF0) - 1438: 70 ExtInst 1(GLSL.std.450) 21(Tanh) 1437 - Store 1436(r044) 1438 - 1439: 70 Load 73(inF0) - 1440: 70 Transpose 1439 + 1438: 70 ExtInst 1(GLSL.std.450) 15(Tan) 1437 + Store 1436(r043) 1438 + 1440: 70 Load 73(inF0) + 1441: 70 ExtInst 1(GLSL.std.450) 21(Tanh) 1440 + Store 1439(r044) 1441 1442: 70 Load 73(inF0) - 1443: 70 ExtInst 1(GLSL.std.450) 3(Trunc) 1442 - Store 1441(r046) 1443 - ReturnValue 1445 + 1443: 70 Transpose 1442 + 1445: 70 Load 73(inF0) + 1446: 70 ExtInst 1(GLSL.std.450) 3(Trunc) 1445 + Store 1444(r046) 1446 + ReturnValue 1448 FunctionEnd 84(PixelShaderFunction4x4(mf44;mf44;mf44;): 78 Function None 80 81(inF0): 79(ptr) FunctionParameter 82(inF1): 79(ptr) FunctionParameter 83(inF2): 79(ptr) FunctionParameter 85: Label - 1448(r000): 138(ptr) Variable Function - 1453(r001): 79(ptr) Variable Function - 1458(r003): 138(ptr) Variable Function - 1462(r004): 79(ptr) Variable Function - 1465(r005): 79(ptr) Variable Function - 1468(r006): 79(ptr) Variable Function - 1472(r007): 79(ptr) Variable Function - 1482(r008): 79(ptr) Variable Function - 1487(r009): 79(ptr) Variable Function - 1490(r010): 79(ptr) Variable Function - 1493(r011): 79(ptr) Variable Function - 1496(r012): 79(ptr) Variable Function - 1499(r013): 79(ptr) Variable Function - 1502(r014): 79(ptr) Variable Function - 1505(r015): 79(ptr) Variable Function - 1508(r016): 79(ptr) Variable Function - 1511(r017): 79(ptr) Variable Function - 1514(r018): 7(ptr) Variable Function - 1517(r019): 79(ptr) Variable Function - 1520(R020): 79(ptr) Variable Function - 1523(r021): 79(ptr) Variable Function - 1526(r022): 79(ptr) Variable Function - 1542(r023): 79(ptr) Variable Function - 1545(r025): 79(ptr) Variable Function - 1548(r026): 79(ptr) Variable Function - 1552(r026a): 79(ptr) Variable Function - 1557(r027): 79(ptr) Variable Function - 1560(r028): 79(ptr) Variable Function - 1564(r029): 79(ptr) Variable Function - 1567(r030): 79(ptr) Variable Function - 1571(r031): 79(ptr) Variable Function - 1575(r032): 79(ptr) Variable Function - 1579(r033): 79(ptr) Variable Function - 1582(r034): 79(ptr) Variable Function - 1585(r035): 79(ptr) Variable Function - 1588(r036): 79(ptr) Variable Function - 1593(r037): 79(ptr) Variable Function - 1596(r038): 79(ptr) Variable Function - 1603(r039): 79(ptr) Variable Function - 1606(r049): 79(ptr) Variable Function - 1611(r041): 79(ptr) Variable Function - 1614(r042): 79(ptr) Variable Function - 1618(r043): 79(ptr) Variable Function - 1621(r044): 79(ptr) Variable Function - 1626(r046): 79(ptr) Variable Function - 1449: 78 Load 81(inF0) - 1451: 1450 FOrdNotEqual 1449 141 - 1452: 137(bool) All 1451 - Store 1448(r000) 1452 - 1454: 78 Load 81(inF0) - 1455: 78 ExtInst 1(GLSL.std.450) 4(FAbs) 1454 - Store 1453(r001) 1455 - 1456: 78 Load 81(inF0) - 1457: 78 ExtInst 1(GLSL.std.450) 17(Acos) 1456 + 1451(r000): 138(ptr) Variable Function + 1456(r001): 79(ptr) Variable Function + 1461(r003): 138(ptr) Variable Function + 1465(r004): 79(ptr) Variable Function + 1468(r005): 79(ptr) Variable Function + 1471(r006): 79(ptr) Variable Function + 1475(r007): 79(ptr) Variable Function + 1485(r008): 79(ptr) Variable Function + 1490(r009): 79(ptr) Variable Function + 1493(r010): 79(ptr) Variable Function + 1496(r011): 79(ptr) Variable Function + 1499(r012): 79(ptr) Variable Function + 1502(r013): 79(ptr) Variable Function + 1505(r014): 79(ptr) Variable Function + 1508(r015): 79(ptr) Variable Function + 1511(r016): 79(ptr) Variable Function + 1514(r017): 79(ptr) Variable Function + 1517(r018): 7(ptr) Variable Function + 1520(r019): 79(ptr) Variable Function + 1523(R020): 79(ptr) Variable Function + 1526(r021): 79(ptr) Variable Function + 1529(r022): 79(ptr) Variable Function + 1545(r023): 79(ptr) Variable Function + 1548(r025): 79(ptr) Variable Function + 1551(r026): 79(ptr) Variable Function + 1555(r026a): 79(ptr) Variable Function + 1560(r027): 79(ptr) Variable Function + 1563(r028): 79(ptr) Variable Function + 1567(r029): 79(ptr) Variable Function + 1570(r030): 79(ptr) Variable Function + 1574(r031): 79(ptr) Variable Function + 1578(r032): 79(ptr) Variable Function + 1582(r033): 79(ptr) Variable Function + 1585(r034): 79(ptr) Variable Function + 1588(r035): 79(ptr) Variable Function + 1591(r036): 79(ptr) Variable Function + 1596(r037): 79(ptr) Variable Function + 1599(r038): 79(ptr) Variable Function + 1606(r039): 79(ptr) Variable Function + 1609(r049): 79(ptr) Variable Function + 1614(r041): 79(ptr) Variable Function + 1617(r042): 79(ptr) Variable Function + 1621(r043): 79(ptr) Variable Function + 1624(r044): 79(ptr) Variable Function + 1629(r046): 79(ptr) Variable Function + 1452: 78 Load 81(inF0) + 1454: 1453 FOrdNotEqual 1452 141 + 1455: 137(bool) All 1454 + Store 1451(r000) 1455 + 1457: 78 Load 81(inF0) + 1458: 78 ExtInst 1(GLSL.std.450) 4(FAbs) 1457 + Store 1456(r001) 1458 1459: 78 Load 81(inF0) - 1460: 1450 FOrdNotEqual 1459 141 - 1461: 137(bool) Any 1460 - Store 1458(r003) 1461 - 1463: 78 Load 81(inF0) - 1464: 78 ExtInst 1(GLSL.std.450) 16(Asin) 1463 - Store 1462(r004) 1464 + 1460: 78 ExtInst 1(GLSL.std.450) 17(Acos) 1459 + 1462: 78 Load 81(inF0) + 1463: 1453 FOrdNotEqual 1462 141 + 1464: 137(bool) Any 1463 + Store 1461(r003) 1464 1466: 78 Load 81(inF0) - 1467: 78 ExtInst 1(GLSL.std.450) 18(Atan) 1466 - Store 1465(r005) 1467 + 1467: 78 ExtInst 1(GLSL.std.450) 16(Asin) 1466 + Store 1465(r004) 1467 1469: 78 Load 81(inF0) - 1470: 78 Load 82(inF1) - 1471: 78 ExtInst 1(GLSL.std.450) 25(Atan2) 1469 1470 - Store 1468(r006) 1471 - 1473: 78 Load 81(inF0) - 1474: 78 ExtInst 1(GLSL.std.450) 9(Ceil) 1473 - Store 1472(r007) 1474 - 1475: 78 Load 81(inF0) - 1477: 1450 FOrdLessThan 1475 1476 - 1478: 137(bool) Any 1477 - SelectionMerge 1480 None - BranchConditional 1478 1479 1480 - 1479: Label + 1470: 78 ExtInst 1(GLSL.std.450) 18(Atan) 1469 + Store 1468(r005) 1470 + 1472: 78 Load 81(inF0) + 1473: 78 Load 82(inF1) + 1474: 78 ExtInst 1(GLSL.std.450) 25(Atan2) 1472 1473 + Store 1471(r006) 1474 + 1476: 78 Load 81(inF0) + 1477: 78 ExtInst 1(GLSL.std.450) 9(Ceil) 1476 + Store 1475(r007) 1477 + 1478: 78 Load 81(inF0) + 1480: 1453 FOrdLessThan 1478 1479 + 1481: 137(bool) Any 1480 + SelectionMerge 1483 None + BranchConditional 1481 1482 1483 + 1482: Label Kill - 1480: Label - 1483: 78 Load 81(inF0) - 1484: 78 Load 82(inF1) - 1485: 78 Load 83(inF2) - 1486: 78 ExtInst 1(GLSL.std.450) 43(FClamp) 1483 1484 1485 - Store 1482(r008) 1486 - 1488: 78 Load 81(inF0) - 1489: 78 ExtInst 1(GLSL.std.450) 14(Cos) 1488 - Store 1487(r009) 1489 + 1483: Label + 1486: 78 Load 81(inF0) + 1487: 78 Load 82(inF1) + 1488: 78 Load 83(inF2) + 1489: 78 ExtInst 1(GLSL.std.450) 43(FClamp) 1486 1487 1488 + Store 1485(r008) 1489 1491: 78 Load 81(inF0) - 1492: 78 ExtInst 1(GLSL.std.450) 20(Cosh) 1491 - Store 1490(r010) 1492 + 1492: 78 ExtInst 1(GLSL.std.450) 14(Cos) 1491 + Store 1490(r009) 1492 1494: 78 Load 81(inF0) - 1495: 78 DPdx 1494 - Store 1493(r011) 1495 + 1495: 78 ExtInst 1(GLSL.std.450) 20(Cosh) 1494 + Store 1493(r010) 1495 1497: 78 Load 81(inF0) - 1498: 78 DPdxCoarse 1497 - Store 1496(r012) 1498 + 1498: 78 DPdx 1497 + Store 1496(r011) 1498 1500: 78 Load 81(inF0) - 1501: 78 DPdxFine 1500 - Store 1499(r013) 1501 + 1501: 78 DPdxCoarse 1500 + Store 1499(r012) 1501 1503: 78 Load 81(inF0) - 1504: 78 DPdy 1503 - Store 1502(r014) 1504 + 1504: 78 DPdxFine 1503 + Store 1502(r013) 1504 1506: 78 Load 81(inF0) - 1507: 78 DPdyCoarse 1506 - Store 1505(r015) 1507 + 1507: 78 DPdy 1506 + Store 1505(r014) 1507 1509: 78 Load 81(inF0) - 1510: 78 DPdyFine 1509 - Store 1508(r016) 1510 + 1510: 78 DPdyCoarse 1509 + Store 1508(r015) 1510 1512: 78 Load 81(inF0) - 1513: 78 ExtInst 1(GLSL.std.450) 12(Degrees) 1512 - Store 1511(r017) 1513 + 1513: 78 DPdyFine 1512 + Store 1511(r016) 1513 1515: 78 Load 81(inF0) - 1516: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1515 - Store 1514(r018) 1516 + 1516: 78 ExtInst 1(GLSL.std.450) 12(Degrees) 1515 + Store 1514(r017) 1516 1518: 78 Load 81(inF0) - 1519: 78 ExtInst 1(GLSL.std.450) 27(Exp) 1518 - Store 1517(r019) 1519 + 1519: 6(float) ExtInst 1(GLSL.std.450) 33(Determinant) 1518 + Store 1517(r018) 1519 1521: 78 Load 81(inF0) - 1522: 78 ExtInst 1(GLSL.std.450) 29(Exp2) 1521 - Store 1520(R020) 1522 + 1522: 78 ExtInst 1(GLSL.std.450) 27(Exp) 1521 + Store 1520(r019) 1522 1524: 78 Load 81(inF0) - 1525: 78 ExtInst 1(GLSL.std.450) 8(Floor) 1524 - Store 1523(r021) 1525 + 1525: 78 ExtInst 1(GLSL.std.450) 29(Exp2) 1524 + Store 1523(R020) 1525 1527: 78 Load 81(inF0) - 1528: 78 Load 82(inF1) - 1529: 50(fvec4) CompositeExtract 1527 0 - 1530: 50(fvec4) CompositeExtract 1528 0 - 1531: 50(fvec4) FMod 1529 1530 - 1532: 50(fvec4) CompositeExtract 1527 1 - 1533: 50(fvec4) CompositeExtract 1528 1 + 1528: 78 ExtInst 1(GLSL.std.450) 8(Floor) 1527 + Store 1526(r021) 1528 + 1530: 78 Load 81(inF0) + 1531: 78 Load 82(inF1) + 1532: 50(fvec4) CompositeExtract 1530 0 + 1533: 50(fvec4) CompositeExtract 1531 0 1534: 50(fvec4) FMod 1532 1533 - 1535: 50(fvec4) CompositeExtract 1527 2 - 1536: 50(fvec4) CompositeExtract 1528 2 + 1535: 50(fvec4) CompositeExtract 1530 1 + 1536: 50(fvec4) CompositeExtract 1531 1 1537: 50(fvec4) FMod 1535 1536 - 1538: 50(fvec4) CompositeExtract 1527 3 - 1539: 50(fvec4) CompositeExtract 1528 3 + 1538: 50(fvec4) CompositeExtract 1530 2 + 1539: 50(fvec4) CompositeExtract 1531 2 1540: 50(fvec4) FMod 1538 1539 - 1541: 78 CompositeConstruct 1531 1534 1537 1540 - Store 1526(r022) 1541 - 1543: 78 Load 81(inF0) - 1544: 78 ExtInst 1(GLSL.std.450) 10(Fract) 1543 - Store 1542(r023) 1544 + 1541: 50(fvec4) CompositeExtract 1530 3 + 1542: 50(fvec4) CompositeExtract 1531 3 + 1543: 50(fvec4) FMod 1541 1542 + 1544: 78 CompositeConstruct 1534 1537 1540 1543 + Store 1529(r022) 1544 1546: 78 Load 81(inF0) - 1547: 78 Fwidth 1546 - Store 1545(r025) 1547 + 1547: 78 ExtInst 1(GLSL.std.450) 10(Fract) 1546 + Store 1545(r023) 1547 1549: 78 Load 81(inF0) - 1550: 78 Load 82(inF1) - 1551: 78 ExtInst 1(GLSL.std.450) 53(Ldexp) 1549 1550 - Store 1548(r026) 1551 - 1553: 78 Load 81(inF0) - 1554: 78 Load 82(inF1) - 1555: 78 Load 83(inF2) - 1556: 78 ExtInst 1(GLSL.std.450) 46(FMix) 1553 1554 1555 - Store 1552(r026a) 1556 - 1558: 78 Load 81(inF0) - 1559: 78 ExtInst 1(GLSL.std.450) 28(Log) 1558 - Store 1557(r027) 1559 + 1550: 78 Fwidth 1549 + Store 1548(r025) 1550 + 1552: 78 Load 81(inF0) + 1553: 78 Load 82(inF1) + 1554: 78 ExtInst 1(GLSL.std.450) 53(Ldexp) 1552 1553 + Store 1551(r026) 1554 + 1556: 78 Load 81(inF0) + 1557: 78 Load 82(inF1) + 1558: 78 Load 83(inF2) + 1559: 78 ExtInst 1(GLSL.std.450) 46(FMix) 1556 1557 1558 + Store 1555(r026a) 1559 1561: 78 Load 81(inF0) - 1562: 78 ExtInst 1(GLSL.std.450) 30(Log2) 1561 - 1563: 78 MatrixTimesScalar 1562 272 - Store 1560(r028) 1563 - 1565: 78 Load 81(inF0) - 1566: 78 ExtInst 1(GLSL.std.450) 30(Log2) 1565 - Store 1564(r029) 1566 + 1562: 78 ExtInst 1(GLSL.std.450) 28(Log) 1561 + Store 1560(r027) 1562 + 1564: 78 Load 81(inF0) + 1565: 78 ExtInst 1(GLSL.std.450) 30(Log2) 1564 + 1566: 78 MatrixTimesScalar 1565 276 + Store 1563(r028) 1566 1568: 78 Load 81(inF0) - 1569: 78 Load 82(inF1) - 1570: 78 ExtInst 1(GLSL.std.450) 40(FMax) 1568 1569 - Store 1567(r030) 1570 - 1572: 78 Load 81(inF0) - 1573: 78 Load 82(inF1) - 1574: 78 ExtInst 1(GLSL.std.450) 37(FMin) 1572 1573 - Store 1571(r031) 1574 - 1576: 78 Load 81(inF0) - 1577: 78 Load 82(inF1) - 1578: 78 ExtInst 1(GLSL.std.450) 26(Pow) 1576 1577 - Store 1575(r032) 1578 - 1580: 78 Load 81(inF0) - 1581: 78 ExtInst 1(GLSL.std.450) 11(Radians) 1580 - Store 1579(r033) 1581 + 1569: 78 ExtInst 1(GLSL.std.450) 30(Log2) 1568 + Store 1567(r029) 1569 + 1571: 78 Load 81(inF0) + 1572: 78 Load 82(inF1) + 1573: 78 ExtInst 1(GLSL.std.450) 40(FMax) 1571 1572 + Store 1570(r030) 1573 + 1575: 78 Load 81(inF0) + 1576: 78 Load 82(inF1) + 1577: 78 ExtInst 1(GLSL.std.450) 37(FMin) 1575 1576 + Store 1574(r031) 1577 + 1579: 78 Load 81(inF0) + 1580: 78 Load 82(inF1) + 1581: 78 ExtInst 1(GLSL.std.450) 26(Pow) 1579 1580 + Store 1578(r032) 1581 1583: 78 Load 81(inF0) - 1584: 78 ExtInst 1(GLSL.std.450) 2(RoundEven) 1583 - Store 1582(r034) 1584 + 1584: 78 ExtInst 1(GLSL.std.450) 11(Radians) 1583 + Store 1582(r033) 1584 1586: 78 Load 81(inF0) - 1587: 78 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1586 - Store 1585(r035) 1587 + 1587: 78 ExtInst 1(GLSL.std.450) 2(RoundEven) 1586 + Store 1585(r034) 1587 1589: 78 Load 81(inF0) - 1590: 50(fvec4) CompositeConstruct 141 141 141 141 - 1591: 50(fvec4) CompositeConstruct 293 293 293 293 - 1592: 78 ExtInst 1(GLSL.std.450) 43(FClamp) 1589 1590 1591 - Store 1588(r036) 1592 - 1594: 78 Load 81(inF0) - 1595: 78 ExtInst 1(GLSL.std.450) 6(FSign) 1594 - Store 1593(r037) 1595 + 1590: 78 ExtInst 1(GLSL.std.450) 32(InverseSqrt) 1589 + Store 1588(r035) 1590 + 1592: 78 Load 81(inF0) + 1593: 50(fvec4) CompositeConstruct 141 141 141 141 + 1594: 50(fvec4) CompositeConstruct 297 297 297 297 + 1595: 78 ExtInst 1(GLSL.std.450) 43(FClamp) 1592 1593 1594 + Store 1591(r036) 1595 1597: 78 Load 81(inF0) - 1598: 78 ExtInst 1(GLSL.std.450) 13(Sin) 1597 - Store 1596(r038) 1598 - 1599: 78 Load 81(inF0) - 1600: 78 ExtInst 1(GLSL.std.450) 13(Sin) 1599 - Store 82(inF1) 1600 - 1601: 78 Load 81(inF0) - 1602: 78 ExtInst 1(GLSL.std.450) 14(Cos) 1601 - Store 83(inF2) 1602 + 1598: 78 ExtInst 1(GLSL.std.450) 6(FSign) 1597 + Store 1596(r037) 1598 + 1600: 78 Load 81(inF0) + 1601: 78 ExtInst 1(GLSL.std.450) 13(Sin) 1600 + Store 1599(r038) 1601 + 1602: 78 Load 81(inF0) + 1603: 78 ExtInst 1(GLSL.std.450) 13(Sin) 1602 + Store 82(inF1) 1603 1604: 78 Load 81(inF0) - 1605: 78 ExtInst 1(GLSL.std.450) 19(Sinh) 1604 - Store 1603(r039) 1605 + 1605: 78 ExtInst 1(GLSL.std.450) 14(Cos) 1604 + Store 83(inF2) 1605 1607: 78 Load 81(inF0) - 1608: 78 Load 82(inF1) - 1609: 78 Load 83(inF2) - 1610: 78 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1607 1608 1609 - Store 1606(r049) 1610 - 1612: 78 Load 81(inF0) - 1613: 78 ExtInst 1(GLSL.std.450) 31(Sqrt) 1612 - Store 1611(r041) 1613 + 1608: 78 ExtInst 1(GLSL.std.450) 19(Sinh) 1607 + Store 1606(r039) 1608 + 1610: 78 Load 81(inF0) + 1611: 78 Load 82(inF1) + 1612: 78 Load 83(inF2) + 1613: 78 ExtInst 1(GLSL.std.450) 49(SmoothStep) 1610 1611 1612 + Store 1609(r049) 1613 1615: 78 Load 81(inF0) - 1616: 78 Load 82(inF1) - 1617: 78 ExtInst 1(GLSL.std.450) 48(Step) 1615 1616 - Store 1614(r042) 1617 - 1619: 78 Load 81(inF0) - 1620: 78 ExtInst 1(GLSL.std.450) 15(Tan) 1619 - Store 1618(r043) 1620 + 1616: 78 ExtInst 1(GLSL.std.450) 31(Sqrt) 1615 + Store 1614(r041) 1616 + 1618: 78 Load 81(inF0) + 1619: 78 Load 82(inF1) + 1620: 78 ExtInst 1(GLSL.std.450) 48(Step) 1618 1619 + Store 1617(r042) 1620 1622: 78 Load 81(inF0) - 1623: 78 ExtInst 1(GLSL.std.450) 21(Tanh) 1622 - Store 1621(r044) 1623 - 1624: 78 Load 81(inF0) - 1625: 78 Transpose 1624 + 1623: 78 ExtInst 1(GLSL.std.450) 15(Tan) 1622 + Store 1621(r043) 1623 + 1625: 78 Load 81(inF0) + 1626: 78 ExtInst 1(GLSL.std.450) 21(Tanh) 1625 + Store 1624(r044) 1626 1627: 78 Load 81(inF0) - 1628: 78 ExtInst 1(GLSL.std.450) 3(Trunc) 1627 - Store 1626(r046) 1628 - ReturnValue 1630 + 1628: 78 Transpose 1627 + 1630: 78 Load 81(inF0) + 1631: 78 ExtInst 1(GLSL.std.450) 3(Trunc) 1630 + Store 1629(r046) 1631 + ReturnValue 1633 FunctionEnd 93(TestGenMul2(f1;f1;vf2;vf2;mf22;mf22;): 2 Function None 86 87(inF0): 7(ptr) FunctionParameter @@ -8212,51 +8231,51 @@ Validation failed 91(inFM0): 63(ptr) FunctionParameter 92(inFM1): 63(ptr) FunctionParameter 94: Label - 1633(r0): 7(ptr) Variable Function - 1637(r1): 27(ptr) Variable Function - 1641(r2): 27(ptr) Variable Function - 1645(r3): 7(ptr) Variable Function - 1649(r4): 27(ptr) Variable Function - 1653(r5): 27(ptr) Variable Function - 1657(r6): 63(ptr) Variable Function - 1661(r7): 63(ptr) Variable Function - 1665(r8): 63(ptr) Variable Function - 1634: 6(float) Load 88(inF1) - 1635: 6(float) Load 87(inF0) - 1636: 6(float) FMul 1634 1635 - Store 1633(r0) 1636 + 1636(r0): 7(ptr) Variable Function + 1640(r1): 27(ptr) Variable Function + 1644(r2): 27(ptr) Variable Function + 1648(r3): 7(ptr) Variable Function + 1652(r4): 27(ptr) Variable Function + 1656(r5): 27(ptr) Variable Function + 1660(r6): 63(ptr) Variable Function + 1664(r7): 63(ptr) Variable Function + 1668(r8): 63(ptr) Variable Function + 1637: 6(float) Load 88(inF1) 1638: 6(float) Load 87(inF0) - 1639: 26(fvec2) Load 89(inFV0) - 1640: 26(fvec2) VectorTimesScalar 1639 1638 - Store 1637(r1) 1640 + 1639: 6(float) FMul 1637 1638 + Store 1636(r0) 1639 + 1641: 6(float) Load 87(inF0) 1642: 26(fvec2) Load 89(inFV0) - 1643: 6(float) Load 87(inF0) - 1644: 26(fvec2) VectorTimesScalar 1642 1643 - Store 1641(r2) 1644 - 1646: 26(fvec2) Load 89(inFV0) - 1647: 26(fvec2) Load 90(inFV1) - 1648: 6(float) Dot 1646 1647 - Store 1645(r3) 1648 - 1650: 26(fvec2) Load 89(inFV0) - 1651: 62 Load 91(inFM0) - 1652: 26(fvec2) VectorTimesMatrix 1650 1651 - Store 1649(r4) 1652 + 1643: 26(fvec2) VectorTimesScalar 1642 1641 + Store 1640(r1) 1643 + 1645: 26(fvec2) Load 89(inFV0) + 1646: 6(float) Load 87(inF0) + 1647: 26(fvec2) VectorTimesScalar 1645 1646 + Store 1644(r2) 1647 + 1649: 26(fvec2) Load 89(inFV0) + 1650: 26(fvec2) Load 90(inFV1) + 1651: 6(float) Dot 1649 1650 + Store 1648(r3) 1651 + 1653: 26(fvec2) Load 89(inFV0) 1654: 62 Load 91(inFM0) - 1655: 26(fvec2) Load 89(inFV0) - 1656: 26(fvec2) MatrixTimesVector 1654 1655 - Store 1653(r5) 1656 - 1658: 6(float) Load 87(inF0) - 1659: 62 Load 91(inFM0) - 1660: 62 MatrixTimesScalar 1659 1658 - Store 1657(r6) 1660 + 1655: 26(fvec2) VectorTimesMatrix 1653 1654 + Store 1652(r4) 1655 + 1657: 62 Load 91(inFM0) + 1658: 26(fvec2) Load 89(inFV0) + 1659: 26(fvec2) MatrixTimesVector 1657 1658 + Store 1656(r5) 1659 + 1661: 6(float) Load 87(inF0) 1662: 62 Load 91(inFM0) - 1663: 6(float) Load 87(inF0) - 1664: 62 MatrixTimesScalar 1662 1663 - Store 1661(r7) 1664 - 1666: 62 Load 92(inFM1) - 1667: 62 Load 91(inFM0) - 1668: 62 MatrixTimesMatrix 1666 1667 - Store 1665(r8) 1668 + 1663: 62 MatrixTimesScalar 1662 1661 + Store 1660(r6) 1663 + 1665: 62 Load 91(inFM0) + 1666: 6(float) Load 87(inF0) + 1667: 62 MatrixTimesScalar 1665 1666 + Store 1664(r7) 1667 + 1669: 62 Load 92(inFM1) + 1670: 62 Load 91(inFM0) + 1671: 62 MatrixTimesMatrix 1669 1670 + Store 1668(r8) 1671 Return FunctionEnd 102(TestGenMul3(f1;f1;vf3;vf3;mf33;mf33;): 2 Function None 95 @@ -8267,51 +8286,51 @@ Validation failed 100(inFM0): 71(ptr) FunctionParameter 101(inFM1): 71(ptr) FunctionParameter 103: Label - 1669(r0): 7(ptr) Variable Function - 1673(r1): 39(ptr) Variable Function - 1677(r2): 39(ptr) Variable Function - 1681(r3): 7(ptr) Variable Function - 1685(r4): 39(ptr) Variable Function - 1689(r5): 39(ptr) Variable Function - 1693(r6): 71(ptr) Variable Function - 1697(r7): 71(ptr) Variable Function - 1701(r8): 71(ptr) Variable Function - 1670: 6(float) Load 97(inF1) - 1671: 6(float) Load 96(inF0) - 1672: 6(float) FMul 1670 1671 - Store 1669(r0) 1672 + 1672(r0): 7(ptr) Variable Function + 1676(r1): 39(ptr) Variable Function + 1680(r2): 39(ptr) Variable Function + 1684(r3): 7(ptr) Variable Function + 1688(r4): 39(ptr) Variable Function + 1692(r5): 39(ptr) Variable Function + 1696(r6): 71(ptr) Variable Function + 1700(r7): 71(ptr) Variable Function + 1704(r8): 71(ptr) Variable Function + 1673: 6(float) Load 97(inF1) 1674: 6(float) Load 96(inF0) - 1675: 38(fvec3) Load 98(inFV0) - 1676: 38(fvec3) VectorTimesScalar 1675 1674 - Store 1673(r1) 1676 + 1675: 6(float) FMul 1673 1674 + Store 1672(r0) 1675 + 1677: 6(float) Load 96(inF0) 1678: 38(fvec3) Load 98(inFV0) - 1679: 6(float) Load 96(inF0) - 1680: 38(fvec3) VectorTimesScalar 1678 1679 - Store 1677(r2) 1680 - 1682: 38(fvec3) Load 98(inFV0) - 1683: 38(fvec3) Load 99(inFV1) - 1684: 6(float) Dot 1682 1683 - Store 1681(r3) 1684 - 1686: 38(fvec3) Load 98(inFV0) - 1687: 70 Load 100(inFM0) - 1688: 38(fvec3) VectorTimesMatrix 1686 1687 - Store 1685(r4) 1688 + 1679: 38(fvec3) VectorTimesScalar 1678 1677 + Store 1676(r1) 1679 + 1681: 38(fvec3) Load 98(inFV0) + 1682: 6(float) Load 96(inF0) + 1683: 38(fvec3) VectorTimesScalar 1681 1682 + Store 1680(r2) 1683 + 1685: 38(fvec3) Load 98(inFV0) + 1686: 38(fvec3) Load 99(inFV1) + 1687: 6(float) Dot 1685 1686 + Store 1684(r3) 1687 + 1689: 38(fvec3) Load 98(inFV0) 1690: 70 Load 100(inFM0) - 1691: 38(fvec3) Load 98(inFV0) - 1692: 38(fvec3) MatrixTimesVector 1690 1691 - Store 1689(r5) 1692 - 1694: 6(float) Load 96(inF0) - 1695: 70 Load 100(inFM0) - 1696: 70 MatrixTimesScalar 1695 1694 - Store 1693(r6) 1696 + 1691: 38(fvec3) VectorTimesMatrix 1689 1690 + Store 1688(r4) 1691 + 1693: 70 Load 100(inFM0) + 1694: 38(fvec3) Load 98(inFV0) + 1695: 38(fvec3) MatrixTimesVector 1693 1694 + Store 1692(r5) 1695 + 1697: 6(float) Load 96(inF0) 1698: 70 Load 100(inFM0) - 1699: 6(float) Load 96(inF0) - 1700: 70 MatrixTimesScalar 1698 1699 - Store 1697(r7) 1700 - 1702: 70 Load 101(inFM1) - 1703: 70 Load 100(inFM0) - 1704: 70 MatrixTimesMatrix 1702 1703 - Store 1701(r8) 1704 + 1699: 70 MatrixTimesScalar 1698 1697 + Store 1696(r6) 1699 + 1701: 70 Load 100(inFM0) + 1702: 6(float) Load 96(inF0) + 1703: 70 MatrixTimesScalar 1701 1702 + Store 1700(r7) 1703 + 1705: 70 Load 101(inFM1) + 1706: 70 Load 100(inFM0) + 1707: 70 MatrixTimesMatrix 1705 1706 + Store 1704(r8) 1707 Return FunctionEnd 111(TestGenMul4(f1;f1;vf4;vf4;mf44;mf44;): 2 Function None 104 @@ -8322,51 +8341,51 @@ Validation failed 109(inFM0): 79(ptr) FunctionParameter 110(inFM1): 79(ptr) FunctionParameter 112: Label - 1705(r0): 7(ptr) Variable Function - 1709(r1): 51(ptr) Variable Function - 1713(r2): 51(ptr) Variable Function - 1717(r3): 7(ptr) Variable Function - 1721(r4): 51(ptr) Variable Function - 1725(r5): 51(ptr) Variable Function - 1729(r6): 79(ptr) Variable Function - 1733(r7): 79(ptr) Variable Function - 1737(r8): 79(ptr) Variable Function - 1706: 6(float) Load 106(inF1) - 1707: 6(float) Load 105(inF0) - 1708: 6(float) FMul 1706 1707 - Store 1705(r0) 1708 + 1708(r0): 7(ptr) Variable Function + 1712(r1): 51(ptr) Variable Function + 1716(r2): 51(ptr) Variable Function + 1720(r3): 7(ptr) Variable Function + 1724(r4): 51(ptr) Variable Function + 1728(r5): 51(ptr) Variable Function + 1732(r6): 79(ptr) Variable Function + 1736(r7): 79(ptr) Variable Function + 1740(r8): 79(ptr) Variable Function + 1709: 6(float) Load 106(inF1) 1710: 6(float) Load 105(inF0) - 1711: 50(fvec4) Load 107(inFV0) - 1712: 50(fvec4) VectorTimesScalar 1711 1710 - Store 1709(r1) 1712 + 1711: 6(float) FMul 1709 1710 + Store 1708(r0) 1711 + 1713: 6(float) Load 105(inF0) 1714: 50(fvec4) Load 107(inFV0) - 1715: 6(float) Load 105(inF0) - 1716: 50(fvec4) VectorTimesScalar 1714 1715 - Store 1713(r2) 1716 - 1718: 50(fvec4) Load 107(inFV0) - 1719: 50(fvec4) Load 108(inFV1) - 1720: 6(float) Dot 1718 1719 - Store 1717(r3) 1720 - 1722: 50(fvec4) Load 107(inFV0) - 1723: 78 Load 109(inFM0) - 1724: 50(fvec4) VectorTimesMatrix 1722 1723 - Store 1721(r4) 1724 + 1715: 50(fvec4) VectorTimesScalar 1714 1713 + Store 1712(r1) 1715 + 1717: 50(fvec4) Load 107(inFV0) + 1718: 6(float) Load 105(inF0) + 1719: 50(fvec4) VectorTimesScalar 1717 1718 + Store 1716(r2) 1719 + 1721: 50(fvec4) Load 107(inFV0) + 1722: 50(fvec4) Load 108(inFV1) + 1723: 6(float) Dot 1721 1722 + Store 1720(r3) 1723 + 1725: 50(fvec4) Load 107(inFV0) 1726: 78 Load 109(inFM0) - 1727: 50(fvec4) Load 107(inFV0) - 1728: 50(fvec4) MatrixTimesVector 1726 1727 - Store 1725(r5) 1728 - 1730: 6(float) Load 105(inF0) - 1731: 78 Load 109(inFM0) - 1732: 78 MatrixTimesScalar 1731 1730 - Store 1729(r6) 1732 + 1727: 50(fvec4) VectorTimesMatrix 1725 1726 + Store 1724(r4) 1727 + 1729: 78 Load 109(inFM0) + 1730: 50(fvec4) Load 107(inFV0) + 1731: 50(fvec4) MatrixTimesVector 1729 1730 + Store 1728(r5) 1731 + 1733: 6(float) Load 105(inF0) 1734: 78 Load 109(inFM0) - 1735: 6(float) Load 105(inF0) - 1736: 78 MatrixTimesScalar 1734 1735 - Store 1733(r7) 1736 - 1738: 78 Load 110(inFM1) - 1739: 78 Load 109(inFM0) - 1740: 78 MatrixTimesMatrix 1738 1739 - Store 1737(r8) 1740 + 1735: 78 MatrixTimesScalar 1734 1733 + Store 1732(r6) 1735 + 1737: 78 Load 109(inFM0) + 1738: 6(float) Load 105(inF0) + 1739: 78 MatrixTimesScalar 1737 1738 + Store 1736(r7) 1739 + 1741: 78 Load 110(inFM1) + 1742: 78 Load 109(inFM0) + 1743: 78 MatrixTimesMatrix 1741 1742 + Store 1740(r8) 1743 Return FunctionEnd 131(TestGenMulNxM(f1;f1;vf2;vf3;mf23;mf32;mf33;mf34;mf24;): 2 Function None 121 @@ -8380,98 +8399,98 @@ Validation failed 129(inFM3x4): 118(ptr) FunctionParameter 130(inFM2x4): 120(ptr) FunctionParameter 132: Label - 1741(r00): 7(ptr) Variable Function - 1745(r01): 27(ptr) Variable Function - 1749(r02): 39(ptr) Variable Function - 1753(r03): 27(ptr) Variable Function - 1757(r04): 39(ptr) Variable Function - 1761(r05): 7(ptr) Variable Function - 1765(r06): 7(ptr) Variable Function - 1769(r07): 39(ptr) Variable Function - 1773(r08): 27(ptr) Variable Function - 1777(r09): 27(ptr) Variable Function - 1781(r10): 39(ptr) Variable Function - 1785(r11): 114(ptr) Variable Function - 1789(r12): 116(ptr) Variable Function - 1793(r13): 63(ptr) Variable Function - 1797(r14): 114(ptr) Variable Function - 1801(r15): 120(ptr) Variable Function - 1805(r16): 118(ptr) Variable Function - 1742: 6(float) Load 123(inF1) - 1743: 6(float) Load 122(inF0) - 1744: 6(float) FMul 1742 1743 - Store 1741(r00) 1744 + 1744(r00): 7(ptr) Variable Function + 1748(r01): 27(ptr) Variable Function + 1752(r02): 39(ptr) Variable Function + 1756(r03): 27(ptr) Variable Function + 1760(r04): 39(ptr) Variable Function + 1764(r05): 7(ptr) Variable Function + 1768(r06): 7(ptr) Variable Function + 1772(r07): 39(ptr) Variable Function + 1776(r08): 27(ptr) Variable Function + 1780(r09): 27(ptr) Variable Function + 1784(r10): 39(ptr) Variable Function + 1788(r11): 114(ptr) Variable Function + 1792(r12): 116(ptr) Variable Function + 1796(r13): 63(ptr) Variable Function + 1800(r14): 114(ptr) Variable Function + 1804(r15): 120(ptr) Variable Function + 1808(r16): 118(ptr) Variable Function + 1745: 6(float) Load 123(inF1) 1746: 6(float) Load 122(inF0) - 1747: 26(fvec2) Load 124(inFV2) - 1748: 26(fvec2) VectorTimesScalar 1747 1746 - Store 1745(r01) 1748 - 1750: 6(float) Load 122(inF0) - 1751: 38(fvec3) Load 125(inFV3) - 1752: 38(fvec3) VectorTimesScalar 1751 1750 - Store 1749(r02) 1752 - 1754: 26(fvec2) Load 124(inFV2) - 1755: 6(float) Load 122(inF0) - 1756: 26(fvec2) VectorTimesScalar 1754 1755 - Store 1753(r03) 1756 - 1758: 38(fvec3) Load 125(inFV3) - 1759: 6(float) Load 122(inF0) - 1760: 38(fvec3) VectorTimesScalar 1758 1759 - Store 1757(r04) 1760 - 1762: 26(fvec2) Load 124(inFV2) - 1763: 26(fvec2) Load 124(inFV2) - 1764: 6(float) Dot 1762 1763 - Store 1761(r05) 1764 - 1766: 38(fvec3) Load 125(inFV3) - 1767: 38(fvec3) Load 125(inFV3) - 1768: 6(float) Dot 1766 1767 - Store 1765(r06) 1768 - 1770: 113 Load 126(inFM2x3) - 1771: 26(fvec2) Load 124(inFV2) - 1772: 38(fvec3) MatrixTimesVector 1770 1771 - Store 1769(r07) 1772 - 1774: 115 Load 127(inFM3x2) - 1775: 38(fvec3) Load 125(inFV3) - 1776: 26(fvec2) MatrixTimesVector 1774 1775 - Store 1773(r08) 1776 + 1747: 6(float) FMul 1745 1746 + Store 1744(r00) 1747 + 1749: 6(float) Load 122(inF0) + 1750: 26(fvec2) Load 124(inFV2) + 1751: 26(fvec2) VectorTimesScalar 1750 1749 + Store 1748(r01) 1751 + 1753: 6(float) Load 122(inF0) + 1754: 38(fvec3) Load 125(inFV3) + 1755: 38(fvec3) VectorTimesScalar 1754 1753 + Store 1752(r02) 1755 + 1757: 26(fvec2) Load 124(inFV2) + 1758: 6(float) Load 122(inF0) + 1759: 26(fvec2) VectorTimesScalar 1757 1758 + Store 1756(r03) 1759 + 1761: 38(fvec3) Load 125(inFV3) + 1762: 6(float) Load 122(inF0) + 1763: 38(fvec3) VectorTimesScalar 1761 1762 + Store 1760(r04) 1763 + 1765: 26(fvec2) Load 124(inFV2) + 1766: 26(fvec2) Load 124(inFV2) + 1767: 6(float) Dot 1765 1766 + Store 1764(r05) 1767 + 1769: 38(fvec3) Load 125(inFV3) + 1770: 38(fvec3) Load 125(inFV3) + 1771: 6(float) Dot 1769 1770 + Store 1768(r06) 1771 + 1773: 113 Load 126(inFM2x3) + 1774: 26(fvec2) Load 124(inFV2) + 1775: 38(fvec3) MatrixTimesVector 1773 1774 + Store 1772(r07) 1775 + 1777: 115 Load 127(inFM3x2) 1778: 38(fvec3) Load 125(inFV3) - 1779: 113 Load 126(inFM2x3) - 1780: 26(fvec2) VectorTimesMatrix 1778 1779 - Store 1777(r09) 1780 - 1782: 26(fvec2) Load 124(inFV2) - 1783: 115 Load 127(inFM3x2) - 1784: 38(fvec3) VectorTimesMatrix 1782 1783 - Store 1781(r10) 1784 - 1786: 6(float) Load 122(inF0) - 1787: 113 Load 126(inFM2x3) - 1788: 113 MatrixTimesScalar 1787 1786 - Store 1785(r11) 1788 - 1790: 6(float) Load 122(inF0) - 1791: 115 Load 127(inFM3x2) - 1792: 115 MatrixTimesScalar 1791 1790 - Store 1789(r12) 1792 + 1779: 26(fvec2) MatrixTimesVector 1777 1778 + Store 1776(r08) 1779 + 1781: 38(fvec3) Load 125(inFV3) + 1782: 113 Load 126(inFM2x3) + 1783: 26(fvec2) VectorTimesMatrix 1781 1782 + Store 1780(r09) 1783 + 1785: 26(fvec2) Load 124(inFV2) + 1786: 115 Load 127(inFM3x2) + 1787: 38(fvec3) VectorTimesMatrix 1785 1786 + Store 1784(r10) 1787 + 1789: 6(float) Load 122(inF0) + 1790: 113 Load 126(inFM2x3) + 1791: 113 MatrixTimesScalar 1790 1789 + Store 1788(r11) 1791 + 1793: 6(float) Load 122(inF0) 1794: 115 Load 127(inFM3x2) - 1795: 113 Load 126(inFM2x3) - 1796: 62 MatrixTimesMatrix 1794 1795 - Store 1793(r13) 1796 - 1798: 70 Load 128(inFM3x3) - 1799: 113 Load 126(inFM2x3) - 1800: 113 MatrixTimesMatrix 1798 1799 - Store 1797(r14) 1800 - 1802: 117 Load 129(inFM3x4) - 1803: 113 Load 126(inFM2x3) - 1804: 119 MatrixTimesMatrix 1802 1803 - Store 1801(r15) 1804 - 1806: 119 Load 130(inFM2x4) - 1807: 115 Load 127(inFM3x2) - 1808: 117 MatrixTimesMatrix 1806 1807 - Store 1805(r16) 1808 + 1795: 115 MatrixTimesScalar 1794 1793 + Store 1792(r12) 1795 + 1797: 115 Load 127(inFM3x2) + 1798: 113 Load 126(inFM2x3) + 1799: 62 MatrixTimesMatrix 1797 1798 + Store 1796(r13) 1799 + 1801: 70 Load 128(inFM3x3) + 1802: 113 Load 126(inFM2x3) + 1803: 113 MatrixTimesMatrix 1801 1802 + Store 1800(r14) 1803 + 1805: 117 Load 129(inFM3x4) + 1806: 113 Load 126(inFM2x3) + 1807: 119 MatrixTimesMatrix 1805 1806 + Store 1804(r15) 1807 + 1809: 119 Load 130(inFM2x4) + 1810: 115 Load 127(inFM3x2) + 1811: 117 MatrixTimesMatrix 1809 1810 + Store 1808(r16) 1811 Return FunctionEnd 135(@main():133(PS_OUTPUT) Function None 134 136: Label - 1810(ps_output): 1809(ptr) Variable Function - 1812: 51(ptr) AccessChain 1810(ps_output) 187 - Store 1812 1811 - 1813:133(PS_OUTPUT) Load 1810(ps_output) - ReturnValue 1813 + 1813(ps_output): 1812(ptr) Variable Function + 1815: 51(ptr) AccessChain 1813(ps_output) 187 + Store 1815 1814 + 1816:133(PS_OUTPUT) Load 1813(ps_output) + ReturnValue 1816 FunctionEnd diff --git a/Test/hlsl.intrinsics.frag b/Test/hlsl.intrinsics.frag old mode 100644 new mode 100755 index ffa3c254..280e2312 --- a/Test/hlsl.intrinsics.frag +++ b/Test/hlsl.intrinsics.frag @@ -53,6 +53,7 @@ float PixelShaderFunctionS(float inF0, float inF1, float inF2, uint inU0, int in float r031 = floor(inF0); // TODO: fma(inD0, inD1, inD2); float r033 = fmod(inF0, inF1); + float r033i = fmod(inF0, 2); float r034 = frac(inF0); float r036 = fwidth(inF0); bool r037 = isinf(inF0); diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp old mode 100644 new mode 100755 index fcf3e715..d0f86e63 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -1129,6 +1129,7 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt case EOpLit: case EOpMax: case EOpMin: + case EOpMod: case EOpModf: case EOpPow: case EOpReflect: From cb563e68d2c67e1e0f09bb7760bd916a82698350 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20Fl=C3=B6jt?= Date: Thu, 14 Nov 2019 14:41:52 +0100 Subject: [PATCH 78/94] Add a test for 8- and 16-bit construction. --- .../spv.8bit-16bit-construction.frag.out | 82 +++++++++++++++++++ Test/spv.8bit-16bit-construction.frag | 22 +++++ glslang/MachineIndependent/ParseHelper.cpp | 2 +- gtests/Spv.FromFile.cpp | 2 + 4 files changed, 107 insertions(+), 1 deletion(-) create mode 100644 Test/baseResults/spv.8bit-16bit-construction.frag.out create mode 100644 Test/spv.8bit-16bit-construction.frag diff --git a/Test/baseResults/spv.8bit-16bit-construction.frag.out b/Test/baseResults/spv.8bit-16bit-construction.frag.out new file mode 100644 index 00000000..6cb9dc16 --- /dev/null +++ b/Test/baseResults/spv.8bit-16bit-construction.frag.out @@ -0,0 +1,82 @@ +spv.8bit-16bit-construction.frag +Validation failed +// Module Version 10000 +// Generated by (magic number): 80008 +// Id's are bound by 43 + + Capability Shader + Capability StorageUniformBufferBlock16 + Capability UniformAndStorageBuffer8BitAccess + Extension "SPV_KHR_16bit_storage" + Extension "SPV_KHR_8bit_storage" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginUpperLeft + Source GLSL 450 + SourceExtension "GL_EXT_shader_16bit_storage" + SourceExtension "GL_EXT_shader_8bit_storage" + Name 4 "main" + Name 11 "B" + MemberName 11(B) 0 "i8_from_i16" + MemberName 11(B) 1 "i16_from_i8" + MemberName 11(B) 2 "u8_from_u16" + MemberName 11(B) 3 "u16_from_u8" + MemberName 11(B) 4 "f16_from_i8" + Name 13 "" + MemberDecorate 11(B) 0 Offset 0 + MemberDecorate 11(B) 1 Offset 2 + MemberDecorate 11(B) 2 Offset 4 + MemberDecorate 11(B) 3 Offset 6 + MemberDecorate 11(B) 4 Offset 8 + Decorate 11(B) BufferBlock + Decorate 13 DescriptorSet 0 + Decorate 13 Binding 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 8 1 + 7: TypeInt 16 1 + 8: TypeInt 8 0 + 9: TypeInt 16 0 + 10: TypeFloat 16 + 11(B): TypeStruct 6(int8_t) 7(int16_t) 8(int8_t) 9(int16_t) 10(float16_t) + 12: TypePointer Uniform 11(B) + 13: 12(ptr) Variable Uniform + 14: TypeInt 32 1 + 15: 14(int) Constant 0 + 16: 14(int) Constant 1 + 19: TypePointer Uniform 6(int8_t) + 23: TypePointer Uniform 7(int16_t) + 25: 14(int) Constant 2 + 26: TypeInt 32 0 + 27: 26(int) Constant 1 + 30: TypePointer Uniform 8(int8_t) + 32: 14(int) Constant 3 + 35: TypePointer Uniform 9(int16_t) + 37: 14(int) Constant 4 + 39: TypeFloat 32 + 41: TypePointer Uniform 10(float16_t) + 4(main): 2 Function None 3 + 5: Label + 17: 7(int16_t) SConvert 16 + 18: 6(int8_t) SConvert 17 + 20: 19(ptr) AccessChain 13 15 + Store 20 18 + 21: 6(int8_t) SConvert 16 + 22: 7(int16_t) SConvert 21 + 24: 23(ptr) AccessChain 13 16 + Store 24 22 + 28: 9(int16_t) UConvert 27 + 29: 8(int8_t) UConvert 28 + 31: 30(ptr) AccessChain 13 25 + Store 31 29 + 33: 8(int8_t) UConvert 27 + 34: 9(int16_t) UConvert 33 + 36: 35(ptr) AccessChain 13 32 + Store 36 34 + 38: 6(int8_t) SConvert 16 + 40:10(float16_t) FConvert 38 + 42: 41(ptr) AccessChain 13 37 + Store 42 40 + Return + FunctionEnd diff --git a/Test/spv.8bit-16bit-construction.frag b/Test/spv.8bit-16bit-construction.frag new file mode 100644 index 00000000..573fa548 --- /dev/null +++ b/Test/spv.8bit-16bit-construction.frag @@ -0,0 +1,22 @@ +#version 450 core + +#extension GL_EXT_shader_8bit_storage : enable +#extension GL_EXT_shader_16bit_storage : enable + +buffer B +{ + int8_t i8_from_i16; + int16_t i16_from_i8; + uint8_t u8_from_u16; + uint16_t u16_from_u8; + float16_t f16_from_i8; +}; + +void main() +{ + i8_from_i16 = int8_t(int16_t(1)); + i16_from_i8 = int16_t(int8_t(1)); + u8_from_u16 = uint8_t(uint16_t(1)); + u16_from_u8 = uint16_t(uint8_t(1)); + f16_from_i8 = float16_t(int8_t(1)); +} diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index e31bff51..c5831302 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -2,7 +2,7 @@ // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2012-2015 LunarG, Inc. // Copyright (C) 2015-2018 Google, Inc. -// Copyright (C) 2017 ARM Limited. +// Copyright (C) 2017, 2019 ARM Limited. // // All rights reserved. // diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index ce5960c8..0e46e790 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -1,5 +1,6 @@ // // Copyright (C) 2016 Google, Inc. +// Copyright (C) 2019 ARM Limited. // // All rights reserved. // @@ -263,6 +264,7 @@ INSTANTIATE_TEST_CASE_P( "spv.8bitstorage_Error-uint.frag", "spv.8bitstorage-ubo.vert", "spv.8bitstorage-ssbo.vert", + "spv.8bit-16bit-construction.frag", "spv.accessChain.frag", "spv.aggOps.frag", "spv.always-discard.frag", From 3c0d2e5b671c667abdcf7863ab6d08a8dde7e456 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Thu, 14 Nov 2019 03:20:06 -0700 Subject: [PATCH 79/94] HLSL: Fix #1976: Don't let ENABLE_HLSL change struct/class layout. --- Test/baseResults/web.array.frag.out | 2 +- Test/baseResults/web.basic.vert.out | 2 +- Test/baseResults/web.builtins.frag.out | 2 +- Test/baseResults/web.builtins.vert.out | 2 +- Test/baseResults/web.comp.out | 2 +- Test/baseResults/web.controlFlow.frag.out | 2 +- Test/baseResults/web.operations.frag.out | 2 +- Test/baseResults/web.separate.frag.out | 2 +- Test/baseResults/web.texture.frag.out | 2 +- glslang/Include/Types.h | 32 +++++++++---------- glslang/Include/intermediate.h | 6 ++-- .../MachineIndependent/localintermediate.h | 18 ++++------- 12 files changed, 34 insertions(+), 40 deletions(-) diff --git a/Test/baseResults/web.array.frag.out b/Test/baseResults/web.array.frag.out index df70be12..61c9db99 100644 --- a/Test/baseResults/web.array.frag.out +++ b/Test/baseResults/web.array.frag.out @@ -1,6 +1,6 @@ ; SPIR-V ; Version: 1.0 -; Generator: Khronos Glslang Reference Front End; 7 +; Generator: Khronos Glslang Reference Front End; 8 ; Bound: 74 ; Schema: 0 OpCapability Shader diff --git a/Test/baseResults/web.basic.vert.out b/Test/baseResults/web.basic.vert.out index cd9805bd..46c147fa 100644 --- a/Test/baseResults/web.basic.vert.out +++ b/Test/baseResults/web.basic.vert.out @@ -1,6 +1,6 @@ ; SPIR-V ; Version: 1.0 -; Generator: Khronos Glslang Reference Front End; 7 +; Generator: Khronos Glslang Reference Front End; 8 ; Bound: 38 ; Schema: 0 OpCapability Shader diff --git a/Test/baseResults/web.builtins.frag.out b/Test/baseResults/web.builtins.frag.out index 2862dc15..ecf03047 100644 --- a/Test/baseResults/web.builtins.frag.out +++ b/Test/baseResults/web.builtins.frag.out @@ -1,6 +1,6 @@ ; SPIR-V ; Version: 1.0 -; Generator: Khronos Glslang Reference Front End; 7 +; Generator: Khronos Glslang Reference Front End; 8 ; Bound: 69 ; Schema: 0 OpCapability Shader diff --git a/Test/baseResults/web.builtins.vert.out b/Test/baseResults/web.builtins.vert.out index 9ea66726..597e7310 100644 --- a/Test/baseResults/web.builtins.vert.out +++ b/Test/baseResults/web.builtins.vert.out @@ -1,6 +1,6 @@ ; SPIR-V ; Version: 1.0 -; Generator: Khronos Glslang Reference Front End; 7 +; Generator: Khronos Glslang Reference Front End; 8 ; Bound: 33 ; Schema: 0 OpCapability Shader diff --git a/Test/baseResults/web.comp.out b/Test/baseResults/web.comp.out index 79a30729..d0a911e2 100644 --- a/Test/baseResults/web.comp.out +++ b/Test/baseResults/web.comp.out @@ -1,6 +1,6 @@ ; SPIR-V ; Version: 1.0 -; Generator: Khronos Glslang Reference Front End; 7 +; Generator: Khronos Glslang Reference Front End; 8 ; Bound: 108 ; Schema: 0 OpCapability Shader diff --git a/Test/baseResults/web.controlFlow.frag.out b/Test/baseResults/web.controlFlow.frag.out index ebfa5be6..57199898 100644 --- a/Test/baseResults/web.controlFlow.frag.out +++ b/Test/baseResults/web.controlFlow.frag.out @@ -1,6 +1,6 @@ ; SPIR-V ; Version: 1.0 -; Generator: Khronos Glslang Reference Front End; 7 +; Generator: Khronos Glslang Reference Front End; 8 ; Bound: 193 ; Schema: 0 OpCapability Shader diff --git a/Test/baseResults/web.operations.frag.out b/Test/baseResults/web.operations.frag.out index eb016246..d7e4d6e9 100644 --- a/Test/baseResults/web.operations.frag.out +++ b/Test/baseResults/web.operations.frag.out @@ -1,6 +1,6 @@ ; SPIR-V ; Version: 1.0 -; Generator: Khronos Glslang Reference Front End; 7 +; Generator: Khronos Glslang Reference Front End; 8 ; Bound: 207 ; Schema: 0 OpCapability Shader diff --git a/Test/baseResults/web.separate.frag.out b/Test/baseResults/web.separate.frag.out index e31ddca3..5a99298e 100644 --- a/Test/baseResults/web.separate.frag.out +++ b/Test/baseResults/web.separate.frag.out @@ -1,6 +1,6 @@ ; SPIR-V ; Version: 1.0 -; Generator: Khronos Glslang Reference Front End; 7 +; Generator: Khronos Glslang Reference Front End; 8 ; Bound: 99 ; Schema: 0 OpCapability Shader diff --git a/Test/baseResults/web.texture.frag.out b/Test/baseResults/web.texture.frag.out index 6fbebb4d..baad5644 100644 --- a/Test/baseResults/web.texture.frag.out +++ b/Test/baseResults/web.texture.frag.out @@ -1,6 +1,6 @@ ; SPIR-V ; Version: 1.0 -; Generator: Khronos Glslang Reference Front End; 7 +; Generator: Khronos Glslang Reference Front End; 8 ; Bound: 189 ; Schema: 0 OpCapability Shader diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index 3ed402d4..e852d152 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -80,27 +80,13 @@ struct TSampler { // misnomer now; includes images, textures without sampler, bool image : 1; // image, combined should be false bool combined : 1; // true means texture is combined with a sampler, false means texture with no sampler bool sampler : 1; // true means a pure sampler, other fields should be clear() -#ifdef ENABLE_HLSL - unsigned int vectorSize : 3; // vector return type size. - unsigned int getVectorSize() const { return vectorSize; } - void clearReturnStruct() { structReturnIndex = noReturnStruct; } - bool hasReturnStruct() const { return structReturnIndex != noReturnStruct; } - unsigned getStructReturnIndex() const { return structReturnIndex; } - static const unsigned structReturnIndexBits = 4; // number of index bits to use. - static const unsigned structReturnSlots = (1< TGraph; @@ -925,6 +916,11 @@ protected: bool localSizeNotDefault[3]; int localSizeSpecId[3]; #ifndef GLSLANG_WEB +public: + const char* const implicitThisName; + const char* const implicitCounterName; +protected: + EShSource source; // source language, known a bit later bool useVulkanMemoryModel; int invocations; int vertices; From bd69a4fb1206c3441ed56a9a058adfb6e46d55a6 Mon Sep 17 00:00:00 2001 From: Arfrever Frehtes Taifersar Arahesis Date: Mon, 18 Nov 2019 11:11:55 -0800 Subject: [PATCH 80/94] Respect CMAKE_INSTALL_LIBDIR in installed CMake files Fixes #1965 --- OGLCompilersDLL/CMakeLists.txt | 2 +- SPIRV/CMakeLists.txt | 4 ++-- StandAlone/CMakeLists.txt | 6 +++--- glslang/CMakeLists.txt | 2 +- glslang/OSDependent/Unix/CMakeLists.txt | 2 +- glslang/OSDependent/Windows/CMakeLists.txt | 2 +- gtests/CMakeLists.txt | 2 +- hlsl/CMakeLists.txt | 2 +- 8 files changed, 11 insertions(+), 11 deletions(-) diff --git a/OGLCompilersDLL/CMakeLists.txt b/OGLCompilersDLL/CMakeLists.txt index af4ab587..e0096743 100644 --- a/OGLCompilersDLL/CMakeLists.txt +++ b/OGLCompilersDLL/CMakeLists.txt @@ -11,5 +11,5 @@ endif(WIN32) if(ENABLE_GLSLANG_INSTALL) install(TARGETS OGLCompiler EXPORT OGLCompilerTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) - install(EXPORT OGLCompilerTargets DESTINATION lib/cmake) + install(EXPORT OGLCompilerTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) endif(ENABLE_GLSLANG_INSTALL) diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt index 9869bafd..c2234263 100755 --- a/SPIRV/CMakeLists.txt +++ b/SPIRV/CMakeLists.txt @@ -91,8 +91,8 @@ if(ENABLE_GLSLANG_INSTALL) ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() - install(EXPORT SPVRemapperTargets DESTINATION lib/cmake) - install(EXPORT SPIRVTargets DESTINATION lib/cmake) + install(EXPORT SPVRemapperTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) + install(EXPORT SPIRVTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) install(FILES ${HEADERS} ${SPVREMAP_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/SPIRV/) install(FILES ${HEADERS} ${SPVREMAP_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang/SPIRV/) diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt index 0878965c..d9d71d1a 100644 --- a/StandAlone/CMakeLists.txt +++ b/StandAlone/CMakeLists.txt @@ -49,12 +49,12 @@ if(ENABLE_GLSLANG_INSTALL) install(TARGETS spirv-remap EXPORT spirv-remapTargets RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) - install(EXPORT glslangValidatorTargets DESTINATION lib/cmake) - install(EXPORT spirv-remapTargets DESTINATION lib/cmake) + install(EXPORT glslangValidatorTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) + install(EXPORT spirv-remapTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) if(BUILD_SHARED_LIBS) install(TARGETS glslang-default-resource-limits EXPORT glslang-default-resource-limitsTargets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) - install(EXPORT glslang-default-resource-limitsTargets DESTINATION lib/cmake) + install(EXPORT glslang-default-resource-limitsTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) endif() endif(ENABLE_GLSLANG_INSTALL) diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt index 42df1d1e..446cabb9 100644 --- a/glslang/CMakeLists.txt +++ b/glslang/CMakeLists.txt @@ -112,7 +112,7 @@ if(ENABLE_GLSLANG_INSTALL) install(TARGETS glslang EXPORT glslangTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() - install(EXPORT glslangTargets DESTINATION lib/cmake) + install(EXPORT glslangTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) endif(ENABLE_GLSLANG_INSTALL) if(ENABLE_GLSLANG_INSTALL) diff --git a/glslang/OSDependent/Unix/CMakeLists.txt b/glslang/OSDependent/Unix/CMakeLists.txt index 91fb45a7..9994314f 100644 --- a/glslang/OSDependent/Unix/CMakeLists.txt +++ b/glslang/OSDependent/Unix/CMakeLists.txt @@ -22,5 +22,5 @@ endif() if(ENABLE_GLSLANG_INSTALL) install(TARGETS OSDependent EXPORT OSDependentTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) - install(EXPORT OSDependentTargets DESTINATION lib/cmake) + install(EXPORT OSDependentTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) endif(ENABLE_GLSLANG_INSTALL) diff --git a/glslang/OSDependent/Windows/CMakeLists.txt b/glslang/OSDependent/Windows/CMakeLists.txt index f6bd4e9d..c050ef61 100644 --- a/glslang/OSDependent/Windows/CMakeLists.txt +++ b/glslang/OSDependent/Windows/CMakeLists.txt @@ -17,5 +17,5 @@ endif(WIN32) if(ENABLE_GLSLANG_INSTALL) install(TARGETS OSDependent EXPORT OSDependentTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) - install(EXPORT OSDependentTargets DESTINATION lib/cmake) + install(EXPORT OSDependentTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) endif(ENABLE_GLSLANG_INSTALL) diff --git a/gtests/CMakeLists.txt b/gtests/CMakeLists.txt index 77d217f1..aadf9a54 100644 --- a/gtests/CMakeLists.txt +++ b/gtests/CMakeLists.txt @@ -33,7 +33,7 @@ if(BUILD_TESTING) if(ENABLE_GLSLANG_INSTALL) install(TARGETS glslangtests EXPORT glslangtestsTargets RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) - install(EXPORT glslangtestsTargets DESTINATION lib/cmake) + install(EXPORT glslangtestsTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) endif(ENABLE_GLSLANG_INSTALL) set(GLSLANG_TEST_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../Test") diff --git a/hlsl/CMakeLists.txt b/hlsl/CMakeLists.txt index 44f9d6a2..ae0d4d4e 100644 --- a/hlsl/CMakeLists.txt +++ b/hlsl/CMakeLists.txt @@ -41,5 +41,5 @@ if(ENABLE_GLSLANG_INSTALL) install(TARGETS HLSL EXPORT HLSLTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() - install(EXPORT HLSLTargets DESTINATION lib/cmake) + install(EXPORT HLSLTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) endif(ENABLE_GLSLANG_INSTALL) From 04567eb2320367f35193c7662cd1b83fa26ea9c6 Mon Sep 17 00:00:00 2001 From: Dan Sinclair Date: Thu, 21 Nov 2019 10:33:32 -0500 Subject: [PATCH 81/94] Check for ENABLE_SPVREMAPPER flag in CMakeList files. There is a flag to disable the SPVRemapper during the GLSLang build. That flag is check in some, but not all spots so if you try to build with SPVRemapper disabled you get CMake errors and compile errors. This CL fixs up the build so building with -DENABLE_SPVREMAPPER=0 will complete correclty. --- SPIRV/CMakeLists.txt | 7 +++++-- StandAlone/CMakeLists.txt | 31 +++++++++++++++++++------------ gtests/CMakeLists.txt | 15 +++++++++++---- 3 files changed, 35 insertions(+), 18 deletions(-) diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt index 9869bafd..37471c8b 100755 --- a/SPIRV/CMakeLists.txt +++ b/SPIRV/CMakeLists.txt @@ -36,7 +36,7 @@ set(SPVREMAP_HEADERS add_library(SPIRV ${LIB_TYPE} ${SOURCES} ${HEADERS}) set_property(TARGET SPIRV PROPERTY FOLDER glslang) set_property(TARGET SPIRV PROPERTY POSITION_INDEPENDENT_CODE ON) -target_include_directories(SPIRV PUBLIC +target_include_directories(SPIRV PUBLIC $ $) @@ -91,7 +91,10 @@ if(ENABLE_GLSLANG_INSTALL) ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() - install(EXPORT SPVRemapperTargets DESTINATION lib/cmake) + if (ENABLE_SPVREMAPPER) + install(EXPORT SPVRemapperTargets DESTINATION lib/cmake) + endif() + install(EXPORT SPIRVTargets DESTINATION lib/cmake) install(FILES ${HEADERS} ${SPVREMAP_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/SPIRV/) diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt index 0878965c..e10acd00 100644 --- a/StandAlone/CMakeLists.txt +++ b/StandAlone/CMakeLists.txt @@ -9,21 +9,20 @@ target_include_directories(glslang-default-resource-limits set(SOURCES StandAlone.cpp DirStackFileIncluder.h) -set(REMAPPER_SOURCES spirv-remap.cpp) add_executable(glslangValidator ${SOURCES}) -add_executable(spirv-remap ${REMAPPER_SOURCES}) set_property(TARGET glslangValidator PROPERTY FOLDER tools) -set_property(TARGET spirv-remap PROPERTY FOLDER tools) glslang_set_link_args(glslangValidator) -glslang_set_link_args(spirv-remap) set(LIBRARIES glslang SPIRV - SPVRemapper glslang-default-resource-limits) +if(ENABLE_SPVREMAPPER) + set(LIBRARIES ${LIBRARIES} SPVRemapper) +endif() + if(WIN32) set(LIBRARIES ${LIBRARIES} psapi) elseif(UNIX) @@ -33,11 +32,18 @@ elseif(UNIX) endif(WIN32) target_link_libraries(glslangValidator ${LIBRARIES}) -target_link_libraries(spirv-remap ${LIBRARIES}) -target_include_directories(glslangValidator PUBLIC +target_include_directories(glslangValidator PUBLIC $ $) +if(ENABLE_SPVREMAPPER) + set(REMAPPER_SOURCES spirv-remap.cpp) + add_executable(spirv-remap ${REMAPPER_SOURCES}) + set_property(TARGET spirv-remap PROPERTY FOLDER tools) + glslang_set_link_args(spirv-remap) + target_link_libraries(spirv-remap ${LIBRARIES}) +endif() + if(WIN32) source_group("Source" FILES ${SOURCES}) endif(WIN32) @@ -45,13 +51,14 @@ endif(WIN32) if(ENABLE_GLSLANG_INSTALL) install(TARGETS glslangValidator EXPORT glslangValidatorTargets RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + install(EXPORT glslangValidatorTargets DESTINATION lib/cmake) - install(TARGETS spirv-remap EXPORT spirv-remapTargets + if(ENABLE_SPVREMAPPER) + install(TARGETS spirv-remap EXPORT spirv-remapTargets RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) - - install(EXPORT glslangValidatorTargets DESTINATION lib/cmake) - install(EXPORT spirv-remapTargets DESTINATION lib/cmake) - + install(EXPORT spirv-remapTargets DESTINATION lib/cmake) + endif() + if(BUILD_SHARED_LIBS) install(TARGETS glslang-default-resource-limits EXPORT glslang-default-resource-limitsTargets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) diff --git a/gtests/CMakeLists.txt b/gtests/CMakeLists.txt index 77d217f1..af220bb4 100644 --- a/gtests/CMakeLists.txt +++ b/gtests/CMakeLists.txt @@ -20,10 +20,12 @@ if(BUILD_TESTING) ${CMAKE_CURRENT_SOURCE_DIR}/Link.FromFile.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Link.FromFile.Vk.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Pp.FromFile.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/Spv.FromFile.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/Spv.FromFile.cpp) - # -- Remapper tests - ${CMAKE_CURRENT_SOURCE_DIR}/Remap.FromFile.cpp) + if(ENABLE_SPVREMAPPER) + set(TEST_SOURCES ${TEST_SOURCES} + ${CMAKE_CURRENT_SOURCE_DIR}/Remap.FromFile.cpp) + endif() glslang_pch(TEST_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/pch.cpp) @@ -49,8 +51,13 @@ if(BUILD_TESTING) ${gtest_SOURCE_DIR}/include) set(LIBRARIES - SPVRemapper glslang OSDependent OGLCompiler glslang + glslang OSDependent OGLCompiler glslang SPIRV glslang-default-resource-limits) + + if(ENABLE_SPVREMAPPER) + set(LIBRARIES ${LIBRARIES} SPVRemapper) + endif() + if(ENABLE_HLSL) set(LIBRARIES ${LIBRARIES} HLSL) endif(ENABLE_HLSL) From 8b5853d4f91a235470be66a73e555b5be7e82dbb Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Fri, 22 Nov 2019 11:07:43 -0700 Subject: [PATCH 82/94] Fix #1987: Use large enough built-in buffer to hold vec4 of maxint-64. --- glslang/MachineIndependent/Initialize.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 6bf847ba..ef50af20 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -6331,7 +6331,7 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf //============================================================================ TString& s = commonBuiltins; - const int maxSize = 80; + const int maxSize = 200; char builtInConstant[maxSize]; // From 38b4db48f98c4e3a9cc405de3a76547b857e1c37 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Sat, 23 Nov 2019 01:29:02 -0700 Subject: [PATCH 83/94] Fix #1983: __ is okay starting with ES 300, rather than 310. --- Test/100.frag | 3 +++ Test/baseResults/100.frag.out | 6 +++++- Test/baseResults/300BuiltIns.frag.out | 6 +++--- glslang/MachineIndependent/ParseHelper.cpp | 14 +++++++------- 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/Test/100.frag b/Test/100.frag index 4f0c69b5..0508ea99 100644 --- a/Test/100.frag +++ b/Test/100.frag @@ -219,6 +219,9 @@ int init1 = gl_FrontFacing ? 1 : 2; // ERROR, non-const initializer int init2 = gl_FrontFacing ? 1 : 2; +#define A__B // error +int a__b; // error + #pragma STDGL invariant(all) #line 3000 diff --git a/Test/baseResults/100.frag.out b/Test/baseResults/100.frag.out index 5e702e87..8dd31e32 100644 --- a/Test/baseResults/100.frag.out +++ b/Test/baseResults/100.frag.out @@ -83,9 +83,11 @@ ERROR: 0:193: '.length' : not supported for this version or the enabled extensio ERROR: 0:194: '.' : cannot apply to an array: method ERROR: 0:194: 'a' : can't use function syntax on variable ERROR: 0:214: 'non-constant global initializer (needs GL_EXT_shader_non_constant_global_initializers)' : not supported for this version or the enabled extensions +ERROR: 0:222: '#define' : names containing consecutive underscores are reserved, and an error if version < 300: A__B +ERROR: 0:223: 'a__b' : identifiers containing consecutive underscores ("__") are reserved, and an error if version < 300 ERROR: 0:3000: '#error' : line of this error should be 3000 ERROR: 0:3002: '' : syntax error, unexpected IDENTIFIER, expecting LEFT_BRACE or COMMA or SEMICOLON -ERROR: 77 compilation errors. No code generated. +ERROR: 79 compilation errors. No code generated. Shader version: 100 @@ -421,6 +423,7 @@ ERROR: node is still EOpNull! 0:? 5.000000 0:? 'init1' ( global mediump int) 0:? 'init2' ( global mediump int) +0:? 'a__b' ( global mediump int) Linked fragment stage: @@ -573,4 +576,5 @@ ERROR: node is still EOpNull! 0:? 5.000000 0:? 'init1' ( global mediump int) 0:? 'init2' ( global mediump int) +0:? 'a__b' ( global mediump int) diff --git a/Test/baseResults/300BuiltIns.frag.out b/Test/baseResults/300BuiltIns.frag.out index 84d4d086..54ecfa5f 100644 --- a/Test/baseResults/300BuiltIns.frag.out +++ b/Test/baseResults/300BuiltIns.frag.out @@ -1,9 +1,9 @@ 300BuiltIns.frag ERROR: 0:6: 'float' : type requires declaration of default precision qualifier ERROR: 0:70: 'noise2' : no matching overloaded function found -ERROR: 0:72: 't__' : identifiers containing consecutive underscores ("__") are reserved, and an error if version <= 300 -ERROR: 0:75: '#define' : names containing consecutive underscores are reserved, and an error if version <= 300: __D -ERROR: 4 compilation errors. No code generated. +WARNING: 0:72: 't__' : identifiers containing consecutive underscores ("__") are reserved +WARNING: 0:75: '#define' : names containing consecutive underscores are reserved: __D +ERROR: 2 compilation errors. No code generated. Shader version: 300 diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index c5831302..9c46d57c 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -2669,14 +2669,14 @@ void TParseContext::reservedErrorCheck(const TSourceLoc& loc, const TString& ide if (builtInName(identifier)) error(loc, "identifiers starting with \"gl_\" are reserved", identifier.c_str(), ""); - // "__" are not supposed to be an error. ES 310 (and desktop) added the clarification: + // "__" are not supposed to be an error. ES 300 (and desktop) added the clarification: // "In addition, all identifiers containing two consecutive underscores (__) are // reserved; using such a name does not itself result in an error, but may result // in undefined behavior." // however, before that, ES tests required an error. if (identifier.find("__") != TString::npos) { - if (isEsProfile() && version <= 300) - error(loc, "identifiers containing consecutive underscores (\"__\") are reserved, and an error if version <= 300", identifier.c_str(), ""); + if (isEsProfile() && version < 300) + error(loc, "identifiers containing consecutive underscores (\"__\") are reserved, and an error if version < 300", identifier.c_str(), ""); else warn(loc, "identifiers containing consecutive underscores (\"__\") are reserved", identifier.c_str(), ""); } @@ -2688,7 +2688,7 @@ void TParseContext::reservedErrorCheck(const TSourceLoc& loc, const TString& ide // void TParseContext::reservedPpErrorCheck(const TSourceLoc& loc, const char* identifier, const char* op) { - // "__" are not supposed to be an error. ES 310 (and desktop) added the clarification: + // "__" are not supposed to be an error. ES 300 (and desktop) added the clarification: // "All macro names containing two consecutive underscores ( __ ) are reserved; // defining such a name does not itself result in an error, but may result in // undefined behavior. All macro names prefixed with "GL_" ("GL" followed by a @@ -2706,8 +2706,8 @@ void TParseContext::reservedPpErrorCheck(const TSourceLoc& loc, const char* iden strcmp(identifier, "__VERSION__") == 0)) ppError(loc, "predefined names can't be (un)defined:", op, identifier); else { - if (isEsProfile() && version <= 300) - ppError(loc, "names containing consecutive underscores are reserved, and an error if version <= 300:", op, identifier); + if (isEsProfile() && version < 300) + ppError(loc, "names containing consecutive underscores are reserved, and an error if version < 300:", op, identifier); else ppWarn(loc, "names containing consecutive underscores are reserved:", op, identifier); } @@ -6922,7 +6922,7 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T // This avoids requesting a matrix of a new type that is going to be discarded anyway. // TODO: This could be generalized to more type combinations, but that would require // more extensive testing and full algorithm rework. For now, the need to do two changes makes - // the recursive call work, and avoids the most aggregious case of creating integer matrices. + // the recursive call work, and avoids the most egregious case of creating integer matrices. if (node->getType().isMatrix() && (type.isScalar() || type.isVector()) && type.isFloatingDomain() != node->getType().isFloatingDomain()) { TType transitionType(node->getBasicType(), glslang::EvqTemporary, type.getVectorSize(), 0, 0, node->isVector()); From dd9e570db600308a5bbbe40146fa6f7d02536355 Mon Sep 17 00:00:00 2001 From: Malcolm Bechard Date: Wed, 27 Nov 2019 23:37:16 -0500 Subject: [PATCH 84/94] Fix #1981 Copy over incoming units localSize if it's set, and this->localSize is not set Also fix overwritting localSizeSpecId if it's already been set. --- glslang/MachineIndependent/linkValidate.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index 921eb84e..fe51ec93 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -192,12 +192,14 @@ void TIntermediate::mergeModes(TInfoSink& infoSink, TIntermediate& unit) MERGE_TRUE(pointMode); for (int i = 0; i < 3; ++i) { - if (localSize[i] > 1) + if (!localSizeNotDefault[i] && unit.localSizeNotDefault[i]) { localSize[i] = unit.localSize[i]; + localSizeNotDefault[i] = true; + } else if (localSize[i] != unit.localSize[i]) error(infoSink, "Contradictory local size"); - if (localSizeSpecId[i] != TQualifier::layoutNotSet) + if (localSizeSpecId[i] == TQualifier::layoutNotSet) localSizeSpecId[i] = unit.localSizeSpecId[i]; else if (localSizeSpecId[i] != unit.localSizeSpecId[i]) error(infoSink, "Contradictory local size specialization ids"); From 9216e8cf1686ffbf993751c2f4105dc0226bc9ea Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Mon, 2 Dec 2019 10:53:46 -0800 Subject: [PATCH 85/94] Update README.md to include other test requirements Knowing this in advance would have saved me some time. --- README.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f1f6a2bb..67801e47 100755 --- a/README.md +++ b/README.md @@ -103,8 +103,8 @@ cd ../.. ``` If you wish to assure that SPIR-V generated from HLSL is legal for Vulkan, -or wish to invoke -Os to reduce SPIR-V size from HLSL or GLSL, install -spirv-tools with this: +wish to invoke -Os to reduce SPIR-V size from HLSL or GLSL, or wish to run the +integrated test suite, install spirv-tools with this: ```bash ./update_glslang_sources.py @@ -236,6 +236,11 @@ Running `runtests` script-backed tests: cd $SOURCE_DIR/Test && ./runtests ``` +If some tests fail with validation errors, there may be a mismatch between the +version of `spirv-val` on the system and the version of glslang. In this +case, it is necessary to run `update_glslang_sources.py`. See "Check-Out +External Projects" above for more details. + ### Contributing tests Test results should always be included with a pull request that modifies From e0da415dff09af9812722859d8be3088120eaebb Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Thu, 20 Sep 2018 00:58:03 -0700 Subject: [PATCH 86/94] INTEL_shader_integer_functions2: Add basic extension tracking --- glslang/MachineIndependent/Versions.cpp | 4 ++++ glslang/MachineIndependent/Versions.h | 2 ++ 2 files changed, 6 insertions(+) diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index 518ba6cd..23cc5302 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -236,6 +236,8 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_AMD_shader_fragment_mask] = EBhDisable; extensionBehavior[E_GL_AMD_gpu_shader_half_float_fetch] = EBhDisable; + extensionBehavior[E_GL_INTEL_shader_integer_functions2] = EBhDisable; + extensionBehavior[E_GL_NV_sample_mask_override_coverage] = EBhDisable; extensionBehavior[E_SPV_NV_geometry_shader_passthrough] = EBhDisable; extensionBehavior[E_GL_NV_viewport_array2] = EBhDisable; @@ -434,6 +436,8 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_AMD_shader_fragment_mask 1\n" "#define GL_AMD_gpu_shader_half_float_fetch 1\n" + "#define GL_INTEL_shader_integer_functions2 1\n" + "#define GL_NV_sample_mask_override_coverage 1\n" "#define GL_NV_geometry_shader_passthrough 1\n" "#define GL_NV_viewport_array2 1\n" diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index 84fafd77..5048ad7d 100644 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -206,6 +206,8 @@ const char* const E_GL_AMD_shader_image_load_store_lod = "GL_AMD_shader const char* const E_GL_AMD_shader_fragment_mask = "GL_AMD_shader_fragment_mask"; const char* const E_GL_AMD_gpu_shader_half_float_fetch = "GL_AMD_gpu_shader_half_float_fetch"; +const char* const E_GL_INTEL_shader_integer_functions2 = "GL_INTEL_shader_integer_functions2"; + const char* const E_GL_NV_sample_mask_override_coverage = "GL_NV_sample_mask_override_coverage"; const char* const E_SPV_NV_geometry_shader_passthrough = "GL_NV_geometry_shader_passthrough"; const char* const E_GL_NV_viewport_array2 = "GL_NV_viewport_array2"; From fbcdcac254a47e5fed5a6d063fba9a9e325f2fcb Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Thu, 20 Sep 2018 01:22:19 -0700 Subject: [PATCH 87/94] INTEL_shader_integer_functions2: Add compiler front-end support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The changes to glslang/glslang/MachineIndependent/ParseHelper.cpp exist purely to prevent even more instances of "warning: enumeration value ‘EOp...’ not handled in switch" v2: Remove 8-bit types. Overzealous copy-and-paste led to adding support for a bunch of types that the extension doesn't actually enable. v3: Update expected test results file. Just changing an expected results file to make a test pass seems sketchy to me, but I'm not sure what else to do. v4: Add missing entry for EOpAbsDifference in TOutputTraverser::visitBinary. Noticed by JohnK. --- Test/baseResults/spv.specConstant.vert.out | 6 +- glslang/Include/intermediate.h | 9 + glslang/MachineIndependent/Initialize.cpp | 193 +++++++++++++++++++++ glslang/MachineIndependent/intermOut.cpp | 10 ++ 4 files changed, 215 insertions(+), 3 deletions(-) diff --git a/Test/baseResults/spv.specConstant.vert.out b/Test/baseResults/spv.specConstant.vert.out index 1be39501..3b04e7cc 100644 --- a/Test/baseResults/spv.specConstant.vert.out +++ b/Test/baseResults/spv.specConstant.vert.out @@ -11,7 +11,7 @@ spv.specConstant.vert Source GLSL 400 Name 4 "main" Name 9 "arraySize" - Name 14 "foo(vf4[s4393];" + Name 14 "foo(vf4[s4529];" Name 13 "p" Name 17 "builtin_spec_constant(" Name 20 "color" @@ -102,10 +102,10 @@ spv.specConstant.vert Store 20(color) 46 48: 10 Load 22(ucol) Store 47(param) 48 - 49: 2 FunctionCall 14(foo(vf4[s4393];) 47(param) + 49: 2 FunctionCall 14(foo(vf4[s4529];) 47(param) Return FunctionEnd -14(foo(vf4[s4393];): 2 Function None 12 +14(foo(vf4[s4529];): 2 Function None 12 13(p): 11(ptr) FunctionParameter 15: Label 54: 24(ptr) AccessChain 53(dupUcol) 23 diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index f82115be..29d58ca6 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -899,6 +899,15 @@ enum TOperator { EOpFindLSB, EOpFindMSB, + EOpCountLeadingZeros, + EOpCountTrailingZeros, + EOpAbsDifference, + EOpAddSaturate, + EOpSubSaturate, + EOpAverage, + EOpAverageRounded, + EOpMul32x16, + EOpTraceNV, EOpReportIntersectionNV, EOpIgnoreIntersectionNV, diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index ef50af20..80adc937 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -2854,6 +2854,181 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } + if ((profile != EEsProfile && version >= 130) || + (profile == EEsProfile && version >= 300)) { + commonBuiltins.append( + "uint countLeadingZeros(uint);" + "uvec2 countLeadingZeros(uvec2);" + "uvec3 countLeadingZeros(uvec3);" + "uvec4 countLeadingZeros(uvec4);" + + "uint countTrailingZeros(uint);" + "uvec2 countTrailingZeros(uvec2);" + "uvec3 countTrailingZeros(uvec3);" + "uvec4 countTrailingZeros(uvec4);" + + "uint absoluteDifference(int, int);" + "uvec2 absoluteDifference(ivec2, ivec2);" + "uvec3 absoluteDifference(ivec3, ivec3);" + "uvec4 absoluteDifference(ivec4, ivec4);" + + "uint16_t absoluteDifference(int16_t, int16_t);" + "u16vec2 absoluteDifference(i16vec2, i16vec2);" + "u16vec3 absoluteDifference(i16vec3, i16vec3);" + "u16vec4 absoluteDifference(i16vec4, i16vec4);" + + "uint64_t absoluteDifference(int64_t, int64_t);" + "u64vec2 absoluteDifference(i64vec2, i64vec2);" + "u64vec3 absoluteDifference(i64vec3, i64vec3);" + "u64vec4 absoluteDifference(i64vec4, i64vec4);" + + "uint absoluteDifference(uint, uint);" + "uvec2 absoluteDifference(uvec2, uvec2);" + "uvec3 absoluteDifference(uvec3, uvec3);" + "uvec4 absoluteDifference(uvec4, uvec4);" + + "uint16_t absoluteDifference(uint16_t, uint16_t);" + "u16vec2 absoluteDifference(u16vec2, u16vec2);" + "u16vec3 absoluteDifference(u16vec3, u16vec3);" + "u16vec4 absoluteDifference(u16vec4, u16vec4);" + + "uint64_t absoluteDifference(uint64_t, uint64_t);" + "u64vec2 absoluteDifference(u64vec2, u64vec2);" + "u64vec3 absoluteDifference(u64vec3, u64vec3);" + "u64vec4 absoluteDifference(u64vec4, u64vec4);" + + "int addSaturate(int, int);" + "ivec2 addSaturate(ivec2, ivec2);" + "ivec3 addSaturate(ivec3, ivec3);" + "ivec4 addSaturate(ivec4, ivec4);" + + "int16_t addSaturate(int16_t, int16_t);" + "i16vec2 addSaturate(i16vec2, i16vec2);" + "i16vec3 addSaturate(i16vec3, i16vec3);" + "i16vec4 addSaturate(i16vec4, i16vec4);" + + "int64_t addSaturate(int64_t, int64_t);" + "i64vec2 addSaturate(i64vec2, i64vec2);" + "i64vec3 addSaturate(i64vec3, i64vec3);" + "i64vec4 addSaturate(i64vec4, i64vec4);" + + "uint addSaturate(uint, uint);" + "uvec2 addSaturate(uvec2, uvec2);" + "uvec3 addSaturate(uvec3, uvec3);" + "uvec4 addSaturate(uvec4, uvec4);" + + "uint16_t addSaturate(uint16_t, uint16_t);" + "u16vec2 addSaturate(u16vec2, u16vec2);" + "u16vec3 addSaturate(u16vec3, u16vec3);" + "u16vec4 addSaturate(u16vec4, u16vec4);" + + "uint64_t addSaturate(uint64_t, uint64_t);" + "u64vec2 addSaturate(u64vec2, u64vec2);" + "u64vec3 addSaturate(u64vec3, u64vec3);" + "u64vec4 addSaturate(u64vec4, u64vec4);" + + "int subtractSaturate(int, int);" + "ivec2 subtractSaturate(ivec2, ivec2);" + "ivec3 subtractSaturate(ivec3, ivec3);" + "ivec4 subtractSaturate(ivec4, ivec4);" + + "int16_t subtractSaturate(int16_t, int16_t);" + "i16vec2 subtractSaturate(i16vec2, i16vec2);" + "i16vec3 subtractSaturate(i16vec3, i16vec3);" + "i16vec4 subtractSaturate(i16vec4, i16vec4);" + + "int64_t subtractSaturate(int64_t, int64_t);" + "i64vec2 subtractSaturate(i64vec2, i64vec2);" + "i64vec3 subtractSaturate(i64vec3, i64vec3);" + "i64vec4 subtractSaturate(i64vec4, i64vec4);" + + "uint subtractSaturate(uint, uint);" + "uvec2 subtractSaturate(uvec2, uvec2);" + "uvec3 subtractSaturate(uvec3, uvec3);" + "uvec4 subtractSaturate(uvec4, uvec4);" + + "uint16_t subtractSaturate(uint16_t, uint16_t);" + "u16vec2 subtractSaturate(u16vec2, u16vec2);" + "u16vec3 subtractSaturate(u16vec3, u16vec3);" + "u16vec4 subtractSaturate(u16vec4, u16vec4);" + + "uint64_t subtractSaturate(uint64_t, uint64_t);" + "u64vec2 subtractSaturate(u64vec2, u64vec2);" + "u64vec3 subtractSaturate(u64vec3, u64vec3);" + "u64vec4 subtractSaturate(u64vec4, u64vec4);" + + "int average(int, int);" + "ivec2 average(ivec2, ivec2);" + "ivec3 average(ivec3, ivec3);" + "ivec4 average(ivec4, ivec4);" + + "int16_t average(int16_t, int16_t);" + "i16vec2 average(i16vec2, i16vec2);" + "i16vec3 average(i16vec3, i16vec3);" + "i16vec4 average(i16vec4, i16vec4);" + + "int64_t average(int64_t, int64_t);" + "i64vec2 average(i64vec2, i64vec2);" + "i64vec3 average(i64vec3, i64vec3);" + "i64vec4 average(i64vec4, i64vec4);" + + "uint average(uint, uint);" + "uvec2 average(uvec2, uvec2);" + "uvec3 average(uvec3, uvec3);" + "uvec4 average(uvec4, uvec4);" + + "uint16_t average(uint16_t, uint16_t);" + "u16vec2 average(u16vec2, u16vec2);" + "u16vec3 average(u16vec3, u16vec3);" + "u16vec4 average(u16vec4, u16vec4);" + + "uint64_t average(uint64_t, uint64_t);" + "u64vec2 average(u64vec2, u64vec2);" + "u64vec3 average(u64vec3, u64vec3);" + "u64vec4 average(u64vec4, u64vec4);" + + "int averageRounded(int, int);" + "ivec2 averageRounded(ivec2, ivec2);" + "ivec3 averageRounded(ivec3, ivec3);" + "ivec4 averageRounded(ivec4, ivec4);" + + "int16_t averageRounded(int16_t, int16_t);" + "i16vec2 averageRounded(i16vec2, i16vec2);" + "i16vec3 averageRounded(i16vec3, i16vec3);" + "i16vec4 averageRounded(i16vec4, i16vec4);" + + "int64_t averageRounded(int64_t, int64_t);" + "i64vec2 averageRounded(i64vec2, i64vec2);" + "i64vec3 averageRounded(i64vec3, i64vec3);" + "i64vec4 averageRounded(i64vec4, i64vec4);" + + "uint averageRounded(uint, uint);" + "uvec2 averageRounded(uvec2, uvec2);" + "uvec3 averageRounded(uvec3, uvec3);" + "uvec4 averageRounded(uvec4, uvec4);" + + "uint16_t averageRounded(uint16_t, uint16_t);" + "u16vec2 averageRounded(u16vec2, u16vec2);" + "u16vec3 averageRounded(u16vec3, u16vec3);" + "u16vec4 averageRounded(u16vec4, u16vec4);" + + "uint64_t averageRounded(uint64_t, uint64_t);" + "u64vec2 averageRounded(u64vec2, u64vec2);" + "u64vec3 averageRounded(u64vec3, u64vec3);" + "u64vec4 averageRounded(u64vec4, u64vec4);" + + "int multiply32x16(int, int);" + "ivec2 multiply32x16(ivec2, ivec2);" + "ivec3 multiply32x16(ivec3, ivec3);" + "ivec4 multiply32x16(ivec4, ivec4);" + + "uint multiply32x16(uint, uint);" + "uvec2 multiply32x16(uvec2, uvec2);" + "uvec3 multiply32x16(uvec3, uvec3);" + "uvec4 multiply32x16(uvec4, uvec4);" + "\n"); + } + if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { commonBuiltins.append( @@ -6974,6 +7149,15 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("fragmentFetchAMD", 1, &E_GL_AMD_shader_fragment_mask); } + symbolTable.setFunctionExtensions("countLeadingZeros", 1, &E_GL_INTEL_shader_integer_functions2); + symbolTable.setFunctionExtensions("countTrailingZeros", 1, &E_GL_INTEL_shader_integer_functions2); + symbolTable.setFunctionExtensions("absoluteDifference", 1, &E_GL_INTEL_shader_integer_functions2); + symbolTable.setFunctionExtensions("addSaturate", 1, &E_GL_INTEL_shader_integer_functions2); + symbolTable.setFunctionExtensions("subtractSaturate", 1, &E_GL_INTEL_shader_integer_functions2); + symbolTable.setFunctionExtensions("average", 1, &E_GL_INTEL_shader_integer_functions2); + symbolTable.setFunctionExtensions("averageRounded", 1, &E_GL_INTEL_shader_integer_functions2); + symbolTable.setFunctionExtensions("multiply32x16", 1, &E_GL_INTEL_shader_integer_functions2); + symbolTable.setFunctionExtensions("textureFootprintNV", 1, &E_GL_NV_shader_texture_footprint); symbolTable.setFunctionExtensions("textureFootprintClampNV", 1, &E_GL_NV_shader_texture_footprint); symbolTable.setFunctionExtensions("textureFootprintLodNV", 1, &E_GL_NV_shader_texture_footprint); @@ -8217,6 +8401,15 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("helperInvocationEXT", EOpIsHelperInvocation); + symbolTable.relateToOperator("countLeadingZeros", EOpCountLeadingZeros); + symbolTable.relateToOperator("countTrailingZeros", EOpCountTrailingZeros); + symbolTable.relateToOperator("absoluteDifference", EOpAbsDifference); + symbolTable.relateToOperator("addSaturate", EOpAddSaturate); + symbolTable.relateToOperator("subtractSaturate", EOpSubSaturate); + symbolTable.relateToOperator("average", EOpAverage); + symbolTable.relateToOperator("averageRounded", EOpAverageRounded); + symbolTable.relateToOperator("multiply32x16", EOpMul32x16); + if (PureOperatorBuiltins) { symbolTable.relateToOperator("imageSize", EOpImageQuerySize); symbolTable.relateToOperator("imageSamples", EOpImageQuerySamples); diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp index fbfede07..3a93aeda 100644 --- a/glslang/MachineIndependent/intermOut.cpp +++ b/glslang/MachineIndependent/intermOut.cpp @@ -213,6 +213,13 @@ bool TOutputTraverser::visitBinary(TVisit /* visit */, TIntermBinary* node) case EOpLogicalXor: out.debug << "logical-xor"; break; case EOpLogicalAnd: out.debug << "logical-and"; break; + case EOpAbsDifference: out.debug << "absoluteDifference"; break; + case EOpAddSaturate: out.debug << "addSaturate"; break; + case EOpSubSaturate: out.debug << "subtractSaturate"; break; + case EOpAverage: out.debug << "average"; break; + case EOpAverageRounded: out.debug << "averageRounded"; break; + case EOpMul32x16: out.debug << "multiply32x16"; break; + default: out.debug << ""; } @@ -557,6 +564,9 @@ bool TOutputTraverser::visitUnary(TVisit /* visit */, TIntermUnary* node) case EOpFindLSB: out.debug << "findLSB"; break; case EOpFindMSB: out.debug << "findMSB"; break; + case EOpCountLeadingZeros: out.debug << "countLeadingZeros"; break; + case EOpCountTrailingZeros: out.debug << "countTrailingZeros"; break; + case EOpNoise: out.debug << "noise"; break; case EOpBallot: out.debug << "ballot"; break; From b3bd402c7cd766e7b2d21a1b143e7e7d3f8f5713 Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Mon, 21 Jan 2019 08:57:25 -0800 Subject: [PATCH 88/94] INTEL_shader_integer_functions2: Add SPIR-V generation v2: Move addCapability and addExtension extension calls from TGlslangToSpvTraverser::createBinaryOperation to TGlslangToSpvTraverser::visitAggregate. Suggested by JohnK. --- SPIRV/GlslangToSpv.cpp | 47 ++++++++++++++++++++++++++++++++++++++++++ SPIRV/doc.cpp | 2 ++ 2 files changed, 49 insertions(+) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index ad16396f..745dd7f2 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -2608,6 +2608,17 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt atomic = true; break; + case glslang::EOpAbsDifference: + case glslang::EOpAddSaturate: + case glslang::EOpSubSaturate: + case glslang::EOpAverage: + case glslang::EOpAverageRounded: + case glslang::EOpMul32x16: + builder.addCapability(spv::CapabilityIntegerFunctions2INTEL); + builder.addExtension("SPV_INTEL_shader_integer_functions2"); + binOp = node->getOp(); + break; + case glslang::EOpIgnoreIntersectionNV: case glslang::EOpTerminateRayNV: case glslang::EOpTraceNV: @@ -5231,6 +5242,30 @@ spv::Id TGlslangToSpvTraverser::createBinaryOperation(glslang::TOperator op, OpD binOp = spv::OpLogicalNotEqual; break; + case glslang::EOpAbsDifference: + binOp = isUnsigned ? spv::OpAbsUSubINTEL : spv::OpAbsISubINTEL; + break; + + case glslang::EOpAddSaturate: + binOp = isUnsigned ? spv::OpUAddSatINTEL : spv::OpIAddSatINTEL; + break; + + case glslang::EOpSubSaturate: + binOp = isUnsigned ? spv::OpUSubSatINTEL : spv::OpISubSatINTEL; + break; + + case glslang::EOpAverage: + binOp = isUnsigned ? spv::OpUAverageINTEL : spv::OpIAverageINTEL; + break; + + case glslang::EOpAverageRounded: + binOp = isUnsigned ? spv::OpUAverageRoundedINTEL : spv::OpIAverageRoundedINTEL; + break; + + case glslang::EOpMul32x16: + binOp = isUnsigned ? spv::OpUMul32x16INTEL : spv::OpIMul32x16INTEL; + break; + case glslang::EOpLessThan: case glslang::EOpGreaterThan: case glslang::EOpLessThanEqual: @@ -5745,6 +5780,18 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, OpDe libCall = spv::GLSLstd450FindSMsb; break; + case glslang::EOpCountLeadingZeros: + builder.addCapability(spv::CapabilityIntegerFunctions2INTEL); + builder.addExtension("SPV_INTEL_shader_integer_functions2"); + unaryOp = spv::OpUCountLeadingZerosINTEL; + break; + + case glslang::EOpCountTrailingZeros: + builder.addCapability(spv::CapabilityIntegerFunctions2INTEL); + builder.addExtension("SPV_INTEL_shader_integer_functions2"); + unaryOp = spv::OpUCountTrailingZerosINTEL; + break; + case glslang::EOpBallot: case glslang::EOpReadFirstInvocation: case glslang::EOpAnyInvocation: diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index b0bcdfbe..bee5c797 100644 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -931,6 +931,8 @@ const char* CapabilityString(int info) case CapabilityDemoteToHelperInvocationEXT: return "DemoteToHelperInvocationEXT"; case CapabilityShaderClockKHR: return "ShaderClockKHR"; + case CapabilityIntegerFunctions2INTEL: return "CapabilityIntegerFunctions2INTEL"; + default: return "Bad"; } } From 24b3e8384e93f3e73b6aa14ea00a30574112f9ba Mon Sep 17 00:00:00 2001 From: Reid Kleckner Date: Wed, 4 Dec 2019 14:09:03 -0800 Subject: [PATCH 89/94] Remove glslang::pool_allocator::setAllocator TPoolAllocator is not copy assignable, so this setter could never have been used. After a recent change (878a24ee2), new versions of Clang reject this code outright. --- glslang/Include/PoolAlloc.h | 1 - 1 file changed, 1 deletion(-) diff --git a/glslang/Include/PoolAlloc.h b/glslang/Include/PoolAlloc.h index 0e237a6a..b8eccb88 100644 --- a/glslang/Include/PoolAlloc.h +++ b/glslang/Include/PoolAlloc.h @@ -304,7 +304,6 @@ public: size_type max_size() const { return static_cast(-1) / sizeof(T); } size_type max_size(int size) const { return static_cast(-1) / size; } - void setAllocator(TPoolAllocator* a) { allocator = *a; } TPoolAllocator& getAllocator() const { return allocator; } protected: From d519167d2ecb83aee3c57207c144da082c516584 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Mon, 9 Dec 2019 01:23:37 -0700 Subject: [PATCH 90/94] Fix #1993: Fully exclude ftransform() from SPIR-V semantics. --- glslang/MachineIndependent/Initialize.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 80adc937..c14a039b 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -3946,7 +3946,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV // // Geometric Functions. // - if (IncludeLegacy(version, profile, spvVersion)) + if (spvVersion.vulkan == 0 && IncludeLegacy(version, profile, spvVersion)) stageBuiltins[EShLangVertex].append("vec4 ftransform();"); // @@ -8444,9 +8444,11 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("textureFootprintGradNV", EOpImageSampleFootprintGradNV); symbolTable.relateToOperator("textureFootprintGradClampNV", EOpImageSampleFootprintGradClampNV); + if (spvVersion.spv == 0 && IncludeLegacy(version, profile, spvVersion)) + symbolTable.relateToOperator("ftransform", EOpFtransform); + if (spvVersion.spv == 0 && (IncludeLegacy(version, profile, spvVersion) || (profile == EEsProfile && version == 100))) { - symbolTable.relateToOperator("ftransform", EOpFtransform); symbolTable.relateToOperator("texture1D", EOpTexture); symbolTable.relateToOperator("texture1DGradARB", EOpTextureGrad); From b5d9dee710f2bda42afbc6f2ce84b5836908d021 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Mon, 9 Dec 2019 03:12:10 -0700 Subject: [PATCH 91/94] Fix #2007: Fix a couple relative header paths in header files. --- SPIRV/GlslangToSpv.h | 2 +- SPIRV/SpvTools.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/SPIRV/GlslangToSpv.h b/SPIRV/GlslangToSpv.h index 86e1c23b..3907be43 100755 --- a/SPIRV/GlslangToSpv.h +++ b/SPIRV/GlslangToSpv.h @@ -40,7 +40,7 @@ #endif #include "SpvTools.h" -#include "../glslang/Include/intermediate.h" +#include "glslang/Include/intermediate.h" #include #include diff --git a/SPIRV/SpvTools.h b/SPIRV/SpvTools.h index 7422d012..59c914da 100644 --- a/SPIRV/SpvTools.h +++ b/SPIRV/SpvTools.h @@ -46,7 +46,7 @@ #include #endif -#include "../glslang/MachineIndependent/localintermediate.h" +#include "glslang/MachineIndependent/localintermediate.h" #include "Logger.h" namespace glslang { From 71b0100ae963b7b1e9b413b68f1bd568a37c3965 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Mon, 9 Dec 2019 04:34:09 -0700 Subject: [PATCH 92/94] Fix: #2014: Don't do "extension-on && version >= ..." keyword checks. Keywords should only have tests like "extension-on || version >= ...", or "extension-off && version <= ...". --- glslang/MachineIndependent/Scan.cpp | 69 ++++++++++++----------------- 1 file changed, 28 insertions(+), 41 deletions(-) diff --git a/glslang/MachineIndependent/Scan.cpp b/glslang/MachineIndependent/Scan.cpp index 7b0093d7..75cc475e 100644 --- a/glslang/MachineIndependent/Scan.cpp +++ b/glslang/MachineIndependent/Scan.cpp @@ -990,8 +990,7 @@ int TScanContext::tokenizeIdentifier() #ifndef GLSLANG_WEB case NOPERSPECTIVE: - if (parseContext.isEsProfile() && parseContext.version >= 300 && - parseContext.extensionTurnedOn(E_GL_NV_shader_noperspective_interpolation)) + if (parseContext.extensionTurnedOn(E_GL_NV_shader_noperspective_interpolation)) return keyword; return es30ReservedFromGLSL(130); @@ -1012,8 +1011,7 @@ int TScanContext::tokenizeIdentifier() case CALLDATAINNV: case ACCSTRUCTNV: if (parseContext.symbolTable.atBuiltInLevel() || - (!parseContext.isEsProfile() && parseContext.version >= 460 - && parseContext.extensionTurnedOn(E_GL_NV_ray_tracing))) + parseContext.extensionTurnedOn(E_GL_NV_ray_tracing)) return keyword; return identifierOrType(); case ATOMIC_UINT: @@ -1182,10 +1180,9 @@ int TScanContext::tokenizeIdentifier() case U64VEC4: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || - (!parseContext.isEsProfile() && parseContext.version >= 450 && - (parseContext.extensionTurnedOn(E_GL_ARB_gpu_shader_int64) || - parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) || - parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_int64)))) + parseContext.extensionTurnedOn(E_GL_ARB_gpu_shader_int64) || + parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) || + parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_int64)) return keyword; return identifierOrType(); @@ -1199,10 +1196,9 @@ int TScanContext::tokenizeIdentifier() case U8VEC4: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || - ((parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) || - parseContext.extensionTurnedOn(E_GL_EXT_shader_8bit_storage) || - parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_int8)) && - !parseContext.isEsProfile() && parseContext.version >= 450)) + parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) || + parseContext.extensionTurnedOn(E_GL_EXT_shader_8bit_storage) || + parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_int8)) return keyword; return identifierOrType(); @@ -1216,11 +1212,10 @@ int TScanContext::tokenizeIdentifier() case U16VEC4: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || - (!parseContext.isEsProfile() && parseContext.version >= 450 && - (parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_int16) || - parseContext.extensionTurnedOn(E_GL_EXT_shader_16bit_storage) || - parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) || - parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_int16)))) + parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_int16) || + parseContext.extensionTurnedOn(E_GL_EXT_shader_16bit_storage) || + parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) || + parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_int16)) return keyword; return identifierOrType(); case INT32_T: @@ -1233,9 +1228,8 @@ int TScanContext::tokenizeIdentifier() case U32VEC4: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || - ((parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) || - parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_int32)) && - !parseContext.isEsProfile() && parseContext.version >= 450)) + parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) || + parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_int32)) return keyword; return identifierOrType(); case FLOAT32_T: @@ -1256,9 +1250,8 @@ int TScanContext::tokenizeIdentifier() case F32MAT4X4: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || - ((parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) || - parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_float32)) && - !parseContext.isEsProfile() && parseContext.version >= 450)) + parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) || + parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_float32)) return keyword; return identifierOrType(); @@ -1280,9 +1273,8 @@ int TScanContext::tokenizeIdentifier() case F64MAT4X4: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || - ((parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) || - parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_float64)) && - !parseContext.isEsProfile() && parseContext.version >= 450)) + parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) || + parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_float64)) return keyword; return identifierOrType(); @@ -1292,11 +1284,10 @@ int TScanContext::tokenizeIdentifier() case F16VEC4: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || - (!parseContext.isEsProfile() && parseContext.version >= 450 && - (parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float) || - parseContext.extensionTurnedOn(E_GL_EXT_shader_16bit_storage) || - parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) || - parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_float16)))) + parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float) || + parseContext.extensionTurnedOn(E_GL_EXT_shader_16bit_storage) || + parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) || + parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_float16)) return keyword; return identifierOrType(); @@ -1315,10 +1306,9 @@ int TScanContext::tokenizeIdentifier() case F16MAT4X4: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || - (!parseContext.isEsProfile() && parseContext.version >= 450 && - (parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float) || - parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) || - parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_float16)))) + parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float) || + parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types) || + parseContext.extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_float16)) return keyword; return identifierOrType(); @@ -1567,20 +1557,17 @@ int TScanContext::tokenizeIdentifier() case F16SUBPASSINPUTMS: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || - (parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float_fetch) && - !parseContext.isEsProfile() && parseContext.version >= 450)) + parseContext.extensionTurnedOn(E_GL_AMD_gpu_shader_half_float_fetch)) return keyword; return identifierOrType(); case EXPLICITINTERPAMD: - if (!parseContext.isEsProfile() && parseContext.version >= 450 && - parseContext.extensionTurnedOn(E_GL_AMD_shader_explicit_vertex_parameter)) + if (parseContext.extensionTurnedOn(E_GL_AMD_shader_explicit_vertex_parameter)) return keyword; return identifierOrType(); case PERVERTEXNV: - if (((!parseContext.isEsProfile() && parseContext.version >= 450) || - (parseContext.isEsProfile() && parseContext.version >= 320)) && + if ((!parseContext.isEsProfile() && parseContext.version >= 450) || parseContext.extensionTurnedOn(E_GL_NV_fragment_shader_barycentric)) return keyword; return identifierOrType(); From 1843c0c41576ca9c4188f0d503f4b5d53eb9ec15 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Mon, 9 Dec 2019 23:48:50 -0700 Subject: [PATCH 93/94] Fix #2020: PR #1977 broke HLSL member consistency, this finishes it... using an unitialized member. This commit consistently does not use those HLSL members unless ENABLE_HLSL is on. --- glslang/Include/Types.h | 16 ++++++++-------- glslang/MachineIndependent/SymbolTable.cpp | 2 ++ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index e852d152..3572099e 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -82,11 +82,6 @@ struct TSampler { // misnomer now; includes images, textures without sampler, bool sampler : 1; // true means a pure sampler, other fields should be clear() #ifdef GLSLANG_WEB - unsigned int getVectorSize() const { return 4; } - void clearReturnStruct() const { } - bool hasReturnStruct() const { return false; } - unsigned getStructReturnIndex() const { return 0; } - bool is1D() const { return false; } bool isBuffer() const { return false; } bool isRect() const { return false; } @@ -111,10 +106,12 @@ struct TSampler { // misnomer now; includes images, textures without sampler, bool external : 1; // GL_OES_EGL_image_external bool yuv : 1; // GL_EXT_YUV_target +#ifdef ENABLE_HLSL unsigned int getVectorSize() const { return vectorSize; } void clearReturnStruct() { structReturnIndex = noReturnStruct; } bool hasReturnStruct() const { return structReturnIndex != noReturnStruct; } unsigned getStructReturnIndex() const { return structReturnIndex; } +#endif bool is1D() const { return dim == Esd1D; } bool isBuffer() const { return dim == EsdBuffer; } @@ -225,9 +222,12 @@ struct TSampler { // misnomer now; includes images, textures without sampler, isCombined() == right.isCombined() && isPureSampler() == right.isPureSampler() && isExternal() == right.isExternal() && - isYuv() == right.isYuv() && - getVectorSize() == right.getVectorSize() && - getStructReturnIndex() == right.getStructReturnIndex(); + isYuv() == right.isYuv() +#ifdef ENABLE_HLSL + && getVectorSize() == right.getVectorSize() && + getStructReturnIndex() == right.getStructReturnIndex() +#endif + ; } bool operator!=(const TSampler& right) const diff --git a/glslang/MachineIndependent/SymbolTable.cpp b/glslang/MachineIndependent/SymbolTable.cpp index 2ea14af2..44682379 100644 --- a/glslang/MachineIndependent/SymbolTable.cpp +++ b/glslang/MachineIndependent/SymbolTable.cpp @@ -114,6 +114,7 @@ void TType::buildMangledName(TString& mangledName) const default: break; // some compilers want this } +#ifdef ENABLE_HLSL if (sampler.hasReturnStruct()) { // Name mangle for sampler return struct uses struct table index. mangledName += "-tx-struct"; @@ -129,6 +130,7 @@ void TType::buildMangledName(TString& mangledName) const case 4: break; // default to prior name mangle behavior } } +#endif if (sampler.isMultiSample()) mangledName += "M"; From 85122e7051ced94e01bc67198264225288671bf2 Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Thu, 12 Dec 2019 11:15:42 -0700 Subject: [PATCH 94/94] Update spriv-tools known good --- known_good.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/known_good.json b/known_good.json index 8bb70535..ada57d78 100644 --- a/known_good.json +++ b/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "02910ffdffaa2966f613ede0c516645f5555c13c" + "commit" : "5c019b5923c1f6bf00a3ac28114ec4a7b1faa0e2" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "af64a9e826bf5bb5fcd2434dd71be1e41e922563" + "commit" : "204cd131c42b90d129073719f2766293ce35c081" } ] }